U[UEVNPGVEQTGVTCPUYKVEJ
図 7-B を用いた の起動と停止 を起動させるためにの該当するパラメータである
の値を-に設定している。また、図7-の例.では を停止させるために の値を6に設定している。
の起動により、ネットワークフロー生成の監視が開始される。これを図
7.に示す。図7.の二つの例はホスト!のクライアントアプリケーションによるホス トEのサーバアプリケーションへのソケットを用いた接続要求を表している。例-では ホスト !で が起動しており、ホスト! のクライアントアプリケーション がホストE のサーバアプリケーションに対して接続要求を行う際、 によっ てネットワークフローの生成が検知されている。例.ではホスト E 上で
が起動しており、ホスト E のサーバアプリケーションに対してホスト ! のクライア ントアプリケーションが接続要求を行った際、同様に によってネットワー
ࡎࠬ࠻ # ࡎࠬ࠻ $
ࠢࠗࠕࡦ࠻ ࠰ࠤ࠶࠻
ࠕࡊࠤ࡚ࠪࡦ
6TCP5YKVEJ ߦࠃࠆ ࡀ࠶࠻ࡢࠢ
ࡈࡠ↢ᚑ⋙ⷞ
ࠨࡃ
ࠕࡊࠤ࡚ࠪࡦ
ធ⛯ⷐ᳞
ࡎࠬ࠻ # ࡎࠬ࠻ $
ࠢࠗࠕࡦ࠻ ࠰ࠤ࠶࠻
ࠕࡊࠤ࡚ࠪࡦ
6TCP5YKVEJ ߦࠃࠆ ࡀ࠶࠻ࡢࠢ
ࡈࡠ↢ᚑ⋙ⷞ
ࠨࡃ
ࠕࡊࠤ࡚ࠪࡦ
ធ⛯ⷐ᳞
図 7.B ネットワークフロー生成の検知
クフローの生成が検知されている。 はこのようにして を用いるネッ トワークフローの生成を検知した後、71章で述べる の切替処理に移る。
&'
定義情報の入力
を用いるネットワークフローの生成を検知した場合、 は定義情報 を参照する。定義情報はネットワークフローを表す送受信ホストの アドレス、ポー ト番号と利用する の名前によって構成される。即時的かつ柔軟な の選択 を可能にするため、 ではユーザランドからエンドユーザがコマンドを用い た定義情報の追加、削除が可能である。これを図70に示す。図70は の 定義情報を追加するコマンドである コマンドを用いた.つの例と既に追加し てある定義情報を削除するコマンドであるコマンドを用いた例を表している。
例-は受信ホストの アドレスが -8.-13-0、受信ホストのポート番号が-66 から
.66、送信ホストの アドレスが-8.-13-7、送信ホストのポート番号が.6である 全てのネットワークフローの として $! を利用し、この定義の "を-6とす る設定の例である。例.は送信ホストの アドレスを-.266-とする全てのネット ワークフローの として+ を利用するという設定の例である。例.の場 合、送信ホストの アドレス、送信ホストおよび受信ホストのポート番号、定義情 報の " が入力されていない。ネットワークフローを示す値で特に定義されていない 項目は全ての値に対応することを意味する。また、定義情報の " は入力されていな い場合、既存の定義情報に利用されてない値の最小値が自動で割り当てられる。そし て例0では、事前に追加されている定義を コマンドで " を指定して削除し ている。最後の例/では、 コマンドを用いてこれまで定義された定義情報のリ ストを一覧表示している。これらの定義情報は71章で解説する 切替時に参照さ
VTUYCFFKUKFKURFRHCUV
VTUYCFFUKYGUVYQQF
㧚
VTUYFGN
VTUYNKUV
KF UTE+2FUV+2 UTERQTV FUVRQTV6%2
YGUVYQQF
図 70B 定義情報の入力例
れる。参照時のオーバヘッドを最小限に抑えるため、この定義情報はカーネルレイヤ に保存される。
&(
の追加および削除
複数の を が所持し、これらの からネットワークフロー毎に適した
を選択可能にするには、 が初期状態で持つ に加えて新たな を追 加する機能が必要である。また一度追加した を から削除する機能も重要で ある。この機能を実現するため、 では各 をカーネルモジュールとし て実装し、そのカーネルモジュールをカーネルへ組み込むことでその を に追 加し、同様にカーネルモジュールを取り除くことでその を から削除する形 式を用いている。従来の新規 の配布形態はカーネルパッチを用いてカーネルの
ソースを上書きする方法が一般的であった。しかしカーネルモジュールを利用するこ とで、従来のカーネルパッチの利用と比較し、カーネルコンパイルが不要なため即時 的な の追加、削除が可能であり、図7/に示すような簡易なコマンドの利用によ り、エンドユーザによる容易な の追加および削除が可能である。図7/では、ま
KPUOQF6459A6GUV6%2OQF
NUOQF^ITGR6459A
65A6GUV6%2
TOOQF6459A6GUV6%2OQF
図 7/B カーネルモジュールを用いた の追加と削除
ず例-でカーネルモジュールを組み込むコマンドである を用いて、
をカーネルモジュールとして実装した 9+ を に追加している。これ により に が追加される。カーネルモジュールを用いるため、例.で示 すように に組み込まれているカーネルモジュールを一覧できる の利用によ り、現在 に導入された を閲覧可能である。また例0に示すように、カーネ ルモジュールを から削除するコマンドである を用いて、 を から削除している。このように追加する を一つのカーネルモジュールとして利 用することで、容易かつ即時的に の追加と削除が可能である。
このようなカーネルモジュール化した を 上で利用可能にするた め、次節で述べる が定める の実装形式に準拠する必要がある。
&
が定める
の実装形式
前節で述べたように 上で動作する はカーネルモジュールとして実装 される。カーネルモジュールは が として利用するために
が定める の実装形式に準拠する必要がある。 が定める の実装 形式は以下の通りである。
¯ 名の表記
はエンドユーザが定義した定義情報に従って を切替える。この 際、 を特定するために一意な の識別子が必要となる。そのため