2008-11-01 742 views
6

저는 최근 IP 멀티 캐스팅 (공용 인터넷에서는 잘 작동하지 않음)과 애플리케이션 멀티 캐스팅 (IRC 및 PSYC에서 명백히 사용되는 http://en.wikipedia.org/wiki/Multicast)을 구분한다는 사실을 알고 있습니다.애플리케이션 멀티 캐스팅을위한 최고의 튜토리얼?

응용 프로그램 수준 멀티 캐스팅을 구현하는 데 유용한 자습서가 있습니까?

멀티 캐스트의 요점은 일반 네트워크 세그먼트의 대역폭을 줄이는 것이므로 응용 프로그램 수준의 멀티 캐스트가 무엇인지 이해하는 것은 어렵다고 생각했습니다.

답변

3

IP 수준 멀티 캐스팅의 목적은 많은 사용자가 동일한 트래픽을 수신하고자하는 일반 네트워크 세그먼트의 대역폭을 줄이는 것입니다. 일반적으로 하나의 특정 서브넷으로 제한되며 IP 라우터는 서브넷을 넘어 멀티 캐스트를 전파하지 않습니다. 이는 확장 성을 이유로 수행됩니다. 한 호스트가 인터넷의 모든 IP 주소로 전파되는 멀티 캐스트 패킷을 생성하도록 허용하는 것은 좋지 않습니다.

"응용 프로그램 수준"멀티 캐스팅을 생각하는 다양한 방법이 있습니다. 한 가지 방법은 멀티 캐스트에 참여하는 호스트 컴퓨터를 사용하여 멀티 캐스트 트리를 작성하는 것입니다. Dijkstra의 알고리즘을 사용하여이를 수행 할 수 있습니다 (Wikipedia는 이에 대한 합리적인 설명이 있습니다). 그러나 참여 컴퓨터 목록을 유지 관리하고 트리를 최신 상태로 유지하면 호스트가 네트워크에 가입하고 상당한 속도로 퇴장하는 경우 상당히 많은 작업이 필요할 수 있습니다. 그리고 아마도 애플리케이션 수준에서 사용할 수있는 홉 비용에 대한 좋은 견적이 없을 것입니다.

검토해야 할 또 다른 접근법은 Gnutella 네트워크의 쿼리 라우팅 프로토콜에 사용되는 플러딩 알고리즘입니다. (위키 피 디아는 이에 대해서도 잘 설명하고있다.)이 접근법은 멀티 캐스트 트리를 만들 필요성을 완화 시키지만 더 많은 네트워크 트래픽을 생성하는 단점이있다. 실제로 트래픽은 노드 수의 제곱 (즉, O (n ** 2))의 제곱으로 증가함에 따라 더 많은 네트워크 트래픽이 발생합니다.

2

응용 멀티 캐스팅의 또 다른 예는 Amazon EC2 또는 Google App Engine에서 JGroups을 사용하지만 IP 멀티 캐스트는 지원하지 않지만 개발자는 멀티 캐스팅 기능을 사용하기를 원하기 때문입니다.