Quão comuns são os pacotes descartados nas comunicações dentro de um data center?

10

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

Quão comuns seriam os pacotes descartados quando enviados usando o UDP entre essas duas máquinas?

Eu estou perguntando com base no pressuposto de que, como há apenas alguns switches no máximo entre as máquinas, os pacotes não serão descartados de forma alguma .

Quão comum é a chegada de pacotes fora de ordem dentro do mesmo data center? Minha suposição é que há apenas uma rota 99,9% do tempo, então 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?

Em última análise, estou tentando decidir entre usar multicast UDP ou PGM ao se comunicar entre diferentes instâncias do Linode VPS localizadas no mesmo datacenter. A informação deve chegar e em ordem. Claro, UDP não parece tão bom então!

Mas, se é possível esperar uma entrega quase perfeita ou perfeita no mesmo data center, tudo bem. Mas estou testando essa suposição.

Obrigado.

    
por z8000 02.03.2010 / 03:47

4 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 mais ideal, uma única peça de cabo ethernet entre dois hosts, ainda há a questão do SO, da pilha de rede, do driver da NIC e da implementação da libc contra a qual você está escrevendo.

Em cada passo dessa cadeia, os autores desse código terão escolhido NOT para priorizar o pedido de pacotes UDP, mesmo que eles cheguem pela simples razão de não precisarem.

Um exemplo inventado pode ser a estrutura de dados na qual os pacotes de entrada são lidos, o que pode ser um buffer de anel. Os pacotes que chegam 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 , portanto randomizando seus arquivos. ordenação.

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

Em suma, se a especificação disser que você não pode confiar na ordenação de pacotes UDP. Você não pode confiar nisso, e você não pode tentar ajustar o ambiente para dar uma garantia mais strong do que a especificação prometida.

    
por 02.03.2010 / 04:31
0

Se alguém estiver interessado em experimentar, basta usar o Wireshark. Se alguém realmente entender nosso caso sobre conectividade lenta ou pacotes descartados, basta espelhar uma porta em um switch, conectar um laptop com o Wireshark e dar uma olhada.

    
por 03.03.2010 / 15:11
0

Praticamente qualquer comutador causará reordenamento de dois pacotes a qualquer momento e será levado em conta por muitos protocolos de rede, como o PGM.

Uma coisa a considerar é que a maioria dos datacenters bloqueia datagramas e bloqueia 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 PGM Router Assist habilitado e ciente dos elementos de rede entre o servidor e os clientes, caso contrário, fique com o PGM encapsulado no UDP e economize o trabalho de gerenciar as permissões do aplicativo.

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

    
por 18.03.2011 / 04:35
-2

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

Você pode baixá-lo aqui: SimpleMulticastAnalyzer .

Aproveite.

    
por 01.04.2013 / 03:49