1、MPLS提出的意義
傳統的IP數據轉發是基于逐跳式的,每個轉發數據的路由器都要根據IP包頭的目的地址查找路由表來獲得下一跳的出口,這是個繁瑣又效率低下的工作,主要的原因是兩個:1、有些路由的查詢必須對路由表進行多次查找,這就是所謂的遞歸搜索;2、由于路由匹配遵循最長匹配原則,所以迫使幾乎所有的路由器的交換引擎必須用軟件來實現,用軟件實現的交換引擎和ATM交換機上用硬件來實現的交換引擎在效率上無法相抗衡。
當今的互聯網應用需求日益增多,對帶寬、對時延的要求也越來越高。如何提高轉發效率,各個路由器生產廠家做了大量的改進工作,如Cisco在路由器上提供CEF(Cisco Express Forwarding)功能、修改路由表搜索算法等等。但這些修補并不能完全解決目前互聯網所面臨的問題。
IP和ATM曾經是兩個互相對立的技術,各個IP設備制造商和ATM設備制造商都曾努力想吃掉對方,想IP一統天下,或者ATM一家獨秀!但是最終是這兩種技術的融合,那就是MPLS(Multi-Protocol Label Switching)技術的誕生!MPLS技術結合和IP技術信令簡單和ATM交換引擎高效的優點!
2、MPLS技術的實現細節
2.1 標簽結構
IP設備和ATM設備廠商實現MPLS技術是在各自原來的基礎上做的,對于IP設備商,它修改了原來IP包直接封裝在二層鏈路幀中的規范,而是在二層和三層包頭之間插了一個標簽(Label),而ATM設備制造商利用了原來ATM交換機上的VPI/VCI的概念,在使用Label來代替了VPI/CVI,當然ATM交換機上還必修改信令控制部分,引入了路由協議,ATM交換使用了路由協議來和其他設備交換三層的路由信息。
圖 1 路由協議標簽結構
20比特的LABEL字段用來表示標簽值,由于標簽是定長的,所以對于路由器來說,可以分析定長的標簽來做數據包的轉發,這是標簽交換的最大優點,定長的標簽就意味這可以用硬件來實現數據轉發,這種硬件轉發方式要比必須用軟件實現的路由最長匹配轉發方式效率要高得多!
3比特的EXP用來實現QOS
1比特S值用來表示標簽棧是否到底了,對于VPN,TE等應用將在二層和三層頭之間插入兩個以上的標簽,形成標簽棧。
8比特TTL值用來防止數據在網上形成環路。
圖 2 帶有標簽的二層幀形式
圖 3 ATM信元模式下的信元結構形式
2.2 LSR設備的體系結構
通過修改,能支持標簽交換的路由器為LSR(Label Switch Router),而支持MPLS功能的ATM交換機我們一般稱之為ATM-LSR。
圖 4 LSR設備的體系結構
LSR的體系結構分為兩塊:
。1) 控制平面(Control Plane)
該模塊的功能是用來和其他LSR交換三層路由信息,以此建立路由表;和交換標簽對路由的綁定信息,以此建Label Information Table(LIB)標簽信息表。同時再根據路由表和LIB生成Forwarding Information Table(FIB)表和Label Forwarding Information Table(LFIB)表。控制平面也就是我們一般所說的路由引擎模塊!
(2) 數據平面(Data Plane)
數據平面的功能主要是根據控制平面生成的FIB表和LFIB表轉發IP包和標簽包。
對于控制平面中所使用的路由協議,可以使用以前的任何一種,如OSPF、RIP、BGP等等,這些協議的主要功能是和其他設備交換路由信息,生成路由表。這是實現標簽交換的基礎。在控制平面中導入了一種新的協議—LDP,該協議的功能是用來針對本地路由表中的每個路由條目生成一個本地的標簽,由此生成LIB表,再把路由條目和本地標簽的綁定通告給鄰居LSR,同時把鄰居LSR告知的路由條目和標簽幫定接收下來放到LIB表里,最后在網絡路由收斂的情況下,參照路由表和LIB表的信息生成FIB表和LFIB表。具體的標簽分發模式如下敘述。
2.3 標簽的分配和分發
上面敘述到了,MPLS技術是IP技術和ATM技術的融合。LSR和ATM-LSR上實現標簽的生成和分發是有點不同的。
2.3.1 包模式(Packet Mode)下的標簽的分配和分發
對于實現包模式MPLS網絡中,是下游LSR獨立生成路由條目和標簽的綁定,并且是主動分發出去的。
圖 5 LSR上的動態平衡
如上圖,所有LSR上啟動了LDP協議。以LSR-B為例,它已經通過路由協議獲得網絡X的路由了,一旦啟動LDP協議,LSR-B立即查找路由表,如果X網絡的路由是由IGP路由協議學到的,則在LIB表中為通向X網絡的路由生成一個本地標簽25,由于LSR-B和LSR-A、LSR-C、LSR-E形成了LDP鄰居關系,所以下游LSR-B會主動給所有的鄰居發送這個X=25的路由條目和標簽的綁定!LSR-A、LSR-E、LSR-C會把該路由條目和標簽的綁定放置到本地的LIB表中,再結合本地的路由表,在FIB表中生成有關X網絡的“網絡地址->出標簽”條目,在LFIB中生成有關X網絡的“進標簽->出標簽”條目。所有的LSR上都如此操作。最終的結果使整個MPLS網絡內部所有LSR上達到路由表、LIB表、FIB表、LFIB表的動態平衡。
如果LSR-A接收到要去X網段的數據,由于LSR-A處在MPLS網絡的邊緣,必須查找FIB表,對接收到的IP包,做標簽插入操作。對于LSR-B,LSR-C則純粹是分析標簽包,對包頭的標簽做轉換,在轉發標簽包而已。數據到了LSR-D,該邊緣LSR會去掉標簽包中的標簽,再對恢復的IP包做轉發。
圖 6 LSR數據流向
2.3.2 信元模式(Cell Mode)下的標簽分配和分發
在信元模式下,下游ATM-LSR接收到了上游ATM-LSR標簽綁定請求后,下游受控分配標簽,被動向上游分發標簽。
圖 7 信元模式下的標簽分配和分發
最上游的LSR-A向ATM-LSR-B發起對網絡X的標簽求情,ATM-LSR-B再向ATM-LSR-C發請求,最后請求到達LSR-D,LSR-D生成本地對X網絡的標簽1/37,把該標簽告訴ATM-LSR-C,C做同樣操作,這樣一步一步到達LSR-A。最終生成一條從A->B->C->D的LSP(Label Switch Path)。這樣如果A收到要到X網絡的數據,A就把IP數據包分割成帶有標簽的信元,通過ATM接口發送到B,接下來B和C就純粹做ATM信元的轉發,到了D后再把信元組合成IP數據包,發向網絡X。
在此要強調的如果要組建以ATM交換機為核心的MPLS網絡,那么在ATM網絡的邊緣必須設置路由器,原因在于ATM交換機只轉發信元,無法處理用戶數據IP包。當然上面也提到要在ATM交換機上實現MPLS功能,必須在ATM交換機的信令控制部分加入路由協議,而路由信息包往往是打在IP包中的,如RIP,OSPF,BGP等路由協議。ATM交換機為了確保這些以IP包形式傳遞的路由信息能夠在ATM交換機間傳遞,使用了專門的帶外連接通道或者帶內的管理VC。
2.4 BGP協議在MPLS網絡中的特殊應用
上面提到LSR根據路由表分配標簽時,只對從IGP協議獲得的路由條目分配標簽。原因何在?
圖 8 Transit AS中的MPLS交換
整個Transit AS中啟動MPLS交換。保證ISP2和LSR-Border2之間的網段發布到Transit AS內部的IGP路由協議中,對ISP1和LSR-Border2之間的網段也做同樣的要求。前面提到過LSR為路由條目分配標簽時,只對從IGP學來的路由分配標簽,而網絡1.2.3.4是被發布到Transit AS內部的IGP路由協議中了,可以肯定在Border1處是可以獲得Core1告訴它有關1.2.3.4網絡的標簽23。LSR-Border1,LSR-Border2之間形成IBGP鄰居關系,通過BGP協議,LSR-Border2把從ISP2處學來的10.0.0.0/8這條路由告訴給LSR-Border1,這條路由的下一跳地址是1.2.3.4,這樣一來讓LSR-Border1得知要給網絡10.0.0.0/8發送數據,先把數據發送到1.2.3.4這個網絡來。1.2.3.4被綁定了標簽23,所以在生成FIB表時,也給10.0.0.0/8這個網段綁定一個標簽23。這樣,如果有數據從ISP1穿越Transit AS到達ISP2,在Border1處就會給IP包插上23這個標簽,把生成的標簽包轉發到Core1,Core1就只要分析標簽頭做標簽包的轉發就可以了!由于Transit AS內部核心路由器不必要運行BGP協議,這樣一來,MPLS網絡的核心路由器就不會知道外部用戶的路由,縮小了核心路由器的路由表,提高了搜索效率。大家也看到,由于打上了標簽,IP包頭是不會在核心路由器被分析的,即使IP包頭含有10.0.0.1這樣的私有IP地址,也會因為只分析標簽的原因被正常轉發,這就是服務提供商提供VPN服務所追求的。當然在此必須重聲,LSP在整個Transit AS不能被斷開,如果斷開,標簽包就恢復成IP包,而核心路由器是不含用戶路由的,最終導致數據包的丟失。
BGP在MPLS網絡中的作用為我們提供了VPN服務打開了方便之門,但也應該意識到VPN服務兩個最基本的要求是1.用戶可以獨立規劃IP地址;2.安全性非常重要。
圖 9 VPN數據傳輸
以上為兩個VPN實例,PE1(PE=Provider Edge device)上分別接了CE1 (CE=Customer Edge device)和CE3,但是CE1和CE3上帶到IP地址相同的網段10.1.2.0/8,很明顯如果不對PE1路由器做修改,PE1只能認為往10.1.2.0/8的數據要么從S0出,要么從S1出,這樣的話,不是CE1就是CE3就更本收不到從PE1發來的前往10.1.2.0/8網段的數據!
如果不對BGP4協議做修改,那么PE2和PE3發送給的PE1的有關10.1.1.0/8網絡的路由更新就有可比性,PE1最終會選擇一條路由,認為或是PE2或者PE3是發送數據到10.1.1.0/8的必經路由器。這樣如果CE1帶的10.1.2.0/8網段上的主機給10.1.1.0/8網段上的主機發送數據時,可能會發到CE4所帶的10.1.1.0/8的網段上,這樣造成了數據泄露。
所以,為了使LSR能提供基于MPLS的VPN服務,還必須對此類設備做修改。
3、基于MPLS的VPN實現
3.1 VPN的歷史
圖10 VPN體系
VPN服務是很早就提出的概念,不過以前電信提供商提供VPN是在傳輸網上提供的覆蓋型的VPN服務。電信運營商給用戶出租線路,用戶上層使用何種的路由協議、路由怎么走等等,這些電信運營商不管。這種租用線路來搭建VPN的好處是安全,但是價格昂貴,線路資源浪費嚴重。
后來隨著IP網絡的全面鋪開,電信服務提供商在競爭的壓力下,不得不提供更加廉價的VPN服務,也就是三層VPN服務。通過提供給用戶一個IP平臺,用戶通過IP Over IP的封裝格式在公網上打隧道,同時也提供了加密等等的手段提供安全保障。這類VPN用戶在目前的網絡上數量還是相當巨大的!但是這類VPN服務因大量的加密工作、傳統路由器根據IP包頭的目的地址轉發效率不高等等的原因不是非常令人滿意。
MPLS技術的出現和BGP協議的改進,讓大家看到了另一種實現VPN的曙光。
3.2 MPLS/VPN體系結構
3.2.1 PE路由器的改造和VRF的導入
為了讓PE路由器上能區分是哪個本地接口上送來的VPN用戶路由,在PE路由器上創建了大量的虛擬路由器,每個虛擬路由器都有各自的路由表和轉發表,這些路由表和轉發表統稱為VRF(VPN Routing and Forwarding instances)。一個VRF定義了連到PE路由器上的VPN成員。VRF中包含了IP路由表,IP轉發表(也成為CEF表),使用該CEF表的接口集和路由協議參數和路由導入導出規則等等。
在VRF中定義的和VPN業務有關的兩個重要參數是RD(Route Distinguisher)和RT(Route Target)。RD和RT長度都是64比特。
有了虛擬路由器就能隔離不同VPN用戶之間的路由,也能解決不同VPN之間IP地址空間重疊的問題。
3.2.2 MP-BGP協議對VPN用戶路由的發布
圖 11 MP-BGP協議對VPN用戶路由的發布
正常的BGP4協議能只傳遞IPv4的路由,由于不同VPN用戶具有地址空間重疊的問題,必須修改BGP協議。BGP最大的優點是擴展性好,可以在原來的基礎上再定義新的屬性,通過對BGP修改,把BGP4擴展成MP-BGP。在MP-IBGP鄰居間傳遞VPN用戶路由時打上RD標記,這樣VPN用戶傳來的IPv4路由轉變為VPNv4路由,這樣保證VPN用戶的路由到了對端的PE上,能夠使對端PE區分開地址空間重疊但不同的VPN用戶路由。例子如下:
在PE1、PE2、PE3上分別配置VRF參數,其中VPN1用戶的RD=6500:1,RT=100:1,VPN2用戶的RD=6500:2、RT=100:2。所有VRF可以同時 導入和導出所定義的RT。
以PE2為例,PE2從接口S0上獲得由CE4傳來的有關10.1.1.0/8的路由,PE2把該路由放置到和S0有關的VRF所管轄的IP路由表中,并且分配該路由的本地標簽,注意該標簽是本地唯一的。通過路由重新發布把VRF所管轄的IP路由表中的路由重新發布到BGP表中,此時通過參考VRF表的RD、RT參數,把正常的IPv4路由變成VPNv4路由,如10.1.1.0/8變成6500:1:10.1.1.0/8,同時把導出(Export)RT值和該路由的本地標簽值等等的屬性全部加到該路由條目中去。通過MP-IBGP會話,PE2把這條VPNv4路由發送的PE1處,PE1收到了兩條有關10.1.1.0/8的路由,其中一條是由PE3發來的,由于RD的不同,導致該兩條路由沒有可比性。MP-BGP接受到該兩條路由后的后繼工作是:去掉VPN4路由所帶的RD值,使之恢復IPv4路由原貌,并且根據各VRF配置的允許導入(Import)的RT值,把IPv4倒到各個VRF管轄的路由表和CEF表中,也就是說帶有RT=100:1的10.1.1.0/8的路由倒到VRF1所管的路由表和CEF表中,帶有RT=100:2的10.1.1.0/8的路由倒到VRF2所管轄的路由表和CEF表中。再通過CE和PE之間的路由協議,PE把不同的VRF管轄的路由表內容通告的各自的相聯的CE中去。
目前PE和CE之間可支持的路由協議只有四種BGP、OSPF、RIP2或者靜態路由。
3.2.3 MPLS/VPN中標簽分組的轉發
通過MP-BGP協議各個VPN用戶路由器學習到正確的路由,現在看看如何轉發用戶數據的。
圖 12 MP-BGP協議下VPN用戶路由器數據轉發
(1)CE1接收到發往10.1.1.1的IP數據包,查詢路由表,把該IP數據包發送到PE1。
。2)PE1從S1口上收到IP數據包后,根據S1所在的VRF,查詢對應的CEF表,數據包打上標簽8,注意該標簽就是通過MP-BGP協議傳來的。PE1繼續查詢全局CEF表,獲知要把數據發往10.1.1.1,必須先發送到PE2,而要發送到PE2,則必須打上由P1告知的標簽2。所以該IP包被打上了兩個標簽。
。3)P1接收到標簽包后,分析頂層的標簽,把頂層標簽換成4,繼續發送的P2。
。4)P2和P1一樣做同樣的操作,由于次末中繼彈出機制,P2去掉標簽4,直接把只帶有一個標簽的標簽包發送的PE2。
。5)PE2收到標簽包后,分析標簽頭,由于該標簽8是它本地產生的,而且是本地唯一的,所以PE2很容易查出帶有標簽8的標簽包應該去掉標簽,恢復IP包原貌,從S1端口發出。
。6)CE2獲得IP數據包后,進行路由查找,把數據發送到10.1.1.0/8網段上。
4、MPLS/VPN配置實例
要提供VPN服務的前提是:服務提供商的網絡必須啟用標簽交換功能,即把以前的數據網絡升級為MPLS網絡。然后具體配置PE,PE上的配置按六步走:
。1)定義并且配置VRF
。2)定義并且配置RD
(3)定義RT,并且配置導入導出策略
。4)配置MP-BGP協議
。5)配置PE到CE的路由協議
。6)配置連接CE的接口,將該接口和前面定義的VRF聯系起來。
圖 13 VPN協議配置
上圖中CE1、CE2、CE3組成一個VPN,其中PE3和CE3之間走RIP2協議,PE2和CE2之間走BGP協議。整個As 6500中走OSPF協議。
PE3的部分配置如下:
ip cef ──啟用CEF轉發功能
ip vrf Red ──定義一個 VRF ,名字為Red
description For Red User Vpn
rd 6500:1 ──定義RD值為6500:1
route-target export 6500:1 ──定義導出策略
route-target import 6500:1 ──定義導入策略
router rip ──配置PE3到CE3的路由協議RIP2
version 2 !
address-family ipv4 vrf Red version 2 redistribute bgp 6500 metric 1──-將BGP學到的路由從新發布的RIP2中,network 192.168.1.0 使CE3能學到同一VPN中的其他路由
no auto-summary
exit-address-family
router bgp 6500 ──-配置BGP協議
no synchronization
no bgp default ipv4-unicast
bgp log-neighbor-changes
neighbor 192.168.168.2 remote-as 6500 ──-和PE2建立鄰居關系
neighbor 192.168.168.2 update-source Loopback0
no auto-summary !
address-family ipv4 vrf Red ────為VPN用戶配置IPv4地址家族,使
redistribute rip metric 1 VRF Red 所管轄的路由表中的路由從新發布到BGP協議中去。
no auto-summary
no synchronization
exit-address-family !
address-family vpnv4 ────具體配置和PE2的關系,使PE3和PE2之間能交換VPNv4路由
neighbor 192.168.168.2 activate
neighbor 192.168.168.2 send-community both
no auto-summary
exit-address-family
interface Ethernet0/1 ────-配置連接CE3的接口
ip vrf forwarding Red ────-使該接口和前面定義的VRF Red聯系起來
ip address 192.168.1.17 255.255.255.252
interface Ethernet0/0 ──-配置聯系到7206上接口
ip address 192.168.1.10 255.255.255.252
half-duplex
tag-switching ip ──-在該接口上啟用標簽交換 !
PE2上的部分配置如下:
ip cef ──啟用CEF轉發功能
ip vrf Red ──定義一個 VRF ,名字為Red description For Red User Vpn
rd 6500:1 ──定義RD值為6500:1
route-target export 6500:1 ──定義導出策略
route-target import 6500:1 ─-定義導入策略!
同時上傳附件router bgp 6500 ─-配制BGP協議
no synchronization
no bgp default ipv4-unicast
bgp log-neighbor-changes
neighbor 192.168.168.4 remote-as 6500
neighbor 192.168.168.4 update-source Loopback0
neighbor 192.168.168.4 next-hop-self
──這點在PE-CE之間路由協議為BGP時,一定要配置。
no auto-summary !
address-family ipv4 vrf Red
neighbor 10.10.40.1 remote-as 6504 ──配置和CE2之間的路由協議BGP
neighbor 10.10.40.1 activate
no auto-summary
no synchronization
exit-address-family !
address-family vpnv4
neighbor 192.168.168.4 activate ──激活和PE3的MP-IBGP鄰居關系
neighbor 192.168.168.4 send-community both
no auto-summary
exit-address-family !
interface Serial1/0 ──-配置連接到CE2的接口
ip vrf forwarding Red ──把該接口和VRF Red聯系起來
ip address 10.10.40.2 255.255.255.252
interface Ethernet0/1 ──配置連接到7206的接口
ip address 192.168.1.13 255.255.255.252
half-duplex
tag-switching ip ──在此接口上啟用標簽交換
interface Serial1/1 ──-配置連接到PE1的接口
bandwidth 1544
ip address 10.10.30.2 255.255.255.252
encapsulation ppp
tag-switching ip ──在此接口上啟用MPLS交換
5、總結
上面的配置展現了在單個AS內部實現VPN的配置,當然VPN用戶的各個接入點往往是地域跨度很大的,所以經常要涉及到跨AS提供VPN業務的需求。這樣的配置會更加復雜,而且需要各個電信運營商配合行動才行,這里就不在具體展開敘述了。
MPLS是一種結合了鏈路層和IP層優勢的新技術。在MPLS網絡上不僅僅能提供VPN業務,也能夠開展QOS、TE、組播等等的業務。
目前中國聯通已經在大規模地在提供基于MPLS技術的VPN業務,其他運營商,如中國電信等也在迎頭趕上。很快地,就象WWW技術一樣,MPLS技術將會影響我們生活的方方面面!
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.lukmueng.com/
本文標題:MPLS VPN技術原理