待ち時間を追加する
特定のパケットデータに一致するルールを追加してトラフィックを制御し、その後、遅延またはパケット損失を追加してDummynetパイプを通してパケットを送信することができます。たとえば、xkcd.comに向かうすべてのトラフィックに100ミリ秒の遅延を追加することができます。
$ sudo ipfw pipe 1 config delay 100ms
$ sudo ipfw add 100 pipe 1 ip from any to xkcd.com
00100 pipe 1 ip from any to any dst-ip 107.6.106.82
ここでの最初のコマンドはDummynetパイプをid 1で設定し、まだ存在していなければ作成します。 2番目のコマンドは、100と番号付けされたルールを作成します。これは、パケットを目的の宛先アドレスと照合し、それらをパイプを通してルーティングします。パケットが存在しないパイプを通過しようとすると、トラフィックがブロックされてエラーが発生するため、使用する前にパイプを設定することを忘れないでください。リストを再度使用すると、更新されたルールセットを表示できます。
$ sudo ipfw list
00100 pipe 1 ip from any to 107.6.106.82
65535 allow ip from any to any
xkcd.comに対してpingを実行すると、100 msの往復時間に加えて、実際の現在の待ち時間が接続全体に渡っているかどうかが表示されます。
$ ping xkcd.com
PING xkcd.com (107.6.106.82): 56 data bytes
64 bytes from 107.6.106.82: icmp_seq=0 ttl=55 time=117.092 ms
64 bytes from 107.6.106.82: icmp_seq=1 ttl=55 time=124.583 ms
64 bytes from 107.6.106.82: icmp_seq=2 ttl=55 time=117.916 ms
64 bytes from 107.6.106.82: icmp_seq=3 ttl=55 time=121.067 ms
ほとんどの場合、遅延が双方向に適用されるように、リモートホストからのパケットに対応するルールを追加して全二重接続をシミュレートすることをお勧めします。新しいルールでプレーし終えたら、次のようにしてそのルールとパイプを削除できます。
$ sudo ipfw delete 100
$ sudo ipfw pipe 1 delete