Как ограничить пропускную способность сети?

74

Мы размещаем приложение на удаленном сервере. Нам нужно протестировать его с ограниченной пропускной способностью сети (для пользователей с плохим доступом в Интернет).

Могу ли я ограничить пропускную способность моего интернета? Например: 128 КБ в секунду.

художественная литература
источник

Ответы:

68

Вы можете регулировать пропускную способность сети на интерфейсе, используя команду tcMan page, доступную по адресу http://linux.die.net/man/8/tc.

Для простого сценария, попробуйте Wondershaper .

Пример использования tc: tc qdisc add dev eth0 root tbf rate 1024kbit latency 50ms burst 1540

Никхил Мулли
источник
6
Ссылка на приглашение atmail.com для авторизации имени пользователя / пароля для меня ... :(
Ash
1
Вы можете получить доступ к содержанию atmail здесь: web.archive.org/web/20130719031908/http://atmail.com/kb/2009/…
Том Салеба
лучше поздно, чем никогда, если вы собираетесь использовать роутер busybox. Лучшим методом является tcкоманда, вы можете проверить пост mark здесь mark.koli.ch/… в openvz wiki есть больше примеров openvz.org/Traffic_shaping_with_tc
nwgat
Похоже, что также возможно ограничить пропускную способность с помощью iptables (вы можете отредактировать ответ при необходимости): serverfault.com/questions/52027/…
baptx
62

Как отмечалось в предыдущем ответе, Wondershaper делает работу легко. Я включаю информацию из вышеупомянутой ссылки от Джваланта Шреста

apt-get install wondershaper

wondershaper - простой инструмент для ограничения пропускной способности определенного интерфейса.

$ sudo wondershaper {interface} {down} {up}

{down} и {up} - пропускная способность в кбит / с

Например, если вы хотите ограничить пропускную способность интерфейса eth1 до нисходящей линии связи 256 кбит / с и восходящей линии связи 128 кбит / с,

$ sudo wondershaper eth1 256 128

Чтобы очистить предел,

$ sudo wondershaper clear eth1 
Эдем
источник
2
В идеале вы должны были просто отредактировать исходный ответ, а не добавлять новый. Это стандартная политика. В любом случае, +1 за ваш ответ, поскольку он добавляет информацию к ответам.
Шивамс
2
Это очень полезно, если вы привязываете мобильные данные и имеете лимит добросовестного использования (и вам нужно покупать новые пакеты после, чехла для Lycamobile). На таких сайтах, как YouTube, потоковое видео загружается напрямую, если у вас достаточно пропускной способности. Если вы ограничите пропускную способность, видео автоматически переключится на низкое разрешение и загрузит только то, что вы смотрите, что сохранит данные, если вы не хотите смотреть все.
baptx
2
Полезно также для загрузки больших файлов, поскольку это не только ограничивает пропускную способность, но и определяет приоритетность трафика. Так что при загрузке файла 10gb вы все равно можете использовать SSH.
PeterM
5
Wondershaper очень устарел: Wondershaper должен умереть (Bufferbloat.net)
Никлас Холм
10

Ограничение сетевых ресурсов на основе некоторых критериев является предметом QoS . Существует несколько различных способов управления пользовательским трафиком в системах Linux.

Берт Хьюберт рассказывает о передовых методах маршрутизации и управления трафиком в Linux.

Эмре Язычи
источник
2
Вы имели в виду определенный раздел в нем?
rogerdpack
1
Если вы не хотите изменять системные настройки, просто установите прокси-сервер squid3, а затем установите «ограниченное» приложение через прокси. Для приложений cli вы можете установить торсы или прокси-цепочки, а для приложений с тяжелым графическим интерфейсом вы также можете установить Fiddler mono, так что да ... есть несколько способов контролировать все :)
erm3nda
(это только ссылка)
Конрад Гаевский
7

Если у вас уже есть установка Apache, вы можете использовать ее mod_bw, которая также работает на прокси-соединениях (то есть Apache просто перенаправляет все на соответствующий сервер, но замедляет ответы).

Ульрих Шварц
источник
6

Dummynet делает то, что вы хотите, и даже больше, вы даже можете контролировать задержку, случайную потерю пакетов и многое другое.

Аммар Аламмар
источник
6

Вы также можете использовать модуль iptables hashlimit. Вот простой пример:

iptables -A FORWARD -m hashlimit --hashlimit-выше 512kb / sec --hashlimit-burst 1mb --hashlimit-mode srcip, dstip --hashlimit-name bwlimit -j DROP

Это правило ограничивает трафик, который проходит через цепочку FORWARD, 512 Кбит / с с пакетом 1 Мб для каждой пары источника и назначения.

Обратитесь к разделу hashlimit руководства iptables для получения дополнительной информации.

http://ipset.netfilter.org/iptables-extensions.man.html

Ibrahim
источник