Tenho um switch de 100 Mbit conectado a três câmeras de 100 Mbit e um computador de 100 Mbit. A limitação de largura de banda vem dos cabos em uso e não pode ser alterada para resolver o problema porque estou trabalhando em um ambiente industrial/automotivo.
┌------------ Camera
Computer-----Switch---------- Camera
└------------ Camera
As câmeras transmitem RTP via UDP. Todas as câmeras são configuradas para usar bitrate constante com 24 Mbit/s cada.
O gerenciador de tarefas confirma que a largura de banda esperada é usada:
Quando executo uma análise de IO do Wireshark, posso ver que, embora a largura de banda média seja inferior a 100 Mbits, há picos que excedem 100 Mbits, causando perda de pacotes e o fluxo não sendo decodificável. Esses picos vêm das câmeras que capturam uma imagem a cada 33 ms e a enviam. Então, elas ficam em silêncio até que a próxima imagem seja capturada.
Na caixa vermelha, podemos ver que o limite de 100 Mbit foi atingido e os pacotes foram perdidos. Não podemos ver isso aqui, mas a análise de fluxo RTP mostra.
Todas as câmeras e o switch suportam controle de fluxo ( https://en.wikipedia.org/wiki/Ethernet_flow_control ). Eu esperaria que o switch usasse o controle de fluxo para "smoosh" o tráfego de rede, evitando esse problema.
- Minha compreensão do controle de fluxo está errada?
- Existe algum mecanismo diferente que possa ajudar?
Alterar o protocolo de transporte de RTP para outra coisa não é possível. Mudar para Gigabit não é possível.
Sim, isso é bem possível. Para evitar, você precisaria de um link gigabit (próximo passo maior que 300 Mbit/s) entre o switch e o PC. Como alternativa, você poderia usar vários links entre o switch e o PC dedicados a câmeras específicas (especialmente usando VLANs, mas apenas a divisão de sub-rede IP seria suficiente).
Sim e não. O switch tentaria limitar o tráfego da fonte , mas eliminaria o excesso de tráfego do mesmo jeito. O PC tentando limitar o switch é discutível, pois o switch vê sua capacidade de saída excedida de qualquer maneira. Se os quadros de pausa realmente funcionam na fonte, é uma fonte em tempo real e provavelmente não pode atrasar a transmissão. Faça um teste, eu não apostaria meu dinheiro nisso.
Você pode obter algum alívio instalando um switch com um buffer maior (pelo menos com aqueles fluxos de baixa largura de banda) - algum enfileiramento deve melhorar a distribuição de tráfego, equalizar a rajada e talvez resolver seu problema. Um cálculo aproximado das rajadas: 60 Mbit/s * 40 ms * 3 = 0,9 MB como a capacidade mínima de buffer do switch (grupo de portas) - não é muito para um switch decente, mas nem sempre é garantido.
A melhor solução é aumentar a largura de banda entre o PC e o switch, conforme acima.