LINUX.ORG.RU

Тестирование сетевых программ - имитация плохого соединения

 , ,


6

6

Есть некая программа, которая отправляет UDP пакеты. Мне необходимо в целях тестирования иногда не отправлять ее UDP пакеты, а иногда их дублировать (вместо одного пакета отправим два таких же UDP пакета), или отправлять не в том порядке. И чтобы с входящими UDP пакетами тоже можно было что-то такое делать, т.е. надо имитировать всякие такие проблемы с сетью. Какие для этого существуют опенсорсные решения для Linux?

★★★★★

Последнее исправление: SZT (всего исправлений: 2)

А если взять скажем вайфай-адаптеры и выкрутить мощность на самый минимум, разнеся их подальше.

Или взять эзернет кабель, разрезанный и спаянный вручную.

Xenius ★★★★★
()
Ответ на: комментарий от Xenius

Меня не интересуют аппаратные решения

SZT ★★★★★
() автор топика

Внезапно — подпишусь на тред. Сам искал. Уже не актуально, но интерес остался.

deep-purple ★★★★★
()

Здесь. По ссылке там же.

https://wiki.linuxfoundation.org/networking/netem

Собственно, это эмуляция пакетов и того, что с ними может произойти в сети. Через tc из пакета iproute2 Вам нужно выставить характеристики сетевого соединения (потери, задержки, повреждённые пакеты, см. ссылку). А дальше либо у Вас есть клиент, которым Вы можете тестировать свой сервер, либо пишете его на коленке на той же сишечке с libnet. Ну, либо пистон со scapy и развлекаетесь.

Moisha_Liberman ★★
()

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

Deleted
()

А если выкрутить QoS для какого нибудь торрент клиента и забить канал?

Deleted
()
LC_ALL=C man tc | grep -E '(QDISC|netem)' -A 1
pon4ik ★★★★★
()
Ответ на: Здесь. По ссылке там же. от Moisha_Liberman

Дополню данного оратора - в случае udp, можно ещё натравливать netem не на работающий сервер, а на проигрываемый дамп.

Если речь идёт про udp multicast - то я крайне рекомендую использовать udpreplay ибо всё остальное под онтопиком требует изрядного пердолинга, что бы проиграть дамп мультикаста. Да и в общем это мелкая, хакабельная и удобная утилита для воспроизведения udp дампов.

А что бы не портить трафик на общих интерфейсах, можно сделать мост или ещё одну петлю.

pon4ik ★★★★★
()
Последнее исправление: pon4ik (всего исправлений: 1)

или отправлять не в том порядке.

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

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

anonymous2 ★★★★★
()
Последнее исправление: anonymous2 (всего исправлений: 2)
Ответ на: комментарий от anonymous2

Есть задачи, когда порядок важен, а потеря допустима. Например, стриминг голоса и видео в реальном времени. TCP в них неприменим из-за увеличения задержки.

По теме, полюсую wanem/netem

roof ★★
()
Последнее исправление: roof (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.