BGP/MPLS IP VPN基本概念
Site
在介紹VPN時經常會提到“Site”,Site(站點)的含義可以從下述幾個方面理解:
· Site是指相互之間具備IP連通性的一組IP系統,並且,這組IP系統的IP連通性不需通過運營商網絡實現。
如圖2-2所示,左半邊的網絡中,A市X公司總部網絡是一個Site,B市X公司分支機構網絡是另一個Site。這兩個網絡各自內部的任何IP設備之間不需要通過運營商網絡就可以互通。
· Site的划分是根據設備的拓撲關系,而不是地理位置,盡管在大多數情況下一個Site中的設備地理位置相鄰。地理位置隔離的兩組IP系統,如果它們使用專線互聯,不需要通過運營商網絡就可以互通,這兩組IP系統也組成一個Site。
如圖2-2所示,右半邊網絡,B市的分支機構網絡不通過運營商網絡,而是通過專線直接與A市的總部相連,則A市的總部網絡與B市的分支機構網絡構成了一個Site。
· 一個Site中的設備可以屬於多個VPN,換言之,一個Site可以屬於多個VPN。
如圖2-3所示,X公司位於A市的決策部網絡(Site A)允許與位於B市的研發部網絡(Site B)和位於C市的財務部網絡(Site C)互通。但是不允許Site B與Site C互通。這種情況下,可以構建兩個VPN(VPN1和VPN2),Site A和Site B屬於VPN1,Site A和Site C屬於VPN2。這樣,Site A就屬於多個VPN。
· Site通過CE連接到運營商網絡,一個Site可以包含多個CE,但一個CE只屬於一個Site。
根據Site的情況,建議CE設備選擇方案如下:
如果Site只是一台主機,則這台主機就作為CE設備;
如果Site是單個子網,則使用交換機作為CE設備;
如果Site是多個子網,則使用路由器作為CE設備。
對於多個連接到同一運營商網絡的Site,通過制定策略,可以將它們划分為不同的集合(set),只有屬於相同集合的Site之間才能通過運營商網絡互訪,這種集合就是VPN。
地址空間重疊
VPN是一種私有網絡,不同的VPN獨立管理自己的地址范圍,也稱為地址空間(address space)。不同VPN的地址空間可能會在一定范圍內重合,例如,VPN1和VPN2都使用10.110.10.0/24網段地址,這就發生了地址空間的重疊(address spaces overlapping)。
以下兩種情況允許VPN使用重疊的地址空間:
· 兩個VPN沒有共同的Site
· 兩個VPN有共同的Site,但此Site中的設備不與兩個VPN中使用重疊地址空間的設備互訪
VPN實例
在BGP/MPLS IP VPN中,不同VPN之間的路由隔離通過VPN實例(VPN-instance)實現。
PE為每個直接相連的Site建立並維護專門的VPN實例,VPN實例中包含對應Site的VPN成員關系和路由規則。具體來說,VPN實例中的信息包括:IP路由表、標簽轉發表、與VPN實例綁定的接口以及VPN實例的管理信息。VPN實例的管理信息包括RD(Route Distinguisher,路由標識符)、路由過濾策略、成員接口列表等。
VPN、Site、VPN實例之間的關系如下:
· VPN是多個Site的組合。一個Site可以屬於多個VPN。
· 每一個Site在PE上都關聯一個VPN實例。VPN實例綜合了它所關聯的Site的VPN成員關系和路由規則。多個Site根據VPN實例的規則組合成一個VPN。
· VPN實例與VPN不是一一對應的關系,VPN實例與Site之間存在一一對應的關系。
VPN實例也稱為VPN路由轉發表VRF(VPN Routing and Forwarding table)。PE上存在多個路由轉發表,包括一個公網路由轉發表,以及一個或多個VPN路由轉發表。如圖2-4所示。
公網路由轉發表與VPN實例存在以下不同:
· 公網路由表包括所有PE和P設備的IPv4路由,由骨干網的路由協議或靜態路由產生。
· VPN路由表包括屬於該VPN實例的所有Site的路由,通過CE與PE之間或者兩個PE之間的VPN路由信息交互獲得。
· 公網轉發表是根據路由管理策略從公網路由表提取出來的轉發信息;而VPN轉發表是根據路由管理策略從對應的VPN路由表提取出來的轉發信息。
可以看出,PE上的各VPN實例之間相互獨立,並與公網路由轉發表相互獨立。
可以將每個VPN實例看作一台虛擬的設備,維護獨立的地址空間並有連接到私網的接口。
RD和VPN-IPv4地址
傳統BGP無法正確處理地址空間重疊的VPN的路由。假設VPN1和VPN2都使用了10.110.10.0/24網段的地址,並各自發布了一條去往此網段的路由。雖然本端PE通過不同的VPN實例可以區分地址空間重疊的VPN的路由,但是這些路由發往對端PE后,由於不同VPN的路由之間不進行負載分擔,因此對端PE將根據BGP選路規則只選擇其中一條VPN路由,從而導致去往另一個VPN的路由丟失。
PE之間使用MP-BGP(Multiprotocol Extensions for BGP-4,BGP-4的多協議擴展)來發布VPN路由,並使用VPN-IPv4地址來解決上述問題。
VPN-IPv4地址共有12個字節,包括8字節的路由標識符RD(Route Distinguisher)和4字節的IPv4地址前綴,如圖2-5所示。
RD用於區分使用相同地址空間的IPv4前綴,增加了RD的IPv4地址稱為VPN-IPv4地址(即VPNv4地址)。PE從CE接收到IPv4路由后,轉換為全局唯一的VPN-IPv4路由,並在公網上發布。
RD的結構使得每個服務供應商可以獨立地分配RD,但為了在CE雙歸屬的情況下保證路由正常,必須保證PE上的RD全局唯一。如圖2-6所示,CE以雙歸屬方式接入到PE1和PE2。PE1同時作為路由反射器RR(Route Reflector)。
該組網中,PE1作為骨干網邊界設備發布一條IPv4前綴為10.1.1.1/8的VPN-IPv4路由給PE3。同時又作為RR反射PE2發布的IPv4前綴為10.1.1.1/8的VPN-IPv4路由給PE3。
· 如果該VPN在PE1和PE2上的RD一樣,由於目的地址相同,PE3只保留一條到10.1.1.1/8的VPN-IPv4路由,其路徑為:PE3—>PE1->CE。
· 當PE1與CE之間的直連鏈路出現故障時,PE3刪除到10.1.1.1/8的VPN-IPv4路由,無法正確轉發到該目的地址的VPN數據。而實際上PE3應該有一條到10.1.1.1/8的路由,其路徑為:PE3—>PE1—>PE2->CE。
· 如果該VPN在PE1和PE2上的RD不同,則PE3從PE1接收的到10.1.1.1/8兩條VPN-IPv4路由的目的地址不同,因此PE3上保留兩條到10.1.1.1/8的VPN-IPv4路由。當PE1與CE之間的任何一條鏈路出現故障時,PE3將刪除其中對應的一條,仍保留另一條,使得到10.1.1.1/8的數據能正確轉發。
VPN Target
BGP/MPLS IP VPN使用BGP擴展團體屬性-VPN Target(也稱為Route Target)來控制VPN路由信息的發布。
每個VPN實例關聯一個或多個VPN Target屬性。有兩類VPN Target屬性:
· Export Target:本地PE從直接相連Site學到IPv4路由后,轉換為VPN-IPv4路由,並為這些路由設置Export Target屬性。Export Target屬性作為BGP的擴展團體屬性隨路由發布。
· Import Target:PE收到其它PE發布的VPN-IPv4路由時,檢查其Export Target屬性。當此屬性與PE上某個VPN實例的Import Target匹配時,PE就把路由加入到該VPN實例中。
在BGP/MPLS IP VPN網絡中,通過VPN Target屬性來控制VPN路由信息在各Site之間的發布和接收。VPN Export Target和Import Target的設置相互獨立,並且都可以設置多個值,能夠實現靈活的VPN訪問控制,從而實現多種VPN組網方案。
例如:某VPN實例的Import Target包含100:1,200:1和300:1,當收到的路由信息的Export Target為100:1、200:1、300:1中的任意值時,都可以被注入到該VPN實例中