2016-10-22 13 views
2

Я пытаюсь имитировать фиксированную задержку времени на tcp-пакетах, поступающих из исходного порта 7000, используя команду tc на ubuntu. Команды я использую являются:Имитировать сетевую задержку на конкретном порту с помощью tc

sudo tc qdisc add dev eth1 root handle 1: prio 
sudo tc qdisc add dev eth1 parent 1:1 handle 2: netem delay 3000ms 
sudo tc filter add dev eth1 parent 1:0 protocol ip u32 match ip sport 7000 0xffff flowid 2:1 

Там не представляется, любая задержка, вызванная этим фильтром, может кто-то пожалуйста, указать, где я неправильно? Кроме того, есть ли способ, которым я могу выполнить ping порт или сделать что-то эквивалентное для проверки задержки?

Спасибо!

ответ

1

Попробуйте это:

sudo tc qdisc add dev eth1 root handle 1: prio priomap 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
sudo tc qdisc add dev eth1 parent 1:2 handle 20: netem delay 3000ms 
sudo tc filter add dev eth1 parent 1:0 protocol ip u32 match ip sport 7000 0xffff flowid 1:2 
  • Я добавил, что все нули priomap к prio поэтому все регулярное движение будет проходить через одну полосу
    • по умолчанию, prio назначает трафик различных диапазонов согласно значению DSCP пакета
    • Это означает, что некоторый трафик, который не соответствует вашему фильтру, может оказаться в том же классе, что и отложенный трафик
  • Я тогда назначен netem к одному из классов - 1:2
  • Наконец, я добавил свой фильтр, так что присвоит идентификатор 1:2 потока для соответствующих пакетов
    • Это, вероятно, где вы пошло не так
    • Вам нужно назначить фильтр 1:2 из классового Прио Qdisc, а не бесклассовых netem.

Чтобы проверить это, я изменил фильтр д порта вместо с порт 7000, и подключение к checkip.amazonaws.com меня ушло 6 секунд (3 секунды задержки для TCP Syn, 3 секунды задержки для HTTP GET):

[email protected]:~$ wget -O - checkip.amazonaws.com 
--2016-10-23 06:21:42-- http://checkip.amazonaws.com/ 
Resolving checkip.amazonaws.com (checkip.amazonaws.com)... 75.101.161.183, 54.235.71.200, 107.20.206.176, ... 
Connecting to checkip.amazonaws.com (checkip.amazonaws.com)|75.101.161.183|:80... connected. 
HTTP request sent, awaiting response... 200 OK 
Length: 10 
Saving to: ‘STDOUT’ 

-         0%[               ]  0 --.-KB/s    X.X.X.X 
-         100%[===========================================================>]  10 --.-KB/s in 0s 

2016-10-23 06:21:48 (3.58 MB/s) - written to stdout [10/10] 

Подключение к другим портам, хотя (например, 443 - HTTPS, 22 - SSH, и т.д.) были намного быстрее. Вы также можете запустить sudo tc -s qdisc show dev eth1, чтобы убедиться, что количество пакетов, обработанных netem, имеет смысл.

+0

Это работает, спасибо! – Kapil

Смежные вопросы