任永學(xué)
【摘 要】在研究了虛擬 IP路由器及MPLS技術(shù)的基礎(chǔ)上, 設(shè)計(jì)并實(shí)現(xiàn)了支持 MPLS功能的虛擬路由器,對該虛擬路由器在BGP/MPLS VPN系統(tǒng)中的應(yīng)用進(jìn)行了研究,提出了一種有效的BGP/MPLS VPN實(shí)驗(yàn)系統(tǒng)的實(shí)現(xiàn)方案,該方案既能使各用戶進(jìn)行獨(dú)立的配置和操作,又給所有用戶提供了統(tǒng)一的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),同時(shí)還使得軟件資源的消耗相對較少,有效地解決了大規(guī)模多用戶并發(fā)操作所帶來的問題。
【關(guān)鍵詞】虛擬路由器;OSPF;多協(xié)議標(biāo)簽交換;LDP;BGP
1.虛擬IP路由器及其實(shí)現(xiàn)方案
虛擬IP路由器是指用來模擬真實(shí)IP路由器路由功能的應(yīng)用軟件。本文實(shí)現(xiàn)的虛擬路由器,其特點(diǎn)是在一臺主機(jī)上能夠同時(shí)運(yùn)行多個(gè)路由器,支持多用戶的并發(fā)操作。通過用戶的配置,能夠模擬不同拓?fù)浣Y(jié)構(gòu)的網(wǎng)絡(luò)的運(yùn)作過程。與實(shí)際路由器相比,由于是通過軟件來實(shí)現(xiàn),其速度和所支持的用戶數(shù)量會受到一定的限制。但這項(xiàng)技術(shù)大大減少了運(yùn)營的開銷,并且還提高了網(wǎng)絡(luò)配置的靈活性,給網(wǎng)絡(luò)的模擬、測試提供了很好的技術(shù)背景。
1.1虛擬IP路由器內(nèi)部結(jié)構(gòu)設(shè)計(jì)
本文實(shí)現(xiàn)的虛擬IP路由器的基本功能包括:路由的計(jì)算,數(shù)據(jù)分組的轉(zhuǎn)發(fā)以及訪問控制列表功能。各個(gè)功能模塊都受命令行控制模塊的控制。當(dāng)路由器接收從其它相鄰的路由器或直連網(wǎng)絡(luò)接收到數(shù)據(jù)時(shí),首先判定是什么數(shù)據(jù)類型,如果是鏈路狀態(tài)數(shù)據(jù)報(bào)文,則將進(jìn)入路由計(jì)算模塊,在適當(dāng)?shù)臅r(shí)候要用SPF算法進(jìn)行最短路徑的計(jì)算;如果數(shù)據(jù)是普通TCP數(shù)據(jù)包時(shí),則首先進(jìn)入訪問控制列表模塊,若該數(shù)據(jù)包未被拒絕,則將進(jìn)入數(shù)據(jù)轉(zhuǎn)發(fā)模塊,轉(zhuǎn)發(fā)給其它相鄰的路由器或直連網(wǎng)絡(luò)。
1.2虛擬路由器的 Java 實(shí)現(xiàn)
本文以 OSPF 路由協(xié)議(RFC2328)為例進(jìn)行設(shè)計(jì),使用的開發(fā)語言是 Java,這是一種面向?qū)ο蟮拈_發(fā)語言,以虛擬IP路由器為基礎(chǔ)設(shè)施的網(wǎng)絡(luò)在運(yùn)行過程中用到的對象主要分成以下幾類:(1)OSPF類、(2)AreaData類、(3)Interface類、(4)Neighbor類、(5)SPF類。
2.支持 MPLS的虛擬路由器的設(shè)計(jì)與實(shí)現(xiàn)
普通的路由器只能簡單地根據(jù)路由協(xié)議產(chǎn)生的路由表,再結(jié)合數(shù)據(jù)包的第3層網(wǎng)絡(luò)地址來進(jìn)行數(shù)據(jù)包的轉(zhuǎn)發(fā)。在對路由器加了MPLS功能后,就能把路由表轉(zhuǎn)化成相應(yīng)的標(biāo)簽交換表,使得數(shù)據(jù)的轉(zhuǎn)發(fā)只與標(biāo)簽有關(guān),而不會去解析第3層的網(wǎng)絡(luò)信息,這對提高數(shù)據(jù)轉(zhuǎn)發(fā)的安全性提供了保障。
2.1支持MPLS的虛擬路由器的總體設(shè)計(jì)
對于一個(gè)支持MPLS的虛擬路由器,結(jié)構(gòu)主要包括兩大部分:
控制部分(LDP協(xié)議)和轉(zhuǎn)發(fā)部分(MPLS協(xié)議)。
LDP協(xié)議是MPLS的控制與信令協(xié)議[2]。該協(xié)議部分主要包括兩個(gè)模塊:更新出標(biāo)簽?zāi)K和分配入標(biāo)簽?zāi)K。更新出標(biāo)簽?zāi)K在收到標(biāo)簽綁定信息后,把該信息放入該路由器的標(biāo)簽信息庫(Label Information Base,LIB),如果發(fā)送該信息的路由器是該路由器的下一跳標(biāo)簽交換路由器(Label Switching Router,LSR),還要用該信息更新標(biāo)簽轉(zhuǎn)發(fā)信息庫(Label Forwarding Information Base,LFIB)和轉(zhuǎn)發(fā)信息庫(Forwarding Information Base,F(xiàn)IB)中的出標(biāo)簽信息。而對于分配入標(biāo)簽?zāi)K,在運(yùn)行OSPF協(xié)議的同時(shí),對路由表中的每一個(gè)目的網(wǎng)絡(luò)都進(jìn)行FEC分類,并對其加上本地的標(biāo)簽綁定信息,也就是入標(biāo)簽,并將該標(biāo)簽信息放入LIB、LFIB和FIB中。再把該本地標(biāo)簽綁定信息發(fā)送給所有與其相鄰的路由器(這里采用的是下游未被請求標(biāo)簽分配模式)。
當(dāng)收到的不是控制消息,即是普通的數(shù)據(jù)包時(shí),則直接進(jìn)入分組轉(zhuǎn)發(fā)模塊(MPLS協(xié)議[1]部分)。由MPLS分類器決定查找LFIB、FIB或路由表,得到該路由的下一跳地址、發(fā)送的接口和標(biāo)簽操作。對數(shù)據(jù)包進(jìn)行標(biāo)簽操作后,就放入發(fā)送隊(duì)列,等候轉(zhuǎn)發(fā)。如果對應(yīng)該數(shù)據(jù)的標(biāo)簽交換路徑(Label Switched Path,LSP)信息不存在,則分組數(shù)據(jù)進(jìn)入IP路由部分的數(shù)據(jù)轉(zhuǎn)發(fā)模塊進(jìn)行第3層的數(shù)據(jù)轉(zhuǎn)發(fā)。
2.2支持MPLS的虛擬路由器的實(shí)現(xiàn)方案
2.2.1分配入標(biāo)簽?zāi)K
在運(yùn)行 OSPF 協(xié)議的同時(shí),也運(yùn)行著LDP協(xié)議。MPLS網(wǎng)絡(luò)中的 LSR將趨向于路由表、LIB、FIB和LFIB的動(dòng)態(tài)平衡。每當(dāng)往路由表中添加一個(gè)到達(dá)目的網(wǎng)絡(luò)的表項(xiàng)時(shí),就為其分配相應(yīng)的入標(biāo)簽。
2.2.2更新出標(biāo)簽?zāi)K
當(dāng)路由器接口收到其它路由器的標(biāo)簽綁定信息時(shí),如果發(fā)送方是當(dāng)前路由器的下一跳 LSR,則要更新相應(yīng)的出標(biāo)簽信息。
2.2.3分組轉(zhuǎn)發(fā)模塊
當(dāng)路由器接口收到普通數(shù)據(jù)分組時(shí),分組將進(jìn)入MPLS分類器中,先判斷該分組是否帶了標(biāo)簽,如果是帶標(biāo)簽的分組,則查找 LFIB 表,查找對應(yīng)的LSP、出標(biāo)簽和標(biāo)簽操作,并進(jìn)行分組轉(zhuǎn)發(fā),相應(yīng)的標(biāo)簽操作應(yīng)該是標(biāo)簽交換(Swap)或標(biāo)簽彈出(Pop)。如果不是帶標(biāo)簽的分組, 則首先查找 FIB 表,若 LSP存在,則進(jìn)行與上類似的處理,相應(yīng)的標(biāo)簽操作應(yīng)該是標(biāo)簽推入(Push),若對應(yīng)的LSP不存在(原因可能是未完成LDP 協(xié)議的啟動(dòng)等),則查找路由表,對分組執(zhí)行第3層轉(zhuǎn)發(fā)。
3.虛擬路由器在 BGP/MPLS VPN 實(shí)驗(yàn)系統(tǒng)中應(yīng)用
3.1網(wǎng)絡(luò)拓?fù)涞呐渲?/p>
為了適應(yīng)大規(guī)模多用戶并發(fā)操作的要求,需要選擇合適的網(wǎng)絡(luò)拓?fù)渑渲梅桨?。首先,本文?shí)現(xiàn)的虛擬路由器支持在同一臺主機(jī)上運(yùn)行多個(gè)路由器線程,而路由器之間的通信是通過socket來實(shí)現(xiàn)的,故其所支持的用戶數(shù)量會受到一臺主機(jī)上線程和端口數(shù)目等資源的限制。其次,在大規(guī)模多用戶并發(fā)操作的過程中, 每個(gè)用戶都要獨(dú)立配置自己的網(wǎng)絡(luò)拓?fù)洌@導(dǎo)致的問題是每個(gè)實(shí)驗(yàn)者看到的網(wǎng)絡(luò)拓?fù)涫遣煌?,也即?shí)驗(yàn)者之間不能傳送數(shù)據(jù)。 因而需要尋求這樣一個(gè)配置方案,它既能讓用戶進(jìn)行獨(dú)立的配置和操作,又能提供統(tǒng)一的拓?fù)浣Y(jié)構(gòu),同時(shí)還要使軟件資源的消耗盡量少。
3.2 VRF 的配置
PE 路由器要為每個(gè)CE路由器進(jìn)行VRF表的配置,用于識別各 CE所屬的VPN。對于每一個(gè)VRF表,都需要配置路由區(qū)分符(Route Distinguisher,RD)和路由目標(biāo)(Route Target,RT)兩大屬性。當(dāng)PE路由器上的某個(gè)子接口屬于多個(gè)VPN,則多個(gè)VPN共享一個(gè)RD,CE1、CE3以及CE1、CE2之間的VPN就共享一個(gè)RD值。
4.結(jié)論
本文在研究了虛擬技術(shù)及MPLS VPN技術(shù)的基礎(chǔ)上,設(shè)計(jì)并實(shí)現(xiàn)了具有MPLS功能的虛擬路由器,并提出了一個(gè)實(shí)現(xiàn)BGP/MPLS VPN 實(shí)驗(yàn)系統(tǒng)的方案, 解決了在多用戶并發(fā)操作的情況下,軟件資源的有限性和用戶操作的獨(dú)立性之間的矛盾。在這基礎(chǔ)上,可以進(jìn)行各種網(wǎng)絡(luò)的仿真和測試工作,甚至可以構(gòu)建起一個(gè)網(wǎng)上虛擬實(shí)驗(yàn)室。在 IPv4 逐步向 IPv6發(fā)展的過程中,本文下一步的工作方向?qū)⑹强紤]如何把這些技術(shù)逐步向 IPv6過渡,如何進(jìn)一步利用 IPv6 的安全特性和QoS 特性來加強(qiáng)MPLS VPN的性能。 [科]