Netem - como atrasar pacotes enviados / recebidos de algum host

0

Digamos que tenhamos o host A e o host B . Gostaríamos de usar netem para simular o seguinte cenário: B envia pacotes para A com algum atraso.
Como fazer isso com netem em dois cenários:
(1) executando netem no host A
(2) Executando netem no host 'B .

Alguma idéia?

    
por newbie 22.03.2018 / 21:01

1 resposta

0

Existem várias boas fontes para introduzir atrasos nos pacotes recebidos e enviados. Esta página wiki do NetEm tem muita informação. Consulte a seção "1.1 Emulando atrasos na rede de longa distância" para atrasar pacotes de saída e "2.3 Como posso usar o netem no tráfego de entrada?" para pacotes de entrada. Eu tentei estes na minha configuração e não tive problemas para fazer o trabalho.

Latência base:

# netperf -H $my_ip -t TCP_RR -P 0 -- -r 64 -o RT_LATENCY
21.800

100ms de atraso apenas no lado do cliente (B):

# tc qdisc add dev $my_interface root netem delay 100ms

Resultado:

# netperf -H $my_ip -t TCP_RR -P 0 -- -r 64 -o RT_LATENCY
102184.355

100ms de atraso apenas no lado do cliente (A):

Primeiro, crie um IFB de pseudo-dispositivo Intermediate Functional Block (ponte Ethernet também funcionaria):

# modprobe ifb
# ip link set dev ifb0 up

Em seguida, redirecione todo o tráfego de entrada para passar pelo dispositivo IFB primeiro:

# tc qdisc add dev $my_interface ingress
# tc filter add dev $my_interface parent ffff: protocol ip u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ifb0

Agora, basta adicionar atraso ao tráfego de saída do dispositivo IFB, que agora é o tráfego de entrada para my_interface:

# tc qdisc add dev ifb0 root netem delay 100ms

Resultado:

# netperf -H $my_ip -t TCP_RR -P 0 -- -r 64 -o RT_LATENCY
154442.238

Aplicando os dois resultados em:

# netperf -H $my_ip -t TCP_RR -P 0 -- -r 64 -o RT_LATENCY
333803.282

Como você pode ver, a latência é maior que os 100ms adicionados (ou 200ms no último exemplo) + latência base. O NetEm causa um atraso em um local específico no canal, portanto, a latência maior que a esperada pode ser um efeito colateral se o atraso.

Espero que isso ajude.

    
por 30.03.2018 / 09:56