孫文勝,趙問吉
(杭州電子科技大學(xué)通信工程學(xué)院,浙江杭州310018)
隨著社會和科技的發(fā)展,IP承載網(wǎng)逐漸成為下一代承載網(wǎng)的發(fā)展方向,滿足人們對語音,視頻,數(shù)據(jù)以及各種Internet業(yè)務(wù)的需求[1]。MPLS VPN作為構(gòu)建IP承載網(wǎng)的關(guān)鍵技術(shù),將IP技術(shù)和ATM技術(shù)的優(yōu)勢結(jié)合起來,不僅能夠?qū)崿F(xiàn)采用不同接入方式的用戶間的無阻礙通信,還可將不同業(yè)務(wù)流量進(jìn)行有效隔離,利用公網(wǎng)來傳輸VPN數(shù)據(jù)。目前,我國的各大運(yùn)營商幾乎都宣稱能提供MPLS VPN業(yè)務(wù),相信MPLS VPN會在不久的將來更廣的應(yīng)用于我國的企業(yè),成為運(yùn)營商間爭奪企業(yè)專網(wǎng)用戶的一個(gè)重要砝碼。因此對基于MPLS VPN的IP承載網(wǎng)保障性措施的研究更是尤為重要。本文正是對此提出了狀態(tài)機(jī)模型來保障網(wǎng)絡(luò)的穩(wěn)定性。
MPLS VPN是指基于多協(xié)議標(biāo)簽交換技術(shù)構(gòu)建的虛擬專用網(wǎng),即采用MPLS技術(shù)在公共IP網(wǎng)絡(luò)上構(gòu)建企業(yè)IP專用網(wǎng)絡(luò)[2,3]。常見的MPLS VPN組網(wǎng)結(jié)構(gòu)圖如圖1所示。
圖1 常見的MPLS VPN組網(wǎng)結(jié)構(gòu)圖
(1)CE是用戶網(wǎng)絡(luò)邊緣路由器,與用戶端接口相連,只需將用戶接入MPLS網(wǎng)絡(luò)。
(2)PE是與運(yùn)營商網(wǎng)絡(luò)邊緣路由器,保存虛擬路由轉(zhuǎn)發(fā)表,負(fù)責(zé)實(shí)現(xiàn)路由和轉(zhuǎn)發(fā)功能。
(3)P是骨干網(wǎng)核心路由器,主要完成MPLS轉(zhuǎn)發(fā)[4]。
MPLS VPN技術(shù)具有服務(wù)質(zhì)量保證,業(yè)務(wù)綜合能力強(qiáng),網(wǎng)絡(luò)傳輸速率高,組網(wǎng)方式靈活,可擴(kuò)展,低成本和高安全性的特點(diǎn),但安全問題仍然是MPLS VPN網(wǎng)絡(luò)不可忽視的一部分。
利用MPLS VPN構(gòu)建電信級IP承載網(wǎng),需要滿足網(wǎng)絡(luò)對處理不同類型業(yè)務(wù),進(jìn)行網(wǎng)絡(luò)隔離,網(wǎng)絡(luò)結(jié)構(gòu)扁平化以及可靠性和安全性保證的要求。組網(wǎng)方式是通過分析流量,確定網(wǎng)絡(luò)拓?fù)?,確定各節(jié)點(diǎn)配置等步驟,并將IP承載網(wǎng)內(nèi)業(yè)務(wù)進(jìn)行不同種類劃分,邏輯上采用MPLS L2VPN和MPLS L3VPN技術(shù)將這些業(yè)務(wù)進(jìn)行隔離,這樣便實(shí)現(xiàn)了專網(wǎng)專用且方便管理[5]。某省電信級IP承載網(wǎng)網(wǎng)絡(luò)結(jié)構(gòu)實(shí)例圖如圖2所示。
圖2 某省電信級IP承載網(wǎng)網(wǎng)絡(luò)結(jié)構(gòu)
圖2中,核心層由4個(gè)大的骨干節(jié)點(diǎn)組成,城市B、C、D等通過由小的骨干節(jié)點(diǎn)組成的匯聚層接入核心層。城市A則直接從接入層通過路由器接入核心層,整個(gè)網(wǎng)絡(luò)實(shí)現(xiàn)了扁平化結(jié)構(gòu);網(wǎng)內(nèi)的每個(gè)節(jié)點(diǎn)都存在備份鏈路,如設(shè)備a,b。且設(shè)備b通過兩條專線接入不同的核心層節(jié)點(diǎn),有著很高的網(wǎng)絡(luò)可靠性;并且,每個(gè)骨干節(jié)點(diǎn)都是由實(shí)際情況構(gòu)建的MPLS VPN。目前,各市級網(wǎng)絡(luò)通常也采用MPLS VPN來建設(shè)。
通常在使用MPLS技術(shù)的網(wǎng)絡(luò)中,可以采用MPLS TE技術(shù),QoS技術(shù),BFD技術(shù)等來保證網(wǎng)絡(luò)穩(wěn)定性和可靠性。本文提出了一種新的狀態(tài)機(jī)模型來實(shí)現(xiàn)VLL冗余備份。
VLL是指虛擬租用線業(yè)務(wù),即使用虛電路來區(qū)分不同用戶,允許多用戶共享同一鏈路。VLL冗不余備份模塊需要正確處理收到的網(wǎng)絡(luò)鏈路故障消息并反饋新的鏈路狀態(tài)。典型的VLL冗余備份報(bào)文傳輸示意圖如圖3所示,PE與PE間為虛擬鏈路,由MPLS網(wǎng)絡(luò)上建立LSP隧道后創(chuàng)建。從圖3中可以看到,CE1到CE2存在有兩條PW,分別是CE1-PE1-P1-PE2-CE2和CE1-PE1-P2-PE3-E2,其中一條為主PW,一條為備份PW。正常情況下,報(bào)文經(jīng)主PW傳輸,備PW處于阻塞狀態(tài);一旦主PW發(fā)生故障,主備PW立刻進(jìn)行切換,備PW代替主PW開始工作。
用狀態(tài)機(jī)模型來維護(hù)VLL冗余備份功能,即解決在PE設(shè)備上如何維護(hù)具有VLL冗余備份功能的主備PW的狀態(tài)。首先,將PW的狀態(tài)定義為3種類型:UP(一對反向虛電路建立,PW能夠正常轉(zhuǎn)發(fā)報(bào)文)、DOWN(未建立起PW,即無法轉(zhuǎn)發(fā)報(bào)文)、BLOCK(后建立的備PW將處于備用狀態(tài))。狀態(tài)機(jī)設(shè)計(jì)要求如下:
(1)能夠交換PE間的信息建立起PW并維護(hù)主備PW狀態(tài)。因此,要求模塊能夠處理用于建立CE間虛電路的標(biāo)簽轉(zhuǎn)發(fā)協(xié)議(LDP)的會話消息;
(2)使用BFD檢測鏈路故障時(shí),VLL冗余模塊能夠正確處理BFD會話消息;
(3)響應(yīng)用戶下達(dá)的手動切換命令,倒換PW狀態(tài)。
本文根據(jù)上述要求,對繁多的BFD會話消息進(jìn)行處理,提出了狀態(tài)機(jī)模型。模型可抽象的表示為一種有向圖,如圖4所示,由節(jié)點(diǎn)和對應(yīng)的狀態(tài)轉(zhuǎn)移函數(shù)組成。每個(gè)節(jié)點(diǎn)代表一個(gè)事件,當(dāng)某節(jié)點(diǎn)的事件處理完畢之后,即通過狀態(tài)轉(zhuǎn)移函數(shù)移至下一個(gè)狀態(tài)。
圖3 典型的冗余鏈路組網(wǎng)結(jié)構(gòu)
圖4 VLL冗余備份狀態(tài)機(jī)模型
首先,根據(jù)主備PW的狀態(tài),LDP和BFD會話消息類型,用9種事件來描述鏈路冗余備份中產(chǎn)生的各類消息,分別為:
(1)LDP 會話事件:LDP_MAIN_PW_UP,LDP_MAIN_PW_DOWN,LDP_BACKUP_PW_UP,LDP_BACKUP_PW_DOWN;
(2)BDF會話事件:BFD_MAIN_PW_UP,BFD_MAIN_PW_DOWN,BFD_BACKUP_PW_UP,BFD_BACKUP_PW_DOWN;
(3)用戶手工切換事件:USER_PW_SWITCH。
其中的MAIN_PW,BACKUP_PW表示主備PW,UP和DOWN分別表示主備PW將要UP或DOWN的會話消息。
此外,備份鏈路的切換過程中,定義4中狀態(tài):
(1)IDLE狀態(tài):該狀態(tài)下PE設(shè)備間可能僅有主PW或主備PW均被創(chuàng)建,但都不可以轉(zhuǎn)發(fā)報(bào)文,即PW處于DOWN狀態(tài);
(2)NOBACKUP狀態(tài):該狀態(tài)下PE設(shè)備間也可能僅有主PW存在或主備PW均存在,但此時(shí)主PW處于UP狀態(tài),可轉(zhuǎn)發(fā)報(bào)文,備PW處于DOWN狀態(tài),不能轉(zhuǎn)發(fā)報(bào)文;
(3)NOSWITCH狀態(tài):該狀態(tài)下主備PW都被創(chuàng)建,其中主PW處于UP狀態(tài)可以轉(zhuǎn)發(fā)報(bào)文,備PW被阻塞,處于備用狀態(tài),標(biāo)識為BLOCK狀態(tài);
(4)SEITCHOVER狀態(tài):該狀態(tài)下主備PW均存在,但備PW可以轉(zhuǎn)發(fā)報(bào)文,處于UP狀態(tài),主PW處于備用狀態(tài),標(biāo)識為BLOCK狀態(tài)。該狀態(tài)可以和NOSWITCH狀態(tài)進(jìn)行相互切換。
具體描述在發(fā)生各事件時(shí)狀態(tài)切換的情況:
當(dāng)處于IDLE狀態(tài)時(shí),如果發(fā)生了PW創(chuàng)建成功事件,即LDP_MAIN_PW_UP或LDP_BACKUP_PW_UP事件,自動轉(zhuǎn)入NOBACKUP狀態(tài);如果發(fā)生了PW創(chuàng)建失敗事件,不管是主PW失敗還是備PW失敗,仍保持IDLE狀態(tài)不變;
當(dāng)處于NOBACKUP狀態(tài)時(shí),若PW狀態(tài)為UP時(shí)發(fā)生PW創(chuàng)建失敗事件,則轉(zhuǎn)入IDLE狀態(tài),若PW為UP時(shí)發(fā)生PW創(chuàng)建成功事件或PW為DOWN時(shí)發(fā)生PW創(chuàng)建失敗事件,則維持NOBACKUP狀態(tài)不變,當(dāng)PW1為UP狀態(tài)PW2為DOWN狀態(tài)時(shí),如果發(fā)生PW2創(chuàng)建成功事件,則PW轉(zhuǎn)為BLOCK狀態(tài),此時(shí)狀態(tài)機(jī)進(jìn)入NOSWITCH狀態(tài),當(dāng)PW1為DOWN狀態(tài)PW2為UP狀態(tài)時(shí),如果發(fā)生PW1創(chuàng)建成功事件,則狀態(tài)機(jī)進(jìn)入SWITCHOVER狀態(tài);
當(dāng)處于NOSWITCH狀態(tài)時(shí),如果此時(shí)發(fā)生PW創(chuàng)建成功事件,則狀態(tài)不變,如果發(fā)生PW創(chuàng)建失敗事件,則進(jìn)入NOBACKUP狀態(tài),如果主PW停止工作或者手工切換主備PW,都將進(jìn)入SWITCHOVER狀態(tài);
當(dāng)處于SWITCHOVER狀態(tài)時(shí),如果發(fā)生PW創(chuàng)建成功事件,維持原狀態(tài)不變,如果發(fā)生PW創(chuàng)建失敗事件,轉(zhuǎn)入NOBACKUP狀態(tài),如果發(fā)生BFD_MAIN_PW_UP事件,備PW降級主PW升級,轉(zhuǎn)入NOBACKUP狀態(tài),如果發(fā)生PW停止工作或手工切換PW事件,則轉(zhuǎn)入NOSWITCH狀態(tài)。
狀態(tài)機(jī)在發(fā)生不同事件進(jìn)入相應(yīng)的狀態(tài),以此來維護(hù)VLL冗余備份的正常工作。
本文通過C語言來具體實(shí)現(xiàn)VLL冗余備份功能,采用二維數(shù)組結(jié)合函數(shù)指正的方法來實(shí)現(xiàn)狀態(tài)機(jī)功能。通過定義了不同的處理函數(shù)來對每種狀態(tài)下的不同事件進(jìn)行處理。定義二維數(shù)組用來存放處理函數(shù)的指針,數(shù)組的下標(biāo)即為4種狀態(tài)和每個(gè)狀態(tài)下的9種事件。對這36個(gè)處理函數(shù)進(jìn)一步作優(yōu)化處理,把不需要處理或與事件無關(guān)的的元素設(shè)為NULL且用同一函數(shù)的不同分支處理有著相似處理要求的事件。最后總結(jié)設(shè)計(jì)了13個(gè)函數(shù)組成狀態(tài)機(jī)的實(shí)現(xiàn)機(jī)制。此設(shè)計(jì)具有映射快和結(jié)構(gòu)清晰的特點(diǎn)。
本文對MPLS VPN進(jìn)行概括介紹之后,又根據(jù)IP承載網(wǎng)的建網(wǎng)要求,給出了MPLS VPN建設(shè)IP承載網(wǎng)的優(yōu)勢,并且對于如何利用MPLS VPN技術(shù)構(gòu)建電信級IP承載網(wǎng)進(jìn)行舉例說明。此外,本文重點(diǎn)介紹了用狀態(tài)機(jī)來實(shí)現(xiàn)IP承載網(wǎng)VLL冗余備份功能,保證鏈路發(fā)生異常時(shí)的無縫切換。這種狀態(tài)機(jī)的設(shè)計(jì)方法還能運(yùn)用到含有幾種不同狀態(tài)和多種事件的實(shí)際情況中去,具有很廣的應(yīng)用前景。
[1] 何寶宏.IP虛擬專用網(wǎng)技術(shù)[M].北京:人民郵電出版社,2002:8-15.
[2] Bruce S,Davie Yakov Rekhter.MPLS技術(shù)與應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2001:53-66.
[3] Casey Wi isan,Deter doak.虛擬專用網(wǎng)的創(chuàng)建與實(shí)現(xiàn)[M].北京:機(jī)械工業(yè)出版社,2000:78-99.
[4] 欒舒涵.電信級的IP承載網(wǎng)建設(shè)方案[D].大連:大連理工大學(xué),2009:27-31.
[5] 劉峻峰.第二、三層 MPLS VPN淺析[J].微計(jì)算機(jī)應(yīng)用,2005,26(1):34-39.