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