Лучший способ моделирования сети WAN

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

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

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

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

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

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

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

Ответ 4

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

tc qdisc add dev eth0 root netem delay 50ms

Подробнее см. Linux HOWTO управления трафиком

Ответ 5

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

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

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

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

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

Ответ 6

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

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

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