Лучший способ симулировать сеть WAN - PullRequest
10 голосов
/ 08 октября 2008

Упрощенно, у меня есть приложение, в котором данные предназначены для передачи через Интернет между двумя серверами. В идеале я хотел бы проверить, в какой момент программное обеспечение перестает функционировать. При каком нижнем пределе (пропускная способность, задержка, отброшенные пакеты) перестают работать средства для проверки надежности программного обеспечения.

Я думал, что сделаю следующее:

  1. Настройка до 3 машин (экземпляры VMware)
  2. Установите 2 приложения на двух серверах.
  3. Настройте 3-й сервер, чтобы он располагался между двумя машинами, выполняя какое-то волшебство с маршрутизацией и удаленным доступом в Windows 2003
  4. Установите либо Traffic Shaper XP или NetLimiter для ограничения пропускной способности
  5. Запустите что-то вроде TMnetSim Network Simulator для симуляции плохого соединения.

Звучит ли это как хорошая идея или есть более простые / лучшие способы сделать это? Мне не очень комфортно в Linux, а мои товарищи по команде еще меньше.

Ответы [ 6 ]

9 голосов
/ 06 мая 2009

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

3 голосов
/ 08 октября 2008

FreeBSD В ipfw предусмотрены средства для моделирования связей с заданной полосой пропускания, задержкой или частотой ошибок. Вы можете использовать эту машину FreeBSD в качестве вашей машины "в середине" в вышеупомянутой настройке.

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

2 голосов
/ 10 ноября 2010

Может быть, пришло время немного узнать о Linux, потому что добавление задержки 50 мс для каждого исходящего пакета можно сделать, набрав всего одну строку:

tc qdisc add dev eth0 root netem delay 50ms

Подробнее см. Linux Traffic Control HOWTO

2 голосов
/ 09 октября 2008

Кто-то фактически упаковал настройки и все, что нужно для решения этой проблемы во FreeBSD, и они называют это DUMMYNET .

Он имитирует / обеспечивает ограничения очереди и пропускной способности, задержки, потери пакетов и эффекты многолучевого распространения. Он также реализует вариант Weighted Fair Queuing под названием WF2Q +. Его можно использовать на рабочих станциях пользователя или на машинах FreeBSD, действующих как маршрутизаторы или мосты.

Он может имитировать именно то, что вы хотите, и он бесплатный и загружается на обычном оборудовании. У них даже есть консервированная установка, которая достаточно мала, чтобы положить ее на дискету (!), Которую можно скачать по этой ссылке.

1 голос
/ 08 октября 2008

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

Если я помню, мы написали прокси-программу для сокетов, которая контролировалась inetd на компьютере с UNIX. Этот сокет будет принимать соединения от клиента и открывать эквивалентные сеансы через сервер. Затем он будет зацикливаться, передавая сообщения в обоих направлениях.

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

У него также была возможность периодически удалять связь, поскольку каналы глобальной сети были для нас менее надежны, чем локальный трафик.

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

0 голосов
/ 16 апреля 2014

Для этого есть очень хорошее (и бесплатное) решение Microsoft, мы используем его в течение достаточно долгого времени, и оно прекрасно работает, оно может очень легко имитировать все (потеря пакетов, низкая пропускная способность, отключение, задержка .... ) Это лучшее решение, которое я нашел для среды Windows

Дополнительную информацию и ссылку для скачивания можно найти здесь: Сообщение в блоге MARCO

этот продукт прошел некоторую эволюцию и теперь он интегрирован в visual studio как часть тестирования автоматизации, но я обнаружил, что использование автономного (его довольно сложно найти, так что сохраняйте локальную копию) работает намного лучше , имейте в виду, что вам нужно по крайней мере два компьютера (или виртуальных машины), так как вам нужно пройти через сетевой адаптер для того, чтобы приложение заработало свое волшебство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...