AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 421462
Accepted
Georgi Stoyanov
Georgi Stoyanov
Asked: 2018-02-03 07:27:53 +0800 CST2018-02-03 07:27:53 +0800 CST 2018-02-03 07:27:53 +0800 CST

Simulação de perda de pacotes em interface em ponte usando netem

  • 772

Estou tentando simular uma perda de rede em uma interface em ponte.
Eu tenho 4 interfaces de rede no meu servidor eth1, eth2 e eth3 estão em ponte em br0 e eth0 que está desconectado no momento. Na verdade, o eth2 também está desconectado (desligado). Eu conectei ao eth1 um dispositivo de transmissão de vídeo e o eth3 está conectado diretamente ao switch de rede.
Um dispositivo receptor está conectado ao mesmo switch, mas em outra porta. Estou usando netem para simular deficiências de rede no caminho. Este é um exemplo do meu comando netem:
sudo tc qdisc add dev eth1 root netem delay 100ms 50ms loss 20%.
Se eu fizer ping no transmissor, estou obtendo exatamente o atraso de tempo, jitter e perda de pacote configurados com este comando, mas isso de alguma forma não está afetando o transporte de rede entre o transmissor e o decodificador. Se eu executar o mesmo comando no eth3, o link entre o transmissor e o receptor começa a cair, mas a questão é por que o transporte está funcionando bem se eu definir eth1 como uma interface de rede?

linux networking
  • 1 1 respostas
  • 2530 Views

1 respostas

  • Voted
  1. Best Answer
    A.B
    2018-08-21T14:21:09+08:002018-08-21T14:21:09+08:00

    A razão para esse comportamento é descrita na tc-netem(8)(mina em negrito):

    atraso

    adiciona o atraso escolhido aos pacotes enviados para a interface de rede escolhida .

    ou

    perda aleatória

    adiciona uma probabilidade de perda independente aos pacotes que saem da interface de rede escolhida .

    Portanto tc ... netem, funciona apenas em pacotes de saída e não tem efeito nos pacotes de entradaeth1 . Aplicando a regra a eth3permite netemter o efeito pretendido já que agora é uma interface de saída para o tráfego de vídeo.

    Caso eth3não deva ter tais regras aplicadas, pois deve se comportar normalmente com tráfego não relacionado a eth1, e somente o tráfego de entradaeth1 deve sofrer essas regras, então uma interface intermediária deve ser colocada entre eth1e a ponte para que seja netemaplicada em um outgoinglado.

    Um exemplo fácil de entender, seria adicionar uma outra ponte escravizando eth1e também vinculada com um vethpar à primeira ponte: então a tcregra pode ser aplicada na vethinterface desta ponte adicional: desde que os pacotes recebidos eth1sejam enviados por esta vethinterface , funcionaria como pretendido.

    Mas, na verdade, o dispositivo Intermediate Functional Block ( ifb0) foi projetado para ser usado para esse tipo de problema, inserindo uma interface de saída interna artificial no fluxo da rede, logo após a interface de entrada/entrada. ifb0ainda estará localizado antes da maioria das outras camadas de rede e permanecerá praticamente invisível. Como é de saída/saída (mas apenas internamente), netemvai funcionar nele.

    Então, aqui está a solução para netemtrabalhar para o tráfego de entrada em vez do tráfego de saídaeth1 na interface, usando ifb0o truque adaptado de um exemplo de tc-mirred(8).:

    ip link add ifb0 type ifb || :
    ip link set ifb0 up
    tc qdisc add dev ifb0 root netem delay 100ms 50ms loss 20%
    tc qdisc add dev eth1 handle ffff: ingress
    tc filter add dev eth1 parent ffff: u32 match u32 0 0 action mirred egress redirect dev ifb0
    

    u32 match u32 0 0 é o filtro QUALQUER mais simples possível a ser usado para que o comando de filtro seja aceito.

    Claro que também funciona quando eth1está em uma ponte.

    • 3

relate perguntas

  • Inicie/pare o serviço systemd usando o atalho de teclado [fechado]

  • Roteador estranho funciona com centos 6 [fechado]

  • Necessidade de algumas chamadas de sistema

  • astyle não altera a formatação do arquivo de origem

  • Passe o sistema de arquivos raiz por rótulo para o kernel do Linux

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve