Linux - Posso duplicar, enviar e desduplicar pacotes UDP?

2

Estou transmitindo dados UDP em dois roteadores baseados em Linux (Intel) e estou com baixos níveis de perda de pacotes que estão interferindo no aplicativo.

Existe uma maneira (idealmente, mas não necessariamente envolvendo iptables) Eu posso receber cada pacote UDP e enviar 2 cópias dele, descartando o segundo para chegar (se ambos os pacotes chegarem)? Estou ciente de que isso usará o dobro da largura de banda e estou bem com isso.

    
por davidgo 27.11.2017 / 05:31

1 resposta

1

Se um aplicativo transmitir pacotes UDP, ele deve estar preparado para que alguns (ou até mesmo muitos) desses pacotes sejam descartados.

Portanto, o aplicativo deve lidar com isso (por exemplo, dados de áudio ou vídeo em tempo real, em que as informações ausentes são ignoradas e causam qualidade reduzida, porque você não pode reenviar pacotes) ou deve implementar seu próprio protocolo para garantir a retransmissão ou usar outro protocolo que garanta a entrega.

A implementação de uma camada externa "apenas enviar 2 cópias" não é a solução. Sim, eu sei que você não quer ouvir isso, mas é verdade.

Portanto, reescreva o aplicativo para usar o protocolo adequado.

Alternativamente, encapsule os pacotes em algum outro aplicativo que implemente um protocolo adequado (interface tun / tap). Se você insiste em "apenas duplicar pacotes" para ser um protocolo adequado (não é difícil escrever tal aplicação, google para tun / tap exemplo de programas), tente, e veja se funciona (não vai).

    
por 27.11.2017 / 09:11