Назад | Перейти на главную страницу

Как настроить netem box

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

Таким образом, в Netem box должно быть два сетевых адаптера и два Ethernet-соединения (eth0 и eth1). У меня есть несколько вопросов, которые нужно прояснить.

1) Можно ли использовать кросс-кабель для подключения сервера к Netem box? или это другой VLAN. 2) Насколько я понимаю, клиент получит доступ к eth0, и Netem box будет перенаправлять все пакеты на eth1 и то же самое для сервера для связи с Netem box. Поэтому я хочу уточнить, может ли клиент напрямую подключаться к IP-адресу сервера (та же сеть) или клиент разговаривает только с IP-адресом Netem box, чтобы он пересылал пакеты на сервер?

Я предполагаю, что вы имеете в виду этот руководство.

С Linux-мостом вы собираетесь использовать свой netem-бокс в качестве коммутатора, даже без IP-адреса, но для управления. Таким образом, клиент будет связываться прямо с вашим сервером.

Пока вы не укажете субинтерфейсы (например, eth0.101), ваш коммутатор будет перенаправлять весь трафик с тегами vlan как есть.

На самом деле мне нужно было понять это несколько недель назад. Я сделал это, используя netem box в качестве роутера, но я не думаю, что это имеет большое значение.

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

Из вашего вопроса я не понял одной вещи: в каком направлении вы хотите задержать движение, или в обоих направлениях. На самом деле это не так уж важно, но вам нужно будет выполнить команду netem по крайней мере один раз для каждого «исходящего» ник, то есть для каждого направления, в котором идет трафик. По умолчанию netem влияет только на исходящий трафик, но не на входящий.

Тем не менее, вот команда, которую вы хотите:

tc qdisc add dev eth0 root handle 1:0 netem delay 25ms

Эта команда вводит задержку в 25 мс для всех пакетов, покидающих хост через eth0. Вы можете, конечно, отрегулировать число eth (x) на соответствующий nic, а 25 мс - на желаемую задержку. Однако есть одна проблема: обратите внимание в команде, что НЕТ ПРОБЕЛА между «25» и «мс». Это важно; это приведет к ошибке, если вы поместите пространство.

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

tc qdisc add dev eth0 root handle 1:0 netem delay 25ms 10ms

Это задержит трафик на средний 25 мс, но каждый пакет будет фактически задерживаться на случайное число мсек между 15 мс и 35 мс (25 мс +/- 10 мс)

Чтобы «выключить» netem, выполните ту же команду, но измените «добавить» на «del».

С netem вы можете сделать гораздо больше, включая переупорядочение пакетов, отбрасывание пакетов, повреждение пакетов и дублирование пакетов, все это либо случайное, либо фактически коррелированное с предыдущими пакетами. Много больше, чем я могу здесь вдаваться. Для получения дополнительной информации проверьте www.linuxfoundation.org/collaborate/workgroups/networking/netem или страницу руководства для netem, "man netem".