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

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

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

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

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

Не могли бы вы подробнее рассказать, какое тестирование производительности вы пытаетесь провести?

Andrew Edgecombe 08.10.2008 15:13

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

Richard Nienaber 08.10.2008 16:05
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
11
2
9 289
6

Ответы 6

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

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

Много лет назад мы с коллегой с большим успехом использовали ipfw для нагрузочного тестирования прокси. Он заменил дорогостоящее решение (которое останется безымянным), которое так плохо работало, что я попытался вернуть наши деньги.

Flash Sheridan 01.05.2009 22:40

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

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

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

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

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

Кто-то на самом деле собрал настройки и все, что не нужно для решения этой проблемы FreeBSD, и они назвали это ДУММИНЕТ.

It simulates/enforces queue and bandwidth limitations, delays, packet losses, and multipath effects. It also implements a variant of Weighted Fair Queueing called WF2Q+. It can be used on user's workstations, or on FreeBSD machines acting as routers or bridges.

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

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

Richard Nienaber 09.10.2008 13:59

Я не пробовал dummynet на VMware, но это определенно интересная идея. Потенциально, если вы построите дешевую быструю коробку с кучей сетевых карт, вы сможете смоделировать с ее помощью целую топологию.

Tim Farley 09.10.2008 18:05

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

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

tc qdisc add dev eth0 root netem delay 50ms

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

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

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

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

Другие вопросы по теме