Written by pioneer98(臨湖)
Deion 歡迎轉載,請保留作者資訊
Jul.1st.2004 R!
一、什麼是多點傳播
1. 什麼是多點傳播?
多點傳播是一種資料包傳輸方式,當有多台主機同時成為一個資料包的接受者時,出于對帶寬和CPU負擔的考慮,多點傳播成為了一種最佳選擇。
2. 多點傳播如何進行工作?
多點傳播通過把224.0.0.0-239.255.255.255的D類位址作為目的位址,有一台源主機發出目的位址是以上範圍多點傳播位址的封包,在網絡中,如果有其他主機對于這個組的封包有興趣的,可以申請加入這個組,并可以接受這個組,而其他不是這個組的成員是無法接受到這個組的封包的。
3. 多點傳播和單點傳播的差別?
為了讓網絡中的多個主機可以同時接受到相同的封包,如果采用單點傳播的方式,那麼源主機必須不停的産生多個相同的封包來進行發送,對于一些對時延很敏感的資料,在源主機要産生多個相同的資料封包後,在産生第二個資料封包,這通常是無法容忍的。而且對于一台主機來說,同時不停的産生一個封包來說也是一個很大的負擔。
如果采用多點傳播的方式,源主機可以隻需要發送一個封包就可以到達每個需要接受的主機上,這中間還要取決于路由器對組員群組關系的維護和選擇。
4. 多點傳播和廣播的差別?
如同上個例子,當有多台主機想要接收相同的封包,廣播采用的方式是把封包傳送到區域網路内每個主機上,不管這個主機是否對封包感興趣。這樣做就會造成了帶寬的浪費和主機的資源浪費。而多點傳播有一套對組員群組之間關系維護的機制,可以明确的知道在某個子網中,是否有主機對這類多點傳播封包感興趣,如果沒有就不會把封包進行轉發,并會通知上遊路由器不要再轉發這類封包到下遊路由器上。
二、多點傳播協定的要素
通過和廣播,單點傳播的資料傳輸方式的比較,我們可以發現多點傳播中最關鍵的兩個部分:
1. 組的管理和維護
在多點傳播這套協定中,在網絡裝置和所連接配接的子網需要有一套協定或機制來保證網絡裝置知道所連接配接的子網中,有多少台主機屬于一個特定的組。
2. 多點傳播封包的路由
要多點傳播路由協定有什麼用?
(1)是發現上遊接口,離源最近的接口。因為多點傳播路由協定隻關心到源的最短路徑。
(2)通過(S,G)對來決定真正的下遊接口,當所有的路由器都知道了他們的上下遊接口,那麼一顆多點傳播樹就已經建立完成。根是源主機直連的路由器,而樹枝是通過IGMP發現有組員的子網直連的路由器
(3)管理多點傳播樹
單點傳播路由隻需要知道下一跳的位址,就可以進行封包得轉發。而多點傳播,是把從一個由源産生得封包發送給一組目的。在一個特定的路由器上,一個包得多個備份可能從多個接口上發出。如果有環路得存在,那麼一個或多個包會傳回到其輸入的接口,而且這個包也會經複制發到其他的端口上。這一結果可能導緻多點傳播風暴,這個包不斷在路由器與交換機間複制,直到TTL減為0。由于這是個複制過程,它的危害會比單點傳播環路嚴重的多,是以所有的多點傳播路由器必須知道多點傳播包的源,并且需要保證多點傳播包不能從源接口發出。是以他必須知道哪些是上遊接口和下遊接口,可以分辨出資料包的流向。如果在不是在源的上遊接口收到資料包,就會把它丢棄掉。而多點傳播路由協定必須關心到源的最短路徑,或者說它關心到源的上遊接口。同時,除了關心上遊接口,但是在轉發的時候,不能把資料包從除了上遊接口的其他接口發送出去。是以,另外,他還要關心(S,G)下遊接口。當關于一個(S,G)的上下遊接口都被判斷出來了,那麼一顆多點傳播樹就形成了。
稀疏和密集模式的比較?
什麼是稀疏模式?它是指在一個整體網絡中,參與多點傳播的主機相對來少的一種拓撲,主要出現在WAN中。
什麼是密集模式?和以上相反,主要出現在交換式LAN或校園網中
隐式加入和顯示加入的比較?
組員可以在多點傳播會話存活的時候,加入或退出一個組,而其相連的路由器必須動态的根據直連子網内組員的存在或退出來決定要加入或剪除多點傳播樹的樹枝。這就是通過顯式或隐式加入兩種方式來完成。
隐式加入試用于密集模式,它是采用廣播/剪除模式來去除多點傳播樹上的沒有多點傳播成員的樹枝,也就是說,它是通過先把網際網絡上的所有路由器都加入到多點傳播樹上,然後由每個路由器通過IGMP來查詢是否有組員在直連的子網上,如果沒有,就發出一條剪除消息,來剪除多餘的樹枝。
而顯示加入适用于稀疏模式,它是由每個路由器先查詢子網内有無組員,然後才看是否要發加入資訊給上遊路由器。
基于源的樹和共享樹的比較?
基于源的樹是針對一個源就會有一顆多點傳播樹構成,也就說,如果網絡中有多個可以産生多點傳播封包的源主機,那麼就會有多少顆多點傳播樹組成,在多點傳播表裡,會有組數×每組的成員數的項目條數。這種拓撲主要适用于密集模式。
共享樹是在整個網絡中選一個RP,或叫集中點,所有的多點傳播封包都需要從這個點來進行傳送,是以它沒有(S,G)項,隻有(*,G)項,表明所有有多個源。 RP是預先設定的一個路由器,承擔轉發所有的多點傳播封包的責任。所有要發送多點傳播封包的源主機在發送多點傳播封包前,都需要到RP上進行注冊,然後通過直連的路由器來确定到RP的最短路徑,通過RP路由器來确定到目的地的最短路徑。RP成為了多點傳播樹的根結點。
相對于基于源的樹,共享樹的多點傳播表項更為精簡,适合在稀疏模式下使用。但是也有一些缺點。共享樹在RP上的選擇,會導緻從源主機到各個組位址的路由并非最優路徑。
如果在整個區域網路裡同時有多條耗帶寬的多點傳播鍊路,會導緻RP成為整個網絡的瓶頸。并且在共享樹中,采用選取RP來轉發多點傳播封包,會增加産生單點故障的可能。
三、如何來維護組成員
現在有IGMP和CGMP(Cisco專有的)兩種協定,可以進行主機和網絡裝置之間的組員關系的維護。
IGMP是路由器和内部子網之間通信的方式,也就是說它是三層裝置對直連子網的組關系的維護機制。它可以分成兩個部分,主機部分和路由器部分,每個部分可以完成不同的工作。但是它有一個限制,就是IGMP封包隻能在本地子網内傳送,使三層裝置不能前轉到其他的裝置上,它的TTL總是1。
IGMPv2主機部分的功能:
運作IGMPv2的主機會産生以下3種資訊:
* Member Report消息
用來訓示一台主機想要加入一個多點傳播組,這個消息在一個主機第一次加入組的時候會發出,也可以用來響應三層裝置發出Membership Query消息。由于Membership Query消息的目的位址是組位址,除了路由器,網内其他的組員主機都會收到這個封包,一旦其他主機收到封包,他們将會抑制自己的Membership Query封包,避免了内部區域網路充斥了Membership Query封包。它隻需要讓路由器知道網内還有一個組員。
* Version 1 Membership Report消息
是為了IGMPv2主機的向後相容性,用于檢測和支援子網中IGMPv1主機和路由器
* Leave Group消息
主機發出的,目的位址為224.0.0.2(所有路由器),告訴路由器主機離開了一個組。
IGMPv2路由器功能:
主要是查詢功能,它會有兩種查詢封包,General Query和Group-Specific Query
General Query每隔一段時間就會向區域網路内發送,目的位址是224.0.0.1(網内所有主機),是以子網裡的每一個主機都會收到這個封包,并且會以 Member Report封包回應,如果在一定的時間間隔内裝置沒有收到任何Member Report,它就會認為子網内沒有組員。
Group-Specific Query封包,當路由器收到一個Leave Group封包的時候,它會發送這樣一個具體包含有組位址的封包來查詢這個組是否有組成員存在。
當如果在一個子網上同時有兩個多點傳播路由器,他們一開始都會認為自己是多點傳播成員的查詢者,當他們發送General Query封包時,通過比較從對端收到的封包源IP位址的大小來決定誰是查詢者誰不是查詢者,IP位址大的成為查詢者。如果在一段時間内沒有收到查詢的封包,就會認為查詢者down掉了,它就會充當起查詢者的角色。
CGMP(Cisco專有)
考慮到了如果有交換機存在的情況,考慮到了在三層裝置和主機中有二層裝置,而IGMP是一個三層協定,二層裝置如果收到這樣一個類型的封包,隻會向除了源端口以外的所有端口進行轉發,這樣會對網絡的帶寬和整體性能造成影響。解決的方法是希望交換機可以對有多點傳播成員的端口進行多點傳播封包的轉發。
在交換式網絡上,對多點傳播流的控制有三種方法:
(1)手工配置的交換式多點傳播樹
在交換機的橋接表上配置靜态的多點傳播MAC位址和端口映射。
(2)GMRP(802.1p)
他讓MAC層的多點傳播組位址動态地在交換機上注冊和取消。
(3)IGMP偵聽
通過在交換機端口上配置,可以使交換機進行IGMP消息地檢查,可以知道多點傳播路由器群組員地位置。但是,檢測IGMP消息意味着所有地IP包都要進行檢查。尤其當這些如果是在軟體地方式來實施,會嚴重降低交換機的性能。
CGMP的做法是通過路由器來告訴交換機,多點傳播成員的組MAC位址和主機MAC位址,讓交換機可以知道在那個端口上有組員,并且可以進行轉發。
四、多點傳播封包如何來進行路由
現下常用的多點傳播路由協定有一下幾種,由于現在主流的路由器産品隻支援Pim,其他的路由器協定都不支援,是以隻會對PIM做個詳細的解釋。
DVMRP 它是通過RIP來發現到源的最短路徑,采用廣播/剪除的方式來建構一顆多點傳播樹。
MOSPF 它是通過OSPF協定來發現到源的最短路徑,也是用在密集方式的拓撲下。
CBT 是一個與協定無關的,基于稀疏模式的,共享樹協定。他和DVMRP和MOSPF的差別有兩點:它無需要在多點傳播中在加入一個路由協定,可以在現有的任何協定上查找到到源的最短路徑;它是基于共享樹的協定,是以必須要在網絡裡設定一個網絡的核心來確定多點傳播包的前轉;更适合使用在稀疏模式下。
PIM-DM 它是個與協定無關的多點傳播協定,同時又是基于密集拓撲的多點傳播協定。采用廣播/剪除的方法來進行多點傳播樹的構造。
功能:
* 通過交換Hello封包發現鄰居
* 當單點傳播路由發生變化時,重新計算RPF接口
* 在多路通路的網絡中選舉指定路由器
* 在多路通路的網絡中使用剪除覆寫
* 在多路通路的網絡中用Assert消息選舉指定前轉器
其中會産生一下5中PIMv2消息:
* Hello
周期性地發送用來發現PIM鄰居。和OSPF中的Hello封包有着類似點,如果沒有在一定的時間内收到,就會認為鄰居已經死亡。
* Join/Prune
這是一個合成的封包,其中有要加入多點傳播樹的路由器資訊,也有要被剪除路由器資訊,都會在這樣一個封包裡列出來。
當源在發送多點傳播封包的時候,PIM-DM用擴散與剪除的方式建立多點傳播樹。那些沒有組員連接配接的路由器通過發送Prune消息可以把自己變成處于剪除狀态。
當處在剪除狀态的路由器,它收到了所直連的子網所發出的IGMP加入資訊,就會發出這樣一個join的封包給上遊路由器,通知列出了需要加入多點傳播樹的子網清單。
* Graft
當一個下遊路由器發送給上遊路由器一個Prune封包時,上遊路由器不會馬上把通告的子網從多點傳播前轉表中删除,而是會等待一段時間,如果下遊路由器所直連的子網又要加入多點傳播樹時,需要發出一個Graft封包,通知上遊路由器來加入多點傳播樹。
* Graft-Ack
上遊路由器收到一個Graft資訊,必須要回一個Ack資訊,這樣才會使下遊路由器接受多點傳播封包
* Assert
當有兩台裝置同時連在同一個廣播網絡上,并且有相同的上遊路由器接口,如果兩台路由器同時負責前轉多點傳播封包的話,會造成網絡資源的浪費,是以需要可以在兩台路由器中選出一個來作為唯一的前轉封包路由器,Assert封包就是在兩個路由器中互相通信,選出一個前轉器的封包,通過優先權值,IP位址等參數來協商前轉器。
PIM-SM
采用共享樹的拓撲方式,建立起多點傳播樹。使用顯示加入的方式來加入多點傳播樹。
查找彙聚點:
* 自舉協定
* 自動RP協定
* 靜态設定
PIM-SM和共享樹:
PIM-SM由于是單向傳輸協定,是以多點傳播流量隻能從RP向外發送,而不能向RP發送,而源是通過把多點傳播封包封裝在PIM Register封包裡,發送RP接口,然後再由RP進行剝頭,對其中的多點傳播封包進行處理。如果多點傳播封包比較多,通過封裝Register封包對裝置來說是一種負擔,是以可以在RP和源之間建立一個基于源的樹,進行源到RP的多點傳播封包傳送。
PIM-SM和最短路徑樹
在大型網絡中,共享樹的路徑未必是最短路徑,PIM-SM可以通過在源和目的地之間建立一個基于源的樹實作最短路徑的傳送。
本文轉自loveme2351CTO部落格,原文連結:http://blog.51cto.com/loveme23/8009 ,如需轉載請自行聯系原作者