Quão comum são os pacotes descartados nas comunicações em um data center?

10

Digamos que eu tenha 2 máquinas no mesmo data center, mas não necessariamente no mesmo rack.

Quão comum seria o descarte de pacotes quando enviados usando UDP entre essas duas máquinas?

Estou pedindo sob a suposição de que uma vez que existem apenas alguns interruptores no máximo entre as máquinas que os pacotes não serão caiu em tudo .

Quão comum é a chegada de pacotes com problemas no mesmo data center? Suponho que há apenas uma rota em 99,9% do tempo, portanto isso não pode acontecer.

No entanto, sempre que me pego pensando em termos absolutos, sei que devo estar perdendo alguma coisa!

Quais informações básicas eu preciso para entender melhor quando esperar pacotes descartados e com que frequência eles podem ser descartados e chegar fora de ordem para máquinas no mesmo data center?

Por fim, estou tentando decidir entre o uso de UDP ou PGM multicast ao me comunicar entre diferentes instâncias do Linode VPS localizadas no mesmo data center. A informação deve chegar e em ordem. Claro, o UDP não parece tão bom então!

Mas, se alguém pode esperar entrega quase perfeita ou perfeita no mesmo data center, tudo bem. Mas estou testando essa suposição.

Obrigado.

z8000
fonte

Respostas:

11

Você não pode confiar no UDP para entregar pacotes em ordem, porque a especificação não fornece essas garantias. Mesmo assumindo a situação ideal, um único pedaço de cabo Ethernet entre dois hosts, ainda há o problema do sistema operacional, da pilha de rede, do driver da NIC e da implementação da libc contra a qual você está escrevendo.

A cada passo dessa cadeia, os escritores desse código terão optado por NÃO priorizar a encomenda de pacotes UDP, mesmo que cheguem pela simples razão de que não precisam.

Um exemplo artificial pode ser a estrutura de dados na qual os pacotes recebidos são lidos, o que pode ser um buffer de anel. Os pacotes que chegarem em ordem serão colocados, em ordem, no buffer de anel, mas pode ser mais simples para o gravador de driver despejá-los nas camadas superiores do código de rede em ordem de memória , aleatoriamente ordenando sua ordem.

Considerando sua situação, uma máquina virtual executada em uma infraestrutura compartilhada que será executada por volume, não por desempenho, então a probabilidade de prever a ordem em que os pacotes UDP serão recebidos será baixa.

Em resumo, se a especificação disser que você não pode confiar no pedido de pacotes UDP. Você não pode confiar nisso e não pode tentar ajustar o ambiente para dar uma garantia mais forte do que as especificações já prometidas.

Dave Cheney
fonte
Isso é o que eu pensei que deveria estar pensando. Obrigado por indicá-lo bastante bem!
Z8000
1
Se você quiser multicast confiável, possivelmente para streaming, dê uma olhada en.wikipedia.org/wiki/Real-time_Transport_Protocol
Dave Cheney
0

Se alguém estiver interessado em experimentar, basta usar o Wireshark. Se alguém realmente entender nosso caso sobre conectividade lenta ou queda de pacotes, apenas espelharemos uma porta em um switch, conecte um laptop ao Wireshark e dê uma olhada.

Webs
fonte
FWIW no Linode, uma instância do VPS não pode entrar no modo promíscuo.
Z8000 03/03
Você deve instalar o Wireshark localmente em uma máquina para capturar os dados recebidos ou apenas espelhar a porta em um comutador e capturar dados dessa maneira. O espelhamento de portas ficaria mais complicado se feito para sistemas virtuais que possam compartilhar algumas portas. Mas o Wireshark pode filtrar por itens específicos, como IPs, e acho que nomes de host.
Webs
0

Praticamente qualquer switch causa a reordenação de dois pacotes a qualquer momento e é levado em consideração por muitos protocolos de rede, como o PGM.

Uma coisa a considerar é que a maioria dos datacenters bloqueia datagramas e multicast para simplificar e reduzir a sobrecarga de sua infraestrutura de rede.

O protocolo IP / PGM em si só precisa ser usado se você tiver o PGM Router Assist ativado e reconhecer elementos de rede entre o servidor e os clientes; caso contrário, fique com o PGM encapsulado no UDP e economize o fardo de gerenciar permissões de aplicativos.

Se você usar uma camada de mensagens como o ØMQ, poderá adiar a escolha da rede de sobreposição IP / PGM, UDP / PGM ou TCP para implantação e integração.

Steve-o
fonte
-2

Eu escrevi um aplicativo multicast .net simples que pode medir pacotes descartados sob pressão especificada.

Você pode baixá-lo aqui: SimpleMulticastAnalyzer .

Apreciar.

Eran Betzalel
fonte