在Internet上,多媒體業務諸如:流媒體,視頻會議和視頻點播等,正在成為信息傳送的重要組成部分。點對點傳輸的單播方式不能適應這一類業務傳輸特性--單點發送多點接收,因為服務器必須為每一個接收者提供一個相同內容的IP報文拷貝,同時網絡上也重復地傳輸相同內容的報文,占用了大量資源。如圖1.1所示。雖然IP廣播允許一個主機把一個IP報文發送給同一個網絡的所有主機,但是由于不是所有的主機都需要這些報文,因而浪費了網絡資源。在這種情況下組播(multicast)應運而生,它的出現解決了一個主機向特定的多個接收者發送消息的方法。1989年,IETF通過RFC1112,定義了Internet上的組播方式。

圖1.1
1. IP組播
IP組播是指一個IP報文向一個“主機組”的傳送,這個包含零個或多個主機的主機組由一個單獨的IP地址標識。主機組地址也稱為“組播地址”,或者D類地址。除了目的地址部分,組播報文與普通報文沒有區別,網絡盡力傳送組播報文但是并不保證一定送達。
主機組的成員可以動態變化,主機有權選擇加入或者退出某個主機組。主機可以加入多個主機組,也可以向自己沒有加入的主機組發送數據。主機組有兩種:永久組和臨時組。永久組的IP地址是周知的,由Internet管理機構分配,是保留地址。臨時組的地址則使用除永久組地址外的非保留D類地址。
IP組播分組在互聯網上的轉發由支持組播的路由器來處理。主機發出的IP組播分組在本子網內被所有主機組成員接收,同時與該子網直接相連的組播路由器會把組播報文轉發到所有包含該主機組成員的網絡上。組播報文傳遞的范圍由報文的生存期值(TTL, Time-to-Live)決定,如果TTL值等于或者小于設置的路由器端口TTL門限值(TTL Threshold),路由器將不再轉發該報文。
2. 組播地址
IP組播地址,或稱為主機組地址,由D類IP地址標記。D類IP地址的最高四位為“1110”,起范圍從224.0.0.0到239.255.255.255。如前所述,部分D類地址被保留,用作永久組的地址,這段地址從224.0.0.0-224.0.0.255。比較重要的地址有:
224.0.0.1 - 網段中所有支持組播的主機
224.0.0.2 - 網段中所有支持組播的路由器
224.0.0.4 - 網段中所有的DVMRP路由器
224.0.0.5 - 所有的OSPF路由器
224.0.0.6 - 所有的OSPF指派路由器
224.0.0.9 - 所有RIPv2路由器
224.0.0.13 -所有PIM路由器
臨時主機組的組播地址由網絡管理員選擇,他需要保證這個地址在一定的范圍內沒有其他的主機組在使用這個組播地址。
第2層的組播地址(組播MAC地址)可以從IP組播地址中衍生。計算方法是把IP地址的最后23位拷貝到MAC地址的最后23位,然后把這23位前面的那一位置為0。MAC地址的前24位必須為0x01-00-5E。例如:組播IP地址224.0.1.128,16進制表示為0xE0-00-01-10,最低的23位為0x00-01-10,計算得出的MAC地址為:0x01-00-5E-00-01-10。
3.Internet組管理協議(IGMP)
IGMP協議由主機成員關系協議發展而來,目前有兩個版本:IGMPv1(RFC1112),IGMPv2 (RFC2326)。主機使用IGMP消息通告本地的組播路由器它想接收組播流量的主機組地址。如果主機支持IGMPv2,它還可以通告組播路由器它退出某主機組。組播路由器通過IGMP協議為其每個端口都維護一張主機組成員表,并定期的探詢表中的主機組的成員,以確定該主機組是否存活。
IGMP消息被置于IP報文中傳送。IGMPv1的報文如圖1.2所示。IGMPv1中定義了兩種消息類型:主機成員詢問和主機成員報告。當某主機想要介紹某個組播流量時,它向本地的組播路由器發送"主機成員報告"消息,告知欲接收的組播地址。組播路由器收到"主機成員報告"消息后把該主機加入指定的主機組,并在設定的周期內向組播地址224.0.0.1(代表所有支持組播的主機) 發送"主機成員詢問"消息。主機如果還想繼續接收組播流量,必須發送"主機成員報告"消息。

圖1.2
IGMPv2的報文如圖1.3所示。與IGMPv1不同的是它將版本字段和消息類型字段融合,把未使用字段作了"最大響應時間"字段。IGMPv2報文的消息類型字段定義了四種消息類型:

圖1.3
0x11 - 成員詢問
0x12 - IGMPv1 成員報告
0x16 - IGMPv2 成員報告
0x17 - 退出主機組
IGMPv2向前兼容IGMPv1協議, IGMPv1的設備可以接收處理IGMPv2的消息報文。 IGMPv2中允許路由器對指定的主機組地址做"成員詢問",非該組的主機不必響應。如果某主機想退出,它可以主動向路由器發送"推出主機組"消息,而不必像IGMPv1中那樣只能被動退出。
4. CGMP協議
在交換網絡中,2層交換機可能即不了解哪個端口有哪些組播組,也不能在其源MAC地址表中找到組播MAC地址的表項。從而,交換機只能簡單地把組播報文向所有端口轉發,組播的優勢將大大削弱。因此,Cisco提出CGMP協議,讓組播路由器來配置交換機的組播轉發表,從而徹底解決交換網絡中的組播問題。
CGMP ( Cisco Group management protocol)全稱Cisco組管理協議,采用CGMP的路由器將主機加入或者退出組播組的IGMP消息通知交換機,交換機則根據該消息將該主機所在端口從組播轉發表中加入或者刪除。通過CGMP協議的使用,2層交換機可以掌握接收組播的主機的情況,從而提高整個網絡的性能和利用率。
5. 分布樹(Distribution Tree)
在傳送組播分組時,指派路由器需要構造一個連接所有組播組成員的樹。根據這個樹,路由器得出轉發分組的一條唯一路徑。這個樹就稱為分布樹。由于成員可以動態的加入和退出,分布樹也必須動態更新。
根據構造方法的不同,分布樹分為源分布樹(Source Distribution Tree)和共享分布樹(Shared Distribution Tree)。源分布樹以組播源為根節點構造到所有組播組成員的生成樹,通常也稱為最短路徑樹(SPT)。共享分布樹,也稱為RP樹或基于核心的樹(CBT, Core_based Tree)。它的構造方法是以網絡中的某一個指定的路由器為根節點,該路由器稱為集合點或中心點,由此節點生成包含所有組成員的樹。使用共享分布樹時,組播源需要首先把組播分組發送給集合點路由器,再由這個路由器轉發給其他的組成員。
6. 組播路由協議
組播路由協議的主要任務就是構造組播的分布樹,使組播分組能夠傳送到相應的組播組成員。根據對網絡中的組播成員的分布和使用的不同,組播路由協議分為兩類:密集模式路由協議(DM)和稀疏模式路由協議(SM)。
DM路由協議通常用于組播成員較為集中、數量較多-網絡的大部分用戶、并且有足夠帶寬的網路環境,比如公司或園區的局域網。因此,DM路由協議用定期廣播組播報文的方法維護組播分布樹。DM協議只使用源分布樹(SPT),組播流量被廣播到網絡中所有的組播路由器。DM路由協議有:
- DVMRP:距離向量組播路由協議。這是一種基于距離向量算法的組播路由協議。目前已基本上被PIM和MOSPF所取代。
- MOSPF:組播OSPF協議。
- PIM-DM:協議無關組播協議-密集模式。它不需要單獨的組播協議,利用路由器上單播路由協議的路由表作反向路徑轉發檢查,由此獲得組播分布樹。相比另兩種協議,PIM-DM的開銷要小很多,它用于組播源和目的非常靠近、接收者數量大于發送者數量并且組播流量比較大的環境中效果很好。
在網路中稀疏分布、網絡也沒有充足帶寬的情況,如廣域網環境,可以使用SM路由協議。因此,SM路由協議采用選擇性的建立和維護分布樹的方式,由空樹開始,僅當成員顯式的請求加入分布樹才做出修改。SM路由協議有:
- CBT:基于中心的分布樹協議(RFC 2201)。協議由以一個中心的路由器為根構造一個共享分布樹,所有的組播流量都經由這個中心路由器轉發。
- PIM-SM:協議無關組播協議-稀疏模式。工作原理與PIM-DM類似,但專門針對稀疏環境優化。適用于組播組中接收者較少、間歇性組播流量的情況。不同于PIM-DM的廣播方式,PIM-SM定義了一個集合點(RP),所有的接收者在RP注冊,組播分組由RP轉發給接收者。
7.總結
單個數據流可以發送到多個客戶端的組播能力已成為大多數多媒體應用的傳輸手段。組播技術利用一個IP地址使IP數據報文發送到用戶組。IP組播采用了特殊定義的目的IP地址和目的MAC地址。IGMP為客戶端提供加入和離開組播組的方式。CGMP使路由器為交換機配置組播轉發表,并告訴交換機當前的組播成員。指派路由器根據對網絡中的組播成員的分布和使用的不同采用密集模式DM或稀疏模式SM組播路由協議來構造組播的分布樹,而這個分布樹將在源子網和組播組之間確定一條唯一路徑以提高數據傳輸效率。