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.