Есть ли способ ограничить пропускную способность на сетевой карте в Linux? Я хотел бы иметь возможность симулировать произвольно медленное соединение.
linux
networking
bandwidth
Марк Боргердинг
источник
источник
Ответы:
Netem модуль ядра, управляемый iproute.
Вам нужно скомпилировать Netem с ядром:
После загрузки модуля netem tc iproute позволяет вам делать следующее:
(Потеря пакета 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, используя следующую команду.
Это ограничивает ограничение загрузки до 1000 килобит и до 200 килобит. Обратитесь к справочным страницам Wondershaper для получения дополнительной информации / опций.
источник
wondershaper
в Debian.sudo wondershaper clear eth0
NIST создает сетевой симулятор под названием NistNet.
http://snad.ncsl.nist.gov/nistnet/ (ссылка кажется мертвой)
http://cs.ecs.baylor.edu/~donahoo/tools/nistnet/
NistNet позволяет вам создать маршрутизатор, который эмулирует связь по вашему выбору.
Для простейшей работы у вас есть это на коробке с двумя сетевыми картами между двумя сетями.
Например, у меня было приложение, которое должно было работать по спутниковой связи.
Данные могут передаваться по каналу 2 Мбит / с с большой задержкой. Контроль должен был проходить по каналу 128 кбит / с с той же задержкой.
NistNet помог заставить все это работать на 128 кбит / с.
Используя NistNet, я мог имитировать не только пропускную способность, но и задержку, а также отбрасывать пакеты для вас, имитируя занятую или ненадежную связь.
Если вы хотите смоделировать непредвиденное соединение, не просто ограничивайте пропускную способность, но и увеличивайте задержку.
Не забудьте также фрагментировать пакеты. Вы можете установить хорошие маленькие MTU по фальшивой ссылке.
IIRC добавление джиттера пакетов позволит вам узнать, можете ли вы справиться с неупорядоченными пакетами.
источник
Я лично использовал Wondershaper в прошлом для этого, хотя он был написан для противоположного варианта использования - максимально использовать ваше соединение ADSL.
Я должен попробовать другие, упомянутые здесь, хотя.
источник
Вы можете использовать локально установленный прокси-сервер squid для ограничения пропускной способности, например, для тестирования веб-страницы по медленной ссылке:
Установите squid proxy из вашего дистрибутива - на моем 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 бит / с).
Запустите Squid :
/etc/init.d/squid start
Настройте браузер на использование
localhost
порта прокси-сервера3128
.источник
Никто еще не упомянул ip_relay с именем «iprelay» в репозиториях Debian. Он работает как TCP-прокси, а не перехватывает вызовы, как это делает Trickle , и будет работать с любым приложением, которое может использовать прокси (например, веб-браузер) или принимать пользовательский порт назначения (telnet, ssh, ftp, curl, и так далее ).
Это немного сложнее в настройке, но часто работает в ситуациях, когда ручеек не будет.
источник