1. 程式人生 > >IP 多播

IP 多播

紫色代表一級目錄
粉紅代表二級目錄
藍色代表三級目錄
紅色代表關鍵字
橙色代表說明

IP 多播
  IP 多播的基本概念
    IP 多播 (multicast,以前曾譯為組播) 已成為網際網路的一個熱門課題。
    目的:更好第支援一對多通訊。
    一對多通訊:一個源點發送到許多個終點。
    多播可大大節約網路資源(只是將原始檔進行複製,而不是發多份原始檔)
    在網際網路上進行多播就叫做 IP 多播。
    網際網路範圍的多播要靠路由器來實現。
    能夠執行多播協議的路由器稱為多播路由器(multicast router)。當然它也可以轉發普通的單播IP資料報。
    從 1992 年起,在網際網路上開始試驗虛擬的多播主幹網 MBONE

(Multicast Backbone On the InterNEt)。 現在多播主幹網已經有了相當大的規模。
    多播 IP 地址
      IP 多播所傳送的分組需要使用多播 IP 地址
      在多播資料報的目的地址寫入的是多播組的識別符號
      多播組的識別符號就是 IP 地址中的 D 類地址(多播地址)。
      每一個 D 類地址標誌一個多播組。
      多播地址只能用於目的地址,不能用於源地址。(試聯想用wireshark分析arp報文時
    多播資料報
      多播資料報和一般的 IP 資料報的區別就是它使用 D 類 IP 地址作為目的地址,並且首部中的協議欄位值是 2
,表明使用網際組管理協議 IGMP
      多播資料報也是“盡最大努力交付”,不保證一定能夠交付多播組內的所有成員。
      對多播資料報不產生 ICMP 差錯報文。因此,若在 PING 命令後面鍵入多播地址,將永遠不會收到響應。
  網際組管理協議 IGMP 和多播路由選擇協議
    IP 多播需要兩種協議
      為了使路由器知道多播組成員的資訊,需要利用網際組管理協議 IGMP (Internet Group Management Protocol)。
      連線在區域網上的多播路由器還必須和網際網路上的其他多播路由器協同工作,以便把多播資料報用最小代價傳送給所有的組成員。這就需要使用多播路由選擇協議
。(多播路由選擇協議比單播路由選擇協議複雜得多。
      IGMP 協議是讓連線在本地區域網上的多播路由器知道本區域網上是否有主機(嚴格講,是主機上的某個程序)參加或退出了某個多播組。
    網際組管理協議 IGMP
      IGMP 是整個網際協議 IP 的一個組成部分
      和 ICMP 相似,IGMP 使用 IP 資料報傳遞其報文(即 IGMP 報文加上 IP 首部構成 IP 資料報),但它也向 IP 提供服務。
      因此,我們不把 IGMP 看成是一個單獨的協議,而是屬於整個網際協議 IP 的一個組成部分。
    IGMP 工作可分為兩個階段
      第一階段:加入多播組。
        當某個主機加入新的多播組時,該主機應向多播組的多播地址傳送 IGMP 報文,宣告自己要成為該組的成員。
        本地的多播路由器收到 IGMP 報文後,將組成員關係轉發給網際網路上的其他多播路由器。
      第二階段:探詢組成員變化情況。
        因為組成員關係是動態的,因此本地多播路由器要週期性地探詢本地區域網上的主機,以便知道這些主機是否還繼續是組的成員。
        只要對某個組有一個主機響應,那麼多播路由器就認為這個組是活躍的。
        但一個組在經過幾次的探詢後仍然沒有一個主機響應,則不再將該組的成員關係轉發給其他的多播路由器。
    IGMP 採用的一些具體措施
      在主機和多播路由器之間的所有通訊都是使用 IP 多播。
      多播路由器在探詢組成員關係時,只需要對所有的組傳送一個請求資訊的詢問報文,而不需要對每一個組傳送一個詢問報文。預設的詢問速率是每 125 秒傳送一次。
      當同一個網路上連線有幾個多播路由器時,它們能夠迅速和有效地選擇其中的一個來探詢主機的成員關係。
      在 IGMP 的詢問報文中有一個數值 N,它指明一個最長響應時間(預設值為 10 秒)。當收到詢問時,主機在 0 到 N 之間隨機選擇傳送響應所需經過的時延。對應於最小時延的響應最先發送。
      同一個組內的每一個主機都要監聽響應,只要有本組的其他主機先發送了響應,自己就可以不再發送響應了。
  多播路由選擇
    多播路由選擇協議尚未標準化
    一個多播組中的成員是動態變化的,隨時會有主機加入或離開這個多播組。
    多播路由選擇實際上就是要找出以源主機為根結點的多播轉發樹。
    在多播轉發樹上的路由器不會收到重複的多播資料報
    對不同的多播組對應於不同的多播轉發樹。
    同一個多播組,對不同的源點也會有不同的多播轉發樹。
    
    多播路由選擇協議在轉發多播資料報時使用三種方法:
      洪泛與剪除
        這種方法適合於較小的多播組,而所有的組成員接入的區域網也是相鄰接的。
        一開始,路由器轉發多播資料報使用洪泛的方法(這就是廣播)。
        為了避免兜圈子,採用了叫做反向路徑廣播 RPB (Reverse Path Broadcasting) 的策略。
        RPB 的要點
          路由器收到多播資料報時,先檢查它是否是從源點經最短路徑傳送來的。
          若是,就向所有其他方向轉發剛才收到的多播資料報(但進入的方向除外),否則就丟棄而不轉發。
          如果存在幾條同樣長度的最短路徑,那麼只能選擇一條最短路徑,選擇的準則就是看這幾條最短路徑中的相鄰路由器誰的 IP 地址最小
          最後就得出了用來轉發多播資料報的多播轉發樹,以後就按這個多播轉發樹轉發多播資料報。避免了多播資料報的兜圈子,同時每一個路由器也不會接收重複的多播資料報。
          如果在多播轉發樹上的某個路由器發現它的下游樹枝(即葉節點方向)已沒有該多播組的成員,就應把它和下游的樹枝一起剪除
          當某個樹枝有新增加的組成員時,可以再接入到多播轉發樹上。
          在這裡插入圖片描述
      隧道技術 (tunneling)
      在這裡插入圖片描述
      基於核心的發現技術
        這種方法對於多播組的大小在較大範圍內變化時都適合。
        這種方法是對每一個多播組 G 指定一個核心(core) 路由器,給出它的 IP 單播地址
        核心路由器按照前面講過的方法創建出對應於多播組 G 的轉發樹
  幾種多播路由選擇協議
    距離向量多播路由選擇協議 DVMRP (Distance Vector Multicast Routing Protocol)
    基於核心的轉發樹 CBT (Core Based Tree)
    開放最短通路優先的多播擴充套件 MOSPF (Multicast Extensions to OSPF)
    協議無關多播-稀疏方式 PIM-SM (Protocol Independent Multicast-Sparse Mode)
    協議無關多播-密集方式 PIM-DM (Protocol Independent Multicast-Dense Mode)