ポリシー違反
ルールリストのルールは順序を入れ替えることが可能です.ならばと,先述の通り,使用頻度の一番高いルールをリストの一番上にぶち込もうとなりますが,そんなに暗に動かせないものでもあるのです.
例として図1を見てください.まず,授業で習ったと思いますが,パケットは0と1で送りつけられてきます.ルールは0と1と*(マスク)の三種類で構築されます.*とは0と1両方ってことです.
リスト番号 |
ルールID |
ルール |
評価 |
評価パケット数 |
1 |
R1 |
1001 |
D |
6 |
2 |
R2 |
1110 |
A |
3 |
3 |
R3 |
10** |
A |
8 |
4 |
R4 |
*0*1 |
D |
12 |
評価パケット数とは,あるパケットの集合を流した時,そのルールを用いて評価した(acceptかdenyを決める)パケットの数であり,ルールの使用頻度と考えてもらって構いません.つまり評価パケット数が多いルールを上に持って行くのが目標です.
さて,最初は単純に評価パケット数が多いルールを順に上に持って行くとどうなるか見て見ましょう.
1001というパケットと1110というパケットを流した時,入れ替え前と評価が変わってしまってるのが分かりますか?つまり,このルールだと,本当は蹴りたいものを受け入れて,受け入れるべきものを蹴ってしまうことになります.これをポリシー違反といい,そのようなルールリストは正常に動作しません.
上の状態からポリシー違反について観察してみましょう.何故ポリシー違反が起こるのか.それは,二つのルールが一つのパケットを取り合う形になってしまってるからです.R1とR3,R3とR4はそれぞれ評価は違いますが,同じパケットを取ることができます.このような状態を従属関係といい,R3はR1に従属しているといいます.基本的に,ポリシー違反をするので従属関係にあるルールを入れ替えることはできないことになっています. 
我々は,このポリシー違反を起こさない範囲でいかに評価パケット数の多いパケットをルールリストの上に持って行くかと言うことを研究しています.また評価パケット数とは必ずしも絶対的な数値ではなく,違うルールの集合や,変に偏ったルールの集合とかで評価パケットを計算すると,当然違うものになるので,それを考慮する必要が将来的にあります.
<フィルタリングルール
自分がやっている研究について>