2013-08-24 3 views
0

내 응용 프로그램은 UDP의 멀티 캐스트 기능을 사용합니다.멀티 캐스트 데이터 오버 헤드?

즉, 자바를 사용하고 있으며 단일 멀티 캐스트 주소와 포트를 사용하여 모든 데이터를 전송하려고합니다. 멀티 캐스트 리스너는 논리적으로 런타임에 변경 될 수있는 서브 그룹으로 나뉘어 지지만 그룹 외부에서 오는 데이터는 처리하지 않을 수도 있습니다.

실행되도록 모든 실행중인 응용 프로그램 인스턴스가 동일한 멀티 캐스트 그룹 및 포트에 참가할 수 있도록 코드를 만들었지 만 패킷의 보낸 사람을주의 깊게 관찰하여 자신의 하위 그룹에 속하는지 확인합니다.

내 응용 프로그램의 최소 패킷 크기는 30000-60000 바이트입니다 !!!!!

MulticastSocket.receive (DatagramPacket)를 사용하여 모든 패킷을 읽고 해당 패킷이 너무 많은 오버 헤드 (심지어 버퍼 오버플로)를 일으키는 지 확인합니다.

모든 패킷이 모든 사람에게 전송되므로 네트워크에서 정체가 발생하는 대량의 트래픽이 생성됩니까?

+1

이렇게 큰 패킷을 사용하면 네트워크 장치/어댑터의 버퍼 크기를 훨씬 초과 할 수 있습니다. 많은 사람들은 연결 당 단지 몇 MB 밖에 가지지 않으며 시스템의 다른 트래픽과 함께, 당신은 버퍼 오버 플로우를 자주 일으킬 수 있습니다. 나는 당신이 합리적으로 높은 드롭 아웃 비율을 처리하기 위해 응용 프로그램을 작성하는 것이 좋습니다. –

+0

다른 옵션은이 패킷을 더 작은 패킷으로 분할하여 전송하고 수신기에서 재구성하는 것입니다. –

답변

0

모든 패킷이 모든 사람에게 전송 될 수 있지만 각 패킷은 네트워크에 한 번만 나타납니다.

그러나이 응용 프로그램이 모든 라우터를 포함하여 전적으로 귀하의 통제하에있는 LAN에서 완전히 실행되지 않는 한 이미 광범위하게 실행할 수 없습니다. 일반적으로 허용되는 최대 UDP 데이터 그램 크기는 제어 할 수없는 라우터를 거치면 534입니다.

+0

그럼 개인용 WLAN에서 패킷 크기를 줄이고 예를 모두 줄일 수는 있지만 그룹에 가입 한 각 장치에 실제로 동일한 데이터가 복사되어 라우터에서 보내지기 때문에 주된 관심사는 혼잡을 일으킬 것입니다. 그래서 LAN에 100 개의 장치가있는 경우 혼잡이 발생하지 않습니까? – Allahjane

+0

아니요. 각 패킷은 각 서브넷에만 나타나기 때문에 멀티 캐스트 수신기가 없거나 멀티 캐스트 수신기가없는 한 전혀 표시되지 않습니다. 이것이 멀티 캐스트의 핵심입니다. – EJP

1

멀티 캐스트 (예 : PIM)가 수신자와 발신자를 최적으로 배치하는 멀티 캐스트 트리를 작성하므로 모든 패킷이 모든 사람에게 전송되지는 않습니다. 따라서 필요할 때 패킷을 복사하는 네트워크. 멀티 캐스트 패킷은 최종 홉에서 브로드 캐스트됩니다 (기술적으로 더 정확하고 Layer2에서 넘침). IGMP는 마지막 홉에서 멀티 캐스트를 지원하고 마지막 홉에 참여하는 수신기가없는 경우 그러한 플러딩이 수행되지 않도록합니다.

"그룹 외부에서 오는 데이터를 처리하지 않을 수도 있습니다." 수신 호출은 다음 수신 된 데이터 그램을 리턴 할 것이므로 하위 그룹 분류를위한 것이 아닌 패킷을 처리하는 것을 피하기 위해 할 수있는 일은 거의 없습니다. 애플리케이션이 여러 개의 여러 그룹을 사용할 수 없습니까?

+0

만약 100 명의 수신기가 같은 그룹에 합류한다면 – Allahjane

+1

당신은 당신의 의견을 분명히 할 수 있습니까? 멀티 캐스트의 기본 부분은 많은 수의 수신기가 있더라도 계속 작동하므로 100 개의 수신기가 여전히 괜찮습니다. –

+1

IGMP는 모든 홉에서 지원합니다. 상대방에 수신자가 없으면 데이터 그램은 전파되지 않습니다. – EJP