Моделювання повільного зв’язку з тс


9

У мене є вікно linux (Centos 5.5), на якому я хочу обмежити мережевий трафік. У мене є додаток, який ми розповсюджуємо серед клієнтів, і я хочу перевірити його на мінімальній рекомендованій пропускній здатності 256 Мбіт / сек. Поки підручники з тс, які я бачив, здаються, дозволяють вам обмежувати пропускну здатність відповідно до певних критеріїв, але я хочу обмежувати пропускну здатність у будь-яких ситуаціях (до / з усієї IP-адреси, незалежно від того, як виглядає заголовок IP тощо).

Один підручник запропонував використовувати:

tc filter add dev eth0 protocol ip parent 10: prio 2 flowid 10:2

але я отримую таку помилку:

Unknown filter "flowid", hence option 10:2 is unparsable

Будь-які ідеї, як обмежити пропускну здатність, що входить у / з eth0 за будь-яких обставин?

Відповіді:


11

Якщо ви хочете застосувати обмеження до всього вихідного трафіку, вам взагалі не потрібні фільтри. Просто додайте qdisc до ручки кореня інтерфейсу так:

tc qdisc add dev eth0 root handle 1: tbf rate 256mbit latency 1ms burst 1540

Якщо ви хочете сформувати / поліцейський в'їзний рух, це трохи складніше. Вам потрібно буде використовувати, наприклад, інтерфейс IFB:

modprobe ifb
ip link set dev ifb0 up
tc qdisc add dev eth0 ingress
tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0
#  ^- this is a dummy filter, match u32 0 0 matches all traffic
tc qdisc add dev ifb0 root handle 1: tbf rate 256mbit latency 1ms burst 1540

Ось інший підхід із використанням двох простих фільтрів:

tc qdisc add dev eth0 ingress
tc filter add dev eth0 root         protocol ip u32 match u32 0 0 police rate 256mbit burst 10k drop flowid :1
tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 police rate 256mbit burst 10k drop flowid :1

Я зламав ваше рішення, але не можу змусити його працювати. Я запускаю ваші команди, відкриваю Firefox, занадто швидко запускаю спосіб завантаження та завантаження. Коли я роблю ifconfig, я повинен бачити деякі пакети RX і TX під ifb0 (бо я цього не роблю)? Дякую.
побігаючий дихання

Я додав інший підхід, який працює без інтерфейсу ifb.
ін.

Другий підхід із використанням двох простих фільтрів чудово працює! Дуже дякую. Мені дуже подобається це рішення, оскільки воно просте і зрозуміле.
занепокоєння дихання

Дивовижне дякую, новичкове запитання, як я можу зняти ліміт після запуску tc qdisc add dev eth0 root handle 1: tbf rate 256mbit latency 1ms burst 1540:? Дякую!
SSH Це

Як вимкнути дросель і повернути назад таким, яким він був? Будь ласка, відповідайте на "інший підхід за допомогою двох простих фільтрів" версії, якщо ви були б таким добрим. "Man tc" - це ... переважна, як завжди.
Джеффрі Андерсон

1

Це може бути трохи поза вашим обсягом, але WAN-emu дуже добре підходив до емуляції середовищ із дивними вимогами до пропускної здатності та затримки [1]

[1]: http://speed.cis.nctu.edu.tw/wanemu/ WAN-emu


Високі затримки або втрати посилань можуть бути симульовані досить зручно за допомогою модуля netem tc: linuxfoundation.org/collaborate/workgroups/networking/netem
ін.

0

Ви маєте додати 1 лінійку на зразок цього tc qdisc додати кореневу обробку dev eth0 10: htb за замовчуванням 20

афішувати так, як ваше

tc фільтр додає протокол dev eth0 ip батьків 10: prio 2 flowid 10: 2

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.