計算機網路複習 ch1-4 組播
正文之前
所謂的沉迷美劇,我來揭祕一下到底是哪一個美劇。《泰坦》~

正文
Multicasting-組播
- IP組播(IP multicast)又稱為IP多播,特點:
- IP組播是介於單播和廣播之間的一種分組傳送形式,它既不指定明確的接收者, 也不是將資料分發給網路上的所有主機。
- 傳送者不關心接收者所處的位置,只要將資料傳送到約定的目的地址,剩下的工 作就交給網路去完成。
- 這樣做的好處在於,傳送者只產生一份資料,而不用為每個接收者分別複製一份 ,而且傳送者不必維護接收者的資訊。
- 網路中的路由器裝置必須收集接收者的資訊,並按照正確的路徑實現組播報文的 轉發和複製。
-
Multicast
- 在 IP 網上一對多的傳輸
- 支援視訊會議,
- e-learning, 培訓等
-
組播的三個組成部分
- 1.組播地址(能被組播識別的地址集)
- 2.組成員機制(主機加入和退出組的機制)
- 3.組播路由協議(路由器有效傳送組播到各個網路的組成員,且不會過度消耗網路資源的路由協議)
- 從資料格式來看,組播與單播使用共同的IP報文結構和上層封裝,只是目的 地址使用一段特殊的地址空間。這段地址在IPv4中被稱為D類地址空間: 224.0.0.0-239.255.255.255。
-
這段地址雖然看上去是連續地址,但不能聚合為網段地址,而是每個IP獨立 分配和使用。
- 特殊的組播地址
- 224.0.0.1 所有組播主機和路由器
- 224.0.0.2 所有組播路由器
- 224.0.0.4 DRMRP 路由器
- 224.0.0.5 所有 OSPF 的路由器
- 224.0.0.6 OSPF 指派路由器
- 224.0.0.9 RPIv2 路由器
- 224.0.0.10 EIGRP 路由器
- 224.0.0.13 PIM 路由器
- 224.0.0.22 IGMPv3
- 224.0.0.25 RGMP
- 224.0.1.1 NTP 網路時間協議
組成員機制
-
要將組播資料準確傳送給組成員,必須先確定哪些網路的哪些主機是組成員,只有先確定了成員的位置,才能正確轉發組播。
-
當組成員不再需要接收組播的時候,就應該停止向成員傳送組播,要確 定組成員不再需要接收組播,就必須在成員退出時明確通告發送者。
-
要確定組成員,有兩種方式:查詢和報告
- 查詢,就是一臺路由器向網路中發出查詢訊息,查詢是否要主機要加入組 ,如果有主機應答,那麼路由器就可以請求上游路由器把組播流量前轉到這個子網中,如果沒有主機應答,則請求上游路由器停止向其前轉組播流量。
- 報告,主機也可以不必等待路由器的查詢,可以主動向路由器請求加入某個組,退出時也要向路由器傳送退出訊息,讓路由器停止向其轉發組播流量。
-
<u> IGMP (Internet Group Management Protocol)因特網組管理協議, IGMP執行在路由器和主機之間 </u>
- IGMP實現的功能是雙向的:一方面,主機通過IGMP協議通知本地路由器希望加入並接收某個特定組播組的資訊;另一方面,路由器通過IGMP協議週期性地查詢區域網內某個已知組 的成員是否處於活動狀態(即該網段是否仍有屬於某個組播組的成員),實現對所連網路 組成員關係的收集與維護。
- 通過上述IGMP機制,在組播路由器裡建立起一張表,其中包含路由器的各個介面以及在接 口所對應的子網上都有哪些組的成員。當路由器接收到某個組的資料報文後,只向那些有 該組成員的介面上轉發資料報文。
- 至於資料報文在路由器之間如何轉發則由組播路由協議決定,IGMP協議並不負責。
-
當組播發送者和組成員在不同網路時,需要路由器為組播資料提供轉發 ,那麼路由器就必須確認自己直連的網路中是否存在組成員,可以使用 查詢和報告來發現組成員,IGMP用來完成這樣的工作。
- 加入/離開組播過程:
- 加入過程: 當主機加入一個組播組時,不是等待路由器發出成員查詢報文時再響應 加入,而是立即主動地向一個該組播地址發出一個成員報告(型別為0x2)表示加入 ,這樣在該組內沒有其它組成員的情況下縮短了主機加入該組播組的延遲。

## 組播路由協議
組播協議總體結構:
- 路由器、主機之間:IGMP
- 路由器、路由器之間:PIM
- 路由器、交換機之間:CGMP

-
PIM協議
-
如果要讓路由器也能像轉發單播資料一樣,將組播根據路由表來精確地轉發到目的地,那就需要讓路由器擁有像單播路由表一樣的組播路由表。
-
要讓路由器生成一張功能完全的組播路由表,就需要在路由器之間執行一種協議,這種協議可以讓組播源和目的之間的路由表生成單播表一樣地生成組播表,最後路由器根據這張組播路由表來完成組播的轉發。
-
這個協議就是PIM( Protocol Independent Multicast )。
-
-
PIM基本概念:組播樹
- 組播發送者到接收者之間的轉發線路,被稱為組播轉發樹。
- 組播發送者就好比是組播樹的樹根,組播總是從根發向接收者。從傳送者到接收者之間的路由器,都是在組播樹上的,因為這些路由器在中間提供組播轉發。
- 要完成從傳送者到接收者之間的組播轉發,組播樹上的路由器都應該記 住組播的出口,每臺中間路由器都記住出口之後,最終便形成了組播樹,而要記住組播的出口資訊,這就是組播路由表的工作
-
PIM基本概念:組播反向路徑轉發
- 因為組播經常會有多個接收者分佈在不同的網路,所以當路由器在轉發 組播時,也通常需要將同一份資料從多個介面發出去
- 由此可以看出,轉發組播的路由器,必須擁有發現環路、避免環路的能 力。
- 所有的組播路由器就必須只將資料往接收者的方向轉發,而絕不能往發 送者的方向轉發
- 向傳送者轉發稱為RPF(Reverse Path Forwarding),組播路由器在收 到組播資料後,都要對資料進行RPF檢測,組播路由表記住接收者的接 口,就能正常將資料發給組成員,而記住了傳送者的介面後,就可以避 免路由器將資料往回發而產生路由環路了。
- 組播路由器上朝傳送者方向的介面被稱為RPF介面,只有從RPF介面發來的資料才能被轉發,從其它介面過來的資料被認為是無效的。
- PIM基本概念:PIM-Dense Mode(密集模式 )和PIM-Sparse Mode(稀疏模式)
- PIM要為路由器學習組播路由表從而建 立組播樹,有兩種不同的方式,這兩種 不同方式在PIM中分兩種模式來執行, 為PIM-DM(密集模式)和PIM-SM(稀疏 模式)
- PIM-DM模式中,組播源會向所有PIM鄰 居發出查詢,查詢資料包中包含組的地 址,下一跳PIM鄰居還會繼續向它的鄰 居發出查詢資料包,這些查詢資料包會 在所有PIM鄰居之間傳遞。
- 如果查詢資料包發向一個連線了組成員 的網路,這時路由器收到組成員的報告 之後,就會向自己上一跳鄰居(RPF接 口方向的鄰居)傳送加入組的訊息,以 宣佈自己要接收組播,從而將組播轉發 到組成員
-
PIM基本概念:PIM-DM(密集模式)
-
如果網路中有一個組,地址為:224.1.1.1,傳送者為100.1.1.1,那麼就 應該記錄路由為(100.1.1.1,224.1.1.1),還要記錄的就是組播的出口 ,這些資訊構成組播路由表。
-
路由器收到的224.1.1.1組播就會指定出口發出去。PIM-DM模式中這樣記 錄組播路由的方式被稱為(S,G),其中S就是組播源地址,G就是組地址, 而出口則會被標為forwarding。
-
如果只有一個組224.1.1.1,而傳送者除了100.1.1.1之外,還有 100.1.1.2和100.1.1.3,那麼依照(S,G)的記錄方式,就需要同時記錄 (100.1.1.1,224.1.1.1),(100.1.1.2,224.1.1.1),(100.1.1.3 ,224.1.1.1),也就是說(S,G)的路由記錄方式,會因為組源地址的增加 而增加記錄條目。
-
對於不需要接收組播的PIM介面,PIM-DM模式照樣會將其記錄在路由表中 ,但被標為pruning。
-
在PIM-DM模式下,組播發送源將資料發給組播路由器,然後路由器依照組 播路由表朝著接收者的方向轉發,這樣的路徑,是依靠單播路由表計算出 來的最短路徑,也就是說從傳送者到接收者之間的路徑,總是最短的,所 以PIM-DM模式建立起來的組播樹,如(S,G)記錄的組播樹被稱為最短路 徑樹shortest-path tree (SPT),因為SPT中記錄個每個組播發送者的源 地址,故又被稱為源樹。
-
-
PIM基本概念:PIM-SM(稀疏模式)
- PIM-SM模式的工作過程和PIM-DM模式是不同的,在建立組播樹時,PIM-SM 並不會讓路由器傳送查詢資料包去查詢組成員,而組成員的發現是靠組成 員自己主動向路由器傳送報告。
- 當一臺路由器從介面上收到組成員的報告之後,就會向自己的上一跳鄰居 傳送加入訊息,以通告自己需要接收組播,如果上一跳鄰居還不是組播發 送者,那麼上一跳鄰居會繼續再向上一跳鄰居傳送加入訊息,直到組播源 收到加入訊息為止。
- 通過這樣的方式,就可以建立組播源到組成員之間的組播樹。
- PIM-SM模式和PIM-DM模式除了在發現組成員的方式上不同之外,記錄路由 表的方式也不一樣
- 例如網路中有一個組,地址為:224.1.1.1,傳送者為100.1.1.1,PIM-SM 模式路由器記錄為( ,224.1.1.1),可以看出,PIM-SM模式並不關心組 播的源地址,而統統將源地址使用星號 來表示
- 這樣一來,PIM-SM為一個組只記錄一個條目,而不管這個組有多少個傳送 者。這樣的記錄方式稱為( ,G) ,其中 就是組播源地址,G就是組地址 。如果有10個組,每個組有5個傳送者,使用(S,G)的記錄方式,需要 記錄10×5=50條,而使用(*,G)的記錄方式,則只需要10條,所以使用 PIM-SM模式,可以大大縮減組播路由表的空間,從而大大節省系統資源。
- PIM-SM RP(Rendezvous Point)
-
在PIM-SM模式中,由於記錄組播資訊 採用(*,G)的方式,而並不關心組播 源地址,因此造成路由器不知道組播 傳送者的IP地址是什麼,也就無法完 成RPF反向路徑檢測。
-
在這種情況下,PIM-SM在網路中選出 一個組播會聚點,即Rendezvous Point (RP)
-
RP就是組播網路的核心,傳送者統一 將組播資料傳送到RP,然後RP再將數 據發到接收者,也就是說接收者收到 的資料,都是由RP轉發過來的。
-
路由器也就認為RP的地址,就是組播 源的IP地址。
-
因為RP在PIM-SM中被當作核心,而(* ,G)的記錄方式中並不知道組播源的 地址,大家都會認為RP就是組播源
-
最後PIM-SM中的組播樹,即(*,G)形 式的樹被稱為共享樹(RPT)。
-

-
PIM DR(在PIM-DM和PIM-SM模式下都會選舉)
- 因為IGMP V1不選舉IGMP查詢器,如果有多臺路由器連線同一 個多路訪問網段(乙太網)時,就必須選舉PIM Designated Router(DR)來避免重複查詢
- 這個DR的選舉,是由PIM協議進行的,選擇IP地址高的為DR。 PIM DR路由器在IGMP v1中充當IGMP查詢器的功能,來向主機 傳送IGMP查詢
- 在PIM-SM中,組播源沒有機制用來宣 告自己的存在,又因為PIM路由器都認 為RP才是組播源,而當直接的組播源 向RP傳送組播時,會導致某些路由器 RPF檢測失敗。
- 例如圖中R2只會接收從介面F0/1發進 來的組播,從其它介面發進來的,都 會被認為是環路而被丟棄。因此在真 正的源12.1.1.1將組播從R2的F0/0發 進來時,R2會因為RPF檢測失敗,從而 丟棄所有的組播資料,這樣一來,組 播也就無法通訊了。
- 因此在PIM網路中,真正的源需要向RP 傳送註冊訊息,以宣告自己的存在, 而傳送註冊訊息在多路訪問的網路中 則是由DR來代為完成的。
- 真正的源向RP發出第一個組播包時, DR將此包封裝在單播中發向RP,這稱 為註冊,傳送的註冊訊息會從DR到RP 之間建立一條源樹,也就是(S,G) 的記錄,這樣,在源到RP之間建立的 源樹就可以幫助避免RPF檢測失敗
- 當RP和真正的源之間建立(S,G)條 目之後,就會通知DR停止以單播發送 ,從而轉回傳送真正的組播。
- 誤認為RP是源而導致RPF檢測失敗的情 況,只有在RP到源這段上游網路中的 路由器才會存在,而RP到組成員的這 段網路中是不會出現這種情況的。
- 選擇DR的資料包為30秒一次,105秒保 持時間,如果過了保持時間沒有收到 DR的資料包,則會重新選舉IP地址最 高的為DR
-
PIM-SM 前轉器(Forwarder)
- 選PIM前轉器的規則是,比較哪臺路由 器的路由表中,到組播源的路由的AD( Administrative Distance)值最小, 如果AD值相同(如使用同一種路由協議 ),再比較誰到源的metric值最小,如 果metric值還相同,則選擇IP地址大的 。
- 在圖中,如果R3和R4到組播源R1的路由 條目中是使用同一個路由協議學到的, 則比較metric值,如果metric值相同, 則比較R3和R4的IP地址,這個IP地址是 同網段相互建PIM鄰居所使用的IP地址 ,因為34.1.1.4比34.1.1.3要大,所以 前轉器為R4,因此R2會選擇從R4到達組 成員,並且把到R3的出口剪除。

正文之後
這後面幾節確實沒前面做的用心了。。。沒轍啊,當時都要考試了,怎麼可能一點點的把後面的也做出來啊。。昨晚我都沒時間刷題了。。