ルール $r_{i}$ の評価パケット数 $|E(\mathcal{R}, i)|_F$ を求める問題の複雑さ

原田のページへ戻る


はじめに

本研究の目的は,フィルタリングルール中のルール $r_{i}$ の位置で評価が決まるパケットの数を求める問題 (Packet Evaluation problem, PE)が,#P-Complete であることを示すことである.ここで,外部ネットワークから到着するパケットの頻度分布 $F$ の下でのルール $r_{i}$ の位置によって評価が決まるパケットの数を,$r_{i}$ の評価パケット数と呼び,$\|E(\mathcal{R}, i)\|_F$ と表す.

初めは田中研で研究されてきた「フィルタリングルール最適化問題」がNP困難であることを示す,ことを目的として研究を始めた.しかし,「フィルタリングルール最適化問題」を考える為には各ルールの評価パケット数を求める必要があり,評価パケット数を求める問題も相当難しいのでは,という疑問から本研究が始まった.

フィルタリングモデル

「評価パケット数」について説明する.

本研究室では,パケットを $0,1$ のビット列で表し,フィルタリングルールを $0, 1, *$ のビット列と評価型$=\{P, D\}$の組(ビット列,評価型)で表す.但し,$*$ は don't care を意味し,$P$ は Permit を $D$ は Deny を意味する.以下にルールリストの例を示す.



Source AdressDestination Adress
$r_{1}^{D}$$0$ $0$ $0$ $0$$0$ $0$ $0$ $1$
$r_{2}^{D}$$1$ $1$ $*$ $0$$1$ $1$ $1$ $0$
$r_{3}^{P}$$0$ $0$ $0$ $*$$0$ $0$ $0$ $0$
$r_{4}^{P}$$1$ $0$ $*$ $*$$1$ $1$ $*$ $*$
$r_{5}^{D}$$*$ $*$ $0$ $0$$1$ $0$ $*$ $1$
$r_{6}^{P}$$*$ $1$ $0$ $*$$1$ $*$ $*$ $*$
$r_{7}^{D}$$0$ $*$ $1$ $*$$0$ $*$ $1$ $*$
$r_{8}^{P}$$0$ $*$ $*$ $1$$0$ $*$ $1$ $*$
$r_{9}^{D}$$0$ $*$ $1$ $*$$*$ $*$ $*$ $1$
$r_{10}^{D}$$*$ $*$ $*$ $*$$*$ $*$ $*$ $*$


入力パケットは,ルールリストの上位のルール($r_{1}$)から順番に一つずつ比較される.

以下にパケットを分類する例を示す.例に用いるパケットを $0110$ $1001$ とする.

パケット $0110$ $1001$ をルールリストの $r_{1}$ から順番に比較すると,$r_{1} \sim r_{8}$ には合致せず,$r_{9}$ で初めて合致するので,パケット $0110$ $1001$ に $r_{9}$ の評価型 $D$ を与える.つまり,パケット $0110$ $1001$ を破棄する.


下記に,ルール $r_{i}$ との比較により評価が決まるパケットの数 $\|r_{i}(F, {\mathbf R})\|$ を $r_{i}$ の Number of Evaluating Packet の項目に加えたルールリストを示す.但し,到着するパケットの頻度分布は一様とする($00000000, 00000001, \sim , 11111111$ の計 $256$ パケットがフィルタに通される.)

Source AdressDestination AdressNumber of Evaluating Packet
$r_{1}^{D}$$0$ $0$ $0$ $0$$0$ $0$ $0$ $1$$1$
$r_{2}^{D}$$1$ $1$ $*$ $0$$1$ $1$ $1$ $0$$2$
$r_{3}^{P}$$0$ $0$ $0$ $*$$0$ $0$ $0$ $0$$2$
$r_{4}^{P}$$1$ $0$ $*$ $*$$1$ $1$ $*$ $*$$16$
$r_{5}^{D}$$*$ $*$ $0$ $0$$1$ $0$ $*$ $1$$8$
$r_{6}^{P}$$*$ $1$ $0$ $*$$1$ $*$ $*$ $*$$27$
$r_{7}^{D}$$0$ $*$ $1$ $*$$0$ $*$ $1$ $*$$16$
$r_{8}^{D}$$0$ $*$ $*$ $1$$0$ $*$ $1$ $*$$8$
$r_{9}^{P}$$0$ $*$ $1$ $*$$*$ $*$ $*$ $1$$24$
$r_{10}^{D}$$*$ $*$ $*$ $*$$*$ $*$ $*$ $*$$152$

(上記に示す各ルールの評価パケット数を愚直に求めるプログラム -> C++プログラムパケットルールリスト)

さらに遊びたい方にむけて

ルール生成プログラムパケット生成プログラム(分布は一様)

問題の形式化

問題の複雑さを求める為に,初めに,田中研のフィルタリングモデルを形式化する必要がある(上記の様に自然文を含んだ形での説明はあるが,かっちりしたものが現状ない).そこで,原田は,(5/25/2013現在) 形式化を行っている最中である.また,Agdaを用いた形式化も行っている.(詳細).なお,Agdaについては,木下研の木下修司さんに,教えて頂いている.

証明(準備中)

問題 A が,#P-complete であることを示すためには,問題 A がクラス #P に属することを示し,#P-complete である問題 B から 問題 A への帰着アルゴリズムを示せば良い.ただし,帰着アルゴリズムは解の個数を保たなければならない.

このページの先頭へ ▲