Чи є спосіб обмежити пропускну здатність NIC в Linux? Я хотів би змогти імітувати довільно повільний зв'язок.
Чи є спосіб обмежити пропускну здатність NIC в Linux? Я хотів би змогти імітувати довільно повільний зв'язок.
Відповіді:
Netem модуль ядра, керований iproute.
Вам потрібно компілювати Netem з ядром:
Networking -->
Networking Options -->
QoS and/or fair queuing -->
Network emulator
Після завантаження netem-модуля, tc iproute дозволяє вам:
tc qdisc add dev tap0 root netem delay 50ms loss 50%
(50% втрати пакету, додаткова затримка 50 мс)
sch_netem
. Зазвичай не потрібно завантажувати його вручну, він завантажується автоматично за потреби.
rate
опції: tc qdisc add dev lo root handle 1:0 netem delay 10ms rate 1mbit limit 1000
. Слід зазначити , що для деяких пристроїв , таких як lo
(для доступу до Localhost), вам необхідно встановити довжину черги , а також: ifconfig lo txqueuelen 1000
. Дивіться serverfault.com/a/394949/76090
Сторона клієнта, правда?
струмок повинен робити те, що ти хочеш. Якщо ви працюєте з Ubuntu (або, я думаю, Debian), ви можете встановити його sudo apt-get install trickle
і запустити. trickle -s -d 10 -u 10 firefox
(або так, я не використовував його деякий час) запускав би firefox, обмежуючи швидкість завантаження та завантаження до 10 кілобайт в секунду.
Я знайшов спосіб уникнути того, щоб ящик не з'їдав всю пропускну здатність, доступну в мережі, використовуючи інструмент під назвою "wondershaper" в ubuntu. Я сподіваюся, що він існує і в інших Linux знищує. Я можу обмежити пропускну здатність того, що може споживати мій домашній ПК Linux за допомогою наступної команди.
sudo wondershaper eth0 1000 200
Це обмежує ліміт завантаження до 1000 кілобітів, а накладення - до 200 кілобітів. Для отримання додаткової інформації та варіантів зверніться до підручних сторінок чудес.
wondershaper
у Debian.
sudo wondershaper clear eth0
NIST зробить мережевий симулятор під назвою NistNet.
http://snad.ncsl.nist.gov/nistnet/ (посилання здається мертвим)
http://cs.ecs.baylor.edu/~donahoo/tools/nistnet/
NistNet дозволяє зробити маршрутизатор, який імітує комунікаційне посилання на ваш вибір.
Для найпростішої експлуатації ви маєте його на коробці з двома мережами NIC між двома мережами.
Наприклад, у мене була програма, яка мала працювати над супутниковим зв’язком.
Дані можуть переходити по 2Мбіт / с посилання з великими затримками. Контроль повинен був пройти по 128 Кбіт / с, з однаковою затримкою.
NistNet допоміг все це працювати на 128 кбіт / с.
Використовуючи NistNet, я міг би імітувати не тільки пропускну здатність, але й затримку, і вона також скидає пакети для вас, імітуючи зайняте або ненадійне посилання.
Якщо ви хочете імітувати атрибутивне з'єднання, не обмежуйте лише пропускну здатність, також затягуйте затримку.
Не забудьте також фрагментувати пакети. Ви можете встановити приємні невеликі MTU за фальшивим посиланням.
Додавання тремтіння пакетів IIRC дозволить вам з’ясувати, чи зможете ви впоратися з пакетами, що не вийшли із порядку.
В минулому я особисто використовував дивовижник для цього, хоча це було написано для зворотного випадку використання - максимально використовуючи ваш ADSL-з'єднання.
Мені доведеться спробувати інші згадані тут.
Ви можете використовувати локально встановлений проксі-сервер для обмеження пропускної здатності, наприклад, для тестування веб-сторінки на повільному посиланні:
Встановіть проксі-кальмар зі свого дистрибутива - на моїй Fedora це було так само просто yum install squid
.
Додайте до /etc/squid/squid.conf
:
delay_pools 1
delay_class 1 1
delay_access 1 allow all
delay_parameters 1 16000/16000
Це обмежить пропускну здатність приблизно до 128 кбіт / с (16000 Bps).
Почніть кальмари :/etc/init.d/squid start
Налаштуйте браузер для використання localhost
порту проксі-сервера 3128
.
Ще ніхто не згадав ip_relay , названий "iprelay" у сховищах Debian. Він працює в якості TCP - проксі, а не перехоплює виклики, як цівка робить, і буде працювати з будь-яким додатком , яке може використовувати проксі - сервер (наприклад, веб - браузер) або прийняти певний користувачем порт призначення (Telnet, SSH, FTP, завиток, et cetera ).
Налаштувати їх трохи складніше, але часто це працює в ситуаціях, коли струмок не буде.