Как отрегулировать пропускную способность на сетевом интерфейсе Linux?

Существует ли способ ограничить пропускную способность на NIC в Linux? Я хотел бы смочь моделировать произвольно медленное соединение.

56
задан 03.09.2010, 23:15

5 ответов

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 мс)

32
ответ дан 07.12.2019, 08:22
  • 1
    Да, это - очень хороший модуль для этих вещей, действительно. Я не могу полагать, что никто не ответил на это до сих пор... –  28.04.2009, 12:37
  • 2
    , я использую это для тестирования серверов локально (на localhost), поскольку это было стандартно на всех дистрибутивах в течение многих лет. Для добавления задержки на 20 мс "tc, qdisc добавляют, что dev lo корневой дескриптор 1:0 netem задерживают 20 мс", и удалить ее "корень tc qdisc del dev lo" – pixelbeat 31.08.2009, 02:16

Сторона клиента, правильно?

струйка должна сделать то, что Вы хотите. Если Вы запускаете Ubuntu (или Debian, я думаю), можно установить его с sudo apt-get install trickle, и затем выполненный это. trickle -s -d 10 -u 10 firefox (или так, я не использовал его в некоторое время), запустил бы Firefox, ограничив его загрузку и скорость загрузки к 10 килобайтам в секунду.

27
ответ дан 07.12.2019, 08:22

NIST делает сетевое средство моделирования под названием NistNet.

http://snad.ncsl.nist.gov/nistnet/ (ссылка кажется мертвой),

http://cs.ecs.baylor.edu/~donahoo/tools/nistnet/

NistNet позволяет Вам сделать маршрутизатор, который эмулирует comms ссылку Вашего выбора.

Для самой простой операции у Вас есть он на поле с двумя NIC между двумя сетями.

Например, у меня было приложение, которое должно было работать по спутниковой линии.

Данные могли пробежаться через ссылку на 2 Мбит/с с БОЛЬШОЙ задержкой. Управление должно было пробежаться через ссылку на 128 Кбит/с с той же задержкой.

NistNet помог получить все это работающее над 128 Кбит/с.

Используя NistNet я мог моделировать не только пропускную способность, но также и задержку, и это также отбросит пакеты для Вас, моделируя занятую или ненадежную ссылку.

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

Не забывайте фрагментировать пакеты также. Можно установить хороший маленький MTU на фальшивой ссылке.

Добавляющее пакетное дрожание IIRC позволит Вам узнать, можно ли справиться с неисправными пакетами.

8
ответ дан 07.12.2019, 08:22
  • 1
    NistNet, не обновляется в долгое время, не так ли? IMO, лучшим способом безусловно является netem модуль, который уже существует во всех недавних ядрах. –  28.04.2009, 12:35
  • 2
    Вы можете моделировать машину с 2 NICs использование VM. ссылка – Scott 28.04.2009, 17:50
  • 3
    не работает – hasen 30.08.2009, 23:18

Я лично использовал wondershaper в прошлом для этого, хотя это было записано для противоположного варианта использования - максимально использующий Ваше подключение ADSL.

Я должен буду попробовать другие упомянутых здесь все же.

4
ответ дан 07.12.2019, 08:22

Я нашел способ избежать моего поля от еды всей пропускной способности, доступной в сети с помощью инструмента, названного 'wondershaper' в человечности. Я надеюсь, что это существует в других дистрибутивах Linux также. Я могу ограничить пропускную способность, что мой Linux домашний ПК может использовать использование после команды.

sudo wondershaper eth0 1000 200

Это ограничивает предел загрузки 1 000 килобитов и загрузку на 200 килобитов. Обратитесь к страницам справочника wondershaper для большей информации/опций.

16
ответ дан 07.12.2019, 08:22

Можно использовать локально установленный прокси сквида для ограничения пропускной способности, например, для тестирования веб-страницы на медленном канале:

  1. Сквид установки проксирует от Вашего распределения — на моем Fedora, это было столь же легко как yum install squid.

  2. Добавьте следующее к /etc/squid/squid.conf:

    delay_pools 1
    delay_class 1 1
    delay_access 1 allow all
    delay_parameters 1 16000/16000

    Это ограничит пропускную способность приблизительно 128 Кбит/с (16 000 байт/с).

  3. Запустите сквид: /etc/init.d/squid start

  4. Настройте свой браузер для использования прокси-сервера localhost порт 3128.

3
ответ дан 07.12.2019, 08:22

Теги

Похожие вопросы