Как имитировать среду с низкой пропускной способностью и высокой задержкой?

201

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

Nic
источник
7
Отличный вопрос! Я хотел бы услышать некоторые ответы, связанные с веб-разработкой ASP .NET.
Карл

Ответы:

79

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

Джон Колверсон
источник
12
Панель настроек «Network Link Conditioner» является частью Hardware IO Tools для XCode, которую вы можете скачать с developer.apple.com/downloads
avernet
похоже, не работает с Genymotion. (Черный экран)
Бруно,
1
Ссылка на скачивание для новых версий XCode: developer.apple.com/download/more/?q=Additional%20Tools
jstorm31
@ jstorm31 Спасибо. Я обновил ответ с текущим названием пакета и текущей ссылкой.
Джон Колверсон
37

Существует отличная статья о настройке машины 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"

перезагрузка, и вы получите мост 56K!

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

heckj
источник
27

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

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

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

Крис Кумлер
источник
Идеально подходит для моих нужд и доступно из коробки на моем сервере Ubuntu 14.04!
RobM
21

Чарльз

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

Чарльз на Mac

Пропускная способность дросселя / пропускная способность симулятор

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

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

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

DUMMYNET

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

Евгений Йокота
источник
2
Charles - это HTTP-прокси, и поэтому подходит только для тестирования HTTP-приложений. Каждому свое, но, на мой взгляд, это, наверное, худшее программное обеспечение, которое я когда-либо использовал. Я использовал его только в течение короткого времени, пока мне приходилось работать на Mac. Для пользователей Windows я бы порекомендовал Fiddler, если вам нужен прокси-сервер отладки HTTP. К сожалению, я не нашел ничего, кроме Чарльза для OSX.
Брэд
6
Привет бред Можете ли вы упомянуть, какие у вас были проблемы?
Анте
17

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

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

Markus
источник
Как вы контролируете пропускную способность с неуклюжим?
user3731622 25.02.16
3
Отличная программа. Как раз то, что мне было нужно. Я рекомендую это. Работает как шарм и его супер просто.
Jh62
1
Когда большинство людей говорят «ограничить пропускную способность», они, вероятно, более чем довольны простым добавлением огромных задержек и потери пакетов, поскольку они действительно ограничивают пропускную способность. Также эта программа удивительно проста в использовании, превосходит все остальное, что я пробовал на Windows.
катится
13

Попробуй WANem

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

epatel
источник
1
Я попробовал это и не могу заставить его работать. По какой-то причине он не получит IP-адрес от нашей сети, в то время как у любого другого компьютера с этим нет проблем.
Майкл Бек
12

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

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

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

Эндрю Лок
источник
7

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

мистифицировать
источник
Эй, у тебя есть какая-то эквивалентная команда для windows как netem?
Шаши Ранджан
6

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

kaliatech
источник
2
Netlimiter хорош, но я думаю, что он имеет только низкую пропускную способность - он не может изменить задержку?
Натан
В планах бета-версии v3 симуляция задержки указана как запланированная функция. Это было недавно выпущено, и я еще не использовал это, чтобы видеть, сделала ли эта особенность это.
kaliatech
Эта функция не попала в бета-версию 9. Тьфу.
cacba
4
Даже текущая бета-версия (NetLimiter 4) не позволяет изменить время ожидания.
влиятельный
5

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

http://seriousbit.com/netbalancer/

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

Тони
источник
Спасибо!! NetBalancer - единственный инструмент, перечисленный на этой странице, который мне удалось заставить работать и который может контролировать задержку.
влиятельный
4

Я думаю, tcможет сделать работу на платформе UNIX.

tcиспользуется для настройки управления трафиком в ядре Linux
http://lartc.org/manpages/tc.txt

Саван
источник
3

Чтобы смоделировать соединение с низкой пропускной способностью для тестирования веб-сайтов с помощью Google Chrome, перейдите на вкладку «Сеть» в инструментах F12 и выберите уровень пропускной способности для моделирования или создайте настраиваемую пропускную способность для моделирования.

user1785960
источник
1
Спасибо! Если вы не можете его найти, он находится в консоли Chrome на вкладке «Сеть» справа от кнопки «Отключить кэш». По умолчанию используется значение «Без регулирования».
Алан Уиллмс
1

Если вы работаете в Linux, я считаю, что программа Traffic Control будет очень полезна для такого рода вещей.

SMO
источник
1

На сайте http://www.shunra.com есть продукт VE Desktop, который можно использовать для имитации различных условий сети. Это позволяет настраивать задержки, пропускную способность и потери пакетов с помощью простого пользовательского интерфейса. Только предостережение, это не бесплатно. Надеюсь это поможет.

Шридхар Котекар
источник
1

Я давно искал простой в использовании инструмент для этого типа тестирования. Я только что столкнулся с этим на днях: Сетевой симулятор задержки

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

отметка
источник
1

Взгляните на сетевой эмулятор NE-ONE, который позволяет вам настроить пропускную способность, задержку, потерю пакетов, переупорядочение пакетов, дублирование пакетов, фрагментацию пакетов, перегрузку сети и многие другие нарушения, чтобы вы могли создавать реальные условия сети в лаборатории , Для восходящей и нисходящей линии связи можно настроить различные ухудшения, чтобы у вас была действительно хорошая восходящая линия, но очень плохая связь по нисходящей линии связи, отлично подходящая для наблюдения за тем, как приложение обрабатывает очереди TCP, потому что подтверждения не возвращаются своевременно и общая задержка поэтому увеличивается!

Здесь есть обзорное видео http://www.youtube.com/watch?v=DwtqlE7LcrQ, специально предназначенное для разработчиков игр, но оно показывает, о чем идет речь. NE-ONE настраивается с помощью веб-браузера, поэтому его очень легко установить и настроить - вам не нужно быть гуру сети :-)

Существует версия аппаратного обеспечения - http://www.itrinegy.com/index.php/products/network-emulators/ne-one - или вы можете загрузить версию Virtual Appliance (программного обеспечения), которая работает под управлением VMware ESXi Server. Виртуальное устройство можно загрузить с сервера обмена решениями VMware - solutionexchange.vmware.com/store/products/ne-one-flex-network-emulator.

Питер Уайт
источник
0

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

http://www.softinengines.com/index.php?section=download&langu=en

Это не бесплатно, но есть 30-дневная пробная версия.

Боб Кинг
источник
0

LANforge ICE - это сетевой эмулятор с акцентом на виртуальную маршрутизацию, джиттер, повреждение и задержку. Проекты использовали его для эмуляции спутниковой связи, кабельных и модемных соединений и высокоскоростной (10 Гбит) эмуляции wan. Вы можете использовать графический интерфейс Java для создания своих виртуальных сетей и создания очень подробных отчетов о потоке трафика. Продукты LANforge также предоставляют функции генерации трафика: фрейм, Ethernet, уровень 3 и трафик с отслеживанием состояния (NFS, http). Последние выпуски для LANforge также имеют сложные функции тестирования WiFi.

memnoch_proxy
источник
0

Вы можете попробовать это: CovenantSQL / GNTE просто напишите YAML так:

group:
  - 
    name: china
    nodes:
      - 
        ip: 10.250.1.2
        cmd: "cd /scripts && ./YourBin args"
      - 
        ip: 10.250.1.3
        cmd: "cd /scripts && ./YourBin args"
    delay: "100ms 10ms 30%"
    loss: "1% 10%"
  - 
    name: us
    nodes:
      - 
        ip: 10.250.2.2
        cmd: "cd /scripts && ./YourBin args"
      - 
        ip: 10.250.2.3
        cmd: "cd /scripts && ./YourBin args"
    delay: "1000ms 10ms 30%"
    loss: "1% 10%"

network:
  -
    groups:
      - china
      - us
    delay: "200ms 10ms 1%"
    corrupt: "0.2%"
    rate: "10mbit"

бегать ./generate scripts/your.yaml

auxten
источник