讓我們一起解密組播、IGMP、IGMP監聽

HL1329658發表於2023-01-31
前言:一直對組播這個概念迷迷糊糊,特別是交換機處理組播的方式,非常想搞懂但是懶癌發作。這幾天終於耐心地看了下有關組播的資料,大致瞭解了一下同一廣播域內組播的相關知識。組播佔了計算機網路的一大部分,特別是組播路由這一塊,知識點、名詞非常多,要完全掌握並不是一件容易的事情。下面海翎光電的小編跟大家分享一下我的學習經驗,如有錯誤請提出,謝謝。還有,此文全部組播均為IPv4環境下的組播,IPv6的組播跟IPv4完全不同,請注意區分。

   一、 為什麼需要組播
    簡單來說,就是因為在一些諸如影片點播的應用時,單播對主機的壓力太大、而廣播又對網路鏈路的壓力太大。所以……
  (一)  組播IP地址

  • 224.0.0.0~239.255.255.255 所有組播地址
  • 224.0.0.0~224.0.0.255 有特殊用途的組播地址(不能被路由)
  • 224.0.0.1 同一網段所有主機
  • 224.0.0.2 同一網段所有組播路由器
  • 224.0.1.0~238.255.255.255 公網組播地址
  • 239.0.0.0~239.255.255.255 私網組播地址

   (二) 組播IP地址和MAC地址的關係
    組播MAC地址的高24bit位是以01-00-5E開頭,低23bit為組播IP地址的低23bit。
    由於IP組播地址的高4bit是1110,標識了組播組,而低28bit中只有23bit被映像到組播MAC地址上,這樣IP組播地址中就會有5bit沒有使用,從而出現了32個IP組播地址映像到同一MAC地址上的結果。
     (三)組播模型分類
     根據接收者對組播源處理方式的不同,組播模型分為以下三類:
     (1) ASM 模型:Any-Source Multicast,任意信源組播
    在ASM 模型中,任意一個傳送者都可以作為組播源向某組播組地址傳送資訊。眾多接收者透過加入由該組播組地址標識的組播組以獲得發往該組播組的組播資訊。在ASM 模型中,接收者無法預先知道組播源的位置,但可以在任意時間加入或離開該組播組。
    (2) SFM 模型:Source-Filtered Multicast,信源過濾組播
    該模型繼承了ASM 模型,從傳送者角度來看,兩者的組播組成員關係完全相同。SFM 模型在功能上對ASM 模型進行了擴充套件。
    在SFM 模型中,上層軟體對收到的組播報文的源地址進行檢查,允許或禁止來自某些組播源的報文透過。
    因此,接收者只能收到來自部分組播源的組播資料。從接收者的角度來看,只有部分組播源是有效的,組播源被經過了篩選。
    (3) SSM 模型:Source-Specific Multicast,指定信源組播
    在現實生活中,使用者可能只對某些組播源傳送的組播資訊感興趣,而不願接收其它源傳送的資訊。該模型為使用者提供了一種能夠在客戶端指定組播源的傳輸服務。
    SSM 模型與ASM 模型的根本區別在於:SSM 模型中的接收者已經透過其它手段預先知道了組播源的具體位置。SSM 模型使用與ASM/SFM 模型不同的組播地址範圍,直接在接收者與其指定的組播源之間建立專用的組播轉發路徑。
     (四) 組播服務模型:針對接受者對源如何進行選擇

  (五)組播ip地址
    (六)組播mac地址
高24bit=0x01005e,第25bit=0,第23bit=組播ip地址的第23bit
mac地址=01-00-5e(字首)
    優於ip地址的前4bit是1110,代表主筆標識,而後28bit中只有23bit被對映到mac地址表,這樣ip地址中就有5bit資訊丟失,直接的結果就是出現32個ip組播地址對映到同一個mac地址上。
    (七) 組播的基本架構
    資料傳送-轉發-接受

 (八) 組播路由協議包括
     (九)域間組播協議
   對於ssm模型,沒有域內和域間劃分。優於接受者預先只掉組播的具體位置,因此可以藉助pim sm的功能直接建立組播傳輸路勁
   二、 IGMP簡介 
    IGMP是Internet Group Management Protocol的簡稱,又被稱為網際網路組管理協議,是TCP/IP協議族中負責IPv4組播成員管理的協議。IGMP用來在接收者主機和與其直接相鄰的組播路由器之間建立和維護組播組成員關係。IGMP透過在接收者主機和組播路由器之間互動IGMP報文實現組成員管理功能,IGMP報文封裝在IP報文中。
    (一)到目前為止,IGMP 有三個版本:
IGMPv1(由RFC 1112 定義)
IGMPv2(由RFC 2236 定義)
IGMPv3(由RFC 3376 定義)
     1、查詢報文
    該報文由組播路由器發出。可細分為通用查詢報文和特定組查詢報文。組播路由器定時發出通用查詢報文(下圖的組播路由器每125s傳送一次)。通用查詢報文的目標IP為224.0.0.1(所有主機),IGMP報頭內的組播IP為0.0.0.0。用來查詢該網段有哪些組播組的成員。特定組查詢報文的目標IP則是要查詢的組播組地址。
    查詢報文抓包
     2、報告報文
    該報文由主機發出。可對組播路由器發出的查詢報文進行回應,同時主機在主動加入特定組的時候,也會主動傳送該報文報告。報告報文的目標IP和IGMP報頭內的組播IP均為主機加入的組播組地址(注意!這裡雖說是回應路由器的,但是資料包的目標IP不是路由器)。
報告報文抓包
    3、離開報文(僅限IGMPv2和v3)
    該報文由主機發出。當主機離開組播組時傳送此報文,向組播路由器報告離開了特定的組播組。離開報文的目標IP為224.0.0.2(所有組播路由器),IGMP報頭內的組播IP為特定離開組的IP。
離開報文抓包
   (二) igmp版本比較
     三、交換機處理組播的方式
    1、一切沒有開啟或不支援IGMP監聽功能的交換機,組播資料包都以廣播的形式在廣播域內泛洪。
    2、開啟IGMP監聽功能的交換機的每個VLAN會維護一個組播地址表。當收到組播資料包時,如果表中含有該資料包組播IP的條目,則按照表中的組播IP向對應的埠進行轉發,否則以廣播的形式在廣播域內泛洪。
      四、交換機的組播地址表樣式

 五、交換機組播地址表的學習和維護(IGMP監聽過程)
    (假設當前只有一個VLAN)
    1、當組播路由器發出IGMP通用查詢報文然後收到主機回應的IGMP報告報文時,交換機會把收到回應的埠和對應的組播地址學習到組播地址表中(其實只要是IGMP報告報文,都會學習,不管有沒有事先查詢)。如下圖所示:
    2、當主機發出IGMP離開報文時,組播路由器會傳送IGMP特定組查詢報文。如果該埠在一定時間內得不到回應,則刪除條目對應的埠;如果得到回應則不刪除。當開啟埠快速離開功能時,一旦該埠收到離開報文,交換機將立即刪除條目對應的埠。
    3、和MAC地址表一樣,自動學習到的條目都有老化時間。若在一定時間內沒有收到對應組播地址某個埠上的IGMP報告報文,條目上相應的埠會自動刪除。當所有埠都被刪除時,條目則自動刪除。
    4、組播地址表的學習和維護全靠IGMP監聽(不考慮CGMP)。
    5、如果網路中沒有組播路由器,也就沒有IGMP查詢報文,組播地址表的建立將會變得十分困難(思科2960可以配置定期傳送IGMP查詢報文)。
    6、除非把交換機配置成IGMP查詢器,否則交換機不會傳送任何IGMP報文,只會靜靜地監聽。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70012489/viewspace-2933456/,如需轉載,請註明出處,否則將追究法律責任。

相關文章