하나의 Linux 시스템에서 여러 Linux 시스템으로 데이터를 전송(즉, 브로드캐스트)하는 C++ 애플리케이션을 만들고 싶습니다. Linux 시스템이 모두 동일한 스위치 및 동일한 서브넷에 있다고 가정합니다.
나는 이것이 UDP 멀티캐스트를 사용하여 수행될 수 있다는 것을 발견했습니다.부스트 ASIO 예시. 데이터 처리량을 최대화하려고 할 때 여러 UDP 스트림을 사용하면 더 나은 성능을 기대할 수 있습니까?
답변1
예, 멀티캐스트를 사용하면 데이터가 스위치에 한 번만 전송되고 스위치는 이를 모든 수신기에 동시에 전달할 수 있습니다. UDP를 사용하면 데이터를 각 수신자에게 개별적으로 전송해야 합니다. 따라서 (이론적으로) 멀티캐스트의 최대 처리량은 유니캐스트의 n배입니다. 여기서 n은 수신자 수입니다.
UDP 유니캐스트와 UDP 멀티캐스트 모두 손실된 패킷을 처리하고 다시 보내야 한다는 점에 유의하세요(데이터가 가끔 손실되는 패킷이 중요하지 않은 비디오/오디오인 경우는 제외하고 자체 솔루션을 구현할 필요는 없습니다. Ready를 사용하세요). -만든 것)이므로 적절한 프로토콜(PGM, ...)을 사용하십시오.