Додавання затримки
Ми можемо керувати трафіком, додаючи правила, що відповідають певним даним пакетів, а потім надсилати пакети через трубу Dummynet з додатковою затримкою або втратою пакету. Наприклад, ми можемо додати затримку 100 мс до всього заголовку трафіку на xkcd.com, наприклад:
$ 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, створюючи трубу, якщо вона ще не існувала. Друга команда створює правило, що має число 100, яке відповідає пакетам з потрібною адресою призначення та здійснює маршрутизацію їх через трубу. Зауважте, що будь-яке правило, яке намагається передати пакети через неіснуючу трубу, заблокує трафік і видасть помилку, тому не забудьте налаштувати труби перед їх використанням. Використання списку знову дозволяє нам переглянути оновлений набір правил.
$ sudo ipfw list
00100 pipe 1 ip from any to 107.6.106.82
65535 allow ip from any to any
Pinging xkcd.com повинен показувати час у зворотному напрямку 100 мс плюс незалежно від фактичної затримки поточного струму через з'єднання.
$ 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
Схоже, що проект dummynet включає бінарні файли для Windows. Для адаптації команд повинно бути досить просто запустити ipfw
команди з підвищеного командного рядка. Наприклад: