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


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: Не вдалося завантажити збіг` випадковий '". Знизу команда працювала для мене - iptables -A FORWARD -m статистика --встановлення випадкових випадків - ймовірність 0,2 -j DROP
prashantsunkari

3

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

WANem - емулятор широкосмугової мережі, призначений забезпечити реальний досвід роботи мережі / Інтернету широкої області під час розробки / тестування додатків у середовищі локальної мережі. Зазвичай розробники додатків розробляють програми в локальній мережі, тоді як цільовим призначенням для них можуть бути клієнти, які отримують доступ до того ж через WAN або навіть Інтернет. Таким чином, WANem дозволяє команді розробників додатків встановити прозорий шлюз додатків, який можна використовувати для імітації характеристик WAN, таких як затримка мережі, втрата пакета, пошкодження пакету, відключення, переупорядкування пакетів, джиттер та ін. WANem можна використовувати для імітації широкої області Умови мережі для трафіку Data / Voice і випускається під широко прийнятною ліцензією GPL v2.


2

Встановіть порт висхідної лінії зв'язку на 10 Мбіт / с і, напівдуплекс. Потім використовуйте хост у мережі, щоб відігнати соплі з нього. Це повинно вас пристойно створити: D


Встановіть розміри пакетів на pings значно більшими, ніж за замовчуванням. Це може бути дійсно ефективним і простим способом імітувати насичені / в основному погані мережеві зв’язки - якщо ви зможете скасувати конкретне з'єднання, як зазначалося, цілеспрямовано встановивши його пропускну здатність нижче, ніж у «атакуючої» машини.
Ендрю Барбер

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