
Estou testando o codec Opus e a pilha VoIP que o utiliza. Eu tenho um utilitário de teste sintético que envia internamente o tráfego Opus RTP entre duas portas na interface de loopback + grava o áudio resultante em arquivos para permitir análises adicionais.
Usando o utilitário 'tc' do Linux, posso simular vários problemas de rede.
No entanto, optei por simular algo como "atraso repentino na rede". Desculpe pelo meu pobre inglês!
Deve parecer que a rede está parada por 1 segundo e depois que todos os pacotes atrasados são enviados o mais rápido possível para seus destinos.
É possível implementar com o utilitário 'tc'?
Tentei executar o comando 'tc' para atrasar 1000ms durante o processo de teste sintético; mas não me dá o efeito desejado.
Alguém pode dar conselhos?
Obrigado :)
Responder1
Deve parecer que a rede está parada por 1 segundo e depois que todos os pacotes atrasados são enviados o mais rápido possível para seus destinos.
Isso é realmente possível... Deman tc
:
netem
O Network Emulator é um aprimoramento dos recursos de controle de tráfego do Linux que permite adicionar atraso, perda de pacotes, duplicação e mais outras características aos pacotes que saem de uma interface de rede selecionada.
... e deman tc-netem
:
slot
adiar a entrega de pacotes acumulados para dentro de um slot. Cada slot disponível pode ser configurado com um atraso mínimo para aquisição e um atraso máximo opcional.
... Então, você pode fazer algo assim:
sudo tc qdisc add dev interface root netem slot 1000ms 1000ms
... onde interface
está o nome da interface de rede pretendida, conforme mostrado, por exemplo, na saída de ip a
.
Isso manterá todos os pacotes transmitidos na interface especificada 1000ms
e os liberará todos de uma vez (em uma explosão).
Perceberisso, delay
por outro lado, adicionará um atraso de 0,01 1000ms
a cada pacote transmitido na interface especificada.