DUMMYNET(ipfw)関連のお話.
現在,研究でDUMMYNETを使っているのですが,それに関連して遅延に揺らぎ(ジッター)を入れたいということになりました.しかし,調べた限りipfwでは,遅延は固定値でしか設定できないようでして.
それで,もう少し調べてみるとdummynetのページに載っている方法で何とかいけそうな雰囲気が.
One nice feature of the new version of dummynet is the ability to simulate multiple paths between sender and receiver. This is done using probabilistic match, e.g.:
ipfw add prob 0.33 pipe 1 ip from A to B
ipfw add prob 0.5 pipe 2 ip from A to B
ipfw add pipe 3 ip from A to B
ipfw pipe 1 config ...
ipfw pipe 2 config ...
ipfw pipe 3 config ...
Given the right packet, the first rule will match with probability 1/3; in the remaining 2/3 of occurrence we move to the second rule, which will match with prob 1/2 (so overall 1/2*1/3 = 1/3), and the remaining 1/3 of occurrence will move to the third rule, which has a deterministic match. We can then configure the three pipes as desired to emulate phenomena such as packet reordering etc.
どうやら,ipfwでは,複数のpipeを作成して,確率でひとつのpipeを使うという制御ができるようです.これを使えば,例えば
# ipfw add prob 0.33 pipe 1 ip from any to any # ipfw add prob 0.5 pipe 2 ip from any to any # ipfw add pipe 3 ip from any to any # ipfw pipe 1 config delay 10ms # ipfw pipe 2 config delay 15ms # ipfw pipe 3 config delay 5ms
といった感じで設定すれば,5〜15msと遅延の揺らぎを作ることができそうです(実際には,pipeをもっと増やして,もう少し細かい粒度で設定した方が良さそうです).