一、引言
MPLS是下一代寬帶互聯(lián)網(wǎng)技術(shù)的發(fā)展方向,它基于標(biāo)簽交換并且能有效利用基于IP交換的設(shè)備。在MPLS的核心,它使用硬件設(shè)備來轉(zhuǎn)發(fā)分組,從而提供速度更快、功能更完善以及擴展性更高的服務(wù)。它消除了在IP和ATM之間過多的復(fù)雜映射而且更好地支持了傳統(tǒng)IP路由技術(shù)難以支持的QoS業(yè)務(wù)。相對IP協(xié)議基于目的地址的路由,MPLS提供基于多種因素的路由,從而更好地滿足流量工程的需要。
隨著互連網(wǎng)和企業(yè)內(nèi)部網(wǎng)的不斷發(fā)展,將分散的網(wǎng)絡(luò)在邏輯上整合成一個大型專用網(wǎng)的業(yè)務(wù)需求越來越強烈,虛擬專用網(wǎng)(VPN)技術(shù)因此應(yīng)運而生。經(jīng)過近20年的發(fā)展,基于第三層的 VPN已日漸成熟。但這種技術(shù)存在明顯的不足,即運營商需要介入客戶的路由計劃,導(dǎo)致客戶不能自行決定網(wǎng)絡(luò)層,從而帶來了維護和應(yīng)用的困難。為了解決上述問題,IETF提出了基于MPLS的二層VPN技術(shù)——虛擬專用局域網(wǎng)業(yè)務(wù)(VPLS),并征集草案準(zhǔn)備將這一技術(shù)標(biāo)準(zhǔn)化。需要指出的是目前VPLS的局域網(wǎng)特指以太網(wǎng),它結(jié)合了MPLS和以太網(wǎng)的雙重優(yōu)點,是透明的、與網(wǎng)絡(luò)層協(xié)議無關(guān)的服務(wù),并支持從64 kbps到1 Gbps的帶寬為客戶提供服務(wù)。VPLS使得用戶可以直接用以太網(wǎng)端口來接入廣域網(wǎng),并且可以自行配置網(wǎng)絡(luò)層,這一切都使得利用VPLS構(gòu)建的虛擬專網(wǎng)安全性更高、維護更方便。
IETF目前一共收到了3份VPLS草案,它們主要的區(qū)別在于信令及組網(wǎng)結(jié)構(gòu)的不同,簡稱為LDP草案、BGP草案和RADIUS草案,其中LDP草案提出最早并且已經(jīng)得到眾多廠商的支持。本文將詳細討論MPLS網(wǎng)絡(luò)中基于LDP信令的 VPLS的核心技術(shù): 虛電線 (Pseudo Wire)、標(biāo)簽分布協(xié)議(LDP)以及VPLS的實現(xiàn)與組網(wǎng)。對基本的MPLS技術(shù)本文不作詳細討論,相關(guān)術(shù)語及原理可參考文獻[1]、[2]。
二、MPLS網(wǎng)絡(luò)中實現(xiàn)VPLS的關(guān)鍵性技術(shù)
1. 虛電線(Pseudo Wire)原理
一條虛電線由一收一發(fā)2條虛電路(Virtual Circuit)構(gòu)成,它的功能是將所有的廣播(broadcast)幀和跨局域網(wǎng)的單播幀、組播(multicast)幀從一個局域網(wǎng)轉(zhuǎn)發(fā)到另一個局域網(wǎng),使得其所連接兩個局域網(wǎng)在數(shù)據(jù)鏈路層上被整合。
以太網(wǎng)虛電線技術(shù)的核心是幀的封裝及其在MPLS網(wǎng)絡(luò)中的傳輸控制。Martini等人編寫的IETF草案[3]對含以太網(wǎng)在內(nèi)的多種局域網(wǎng)幀的封裝給予了建議。一般地,以太網(wǎng)數(shù)據(jù)幀可以歸為2類,即普通以太網(wǎng)幀和帶VLAN標(biāo)簽的以太網(wǎng)幀。對于普通以太網(wǎng)幀,封裝格式如圖1所示。其中隧道標(biāo)簽(tunnel label)用于在MPLS網(wǎng)絡(luò)中標(biāo)識一條確定的標(biāo)簽交換路徑(LSP),該標(biāo)簽實際上是由MPLS網(wǎng)絡(luò)為一個等價轉(zhuǎn)發(fā)類(FEC)自動分配的標(biāo)簽。如果幀需要經(jīng)過幾個MPLS域,隧道標(biāo)簽將多于一個。由于同一隧道上可以承載多條虛電路,而不同虛電路上的流量在到達接收端服務(wù)提供商邊緣(PE)設(shè)備后必須加以區(qū)分,然后轉(zhuǎn)發(fā)給相應(yīng)的用戶。因此與一般的MPLS流量不同,虛電路上的流量需要增加一個標(biāo)簽來標(biāo)識其虛電路ID。隧道標(biāo)簽與虛電路標(biāo)簽均在發(fā)送端PE處被封裝,但隧道標(biāo)簽在MPLS網(wǎng)絡(luò)中可能被逐跳修改,而虛電路標(biāo)簽則一般維持不變直到幀到達接收端PE。在幀到達接收端PE后,隧道標(biāo)簽首先被剝離,然后,根據(jù)虛電路標(biāo)簽的值,轉(zhuǎn)發(fā)幀到相應(yīng)以太網(wǎng)端口。
有時需要借助虛擬局域網(wǎng)(VLAN)標(biāo)簽來將一個物理上聯(lián)通的局域網(wǎng)劃分成若干邏輯上獨立的虛擬局域網(wǎng)[4]。如果VLAN標(biāo)簽是由客戶定義的,即該標(biāo)簽由客戶設(shè)備封裝,那么含此類VLAN標(biāo)簽的幀的封裝與普通幀一致。但虛電路標(biāo)簽封裝在VLAN標(biāo)簽之外,且VLAN標(biāo)簽在接收端PE處不被剝離,而是直接被發(fā)送到客戶局域網(wǎng)。另一種情況是,不同客戶的局域網(wǎng)連接到了同一PE上,為了區(qū)分這些不同客戶,需要由服務(wù)提供商來定義VLAN標(biāo)簽,這類標(biāo)簽稱為服務(wù)劃分(service-delimiting)標(biāo)簽。對于服務(wù)劃分標(biāo)簽,Martini草案定義了2種數(shù)據(jù)處理模式。一種是擦除模式(raw mode),即在幀被送往虛電路發(fā)送之前,剝離其所有服務(wù)劃分標(biāo)簽后再封裝虛電路標(biāo)簽與隧道標(biāo)簽。另一種是追加模式(tag mode),即對不含服務(wù)劃分標(biāo)簽的幀先封裝一個服務(wù)劃分標(biāo)簽,然后封裝虛電路標(biāo)簽與隧道標(biāo)簽。由于服務(wù)劃分標(biāo)簽只被發(fā)送端PE設(shè)備區(qū)用來區(qū)分不同客戶,因此采用擦除模式或追加模式都不會對虛電路的接收產(chǎn)生影響。
用一收一發(fā)兩條虛電路連接兩個遠程局域網(wǎng)便定義了一條虛電線。發(fā)送端PE利用LDP信令建立隧道、虛電路及學(xué)習(xí)接收端局域網(wǎng)內(nèi)的MAC地址集,并轉(zhuǎn)達給本地CE,使得CE能夠根據(jù)MAC地址將響應(yīng)的幀提交PE轉(zhuǎn)發(fā)。對于不能判定目的地址歸屬的單播幀、多播幀和所有的廣播幀,發(fā)送端CE設(shè)備將在局域網(wǎng)內(nèi)廣播,發(fā)送端PE設(shè)備收到這類幀后則默認轉(zhuǎn)發(fā)至接收端PE設(shè)備。因此保證了目的地址未知的幀不會被系統(tǒng)丟棄,其代價是損失了帶寬。
2.基于標(biāo)簽分布協(xié)議(LDP)的VPLS信令分析
本節(jié)將主要討論在MPLS網(wǎng)絡(luò)中使用LDP建立標(biāo)簽交換路徑(LSP)、虛電路及PE間MAC地址學(xué)習(xí)和維護的機制。
(1)LDP鄰機發(fā)現(xiàn)機制
兩個運行LDP的相鄰路由器構(gòu)成鄰機。如果兩個路由器中的多個接口互相連接,那么每對接口構(gòu)成一對鄰機。LDP鄰機發(fā)現(xiàn)機制能夠使PE發(fā)現(xiàn)潛在的LDP同位體,那么就沒有必要去明確地配置PE的標(biāo)簽交換同位體,從而降低了網(wǎng)絡(luò)的復(fù)雜性。LDP的發(fā)現(xiàn)協(xié)議運行于UDP之上。如果所有的路由器都位于一個子網(wǎng)內(nèi),那么標(biāo)簽交換路由器(LSR)就周期性地組播一個HELLO消息給一個UDP端口,所有的LSR都在這個端口上偵聽這個HELLO消息。因此,LSR將發(fā)現(xiàn)與它直接相連的所有其它LSR。當(dāng)LSR通過這種機制獲悉了另一個LSR的地址時,這兩個LSR之間就會建立一個TCP連接(LDP使用TCP作為可靠傳輸協(xié)議。當(dāng)兩個PE需要多個LDP會話時,每一個LDP會話將擁有一個TCP會話),那么一個雙向的LDP會話就可以在這兩個LSR之間建立。如果多個LSR沒有直接連接于一個公共的子網(wǎng),那么附加的發(fā)現(xiàn)機制也能夠使得LSR彼此發(fā)現(xiàn)對方。在這種情況下,LSR周期性地單播HELLO消息給某個特定IP地址上的UDP端口,而這個特定的IP地址必須通過其他途徑獲得。HELLO消息的接收者通過單播返回另一個HELLO消息給初始的LSR,那么便可以象前面所述的那樣建立會話。
(2)LDP的會話和信令
如前所述,為了建立外部隧道的全網(wǎng)格,PE設(shè)備使用目的UDP端口來確定鄰機,建立LDP會話和TCP會話,然后通過LDP請求和LDP映射消息來建立一個LSP。接下來我們詳細分析LDP會話和信令。
一個LDP標(biāo)簽映射消息包含一個FEC類型長度值(TLV),一個標(biāo)簽類型長度值(TLV)和零值或者更多的可選參數(shù)的類型長度值(TLV)。在VPLS中,一個LDP標(biāo)簽映射消息攜帶VPLS的信息,其中包括如圖2所示的虛電路FEC的類型長度值(VC FEC TLV)。FEC TLV用來說明標(biāo)簽的含義。LDP允許每個FEC TLV包含一組FEC要素。但是為了建立和維護虛電線,每個FEC TLV必須正確地包含一個FEC要素[5]。
VPLS服務(wù)需要定義一個虛電路標(biāo)識符(VCID),用來鑒別一個模擬的局域網(wǎng)段,它是一個非零32位長的連接標(biāo)識符。VCID和VC類型一起標(biāo)識一個點對點虛電線的服務(wù);赩CID FEC,虛電線的兩個端點都獨立地建立單向VC LSP,它在VPLS的環(huán)境中起始并中止于兩個局域網(wǎng)的以太網(wǎng)端口, 這樣就在所有的局域網(wǎng)間形成了一個邏輯橋(bridge),使得VPLS服務(wù)類似于IEEE 802.3 標(biāo)準(zhǔn)規(guī)定的學(xué)習(xí)橋接一樣,即構(gòu)成了一個“虛擬專用局域網(wǎng)”。
(3)MAC地址學(xué)習(xí)
VPLS橋接功能之一就是MAC地址學(xué)習(xí)。以太網(wǎng)的一個特征是所有的廣播幀和未知目的地址的幀都會被擴散到所有的端口。為了在VPLS里實現(xiàn)地址擴散,所有未知地址的單播、廣播和組播幀將被擴散到相應(yīng)的虛電線,從而到達VPLS中相應(yīng)的PE節(jié)點[6]。
舉例來說,如圖3所示,首先PE1獲悉VPLS100中某個終端的MAC地址為X,并且依附于本地端口1, 然后PE1將此信息廣播給PE2和PE3, 讓PE2和PE3獲悉在VPLS100內(nèi),MAC地址X是遠程依附于PE1的端口1。當(dāng)X發(fā)送一個請求到Z時,由于PE1上并沒有Z的信息,此時PE1將會將此請求廣播到PE2和PE3,而PE2和PE3會對本地局域網(wǎng)廣播此請求,當(dāng)PE2下的Z使用單播響應(yīng)X時,PE2便獲悉了VPLS100中的Z的地址,并且是依附于本地端口1。然后PE2將廣播Z的信息,PE1及PE3便獲悉Z在VPLS100內(nèi),遠程依附于PE2端口1。 用同樣的方法,PE1和PE3也能學(xué)習(xí)到MAC地址Y。
每個PE設(shè)備維護一個單獨的轉(zhuǎn)發(fā)信息庫(FIB),其中包括它所學(xué)習(xí)到的所有的地址和接口標(biāo)識符,以及轉(zhuǎn)發(fā)VPLS流量到這些地址所需的相關(guān)信息。在VPLS中,PE從其他PE發(fā)來的源地址中學(xué)習(xí)MAC地址。為了轉(zhuǎn)發(fā)幀,PE必須能夠?qū)AC地址與虛電線對應(yīng)起來。因此,在VPLS中的PE必須有能力在物理端口和虛電路上動態(tài)地學(xué)習(xí)MAC地址,并且通過物理端口和虛電線轉(zhuǎn)發(fā)和復(fù)制數(shù)據(jù)包。
3.基于LDP的VPLS實現(xiàn)原理
迄今為止,IETF已經(jīng)收到了3份VPLS實現(xiàn)方案的提議。其中,Lasserre等人撰寫的VPLS草案[7]是基于虛電線技術(shù)與LDP信令的方案并被部分廠商提前做為標(biāo)準(zhǔn)集成到了MPLS設(shè)備中。
如圖4(a)所示,Lasserre的VPLS實現(xiàn)原理是使用虛電線兩兩連接多個局域網(wǎng),局域網(wǎng)之間使用LDP作為控制信令,用于維護VPLS中每個PE設(shè)備的 FIB。如果某個局域網(wǎng)中的終端發(fā)送幀至VPLS里其它局域網(wǎng)終端,那么幀首先被CE傳輸?shù)桨l(fā)送端PE,PE會根據(jù)幀的源及目地址將其送往相應(yīng)的虛電線,并且只需要經(jīng)過一條虛電線,幀便到達接收端PE。在幀的傳輸過程中,任何設(shè)備不會也不需要對幀的路由/網(wǎng)絡(luò)層包頭進行分析,所有的封裝、交換都是基于第二層的信息來完成。
通過上面的分析可知,在基于LDP的VPLS實現(xiàn)方案中任意兩個局域網(wǎng)間的幀只需要經(jīng)過一條虛電線便可以到達接收端PE。實際上,任一PE也只被允許接收來自其它PE的幀而不被允許再轉(zhuǎn)發(fā)這些幀。這樣做的目的是為了防止網(wǎng)絡(luò)中出現(xiàn)環(huán)路。由于幀永遠不可能被PE二次轉(zhuǎn)發(fā),所以網(wǎng)絡(luò)中不會出現(xiàn)多于兩個節(jié)點的路徑,從而避免了環(huán)的產(chǎn)生。在以太網(wǎng)中,一般是使用生成樹(spanning tree)協(xié)議來避免環(huán)的產(chǎn)生[8],但在VPLS中由于成員局域網(wǎng)分散在MPLS網(wǎng)絡(luò)中,使用生成樹將使VPLS變得比較復(fù)雜,所以使用兩兩互連即所謂的全網(wǎng)格(full mesh)連接來避免環(huán)的產(chǎn)生。但是這種結(jié)構(gòu)又帶來了另一個問題,即隨著成員局域網(wǎng)數(shù)目的增多,虛電線數(shù)量會急劇增長。一般地,虛電線數(shù)與局域網(wǎng)數(shù)有如下關(guān)系[9]:N=(n·(n-1))/2 (n為VPLS成員局域網(wǎng)數(shù))。從這個公式可知,如果僅采用全網(wǎng)格結(jié)構(gòu)來連接一個含有眾多成員局域網(wǎng)的大型VPLS,將使虛電線數(shù)目變得十分龐大,最終導(dǎo)致維護苦難及設(shè)備性能下降。另外,由于未知地址的幀將會在(n-1)條虛電線上進行廣播,虛電線增加將直接導(dǎo)致帶寬的消耗。因此,對于大型的VPLS網(wǎng)絡(luò),必須依靠其它辦法來減少虛電線的數(shù)量。
三、基于LDP的大型VPLS解決方案
以下將在討論IETF草案建議的層次化VPLS基礎(chǔ)上給出另外兩種減少虛電線數(shù)量的VPLS的解決方案。
1.層次化VPLS
針對前面提到的全網(wǎng)格問題,IETF草案[6]中建議使用層次化VPLS來減少虛電線的數(shù)量,其基本思想可以總結(jié)如圖4(b)。在圖中,一個VPLS被劃分成2部分,一部分稱為VPLS核心層(core),另一部分稱為VPLS接入層。構(gòu)成核心層的PE設(shè)備需要增加二層交換/橋接(bridging)模塊,帶二層交換功能的PE被稱為PE-rs(routing and switching),而僅有三層交換/路由功能的傳統(tǒng)PE設(shè)備被稱為PE-r。核心層的PE-rs之間仍然采用兩兩互連(Hub)的方式,而核心層的PE-rs與接入層的PE-r設(shè)備之間使用星型(Spoke)連接方式,一個PE-r只允許有一條虛電線(冗余用途的虛電線一般設(shè)置為備份狀態(tài))與一個PE-rs相連。因為PE-rs內(nèi)嵌有二層交換功能,而虛電線在邏輯上等同于一條以太網(wǎng)線,因此PE-rs能夠識別來自接入層PE的幀的地址字段并且能將幀按目的地轉(zhuǎn)發(fā)到其它PE-r或者PE-rs。由于核心VPLS的各個PE-rs之間仍然使用兩兩互連結(jié)構(gòu),并且PE-rs不允許將來自核心VPLS的幀轉(zhuǎn)發(fā)到其它PE-rs,因此核心VPLS內(nèi)不會產(chǎn)生環(huán)路。但PE-rs可以將來自接入層PE的幀轉(zhuǎn)發(fā)到其它PE-rs,因此必須在每個PE-rs上使用生成樹協(xié)議來避免在接入層部分產(chǎn)生環(huán)路。這樣一來,PE-rs上的二層交換功能稍微有些特殊,因為在交換上它必須對接入層側(cè)的虛電線和核心層側(cè)的虛電線給予不完全相同的待遇。
由于分層次VPLS的接入層沒有使用全網(wǎng)格連接而是使用星型連接,因而大大降低了虛電線的數(shù)量。
2.多VPLS互連
依照IETF Lasserre草案中層次化VPLS的思想,我們可以設(shè)計出如圖4(c)所示的一種非全網(wǎng)格VPLS架構(gòu)。該設(shè)計沒有增加草案建議以外的協(xié)議或硬件,但優(yōu)于草案建議架構(gòu)。其主要思想是先利用虛電線全網(wǎng)格連接構(gòu)建含少量局域網(wǎng)的低級別VPLS,若干個低級別VPLS之間再用虛電線全網(wǎng)格連接成一個高級別的VPLS。為了使網(wǎng)絡(luò)結(jié)構(gòu)更加清晰與便于維護,可以存在更多的VPLS級別。需要指出的是,連接高級別VPLS與低級別VPLS的PE必須是含二層交換功能的PE-rs,而且高級別VPLS與低級別VPLS之間的虛電線上流量的交換也必須按照Lasserre草案中的星型連接的交換規(guī)則來進行,即容許其轉(zhuǎn)發(fā)來自全網(wǎng)格連接的數(shù)據(jù)。相比草案中的層次化VPLS結(jié)構(gòu),這種組網(wǎng)方式除了能夠減少虛電線的數(shù)量而且可以更好地將已有的小型VPLS整合成一個大型VPLS,并且結(jié)構(gòu)更清晰和便于維護。
3.客戶自建VPLS
客戶除了可以直接使用由服務(wù)商提供的虛擬局域網(wǎng)業(yè)務(wù)外,還可以租用虛電線來構(gòu)建自己的VPLS。一種簡單的情形是客戶使用虛電線將分散在各地的多個局域網(wǎng)星型的連接到一臺中央交換機,由于虛電線在邏輯上等同于一條以太網(wǎng)線,因此所有的局域網(wǎng)等同于直接用網(wǎng)線連接到了中央交換機,從而構(gòu)成了一個整合的局域網(wǎng)。此處需要注意的是,雖然分散在各地的局域網(wǎng)到中央交換機的距離可能很長,超過了CSMA/CD(載波偵聽多路訪問,沖突檢測)協(xié)議的時間槽長度[10],但只要保證中央交換機端的CE設(shè)備到中央交換機的距離不超過時間槽長度即可。這種VPLS的優(yōu)點是容易實現(xiàn),缺點是用戶必須自行對虛擬局域網(wǎng)進行設(shè)計與維護。當(dāng)網(wǎng)絡(luò)不大、服務(wù)商VPLS服務(wù)沒開放或VPLS服務(wù)費用過高時可以采用此種VPLS實現(xiàn)方式。
四、結(jié)束語
本文分析了MPLS網(wǎng)絡(luò)的虛電線技術(shù)和LDP協(xié)議的工作機制,討論了基于LDP信令的VPLS的實現(xiàn)及全網(wǎng)格問題,研究了IETF草案的層次化VPLS解決方案,并提出了兩個實際組網(wǎng)方案。通過理論、仿真和實驗手段分析基于LDP信令的VPLS的性能及其潛在問題是下一步的主要工作。目前, 基于LDP信令的VPLS已經(jīng)成為IETF最有競爭力的一個VPLS方案,但它是否會成為IETF標(biāo)準(zhǔn),還有賴于其市場占有率和設(shè)備廠商的支持力度。不過可以肯定的是VPLS將作為下一代寬帶通信網(wǎng)絡(luò)的熱點技術(shù)得到發(fā)展與廣泛應(yīng)用。