Injetar Atraso entre Máquinas Virtuais em uma VLAN

4

Gostaríamos de simular o impacto da localidade usando VMs dentro de uma nuvem pública (digamos AWS EC2).

Para fazer isso, gostaríamos de injetar atrasos nos pacotes de forma que pudéssemos simular uma topologia de rede específica.

Suponha que há três VMs: A, B, C

  | 

A |  <- 5 μs delay -> B 

  | <---- 25 μs delay ----> C

Como podemos mais facilmente injetar um atraso de 5 μs (ou qualquer valor arbitrário) para conexões entre A e B, contra um atraso de 25 μs entre A e C? Qualquer solução é apreciada (alterações no nível do kernel do Linux em cada VM / criação de uma rede de sobreposição / ...).

    
por Jedi 24.02.2017 / 09:18

1 resposta

4

A criação de atrasos pode ser simulada pelos algoritmos de modelagem de tráfego suportados pelo kernel do Linux. Do netem manual :

# tc qdisc add dev eth0 root handle 1: prio
# tc qdisc add dev eth0 parent 1:3 handle 30: tbf rate 20kbit buffer 1600 limit  3000
# tc qdisc add dev eth0 parent 30:1 handle 31: netem  delay 200ms 10ms distribution normal
# tc filter add dev eth0 protocol ip parent 1:0 prio 3 u32  match ip dst <IP_of_server_B>/32 flowid 1:3

Qual, quando emitido no Servidor A, cria um atraso de 200 ms com variação aleatória de ± 10 ms no tráfego para o servidor B.

    
por 24.02.2017 / 09:35