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


13

Мне было интересно, есть ли у кого-нибудь опыт настройки среды, специально предназначенной для низкой производительности при отправке / получении запросов по сети. Я занимаюсь разработкой приложения и хотел бы сделать его устойчивым в чрезвычайно плохо работающих сетях. Кто-нибудь знает, возможно ли настроить маршрутизатор на:

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

Если это невозможно на маршрутизаторе, можно ли настроить компьютер для работы в качестве маршрутизатора и сделать это?

Большое спасибо!

Ответы:


17

Если вы используете Linux в качестве маршрутизатора, у netfilter есть несколько способов запутаться в вашем пакетном трафике.

randomМодуль может быть использован , чтобы случайно отбрасывать пакеты. Например, это:

iptables -A FORWARD -m random --average 10 -j DROP

заставит маршрутизатор случайным образом отбрасывать пакеты со средней скоростью 10%.

Вы также можете испортить случайные пакеты с помощью цели XOR, например

iptables -A FORWARD -m random --average 1 -j XOR --key "junktoxortomypacket"

повредит 1% пересылаемых пакетов, XORing их с ключом, полученным из данной строки.


Это звучит потрясающе! Спасибо Стивен! Вы когда-нибудь настраивали это? Какой Linux дистрибутив?
— Отметить

Я успешно создал маршрутизаторы для небольших сетей с использованием Debian. Но на самом деле почти любой дистрибутив Linux с последним ядром должен работать нормально, так как netfilter встроен в ядро. На самом деле я никогда не пытался создать «плохой» маршрутизатор, как описано здесь, но это может быть интересным проектом для ленивого воскресного дня ...
— Стивен Понедельник

Если вы используете iptables версии 1.3.5, приведенная выше команда может привести к ошибке с сообщением «iptables v1.3.5: Не удалось загрузить совпадение« random »». У меня сработала приведенная ниже команда - iptables -A FORWARD -m статистика --mode random - вероятность 0.2 -j DROP
— prashantsunkari

3

Я успешно использовал WANem для моделирования условий сети WAN между Германией и Индией. WANem поставляется в виде загрузочного компакт-диска или виртуального устройства. Вы просто загружаете его, настраиваете необходимые свойства сети и затем маршрутизируете свой трафик через него. Цитирую официальное описание:

WANem - это эмулятор глобальной сети, предназначенный для обеспечения реального опыта работы с глобальной сетью / Интернетом при разработке / тестировании приложений в среде локальной сети. Как правило, разработчики приложений разрабатывают приложения в локальной сети, в то время как предполагаемая цель для этого может быть, клиенты получают доступ к тому же через глобальную сеть или даже Интернет. Таким образом, WANem позволяет группе разработчиков приложений настроить прозрачный шлюз приложений, который можно использовать для имитации характеристик WAN, таких как задержка в сети, потеря пакетов, повреждение пакетов, разъединения, переупорядочение пакетов, дрожание и т. Д. WANem можно использовать для моделирования глобальной сети. Условия сети для трафика данных / голоса и выпущены под широко приемлемой лицензией GPL v2.


2

Установите порт восходящей линии связи на 10 Мбит / с и полудуплекс, если можете. Затем используйте хост в сети, чтобы пропинговать сопли из него. Это должно кастрировать тебя прилично: D


Также установите размеры пакетов на эхо-запросах, значительно превышающие стандартные. Это может быть действительно эффективным и простым способом имитации насыщенных / обычно плохих сетевых соединений - если вы можете нанести вред конкретному соединению, как было отмечено, целенаправленно установив его пропускную способность ниже, чем у «атакующей» машины.
— Эндрю Барбер

Вы также можете связываться с MTU, выбрать настоящий размер для странного игрока :)
— SpacemanSpiff
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.