IGMPv1 vs IGMPv2 vs IGMPv3

What is IGMPv1?

IGMPv1使用Query-Response模型來允許Multicast Router和Multi-Layer Switch來確定在本網段內哪個Multicast Group是啟動的。在這個模型中,Router或Switch充當IGMP Querier,週期性(每隔60秒)地發送IGMPv1 Membership Query給224.0.0.1。啟用Multicast的所有主機監聽該位址並接收Query Packet。主機以IGMPv1 Membership Report回覆,表示它要接收特定Group的Multicast Traffic;該網段中的Router或Switch就可以了解Multicast Group中有哪些接收者。

主機可以通過發送一個或多個主動的Membership Report封包表明加入(Join)一個Multicast Group。如: 某個主機主動發送一個Report封包表明要接收Multicast Group(224.1.1.1)的流量。

主機通過停止處理Multicast Group Traffic以及不回應IGMP Query的方式來離開Multicast Group。
IGMPv1依靠L3的IP Multicast Routing Protocol(PIM、DVMRP等)來解決同一網段中哪個Router或Multi-Layer Switch成為Querier。Querier Router發送IGMPv1的Query來確定哪個Multicast Group是啟動的。通常Designated Router會被選擇為Querier。

IGMPv1的封包有2種:
- Member Query(224.0.0.1, 每60秒查詢一次)
- Member Report



What is IGMPv2?

IGMPv2的Query和Membership Report與IGMPv1類似。它們的差別在於:
(一) IGMPv2的Query分為兩部分:
- General Query(功能與IGMPv1的Query相同)
- Group-Specific Query(僅查詢特定Group的資訊)

(二) IGMPv1和IGMPv2的Membership Report使用不同的類型代碼。
IGMPv2的新特性包括:

1)Querier的選擇過程――IGMPv2 Router或Multi-Layer Switch可以自己選舉Querier Router(不需要依賴Multicast Routing Protocol來完成這個工作)。每個IGMPv2的Router或Multi-Layer Switch啟動時,它發送IGMPv2的一般Query Packet(以其interface IP位址作為Packet的Source IP)給所有主機。每個IGMPv2設備比較接收到的這種Message Packet,在網段中擁有最小interface IP位址的Router成為Querier。

2)Maximum Response Time――Query Message中的這個欄位允許Query Router指定最大的查詢回應時間,並控制突發的應答過程。在某個子網路中若存在著大量的Multicast Group,可能需要較長的時間來傳送這個Reply。成員要加入一個Multicast Group不需要等待Query Message即可加入。它們傳送一個未經許可的Report告知他們的參加。這個程序在沒有其他成員存在的情況時減低了終端系統加入的延遲。

3)特定Group的Query Message――允許Query Router針對某個特定的Multicast Group進行查詢

4)Leave Group Message(224.0.0.2)――為主機提供一種方式,來通知Router或Multi-Layer Switch這些主機將要離開某個Multicast Group

某個屬於Multicast Group(224.1.1.1)的主機要離開時會發出一個Leave Mssage給所有Multicast Group中所有的Router(224.0.0.2)通知所有的Router和Multi-Layer Switch它將離開這個Multicast Group。Querier Router接收到Message後,由於它保留的Group Membership Message還有其他的包員,因此它發送一個特定的Query給Multicast Group(224.1.1.1),來確定該Multicast Group中是否還有成員主機。如果還有屬於該Multicast Group(224.1.1.1)的成員接收到特定Group的Query後,它將會回覆IGMPv2 Membership Report,通知Querier Router仍然有成員存在。當Querier Router接收到Membership Report時,它將會讓Multicast Group(224.1.1.1)維持Active狀態。若是沒有收到回應,Querier Router將會停止轉發該Multicast Group(224.1.1.1)的流量。

在相同的乙太網路網段(broadcast domain)上有兩個IGMP Routers時,擁有最小IP Address的Router會是Designated Querier。


What is IGMPv3?

IGMPv3新增了可以根據Multicast Source來過濾Multicast的功能。

IGMPv3主要改進的功能是可以允許主機指定它們想要在某個Multicast Group中只接收特定的Multicast Source。這個增強功能使得路由資源得可以更加有效地被使用。

在IGMPv3中主機在加入某個Multicast Group時會立刻傳送IGMPv3 Report給224.0.0.22。主機會傳送一個帶著明確請求加入Source List中單一或是多個Source的Join Message出去。這就是IGMPv3用來"過濾來源(source filtering)"的Source List - 也就是讓系統可以回報給特定Multicast Address,通知系統它只想要接收來自於特定來源位址(INCLUDE Mode),或是來自於所有的來源位址但是特定來源位除外(EXCLUDE Mode)。這樣的資訊也許可以被Multicasting Routing Protocol利用來避免傳送來自於特定來源的Multicast封包到達根本沒有感興趣的接收者所存在的網路。

IGMPv3可向下相容於之前版本的IGMP通訊協定。為了維持與較舊版本IGMP系統的向下相容性,IGMPv3 Mulitcast Routers必須也同時採用Version 1和Version 2的通訊協定。

Comments

Anonymous said…
Hi, i have some question about multcasting system/IGMP
Which ver is good for IPTV system? Is it only work with cisco switch? How about 3com or h3c switch?
CCIE11440 said…
I think most common use is IGMPv2, but more and more vendor support IGMPv3 now.

I think the difference between IGMPv2 and IGMPv3 is not so obviously for human.

Cisco switch support IGMPv1/IGMPv2, IGMPv3 depends on IOS version and platform.

3COM/H3C switch I think is not expensive and good enough for end-user and enterprise use.

But if you want to use in Service Provider Backbone, I suggest you should consider about other techincal issue like backplane, forwarding rate, route/switch processor...

Exteme or Foundry Switch maybe another good choice ~
Anonymous said…
您好:
IGMPv3的特色是使用者可以提供一份Source List外加INCLUDE Mode或是EXCLUDE Mode來完成過濾的功能。想請問是否知道有哪寫tools可以用來測試v3 filter的功能呢?
CCIE11440 said…
我沒有在主機上使用過IGMPv3,不過你可以參考這份文件

http://www.cesnet.cz/tf-ngn/multicast/ssm/ssm-plan.html

...
Software tools and applications
For the tests we will need IGMPv3-enabled multicast applications:
For basic tests we can use a simple multicast traffic generator and receiver mhb updated to use IGMPv3 API on the receiving part.
MIM is a MPEG-1 stream receiver, IGMPv3-enabled since version 1.2.
IGMPv3-enabled videoconferencing tools vic and vat are available from LBL.
As a diagnostic tool, we can use IGMPv3-enabled MTrace, which is currently available only for MS Windows 2000 and XP. We will also need a packet sniffer capable of dissecting IGMPv3 packets. One of these is tcpdump (since version 3.6). It might be also worthwhile to add IGMPv3 support to the free Ethereal packet analyzer.
...
Unknown said…
Hi
請教一下; IGMP V1,V2,V3 對Video server或IPTV Encoder有何要求?它們該做哪些事?
Thanks
Jeff

Popular posts from this blog

TCP/IP 明確擁塞通知 (ECN)

L2TPv3 Enables Layer 2 Services for IP Networks

Q-in-Q(Dot1Q Tunnel) Sample Configuration