Как имитировать среду с низкой пропускной способностью и высокой задержкой? - PullRequest
195 голосов
/ 25 сентября 2008

Мне нужно смоделировать соединение с сервером с низкой пропускной способностью и высокой задержкой, чтобы эмулировать условия VPN на удаленном узле. Пропускная способность и задержка должны быть настраиваемыми, чтобы я мог найти наилучшую комбинацию для запуска нашего программного пакета.

Ответы [ 22 ]

78 голосов
/ 13 марта 2012

Для macOS существует Network Link Conditioner , который имитирует настраиваемую пропускную способность, задержку и потерю пакетов. Он содержится в Аппаратных средствах ввода-вывода для Xcode . Screenshot

36 голосов
/ 25 сентября 2008

Существует отличная запись о настройке машины FreeBSD для этого: возьмите свой стандартный старый рабочий стол, добавьте дополнительный сетевой адаптер и соберите.

Запись доступна на http://www.freebsd.org/doc/en/articles/filtering-bridges/article.html.

На шаге 5 приведенных выше инструкций вы включаете брандмауэр. Для простого моделирования другого IP-соединения вы можете (например) сделать следующее:

Создайте файл /etc/rc.firewall.56k, который содержит следующее:

ipfw add pipe 1 ip from any to any out
ipfw add pipe 2 ip from any to any in    
ipfw pipe 1 config bw 56Kbit/s   
ipfw pipe 2 config bw 56Kbit/s

И изменить /etc/rc.conf ... заменить строку

firewall_type="open"

с

firewall_type="/etc/rc.firewall.56k"

перезагрузитесь, и вы получите мост 56 КБ!

Если вы работаете с Macintosh, в эту ОС по умолчанию встроен ipfw. Я сделал то же самое, направив сетевой трафик через Аэропорт и через Ethernet, настроив его так, чтобы все, что проходит через аэропорт, имело те же характеристики, что и все, что я пытаюсь подражать. Вы можете вызывать команды ipfw непосредственно из терминала и получать те же эффекты.

26 голосов
/ 25 сентября 2008

В прошлом я использовал мост, используя функциональность Linux Netem (эмуляция сети). Он легко настраивается - он позволяет вводить задержки (первый пример для глобальной сети), потерю пакетов, повреждение и т. Д.

РЕДАКТИРОВАТЬ: Существует также веб-интерфейс MasterShaper для управления настройками.

Я отмечаю, что Netem очень хорошо работал для моих приложений, но я также несколько раз использовал WANem . Предоставленный загрузочный ISO (и образы виртуальных устройств) сделали его очень удобным.

21 голосов
/ 25 сентября 2008

Чарльз

Я наткнулся на Charles прокси-приложение для отладки в сети и имело большой успех в эмуляции задержки в сети. Работает на Windows, Mac и Linux.

Charles on Mac

Пропускная способность газа / Симулятор пропускной способности

Charles можно использовать для настройки пропускной способности и задержки вашего интернет-соединения. Это позволяет вам моделировать условия модема, используя высокоскоростное соединение.

Пропускная способность может быть уменьшена до любых произвольных байтов в секунду. Это позволяет моделировать любую скорость соединения.

Задержка также может быть установлена ​​на любое произвольное количество миллисекунд. Задержка задержки имитирует задержку, возникающую на более медленных соединениях, то есть задержку между выполнением запроса и запросом, полученным на другом конце.

DUMMYNET

Вы также можете использовать vmware для запуска BSD или Linux и попробовать эту статью (DummyNet) или эту.

15 голосов
/ 29 апреля 2015

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

Редактировать: Другие заметили, что вы не можете ограничивать пропускную способность с неуклюжим, и это правда. Вы можете добавить только задержку и пару других ошибок, связанных с сетью. Это приведет к тому, что этот ответ будет признан недействительным как правильный ответ на вопрос, так как он мне пригодился, когда я хотел имитировать плохую сеть, поэтому я оставлю его здесь, если он имеет> 0 голосов или аналогичный.

13 голосов
/ 25 сентября 2008

Попробуйте WANem

WANem - это эмулятор глобальной сети, предназначенный для обеспечения реального опыта работы в глобальной сети / Интернете при разработке / тестировании приложений в среде локальной сети.

12 голосов
/ 25 сентября 2010

Для Windows вы можете использовать это приложение: http://www.softperfect.com/products/connectionemulator/

Эмулятор WAN-соединения для Windows 2000, XP, 2003, Vista, Seven и 2008.

Возможно, единственный доступный для Windows.

7 голосов
/ 01 октября 2009

Я бы попробовал использовать netem в Linux. С его помощью вы можете симулировать дополнительную задержку, повреждение, потерю пакетов и дублирование. Это даже работает на устройстве loopback.

5 голосов
/ 06 апреля 2013

Я использую NetBalancer на моей машине с Windows.

http://seriousbit.com/netbalancer/

Обновления от 2017-10-07 : последняя бесплатная версия NetBalancer - 9.2.7. Программа имеет жестко закодированный срок годности. Прежде чем запускать службу NetBalancer, необходимо вернуть системные часы до 2016-10-18. Подробнее см. в этой статье .

5 голосов
/ 22 октября 2010

Еще одна клиентская программа (только для Windows), NetLimiter - http://www.netlimiter.com

...