產生背景 通常,在傳統的網路通訊中,有兩種方式,一種是源主機和目標主機兩台主機之間進行的“一對一”的通訊方式,即單播,第二種是一台源主機與網路中所有其他主機之間進行的通訊,即廣播。那么,如果需要將信息從源主機傳送到網路中的多個目標主機,要么採用廣播方式,這樣網路中所有主機都會收到信息,要么,採用單播方式,由源主機分別向各個不同目標主機傳送信息。可以看出來,在廣播方式下,信息會傳送到不需要該信息的主機從而浪費頻寬資源,甚至引起廣播風暴:而單播方式下,會因為數據包的多次重複而浪費頻寬資源,同時,源主機的負荷會因為多次的數據複製而加大,所以,單播與廣播對於多點傳送問題有缺陷。
組播 在此情況下,組播技術就套用而生了。
組播又稱多目標廣播、多播。網路中使用的一種傳輸方式,它允許把 所發訊息傳送給所有可能目的地中的一個經過選擇的子集,即向明確指出的多種地址輸送信息。是一種在一個傳送者和多個接收者之間進行通信的方法。與任播(anycast)和單播(unicast)一起,組播也是一種IPv6的包傳送方式。組播在CDPD技術中的無線數據網路中也可以使用。
1985年9月,Steve與其導師提出了支持IP組播的擴展模型,明確了Internet組管理協 (Internet Group Management Protocol, IGMP) 概念。12月,Steve將此概念提交給了IETF, 而後經過兩次更新該組播模型,越不同網段的轉發沒有定義,此方面的工作已經被獨立為組播路由技術。1989年8月,RFC1112作為IGMPv1的規範被廣泛接受,這是組播發展歷程中的一個重要里程碑。
傳統方式 單播 在傳送者和每一接收者之間實現
點對點 網路連線。如果一台傳送者同時給多個的接收者傳輸相同的數據,也必須相應的複製多份的相同
數據包 。如果有大量
主機 希望獲得
數據包 的同一份拷貝時,將導致傳送者負擔沉重、延遲長、
網路擁塞 ;為保證一定的服務質量需增加
硬體 和
頻寬 。
廣播 廣播指在IP
子網 內
廣播數據包 ,所有在
子網 內部的
主機 都將收到這些數據包。廣播意味著網路向子網每一個
主機 都投遞一份數據包,不論這些主機是否樂於接收該數據包。所以廣播的使用範圍非常小,只在本地
子網 內有效,通過
路由器 和
網路設備 控制廣播傳輸。
組播在傳送者和每一接收者之間實現點對多點網路連線。如果一台傳送者同時給多個接收者傳輸相同的數據,也只需複製一份相同的數據包。它提高了數據傳送效率,減少了骨幹網路出現擁塞的可能性。
組播 解決了
單播 和廣播方式效率低的問題。當網路中的某些用戶需求特定信息時,
組播 源(即組播信息傳送者)僅傳送一次信息,組播
路由器 藉助組播
路由協定 為組播
數據包 建立樹型路由,被傳遞的信息在儘可能遠的分叉路口才開始複製和分發。
IP組播 公共網際網路中的一些團體經常會用到
IP 組播 (
Mbone 就是一個例子),此外IP組播還被用於
Internet2 等
私有IP 網路中的一些特殊套用。鏈路本地
組播 是指將IP組播包發往處於同一物理的或虛擬的
數據鏈路層 的若干
主機 組。由於這種
組播 不需要複雜的
路由 ,因此其套用要廣泛得多。在IPv6中,它被用於
地址解析 ,而在零配置網路中,它取代了低效的廣播協定,完成服務發現、名字解析和地址衝突解析的功能。
IP
組播 會議的第一次大規模演示是在1992年3月的第23屆IETF大會上,當時它被用於向全世界的研究人員和感興趣的觀察員們廣播一些會議。之後,IETF的一些會議就被有選擇地繼續在MBONE和一些私有
組播 網路上
多播 。
組播 安全性是一個重要的問題。標準的、實用的
通信安全 解決方案一般採用的是
對稱加密 。但是將其套用於IP
組播 流量可能會使任何一個接收方都擁有冒充傳送方的能力。這顯然是令人無法接受的。IETF的MSEC
工作組 正在開發用以解決這一問題的
安全協定 ,這些協定大多都是在
IPsec 協定集 的體系
框架 內開發的。
IPsec不能被用於
組播 方案,這是因為IPsec安全關聯是被綁定到兩個而非多個
主機 的。IETF提出了一個新的協定——TESLA,就
組播 安全性而言,這個協定是靈活且令人信服的。
體系結構 IGMP建立並且維護
路由器 直聯網段的組成員關係信息。域內組播
路由協定 根據IGMP維護的這些組播組成員關係信息,運用一定的組播
路由算法 構造組播分發樹進行組播
數據包 轉發。域間組播
路由協定 在各自治域間發布具有組播能力的路由信息以及組播源信息,以使組播數據在域間進行轉發。
IP位址 組播 IP位址用於標識一個IP組播組。
IANA (internet assigned number authority)把D類地址空間分配給IP
組播 ,其範圍是從224.0.0.0到239.255.255.255。如下圖所示(二進制表示),
IP 組播地址 前四位均為1110八位組⑴ 八位組⑵ 八位組⑶ 八位組⑷1110
XXXX XXXXXXXX XXXXXXXX XXXXXXXX
組播 組可以是永久的也可以是臨時的。
組播 組地址中,有一部分由官方分配的,稱為永久
組播 組。永久
組播 組保持不變的是它的ip地址,組中的成員構成可以發生變化。永久
組播 組中成員的數量都可以是任意的,甚至可以為零。那些沒有保留下來供永久
組播 組使用的ip
組播地址 ,可以被臨時
組播 組利用。
224.0.0.0~224.0.0.255為預留的
組播地址 (永久組地址),地址224.0.0.0保留不做分配,其它地址供
路由協定 使用。
224.0.1.0~238.255.255.255為用戶可用的
組播地址 (臨時組地址),全網範圍內有效。
239.0.0.0~239.255.255.255為本地管理
組播地址 ,僅在特定的本地範圍內有效。常用的預留組播地址列表如下:
224.0.0.0 基準地址(保留)
224.0.0.3 不分配
224.0.0.5 ospf(Open Shortest Path First,
開放最短路徑優先 )
路由 器
224.0.0.6 ospf dr(Designated Router,
指定路由器 )
224.0.0.7 st (Shared Tree,共享樹)
路由器 224.0.0.10 Eigrp(Enhanced Interior Gateway Routing Protocol,增強
網關 內部路由線路協定)
路由器 224.0.0.11 活動代理
224.0.0.13 所有pim (Protocol Independent Multicast,協定無關
組播 )
路由器 224.0.0.14 rsvp (Resource Reservation Protocol,
資源預留協定 )
封裝 224.0.0.15 所有cbt 路由器
224.0.0.16 指定sbm(Subnetwork Bandwidth Management,子網
頻寬 管理)
224.0.0.17 所有sbms
224.0.0.18 vrrp(Virtual Router Redundancy Protocol,
虛擬路由器冗餘協定 )
239.255.255.255 SSDP協定使用
組播IP位址和組播MAC地址的對應關係 組播MAC地址
組播 MAC地址的高24bit為0x01005e,第25bit為0,即高25bit為固定值。MAC地址的低23bit為
組播 IP位址的低23bit。由於 IP
組播地址 的前4bit 是1110,代表組播標識,而後28bit 中只有23bit 被映射到MAC 地址,這樣IP 地址中就有5bit 信息丟失,導致的結果是出現了32 個IP 組播地址映射到同一MAC 地址上。
互動式 IP
組播 的最大的用處就是用來做Internet上的音頻和視頻的傳輸,比如向成百上千的使用者傳送音頻和視頻
數據流 。可是傳統的IP
組播 的有一個最大的缺點就是這些所有的使用者都是被動的接受者。換句話說,IP
組播 並沒有讓這些使用者進行互動式主動參與的內置機制。
利用H.323國際標準中對會議成員的管理技術,SAP(Session Announcement Protocol),SDP(Session Description Protocol),RTCP(Real-time Transport Control Protocol)等協定,就可以使傳統的IP
組播技術 具有互動功能。互動式IP
組播技術 套用範圍很廣,特別是Internet上多媒體的傳輸業務。比如視頻會議,遠程教育,Internet上的視頻點播(VoD)等。
組播套用 在
組播 方式中,信息的傳送者稱為“組播源”,信息接收者稱為該信息的“組播組”,支持組播
信息傳輸 的所有
路由器 稱為“組播路由器”。加入同一
組播 組的接收者成員可以廣泛分布在網路中的任何地方,即“組播組”沒有地域限制。需要注意的是,
組播 源不一定屬於組播組,它向組播組傳送數據,自己不一定是接收者。多個
組播 源可以同時向一個組播組傳送
報文 。
組播數據傳輸過程 假設只有 Host B、Host D 和Host E 需要信息,採用
組播 方式時,可以讓這些
主機 加入同一個組播組(Multicast group),組播源向該組播組只需傳送一份信息,並由網路中各
路由器 根據該組播組中各成員的分布情況對該信息進行複製和轉發,最後該信息會準確地傳送給Host B、Host D 和Host E。
相關協定 組播協定分為主機與路由器之間的組成員關係協定和路由器與路由器之間的組播路由協定。
IGMP IGMP協定運行於
主機 和與主機直接相連的
組播 路由器 之間,主機通過此協定告訴本地路由器希望加入並接受某個特定
組播 組的信息,同時路由器通過此協定周期性地查詢
區域網路 內某個已知組的成員是否處於活動狀態(即該
網段 是否仍有屬於某個
組播 組的成員),實現所連網路組成員關係的收集與維護。
IGMP有三個版本,IGMPv1由RFC1112定義,目前通用的是IGMPv2,由RFC2236定義。IGMPv3目前仍然是一個草案。IGMPv1中定義了基本的組成員查詢和報告過程,IGMPv2在此基礎上添加了組成員快速離開的機制,IGMPv3中增加的主要功能是成員可以指定接收或指定不接收某些
組播 源的
報文 。這裡著重介紹IGMPv2協定的功能。
IGMPv2通過查詢器選舉機制為所連網段選舉唯一的查詢器。查詢器周期性的傳送普遍組查詢訊息進行成員關係查詢;
主機 傳送報告訊息來應答查詢。當要加入
組播 組時,
主機 不必等待查詢訊息,主動傳送報告訊息。當要離開組播組時,
主機 傳送離開組訊息;收到離開組訊息後,查詢器傳送特定組查詢訊息來確定是否所有組成員都已離開。
通過上述IGMP機制,在
組播 路由器 里建立起一張表,其中包含
路由器 的各個連線埠以及在連線埠所對應的子網上都有哪些組的成員。當
路由器 接收到某個組G的數據
報文 後,只向那些有G的成員的連線埠上轉發數據報文。至於數據
報文 在路由器之間如何轉發則由
路由協定 決定,IGMP協定並不負責。
IGMP Snooping IGMP Snooping的實現機理是:
交換機 通過偵聽
主機 發向
路由器 的IGMP成員報告訊息的方式,形成組成員和交換機接口的對應關係;交換機根據該對應關係將收到
組播 數據包 只轉給具有組成員的接口。
IGMP Proxy與IGMP Snooping實現功能相同但機理相異:
IGMP snooping 只是通過偵聽IGMP的訊息來獲取有關信息,而IGMP Proxy則攔截了終端用戶的IGMP請求並進行相關處理後,再將它轉發給上層
路由器 。
CGMP CGMP(Cisco Group Management Protocol)是Cisco基於客戶機/伺服器模型開發的私有協定,在CGMP的支持下,
組播 路由器 能夠根據接收到的IGMP
數據包 通知
交換機 哪些
主機 何時加入和脫離組播組,交換機利用由這些信息所構建的
轉發表 來確定將組播數據包向哪些接口轉發。GMRP是主機到
乙太網交換機 的標準協定,它使
組播 用戶可以在
第二層交換機 上對組播成員進行註冊。
PIM-SM 眾多的
組播 路由協定中,目前套用最多的協定是 PIM-SM稀疏模式協定無關組播。
在PIM-SM域中,運行PIM-SM協定的
路由器 周期性的傳送Hello訊息,用以發現鄰接的PIM路由器,並且負責在多路訪問網路中進行
指定路由器 (DR)的選舉。這裡,DR負責為其直連組成員朝著
組播 分發樹根
節點 的方向傳送"加入/剪枝"訊息,或是將直連組播源的數據發向組播分發樹。
組播骨幹網 組播 的規範是在1989年出版的,但是它的使用受到了限制。Internet上的
路由器 目前並不是都具有
組播 的能力。在這樣一種情況下,研究者們為了在現有情況下開發和測試
組播 協定的套用,建立了
組播 骨幹網(Multicast Backbone,Mbone)。Mbone支持
組播 分組的
路由選擇 而不打擾其它的
網際網路 業務流 。
Mbone是一種跨越幾個大陸的,由志願者合作完成的實驗性的網路。它是一個相互連線的
子網 和
路由器 的集合,這些子網和路由器支持IP組播
業務流 的傳送。作為
網際網路 上的虛擬網路,
Mbone 通過隧道(Tunneling)來旁路網際網路上無
組播 能力的路由器。
隧道把
組播 數據包 封裝在IP包(即
單播 數據包)中來通過哪些不支持
組播 路由的網路。如圖5所示,MR3和MR4是支持IGMP協定的有
組播 能力的
路由器 ,他們把組播
數據包 封裝在
單播 數據包中來傳送,同時它們還從收到的
單播 數據包中取出組播數據包。R1和R2是沒有組播能力的
路由器 ,它們像傳送其它普通單播
數據包 那樣來傳送封裝有組播數據包的單播數據包。
組播套用 組播 套用大致可以分為三類: 點對多點套用,多點對多點套用和多點對點套用。
點對多點 點對多點套用是指一個傳送者,多個接收者的套用形式,這是最常見的
組播 套用形式。典型的套用包括:
媒體廣播:如演講、演示、會議等按日程進行的事件。其傳統媒體分發手段通常採用電視和廣播。這一類套用通常需要一個或多個恆定速率的
數據流 ,當採用多個數據流(如語音和視頻)時,往往它們之間需要同步,並且相互之間有不同的優先權。它們往往要求較高的
頻寬 、較小的延時抖動,但是對絕對延時的要求不是很高。
媒體推送:如新聞標題、天氣變化、運動比分等一些非商業關鍵性的動態變化的信息。它們要求的
頻寬 較低、對延時也沒有什麼要求。
信息快取: 如網站信息、執行代碼和其他基於檔案的分散式複製或快取更新。它們對
頻寬 的要求一般,對延時的要求也一般。
事件通知:如網路時間、
組播 會話日程、隨機數字、
密鑰 、配置更新、有效範圍的網路警報或其他有用信息。它們對
頻寬 的需求有所不同,但是一般都比較低,對延時的要求也一般。
狀態監視:如股票價格、感測設備、安全系統、生產信息或其他實時信息。這類
頻寬 要求根據採樣周期和精度有所不同,可能會有恆定速率
頻寬 或突髮帶寬要求,通常對頻寬和延時的要求一般。
多點對多點 多點對多點套用是指多個傳送者和多個接收者的套用形式。通常,每個接收者可以接收多個傳送者傳送的數據,同時,每個傳送者可以把數據傳送給多個接收者。
典型套用包括:
多點會議:通常音/視頻和白板套用構成多點會議套用。在多點會議中,不同的
數據流 擁有不同的優先權。傳統的多點會議採用專門的多點控制單元來協調和分配它們,採用
組播 可以直接由任何一個傳送者向所有接收者傳送,多點控制單元用來控制當前發言權。這類套用對
頻寬 和延時要求都比較高。
資源同步:如日程、目錄、信息等分布資料庫的同步。它們對
頻寬 和延時的要求一般。
並行處理 : 如分散式並行處理。它對
頻寬 和延時的要求都比較高。
遠程學習:這實際上是媒體廣播套用加上對上行
數據流 (允許學生向老師提問)的支持。它對頻寬和延時的要求一般。
討論組:類似於基於
文本 的多點會議,還可以提供一些模擬的表達。
分散式互動模擬(
DIS ):它對
頻寬 和時延的要求較高。
多人遊戲 :多人遊戲是一種帶討論組能力的簡單分散式互動模擬。它對頻寬和時延的要求都比較高。
Jam Session:這是一種音頻編碼共享套用。它對頻寬和時延的要求都比較高。
多點對點
多點對點套用是指多個傳送者,一個接收者的套用形式。通常是雙向請求回響套用,任何一端(多點或點)都有可能發起請求。典型套用包括:
資源查找:如服務定位,它要求的
頻寬 較低,對時延的要求一般。
數據收集 :它是點對多點套用中狀態監視套用的反向過程。它可能由多個感測設備把數據發回給一個
數據收集 主機 。頻寬要求根據採樣周期和精度有所不同,可能會有恆定速率頻寬或突髮帶寬要求,通常這類套用對頻寬和延時的要求一般。
網路竟拍:拍賣者拍賣產品,而多個竟拍者把標價發回給拍賣者。
信息詢問: 詢問者傳送一個詢問,所有被詢問者返回應答。通常這對
頻寬 的要求較低,對延時不太敏感。
Juke Box:如支持準點播(Near-On-Demand)的音視頻倒放。通常接收者採用“帶外的”協定機制(如HTTP、RTSP、SMTP,也可以採用
組播 方式)傳送倒放請求給一個調度佇列。它對頻寬的要求較高,對延時的要求一般。
技術問題