Моделирование плохого интернет-соединения

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

Могу ли я сделать это через ПК? Нужен ли мне доступ к маршрутизатору? Если да, возможно ли ограничить скорость каждого IP-адреса в интерфейсе маршрутизатора?

Собственно, друг предположил, что я куплю Ethernet-карту usb2lan и смогу подключить ПК к встроенному устройству, а затем с помощью ограничителя QoS программного обеспечения. вы думаете, что это сработает?

Ответ 1

Вы можете попробовать использовать Fiddler"

У вас есть варианты имитации плохой сети (например, старые модемы 33k или 56k)

Вам нужно подключить устройство к компьютеру и включить прокси (каждый запрос будет передан через Fiddler)

Затем вы можете проверить свой код с плохой сетью, а затем посмотреть, что происходит;)

Ответ 2

Если у вас Mac Mac, у Mac есть средство ядра с именем dummynet, которое вы контролируете через ipfw. Он позволяет моделировать медленное соединение, случайным образом отбрасывать пакеты с определенными вероятностями и т.д.

Тот же объект существует в Linux и других операционных системах.

На домашней странице dummynet:

По состоянию на февраль 2010 года мы выпустили третью основную версию dummynet, который теперь работает на всех основных платформах: FreeBSD, Mac OS X, как часть родные дистрибутивы, и вы можете найти Linux, OpenWRT и Windows версии здесь.

Он может многое сделать для вас:

ограничить общий входящий TCP-трафик до 2 Мбит/с, а UDP до 300 Кбит/с

ipfw add pipe 2 in proto tcp
ipfw add pipe 3 in proto udp
ipfw pipe 2 config bw 2Mbit/s
ipfw pipe 3 config bw 300Kbit/s

ограничить входящий трафик до 300 Кбит/с для каждого хоста в сети 10.1.2.0/24.

ipfw add pipe 4 src-ip 10.1.2.0/24 in
ipfw pipe 4 config bw 300Kbit/s queue 20 mask dst-ip 0x000000ff

смоделируйте ссылку ADSL на Луну:

ipfw add pipe 3 out
ipfw add pipe 4 in
ipfw pipe 3 config bw 128Kbit/s queue 10 delay 1000ms
ipfw pipe 4 config bw 640Kbit/s queue 30 delay 1000ms

Ответ 3

Вы можете использовать (почти) любой дистрибутив linux из liveCd (например, ubuntu, mandriva, others) для его запуска на любом оборудовании, которое вы хотите, и использовать инструмент на основе ядра netem, а также "Сетевая эмуляция" с инструментами пакета "iproute2". Он позволяет контролировать задержки, потерю пакетов, повреждение, дублирование и другие возможные проблемы в глобальной сети.

Существует список наиболее используемых симуляций, например:

  • Контроль скорости с использованием фильтра ковша токена:

    tc qdisc add dev eth0 root handle 1:0 netem delay 100ms
    tc qdisc add dev eth0 parent 1:1 handle 10: tbf rate 256kbit buffer 1600 limit 3000
    
  • Задержка всех пакетов по фиксированному времени: tc qdisc add dev eth0 root netem delay 100ms

  • Потеря пакетов: tc qdisc change dev eth0 root netem loss 0.1%

Ответ 4

Это еще одно решение OSX, посмотрите на Network Link Conditioner.

Следующая цитата вырвана из следующего блога (все кредиты для ниже должны идти в Мэтт Геммелл):

http://mattgemmell.com/2011/07/25/network-link-conditioner-in-lion/

Получить оборудование IO Tools для Xcode. Для этого перейдите в Xcode, затем выберите "Open Developer Tool" и, наконец, "Больше разработчиков" Инструменты... ". Вы будете отправлены на сайт загрузки разработчиков Apple. следует загрузить" Hardware IO Tools for Xcode ".

Образовавшийся образ диска будет содержать (среди прочего) панели предпочтений для системных настроек, называемых" Network Link "Conditioner". Дважды щелкните файл prefpane и выполните аутентификацию, чтобы разрешить он будет установлен. Затем вы увидите панель в системных настройках.

Вы можете выбирать из различных типов сетевых условий используя всплывающее меню "Профиль".

Вы также можете добавить собственные профили, нажав "Управление профилями", либо с нуля, либо путем дублирования существующего профиля.

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