1. 程式人生 > >計算機網路(六)---IP多播

計算機網路(六)---IP多播

IP多播是需要在因特網上增加更多的智慧才能提供的一種服務。

與單播相比,在一對多的通訊中,多播可大大節約網路資源。當採用多播方式時,視訊伺服器只需要把視訊分組當作多播資料報來發送,並且只需傳送一次。當分組到達目的區域網時,由於區域網具有硬體多播的功能,因此不需要複製分組,在區域網上的多播組成員都能收到這個視訊分組

在因特網範圍的多播要靠路由器來實現,這些路由器必須增加一些能夠識別多播資料報的軟體。能夠執行多播協議的路由器稱為多播路由器(multicast router)。

為了適應互動式音訊和視訊資訊的多播,從1992年起,在因特網上開始試驗虛擬的多播主幹網MBONE(Multicast Backbone On the InterNEt)。MBONE可把分組傳播給地點分散但屬於一個組的許多個主機。現在多播主幹網已經有了相當大的規模。

在因特網上進行多播就叫做IP多播。IP多播所傳送的分組需要使用多播IP地址。

問題:在因特網中每一個主機由一個IP地址。如果某個主機現在想接收某個特定多播組的分組,怎樣才能使這個多播資料報傳送到這個主機?

解答:這個多播資料報的目的地址一定不能寫入這個主機的IP地址。因為不可能在其首部寫入成千上萬各主機的IP地址。在多播資料報的目的地址寫入的是多播組的識別符號,然後設法讓加入到這個多播組的主機的IP地址與多播組的識別符號關聯起來。

多播組的識別符號就是IP地址中的D類地址。我們用每一個D類地址標誌一個多播組。這樣D類地址共可標誌2^28個多播組,即同一時間可以允許有超過2.6億的多播組在因特網上執行。多播資料報是“盡最大努力交付”,不保證一定能夠交付多播組內的所有成員。

多播資料報和一般的IP資料報的區別是它使用D類IP地址作為目的地址,並且首部中的協議欄位值是2,表明使用網際組管理協議IGMP。

多播地址只能用於目的地址,而不能用於源地址。此外,對多播資料報不產生ICMP差錯報文。因此在PING命令後面鍵入多播地址,將永遠不會收到響應。

D類地址中有一些已經被IANA指派為永久組地址

224.0.0.0    基地址(保留)

224.0.0.1    在本子網上的所有參加多播的主機和路由器

224.0.0.2    在本子網上的所有參加多播的路由器

224.0.0.3    未指派

224.0.0.4    DVMRP路由器

。。。。

224.0.1.0 至 238.255.255.255   全球範圍ie都可使用的多播地址

239.0.0.0 至 239.255.255.255   限制在一個組織的範圍

IP多播可以分為兩種。一種是隻在本區域網上進行硬體多播,另一種則是在因特網的範圍進行多播。

前一種雖然比較簡單,但很重要,因為現在大部分主機都是通過區域網接入到因特網的。在因特網上進行多播的最後階段,還是要把多播資料報在區域網上用硬體多播交付多播組的所有成員。

在區域網上進行硬體多播

因特網號碼指派管理局IANA擁有的乙太網地址塊的高24位為00-00-5E,因此TCP/IP協議使用的乙太網多播地址塊的範圍是從00-00-5E-00-00-00到00-00-5E-FF-FF-FF。

乙太網硬體地址欄位中的第一個位元組的最低位為1時即為多播地址,這種多播地址數佔IANA分配到的地址數的一半。

因此IANA擁有的乙太網多播地址範圍是從00-00-5E-00-00-00到01-00-5E-7F-FF-FF(為什麼是7F,由於後24位只有23可分配,可看下圖)

D類IP地址可供分配的有28位,在這28位中的前5位不能用來構成乙太網硬體地址。由於多播IP地址與乙太網硬體地址的對映關係不是唯一的,因此收到多播資料報的主機,還要在IP層利用軟體進行過濾,把不是本主機要接受的資料報丟棄。

IP多播需要兩種協議:網際組管理協議IGMP和多播路由選擇協議

圖中標有IP地址的四個主機都參加了一個多播組。多播資料報應當傳送到路由器R1、R2、R3,而不應當傳送到路由器R4,因為與R4連線的區域網上沒有這個多播組的成員。

問題:這些路由器如何知道多播組的成員資訊?

解決方法:利用網際組管理協議IGMP(Internet Group Management Protocol)。

IGMP並非在因特網範圍內對所有多播組成員進行管理的協議。

IGMP協議是讓連線在本區域網上的多播路由器知道本區域網上是否有主機(嚴格講,是主機上的某個程序)參加或退出了某個多播組。

顯然(IGMP不在因特網範圍的執行),僅有IGMP協議是不能完成多播任務的。連線在區域網上的多播路由器還必須和因特網上的其他多播路由器協同工作,以便把多播資料報用最小代價傳送給所有的組成員。這就需要使用多播路由選擇協議

多播轉發必須動態地適應多播組成員的變化(這時網路拓撲並未發生變化)。請注意,單播路由選擇通常是在網路拓撲發生變化時才需要更新路由。

多播路由器在轉發多播資料報時,不能僅僅根據多播資料報中的目的地址,而是還要考慮這個多播資料報從什麼地方來和要到什麼地方去。

多播資料報可以由沒有加入多播組的主機發出,也可以通過沒有組成員接入的網路。

網際組管理協議IGMP

從概念上講,IGMP的工作可分為兩個階段。

第一階段:當某個主機加入新的多播組時,該主機應向多播組的多播地址傳送一個IGMP報文,宣告自己要成為該組的成員。本地的多播路由器收到IGMP報文後,還要利用多播路由選擇協議把這種組成員關係轉發給因特網上的其他多播路由器。

第二階段:組成員關係是動態的。本地多播路由器要週期性地探詢本地區域網上的主機,以便知道這些主機是否還繼續是組的成員。只要有一個主機對某個組響應,那麼多播路由器就認為這個組是活躍的。但一個組在經過幾次的探詢後仍然沒有一個主機響應,多播路由器就認為本網路上的主機已經都離開了這個組,因此也就不再把這個組的成員關係轉發給其他的多播路由器。

為了避免了多播控制資訊給網路增加大量的開銷,IGMP採用的一些具體措施如下:

1)在主機和多播路由器之間的所有通訊都是使用IP多播。只要有可能,攜帶IGMP報文的資料報都用硬體多播來傳送。因此在支援硬體多播的網路上,沒有參加IP多播的主機不會收到IGMP報文。

2)多播路由器在探詢組成員關係時,只需要對所有的組傳送一個請求資訊的詢問報文,而不需要對每一個組傳送一個詢問報文(雖然也允許對一個特定組傳送詢問報文)。預設的詢問速率是每125秒傳送一次(通訊量並不太大)。

3)當同一個網路上連線有幾個多播路由器時,它們能夠迅速和有效地選擇其中的一個來探詢主機的成員關係。因此,網路上多個多播路由器並不會引起IGMP通訊量的增大。

4)在IGMP的詢問報文中有一個數值N,它指明一個最長響應時間(預設值為10秒)。當收到詢問時,主機在0到N之間隨機選擇傳送響應所需要經過的時延。因此,若一個主機同時參加了幾個多播組,則主機對每一個多播組選擇不同的隨機數。對應於最小時延的響應最先發送。

5)同一個組內的每一個主機都要監聽響應,只要有本組的其他主機先發送了響應,自己就可以不再發送響應了。這樣就抵制了不必要的通訊量。

多播路由選擇協議

多播路由選擇實際上就是要找出以源主機為根節點的多播轉發樹。同一個多播組,對不同的源點也會有不同的多播轉發樹。

已有了多種實用的多播路由選擇協議,它們在轉發多播資料報時使用了以下的三種方法:

1)洪泛與剪除。這種方法適合於較小的多播組,而所有的組成員接入的區域網也是相鄰接的。為了避免兜圈子,採用了叫做反向路徑廣播RPB(Reverse Path Broadcasting)的策略。RPB的要點是:每一個路由器在收到一個多播資料報時,先檢查資料報是否從源點經最短路徑傳送來的。進行這種檢查很容易,只要從本路由器尋找到源點的最短路徑上(之所以叫做反向路徑,因為在計算最短路徑時是把源點當作終點)的第一個路由器是否就是剛才把多播資料報送來的路由器。若是,就向所有其他方向轉發剛才收到的多播資料報(但進入的方向除外),否則就丟棄而不轉發。如果本路由器有好幾個相鄰路由器都處在到源點的最短路徑上(也就是說,存在幾條同樣長度的最短路徑),那麼只能選擇一條最短路徑,選擇的準則就是看這幾條最短路徑中的相鄰路由器誰的IP地址最小。如果在多播轉發樹上的某個路由器發現它的下游樹枝(即葉節點方向)已沒有該多播組的成員,就應把它和下游的樹枝一起剪除。

2)隧道技術(tunneling)。隧道技術適用於多播組的位置在地理上很分散的情況。網A和網B都支援多播,但路由器R1和R2之間的網路並不支援多播,因而R1和R2不能按多播地址轉發資料報。為此,路由器R1就對多播資料報進行再次封裝,即再加上普通資料報首部,使之成為向單一目的站傳送的單播資料報,然後通過“隧道”從R1傳送到R2。單播資料報到達路由器R2後,再由路由器R2剝去其首部,使它又恢復成原來的多播資料報,繼續向多個目的站轉發。

 

3)基於核心的發現技術。這種方法對於多播組的大小在較大範圍內變化時都適合。這種方法是對每一個多播組G指定一個核心路由器,給出它的IP單播地址。核心路由器按照前面講過的方法創建出對應於多播組G的轉發樹。如果有一個路由器R1向這個核心路由器傳送資料報,那麼它在途中經過的每一個路由器都要檢查其內容。當資料報到達參加了多播組G的路由器R2時,R2就處理這個資料報。如果R1發出的是一個多播資料報,其目的地址是G的組地址,R2就向多播組G的成員轉發這個多播資料報。如果R1發出的資料報是一個請求加入多播組G的資料報,R2就把這個資訊加到它的路由中,並用隧道技術向R1轉發每一個多播資料報的一個副本。這樣,參加到多播組G的路由器就從核心向外增多了,擴大了多播轉發樹的覆蓋範圍。

目前還沒有在整個因特網範圍使用的多播路由選擇協議。下面是一些建議使用的多播路由選擇協議。

距離向量多播路由選擇協議DVMRP(Distance Vector Multicast Routing Protocol)

基於核心的轉發樹CBT(Core Based Tree)。這個協議使用核心路由器作為轉發樹的根節點。一個大的自治系統AS可劃分為幾個區域,每一個區域選擇一個核心路由器(也叫做中心路由器center router,或匯聚點路由器rendezvous router).

開放最短通路優先的多播擴充套件MOSPF(Multicast extensions to OSPF)。這個協議是單播路由選擇協議OSPF的擴充,使用於一個機構內。MOSPF使用多播鏈路狀態路由選擇創建出基於源點的多播轉發樹。

協議無關多播-稀疏方式PIM-SM(Protocol Independent Multicast-Sparse Mode)。這個協議使用和CBT同樣的方法構成多播轉發樹。採用“協議無關”這個名詞是強調:雖然在建立多播轉發樹時是使用單播資料報來和遠端路由器聯絡,但這並不要求使用特定的單播路由選擇協議。這個協議適用於組成員的分佈非常分散的情況。

協議無關多播-密集方式PIM-DM(Protocol Independent Multicast-Dense Mode)。這個協議適用於組成員的分佈非常集中的情況,例如組成員都在一個機構之內。PIM-DM不使用核心路由器,而是使用洪泛方式轉發資料報。

虛擬專用網VPN和網路地址轉換NAT

在許多情況下,很多主機主要還是和本機構內的其他主機進行通訊。假定在一個機構內部的計算機通訊也是採用TCP/IP協議,那麼從原則上講,對於這些僅在機構內部使用的計算機就可以由本機構自行分配其IP地址。這就是說,讓這些計算機使用僅在本機構有效的IP地址(這種地址稱為本地地址),而不需要向因特網的管理機構申請全球唯一的IP地址(這種地址稱為全球地址)。

問題:有時機構內部的某個主機需要和因特網連線,那麼這種僅在內部使用的本地地址就有可能和因特網中某個IP地址重合,這就出現地址的二義性問題。

解決方案:指明一些專用地址(private address)。這些地址只能用於一個機構的內部通訊,而不能用於和因特網上的主機通訊。在因特網中的所有路由器,對目的地址是專用地址的資料報一律不進行轉發。採用這樣的專用IP地址的互連網路稱為專用網際網路或本地網際網路或專用網。專用IP地址也叫做可重用地址(reusable address)。

2010年1月,RFC5735全面地給出了所有特殊用途的IPv4地址,但三個專用地址塊的指派並無變化。

1)10.0.0.0到10.255.255.255(或記為10.0.0.0/8,它又稱為24位塊)

2)172.16.0.0到172.31.255.255(或記為172.16.0.0/12,它又稱為20位塊)

3)192.168.0.0到192.168.255.255(或記為192.168.0.0/16,它又稱為16位塊)

一個很大的機構有許多部門分佈在相距很遠的一些地點,而在每一個地點都有自己的專用網。假定這些分佈在不同地點的專用網需要經常進行通訊。

有兩種方法:

1.租用電信公司的通訊線路為本機構專用。簡單方便,但線路的租金太高。

2.利用公用的因特網作為本機構各專用網之間的通訊載體,這樣的專用網又稱為虛擬專用網VPN(Virtual Private Network)。

之所以稱為“專用網”是因為這種網路是為本機構的主機用於機構內部的通訊,而不是用於和網路外非本機構的主機通訊。如果專用網不同網點之間的通訊必須經過公用的因特網,但又有保密的要求,那麼所有通過因特網傳送的資料都必須加密。一個機構要構建自己的VPN就必須為它的每一個場所購買專門的硬體和軟體,並進行配置,使每一個場所的VPN系統都知道其他場所的地址。

使用IP隧道技術實現虛擬專用網。


場所A或B內部的通訊量都不經過因特網。但如果A中的主機要和B中的主機通訊,就必須經過路由器R1和R2。假設傳送的IP資料報的源地址是10.1.0.1,而目的地址是10.2.0.3。這個資料報先作為本機構的內部資料報傳送到與因特網連線的路由器R1.路由器R1收到內部資料報後,發現其目的網路必須通過因特網才能到達,就把整個的內部資料報進行加密(保證了內部資料報的安全),然後重新加上資料報的首部,封裝成外部資料報發給路由器R2。

由場所A和場所B的內部網路構成的虛擬專用網VPN又稱為內聯網(intranet或intranet VPN,即內聯網VPN)。有時一個機構的VPN需要有某些外部機構(通常就是合作伙伴)參加進來。這樣的VPN就稱為外聯網(extranet或extranet VPN,即外聯網VPN)。

內聯網和外聯網都採用了因特網技術,即都是基於TCP/IP協議的。

遠端接入VPN(remote access VPN)。在外地工作的員工通過撥號接入因特網,而駐留在員工PC中的VPN軟體可以在員工的PC和公司的主機之間建立VPN隧道,因而外地員工與公司通訊的內容是保密的,員工們感到好像就是使用公司內部的本地網路。

網路地址轉換NAT

問題:專用網內部的一些主機本來已經分配到了本地IP地址(即僅在本專用網內使用的專用地址),但現在又想和因特網上的主機通訊(並不需要加密),那麼該怎麼辦?

解決方案:網路地址轉換NAT(Network Address Translation)

這種方法需要在專用網連線到因特網的路由器上安裝NAT軟體。該路由器叫做NAT路由器,它至少有一個有效的外部全球IP地址。

當NAT路由器具有n個全球IP地址時,專用網最多可以同時有n個主機接入到因特網。通過NAT路由器的通訊必須由專用網內的主機發起。當因特網上的主機要通訊,但NAT路由器不知道應當把目的IP地址轉換成專用網內的哪一個本地IP地址。即專用網內部的主機不能充當伺服器用(對於因特網上的主機來說)。

現在常用的NAT轉發表把運輸層的埠號也利用上了,使多個擁有本地地址的主機,共用一個NAT路由器上的全球IP地址,因而可以同時和因特網上的不同主機進行通訊。

使用埠號的NAT也叫網路地址與埠號轉換NAPT(Network Address and Port)