相對IGMPv1,IGMPv2使用獨立的查詢器選舉機制;所有IGMPv2的路由器在初始狀态時都認為自己是查詢器,向本地網段内的所有主機和路由器發送普遍組查詢封包;其他路由器在收到該封包後,将封包的源ip位址與自己的接口位址作比較;ip位址最小的路由器将被選舉成查詢器,其他路由器成為非查詢器;如上圖所示,RTA的接口ip位址小于RTB的接口ip位址,則RTA當選為查詢器;IGMP的查詢器和非查詢器都會處理IGMP組加入資訊,但是隻有查詢器負責發送查詢封包;IGMP非查詢器不處理IGMPv2離開封包;所有非查詢器上都會啟動一個定時器,如果在該定時器逾時前收到了來自查詢器的查詢封包,則重置該定時器;否則就認為原查詢器失效并發起新的查詢器選舉;
前文我們了解了多點傳播位址相關話題,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/15616740.html;今天我們來聊一聊多點傳播協定中IGMP協定相關話題;
多點傳播技術架構
提示:多點傳播通信中,發送者将多點傳播資料發送到特定的多點傳播位址。要使多點傳播封包最終能夠到達接收者,需要某種機制使與連接配接潛在的接受者網段的多點傳播路由器能夠了解到該網段内有哪些多點傳播接收者,保證接收者可以加入到相應的多點傳播組中接受資料;從上面的多點傳播基礎架構中我們可以看到,多點傳播通信主要分三個階段,第一階段是多點傳播源到路由器,即多點傳播資料的生成;第二階段是多點傳播資料的轉發,即從多點傳播源最近的路由器到接收者最近的路由器;最後是多點傳播資料的接收,即離接收者最近的路由器到接收者之間的通信;這樣一來靠近多點傳播源的路由器就需要清楚的知道對應多點傳播資料該如何發送,如何路由,如何表示接收者,如何建立多點傳播路由轉發路徑;相對于靠近接收者的路由器就需要對應網段有哪些人對那些多點傳播源感興趣,如何維護多點傳播組資訊以及怎樣判斷有哪些人加入了哪些組,有哪些人離開了哪些組;對于上述需求,多點傳播協定正解決了上述需求;在多點傳播技術中,最常用的多點傳播協定有兩個,一個是IGMP,一個是PIM;IGMP(Internet Group Management Protocol)網際網路組管理協定,是TCP/IP協定族中負責IP多點傳播成員管理的協定,主要用來在接收者與其相鄰的多點傳播路由器之間建立、維護多點傳播組成員關系;而PIM(Protocol Independent Multicast)協定無關多點傳播,該協定有兩種模式DM(dense mode)和SM(Sparse Mode);當接收者分布較為密集時,适用DM模式(密集模式),當接收者分布較為稀疏時,适用于SM模式;該協定主要用來傳播多點傳播路由,類似單點傳播裡面的ospf;PIM必須和單點傳播路由協定協同工作;
多點傳播相關協定
提示:域内多點傳播路由協定包括DVMRP(Distance Vector Multicast Routing Protocol),距離矢量多點傳播路由協定,該協定是一種密集模式協定,類似單點傳播裡面的RIP協定;該協定有跳數限制,最大跳數32跳;該協定目前已被淘汰;MOSPF,多點傳播的ospf協定,該協定是在OSPF路由協定的基礎上,通過定義新的LSA來支援多點傳播;最後是現在使用較多的PIM協定;對于多點傳播來說,它和單點傳播類似也有as的概念,對于as之間傳遞多點傳播路由的協定有MSDP(Multicast Source Discovery Protocol)該協定能夠跨越AS傳播多點傳播源資訊;還有一個協定MPBGP(MultiProtocol Border Gateway Protocol),基于多點傳播的BGP協定,它能夠跨越AS傳遞多點傳播路由;
接收端如何接收多點傳播資料?
提示:如上圖如所示,接收者與路由器之間首先接收者事先要聲明自己需要接收那個組的資料,其次路由器需要了解哪些多點傳播組存在接收者;對于這些需求,如果使用人工配置的方式,很顯然實時性跟不上,靈活性差,工作量巨大,容易出錯;為此,IGMP解決了此類需求;
IGMP多點傳播組管理協定工作機制
1、IGMP需要知道哪些主機加入或離開對應多點傳播組;
2、根據接收者的報告或路由器主動查詢的資訊,維護多點傳播組資訊;
3、對于路由器來說,它需要選舉一個查詢器來周期性的查詢對應網段内哪些主機對哪些組感興趣;
4、抑制同一網絡中的其他成員主動報告自己感興趣的組的資訊(即同一網絡中如果有一個成員主動報告了自己對某某組感興趣以後,如果對應其他成員也對該組感興趣,那麼後者将不在報告給路由器);抑制成員報告主要是減少路由器的壓力,提高路由器的性能;
IGMP主要作用
1、負責多點傳播成員管理,運作在主機群組播路由器之間(即該協定運作在三層裝置或路由器面向終端的接口上);
2、主機側,通過IGMP想路由器通告組成員關系;
3、路由器側,通過IGMP協定維護組成員關系;
IGMP版本
IGMP從誕生到現在有3個版本,IGMPv1 該版本主要定義了基本的組成員查詢和報告的過程;目前基本上不使用該版本;
IGMPv2,該版本在v1的版本基礎上增加了查詢其選舉和離開組機制;
IGMPv3,該版本成員可以指定接收或不接收某些多點傳播源的封包;
以上三個IGMP版本都支援ASM模型,IGMPv3可以直接飲用與ssm模型(它可以選擇多點傳播源),而v1和v2如果要用于ssm模型,則還需要ssm-mapping技術的支援;運作IGMP高版本的路由器可以識别低版本的成員報告,即向前相容;
IGMPv1封包格式
提示:路由器周期性的發送成員關系查詢,預設查詢周期是60秒;成員關系報告的發送可以被動發送也可以主動發送,所謂主動發送是指主機主動發送成員關系報告給路由器;被動發送是指主機收到路由器的查詢消息後,發送成員關系報告;
IGMPv1工作機制
提示:路由器向對應網段内的主機發送查詢資訊,收到路由器查詢資訊的主機會發送IGMP成員關系報告,同時對于其他對相同組感興趣的主機會監聽對應成員的報告,如果有成員報告,對應主機不在主動報告;每個收到查詢的主機會啟動一個計時器,預設是0-10秒睡機值,逾時後發送報告;
IGMPv1成員加入
提示:一旦有成員加入,對應成員會主動向路由器發送報告,路由器收到對應報告以後會把對應資訊記錄下來并維護着;
IGMPv1問題,靜默離開
提示:在v1版本裡,IGMP并沒有離開機制,對應加入到某些組裡的成員,在一定時間後如果沒有報告,則對應資訊會在路由器上逾時而被清除;所謂靜默離開就是指成員離開并不發送任何消息;逾時時長=IGMP普遍查詢消息發送間隔×健壯系數+最大查詢響應時間;
提示:隻要路由器收到報告,對應過期時長會被重新整理,然後再倒計時,直到過期時長為0,對應資訊就會被路由器清除;
IGMPv1問題,查詢器選舉
提示:多台路由器同時連接配接到同一接收端網絡時,隻需要有一台路由器進行IGMP的查詢;IGMPv1沒有查詢器選舉機制,它依賴于多點傳播路由協定在末端網絡中選舉一個查詢器;由于不同的多點傳播路由協定采用不同的選舉機制,是以在IGMPv1中,同一末端網絡中可能會存在多個查詢器;針對IGMPv1中的這兩個問題,IGMPv2進行了改進和優化;
IGMPv2對IGMPv1的改進:組成員離開
提示:如圖所示,在IGMPv2中,client B離開多點傳播組G2的過程,首先client B向本地網段内的所有多點傳播路由器(224.0.0.2)發送針對組G2離開的封包;查詢器受到離開封包,會發送針對G2的特定組查詢封包,同時啟動組成員關系定時器Timer-Membership=發送間隔×發送次數;預設是每隔1秒發送1次,一共發送兩次,發送間隔和發送次數可以配置;如果網段内不存在其他G2組員,則路由器不會收到G2的成員報告封包,在timer-membership 逾時後,删除多點傳播傳法表項中對應的下遊接口;路由器将不在向該網段轉發G2的多點傳播資料;如果網段内還有G2的其他成員,則這些成員在收到特定組查詢封包後,會在最大響應時間内發送G2的成員關系報告;對應路由器收到有G2的成員關系報告,路由器繼續維護G2組資訊,向該網段轉發G2的多點傳播資料;
IGMPv2對IGMPv1的改進:查詢器選舉
提示:相對IGMPv1,IGMPv2使用獨立的查詢器選舉機制;所有IGMPv2的路由器在初始狀态時都認為自己是查詢器,向本地網段内的所有主機和路由器發送普遍組查詢封包;其他路由器在收到該封包後,将封包的源ip位址與自己的接口位址作比較;ip位址最小的路由器将被選舉成查詢器,其他路由器成為非查詢器;如上圖所示,RTA的接口ip位址小于RTB的接口ip位址,則RTA當選為查詢器;IGMP的查詢器和非查詢器都會處理IGMP組加入資訊,但是隻有查詢器負責發送查詢封包;IGMP非查詢器不處理IGMPv2離開封包;所有非查詢器上都會啟動一個定時器,如果在該定時器逾時前收到了來自查詢器的查詢封包,則重置該定時器;否則就認為原查詢器失效并發起新的查詢器選舉;
IGMPv1和IGMPv2封包比較
提示:在IGMPv2封包中它取消了版本字段,增加了最大響應時間字段;類型字段相比v1,v2新增了兩種封包,特定組查詢封包(0×11)和成員離開封包(0×17);特定組查詢封包是查詢器向共享網段内指定多點傳播組發送到查詢封包,用于查詢該多點傳播組是否存在成員;成員離開封包是成員離開多點傳播組時主動向路由器發送到封包,用于宣告自己離開了某個多點傳播組;最大響應時間表示主機響應查詢傳回的最大時間;對于普通組查詢來說,最大響應時間預設是10秒;對于特定組查詢來說,最大響應時間預設為1秒;組位址,普遍組查詢封包中,組位址設定為0;特定組查詢封包中,組位址為需要查詢的組位址;在成員報告或離開主動消息中,組位址為需要報告或離開的組位址;
SSM模型中的新需求
提示:如上圖所示,如果client A和RTC之間運作的是IGMPv1或IGMPv2,client A無法對多點傳播源進行選擇,無論是否需要,都會同時接受到來自source A和source B的資料;為了滿足ssm模型的新需求,IGMPv3提供了在封包中攜帶指定多點傳播源資訊的能力;
IGMPv3工作機制
提示:IGMPv3封包包含兩大類,查詢封包和成員報告封包;IGMPv3沒有定義成員離開封包,成員離開通過特定類型的報告封包來傳達;查詢封包中不僅包含普遍查詢封包和特定組查詢封包,還新增了特定源查詢封包(Group-and-Source-Specific Query);該封包由查詢器向共享網段内特定多點傳播組成員發送,用于查詢該組成員是否願意接收特定源發送的資料;特定源組查詢通過在封包中攜帶一個或多個珠寶源位址來達到這一目的;成員報告封包不僅包含主機想要加入到多點傳播組,而且包含主機想要接收來自哪些多點傳播源的資料;IGMPv3增加了針對多點傳播源過濾模式(INCLUDE/EXCLUDE),将多點傳播組與源清單之間的對應關系簡單的表示為(G,INCLUDE,(S1、S2……)),表示接收指定多點傳播源S1、S2……發往組G的資料;或(G,EXCLUDE,(S1、S2……)),表示接收除了多點傳播源S1、S2……之外的多點傳播源發送給組G的資料;但多點傳播組與多點傳播源清單的對應關系發生了變化,IGMPv3報告封包會将關系變化存放于組記錄(Group Record)字段,發送給IGMP查詢器;在IGMPv3中一個成員報告封包可以攜帶多個多點傳播組資訊,而之前的版本一個成員報告隻能攜帶一個多點傳播組;這樣在IGMPv3中封包數量大大減少;
IGMP各版本間的差異
作者:Linux-1874
出處:https://www.cnblogs.com/qiuhom-1874/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利.