HCNP Routing&Switching之組播技術-組播協議IGMP

1874發表於2021-12-17

  前文我們瞭解了組播地址相關話題,回顧請參考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地址最小的路由器將被選舉成查詢器,其他路由器成為非查詢器;如上圖所示,R他的介面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各版本間的差異

相關文章