组播 收发_[HCIARoutingamp;Switching]网络篇单播广播和组播
傳統的IP通信有兩種方式:一種是在源主機與目的主機之間點對點的通信,即單播;另一種是在源主機與同一網段中所有其它主機之間點對多點的通信,即廣播。
如果要將信息發送給多個主機而非所有主機,若采用廣播方式實現,不僅會將信息發送給不需要的主機而浪費帶寬,也不能實現跨網段發送;若采用單播方式實現,重復的IP包不僅會占用大量帶寬,也會增加源主機的負載。所以,傳統的單播和廣播通信方式不能有效地解決單點發送、多點接收的問題。
組播是指在IP網絡中將數據包以盡力傳送的形式發送到某個確定的節點集合(即組播組),其基本思想是:源主機(即組播源)只發送一份數據,其目的地址為組播組地址;組播組中的所有接收者都可收到同樣的數據拷貝,并且只有組播組內的主
機可以接收該數據,而其它主機則不能收到。
現代應用中,可以利用網絡的組播特性方便地提供一些新的增值業務,包括在線直播、網絡電視、遠程教育、遠程醫療、網絡電臺、實時視頻會議等互聯網的信息服務領域。
組播的技術實現組播技術的實現需要解決以下幾方面問題:
? 組播源向一組確定的接收者發送信息,而如何來標識這組確定的接收者?——這需要用到組播地址機制;
? 接收者通過加入組播組來實現對組播信息的接收,而接收者是如何動態地加入或離開組播組的?——即如何進行組成員關系管理;
? 組播報文在網絡中是如何被轉發并最終到達接收者的?——即組播報文轉發的過程;
? 組播報文的轉發路徑(即組播轉發樹)是如何構建的?——這是由各組播路由協議來完成的。
帶著這四個問題,我們以此來看:
第一、組播地址機制
IP組播地址用于標識一個IP組播組。IANA把D類地址空間分配給組播使用,范圍從224.0.0.0到239.255.255.255。
如圖所示,IP組播地址前四位均為“1110”,而整個IP組播地址空間的劃分則如下圖所示。
? 224.0.0.0 到224.0.0.255 被IANA 預留,地址224.0.0.0 保留不做分配,其它地址供路由協議及拓撲查找和維護協議使用。該范圍內的地址屬于局部范疇,不論TTL 為多少,都不會被路由器轉發;
? 224.0.1.0 到238.255.255.255 為用戶可用的組播地址,在全網范圍內有效。其中232.0.0.0/8 為SSM組地址,而其余則屬于ASM組地址。
? 239.0.0.0 到239.255.255.255 為本地管理組播地址,僅在特定的本地范圍內有效,也屬于ASM 組地址。使用本地管理組地址可以靈活定義組播域的范圍,以實現不同組播域之間的地址隔離,從而有助于在不同組播域內重復使用相同組播地址而不會引起沖突。
補充:
OSPF的hello報文就是使用了組播協議,其目的IP地址為224.0.0.5.
在以太網中,IANA將MAC地址范圍01:00:5E:00:00:00~01:00:5E:7F:FF:FF分配給組播使用,這就要求將28位的IP組播地址空間映射到23位的組播MAC地址空間中,具體的映射方法是將組播IP地址中的低23位放入MAC地址的低23位,如圖所示。
由于IP組播地址的后28位中只有23位被映射到組播MAC地址,這樣會有32個IP組播地址映射到同一組播MAC地址上。
第二、組播的成員管理
組成員關系管理是指在路由器/交換機上建立直聯網段內的組成員關系信息,具體說,就是各接口/端口下有哪些組播組的成員。
IGMP運行于主機和與主機直連的路由器之間,其實現的功能是雙向的:一方面,主機通過IGMP通知路由器希望接收某個特定組播組的信息;另一方面,路由器通過IGMP周期性地查詢局域網內的組播組成員是否處于活動狀態,實現所連網段組
成員關系的收集與維護。通過IGMP,在路由器中記錄的信息是某個組播組是否在本地有組成員,而不是組播組與主機之間的對應關系。
如圖所示,當同一個網段內有多個IGMP路由器時,IGMPv2通過查詢器選舉機制從中選舉出唯一的查詢器。查詢器周期性地發送普遍組查詢消息進行成員關系查詢,主機通過發送報告消息來響應查詢。而作為組成員的路由器,其行為也與普通
主機一樣,響應其它路由器的查詢。
當主機要加入組播組時,不必等待查詢消息,而是主動發送報告消息;當主機要離開組播組時,也會主動發送離開組消息,查詢器收到離開組消息后,會發送特定組查詢消息來確定該組的所有組成員是否都已離開。
通過上述機制,在路由器里建立起一張表,其中記錄了路由器各接口所對應子網上都有哪些組的成員。當路由器收到發往組G的組播數據后,只向那些有G的成員的接口轉發該數據。至于組播數據在路由器之間如何轉發則由組播路由協議決定,而
不是IGMP的功能。
IGMP是針對IP層設計的,只能記錄路由器上的三層接口與IP組播地址的對應關系。但在很多情況下,組播報文不可避免地要經過一些交換機,如果沒有一種機制將二層端口與組播MAC地址對應起來,組播報文就會轉發給交換機的所有端口,這顯然會浪費大量的系統資源。
IGMP Snooping的出現就可以解決這個問題,其工作原理為:主機發往IGMP查詢器的報告消息經過交換機時,交換機對這個消息進行監聽并記錄下來,為端口和組播MAC地址建立起映射關系;當交換機收到組播數據時,根據這樣的映射關系,只向連有組成員的端口轉發組播數據。
第三、組播轉發報文
組播報文在網絡中沿著樹型轉發路徑進行轉發,該路徑稱為組播轉發樹。它可分為源樹(Source Tree)和共享樹(RPT)兩大類:
1. 源樹
源樹是指以組播源作為樹根,將組播源到每一個接收者的最短路徑結合起來構成的轉發樹。由于源樹使用的是從組播源到接收者的最短路徑,因此也稱為最短路徑樹(SPT)。
對于某個組,網絡要為任何一個向該組發送報文的組播源建立一棵樹。源樹的優點是能構造組播源和接收者之間的最短路徑,使端到端的延遲達到最小。但付出的代價是,在路由器中必須為每個組播源保存路由信息,這樣會占用大量的系統資源,路由表的規模也比較大。
2. 共享樹
以某個路由器作為路由樹的樹根,該路由器稱為匯集點(RP),共享樹就是由RP到所有接收者的最短路路徑所共同構成的轉發樹。使用共享樹時,對應某個組網絡中只有一棵樹。所有的組播源和接收者都使用這棵樹來收發報文,組播源先向樹根發送數據報文,之后報文又向下轉發到達所有的接收者。
共享樹的最大優點是路由器中保留的路由信息可以很少,缺點是組播源發出的報文要先經過RP,再到達接收者,經由的路徑通常并非最短,而且對RP的可靠性和處理能力要求很高。
當路由器收到組播數據報文時,根據組播目的地址查找組播轉發表,對報文進行轉發。與單播報文的轉發相比,組播報文的轉發相對復雜:在單播報文的轉發過程中,路由器并不關心報文的源地址,只關心報文的目的地址,通過其目的地址決定
向哪個接口轉發;而組播報文是發送給一組接收者的,這些接收者用一個邏輯地址(即組播地址)標識,路由器在收到組播報文后,必須根據報文的源地址確定其正確的入接口(指向組播源方向)和下游方向,然后將其沿著遠離組播源的下游方向
轉發——這個過程稱為逆向路徑轉發(RPF)。
在RPF執行過程中會利用原有的單播路由表確定上、下游的鄰接節點,只有報文從上游節點所對應的接口(稱為RPF接口,即路由器上通過單播方式向該地址發送報文的出接口)到達時,才向下游轉發。RPF的主體是RPF檢查,通過RPF檢查除了可以正確地按照組播路由的配置轉發報文外,還可以避免可能出現的環路。路由器收到組播報文后先對其進行RPF檢查,只有檢查通過才執行轉發。
RPF檢查的過程為:路由器在單播路由表中查找組播源或RP對應的RPF接口(使用SPT時查找組播源對應的RPF接口,使用RPT時查找RP對應的RPF接口),如果組播報文是從RPF接口接收下來的,則RPF檢查通過,報文向下游接口轉發;否則,丟棄該報文。
第四、組播路由協議
與單播路由一樣,組播路由協議也分為域內和域間兩大類:
? 域內組播路由協議:根據IGMP 協議維護的組成員關系信息,運用一定的組播路由算法構造組播分發樹,在路由器中建立組播路由狀態,路由器根據這些狀態進行組播數據包轉發;
? 域間組播路由協議:根據網絡中配置的域間組播路由策略,在各自治系統間發布具有組播能力的路由信息以及組播源信息,使組播數據能在域間進行轉發。
在眾多域內組播路由協議中,PIM是目前較為典型的一個。按照轉發機制的不同,PIM可以分為DM(Dense Mode,密集模式)和SM(Sparse Mode,稀疏模式)兩種模式。
1. PIM-DM
在PIM-DM域中,運行PIM-DM的路由器周期性地發送PIM Hello消息,以發現鄰接的PIM路由器,進行葉子網絡、葉子路由器的判斷,并負責在多路訪問網絡中選舉DR——盡管PIM-DM本身并不需要DR,但如果PIM-DM域中的共享網絡上運行了IGMPv1,則需要選舉出DR來充當共享網絡上的IGMPv1查詢器。
PIM-DM屬于密集模式的組播路由協議,使用“推”模式傳送組播數據,通常適用于組播組成員相對比較密集的小型網絡,其基本原理如下:
? PIM-DM 假設網絡中的每個子網都存在至少一個組播組成員,因此組播數據將被擴散到網絡中的所有節點。然后,PIM-DM 對沒有組播數據轉發的分支進行剪枝,只保留包含接收者的分支。這種“擴散—剪枝”現象周期性地發生,被剪枝的分支也可以周期性地恢復成轉發狀態。
? 當被剪枝分支的節點上出現了組播組的成員時,該節點通過主動向其上游發送嫁接報文,從而由剪枝狀態恢復成轉發狀態,以恢復對組播數據的轉發。
對HCIA的課程,是不包含組播的報文轉發和路由協議的!
組播實現機制組播的實現機制,使得組播在點到多點場景中,比單播和廣播具有強大的優勢。組播的實現機制有哪些呢?
我們這里通過詳細對比組播和單播的實現過程來展開介紹一下組播的實現機制。
如圖所示,單播組網中要實現用戶A,用戶B,用戶C能接收數據源的流量,需要做如下配置:
全網設備相連的接口都需要配置單播IP地址
全網要部署單播路由協議,確保數據源和用戶A、用戶B和用戶C之間路由互通。
數據源發送的時候,對用戶A發送的流量IP報文頭封裝的目的地址是用戶A的主機地址10.1.2.1;
對用戶B發送的流量IP報文頭封裝的目的地址是用戶B的主機地址10.1.3.1;
對用戶C發送的流量是IP報文頭封裝的目的地址是用戶C的主機地址10.1.4.1。
如圖所示,組播組網實現用戶A,用戶B和用戶C能接收到數據源的流量,需要做如下部署:
全網設備相連的接口都需要配置單播IP地址
全網要部署單播路由協議,確保數據源和用戶A、用戶B和用戶C之間路由互通
全網部署組播PIM協議(PIM-SM或者PIM-DM),并配置相應的BSR和RP,圖中配置設備B為RP和BSR。
用戶A,用戶B,用戶C必須發送IGMP組加入報文,組加入報文中包含其需要加入的組IP地址225.1.1.1。
數據源發送數據流,首先傳輸層封裝應用層數據,并加上源目的端口,目的端口由實際的應用程序決定;然后到達網絡層,,網絡層源IP地址為數據源IP地址,目的IP地址為組播地址,IP報文的目的地址為225.1.1.1;然后進入鏈路層,該數據流二層目的MAC地址是組播的MAC地址。
組播實現機制總體來說就是接收者告訴一個中心節點(在組播協議里面稱為RP),它需要哪些組地址的流量;RP需要被告之數據源(在組播場景中我們稱之為組播源,它的特點是流量二層頭中目的MAC地址是組播MAC地址,IP報層IP報文頭目的地址是組播IP地址)在哪,數據源往哪些組地址發流。RP知道了接收方和發送方的所有信息后,就會根據需要把流量發送到特定位置(它發送的過程中建立了組播分發樹)。
單播、廣播和組播單播方式 |
|
|
廣播方式 |
|
|
組播方式 |
| NA |
我們用一張圖說明
當前,集線器和沖突已經很少見了。因為集線器已經被交換機代替,而沖突域只存在于共享式以太網中,比如
如果PC1、PC2和PC3用hub相連,他就是共享式以太網,PC1 ping PC2,我們在PC3上可以監聽到他們之間的通信,因為Hub是單通道,它會把一個端口收到的數據向其他所有端口轉發。
但如果把Hub換成交換機,他就變成非共享網絡,我們在PC3上監聽不到Pc1和Pc2之間的通信。這是因為交換機是按照端口轉發的。
總結
以上是生活随笔為你收集整理的组播 收发_[HCIARoutingamp;Switching]网络篇单播广播和组播的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows10虚拟桌面和多桌面的使用
- 下一篇: sqlserver数据库迁移mysql_