Máximo rendimento no comutador com diferentes velocidades de link

2

Enquanto fazia um benchmarking em um aplicativo de rede, descobri um comportamento estranho que envolve clientes Ethernet de 100MBit e 1GBit conectados por meio de um switch (at-gs900 / 8e). Eu tenho um servidor (Gbit) e vários clientes, o aplicativo de rede usa TCP / IPv4. Os clientes recebem grandes fluxos de dados em uma única conexão.

Desde que apenas clientes com velocidade GBit recebam dados do servidor, tudo bem, o uplink do servidor está saturado mesmo por apenas um cliente; quando vários clientes recebem dados, a largura de banda é dividida igualmente entre eles. Mas assim que um cliente de 100MBit também recebe dados do servidor, a saída cai para exatamente 100MBit / s por cliente, mesmo para os GBit. Então, com apenas 100MBit de dados de recepção do cliente, obtive 100MBit / s de saída, com um cliente GBit adicional obtive 200MBit / s e assim por diante ... Minha primeira idéia foi como "talvez o NIC do servidor volte para 100MBit / s FD", mas isso claramente não faz sentido, já que recebo 100MBit / s de saída por cliente , não no total.

Como observação, todos os clientes estavam continuamente conectados ao servidor durante o teste (conexões TCP inativas). Alguém pode me esclarecer o que está acontecendo aqui, e se isso é um comportamento esperado? Eu realmente espero que não, como faria com que os dispositivos de dispositivos bastante estúpidos. Espero conseguir alguns modelos diferentes para testar nos próximos dias ...

Update : Descobri que isso é causado pelo controle de fluxo de ethernet, chamado de quadros de pausa. Eu não descobri quem está criando esses quadros, o cliente de 100MBit ou o próprio switch, mas ainda é estranho para mim que ele não irá sobrecarregar o servidor para 100MBit / s no total, em vez de 100MBit / s por cliente. Assim, a "solução" no servidor é desabilitar o controle de fluxo, o que pelo menos no meu cenário é bom, pois o TCP lida com o congestionamento sozinho: ethtool -A eth0 autoneg off rx off tx off resultará em 100MBit / s para o cliente de 100Mbit / s e 900MBit / s por um segundo cliente com capacidade GBit. : -)

    
por Simon 16.07.2013 / 14:00

1 resposta

0

Uma vez eu tive um comutador de buffer que se comportou de maneira semelhante: se uma porta no fluxo estivesse em uma velocidade menor, as outras portas seriam arrastadas para a velocidade mais baixa sempre que se comunicasse com ela.

Estou correto em dizer que você está vendo todas as suas portas sendo arrastadas para baixo, mesmo quando elas não têm um fluxo envolvendo a lenta? Se assim for, parece um bug, um que você deve discutir com seu vendedor de switch.

E observe que eu disse vendedor: as organizações usuais de suporte ao cliente têm a tarefa de fazer você feliz com o que você tem, não consertar as coisas e, portanto, é improvável que você consiga um interruptor substituto (:-))

- dave

    
por 17.07.2013 / 14:30