第 5 章 実装 32
5.8 ネットワーク構築の自動化
5.8.2 Netem の設定ファイル
NetEmノードのメモリ計算が終了した後,要求されているリンクを模倣するための
NetEmの設定コマンドを生成する.遅延生成,遅延ゆらぎ,パケットロスに関しては,
NetEmそのもので模倣可能であるため1つの設定で生成可能である.帯域制限に関して
は,NetEm自体が帯域制限の機能を持っていないため,帯域制限を行うモジュールにデー
タを渡す設定を記述する必要がある.そのため,NetEmで遅延生成,帯域制限の両方を 設定したい場合は2つの設定を記述する必要がある.
図5.10に生成される設定ファイルを示す.設定ファイルはJSON(JavaScript Object No-tation)形式で記述されており,Link-No,実験ノード,NetEmの設定,NetEmノードの IPアドレス,NetEmノードが生成するブリッジインターフェース名,ブリッジインター フェースに所属するインターフェース名が記述されている.Link-Noはリンク特性の模倣 を行うリンクの識別子として用いている.実験ノードはリンクに接続される実験ノード名 を記述している.StarBEDで提供されているノードが接続される場合には,DNSに登録 されているノード名が記述され,外部機器を用いている場合には,Noneと記述される.
NetEmの設定は,NetEmノードが模倣を行うリンクの設定コマンドが記述されている.
netemと書かれている箇所は,遅延,遅延揺らぎ,パケットロスの設定が記述されており,
tbfと書かれている箇所にはトークンバケツフィルタの設定が記述されている.netemip
にはNetEmノードとして割り当てられたノードのIPアドレスが記述されており,この
IPアドレスを持つノードがリンク特性の模倣を行う.bridge-ifはLink-Noの番号が割り 当てられたブリッジインターフェース名である.リンク特性の模倣では,接続される実験 ノードが同じネットワークに所属する必要がある.そのため,ブリッジインターフェース を作成し,データリンク層で実験ノード間のデータをフォワーディングできるように設定 する.physical-ifは作成したbridge-ifに所属する物理インターフェースを記述している.
これは基本的に,VLANインターフェースとなる.本システムでは,NetEmの多重化を 行うため1つのインターフェースに複数のトラフィックが流れてくる.そのため,VLAN インターフェースを作成し,それぞれのトラフィックが混合しないようにしている.
{
"Link0": {
"node": ["a159", "a160"], "netem": {
"netem": "netem limit 10000 delay 80ms 10ms loss 10%", "tbf": "tbf rate 42mbit latency 1s buffer 42kb"
},
"netemip": "172.16.6.200", "bridge-if": "br0",
"physical-if": ["eth0.760", "eth0.761"]
} }
図5.10: NetEmの設定ファイル
{
"150.65.117.41": { "route": { "route": { },
"netemip": "192.168.254.1", "netemif": "eth1"
},
"eth0.201": { "1": {
"10": "netem limit 10000 delay 100ms", "child": {
"100": "tbf rate 10mbit latency 1s burst 10k", "child": {
"flow": "parent 1: protocol ip prio 1 u32 match ip src 192.168.0.0/24"
} } },
"dst": "192.168.1.0/24"
},
"eth0.200": { "1": {
"10": "netem limit 10000 delay 100ms", "child": {
"100": "tbf rate 10mbit latency 1s burst 10k", "child": {
"flow": "parent 1: protocol ip prio 1 u32 match ip src 192.168.1.0/24"
} } },
"dst": "192.168.0.0/24"
} } }
図5.11: test