| 一、EVPN簡介 EVPN全稱是Ethernet VPN,它最開始由RFC7432定義,RFC的全稱是:BGP MPLS-Based Ethernet VPN,從名字上看,這是一個基于BGP和MPLS的L2 VPN。雖然這是一個2015年才有編號的RFC,但當(dāng)它還是草案時,很多廠商已經(jīng)開始實現(xiàn)EVPN。 在這之前與MPLS相關(guān)的L2 VPN標(biāo)準在很早前就提出過,這包括: ? RFC4447提出基于LDP的VPWS(Virtual Private Wire Service) ? RFC4762提出基于LDP的VPLS(Virtual Private LAN Service) ? RFC4761提出基于BGP的VPLS。 VPLS可以看成是一個full mesh(拓撲中任意兩個PE都相連)版本的VPWS。VPLS可以把SP(Service Provider)網(wǎng)絡(luò)看成一個大的Ethernet Switch,SP提供的PE端口可以看成這個大交換機的端口,而每個CE設(shè)備看成是連接在交換機上的設(shè)備。VPLS這種架構(gòu),便于用戶理解和組建網(wǎng)絡(luò),但是隨著發(fā)展,VPLS最大的問題是實現(xiàn)上很難模擬一個Ethernet交換機。 一個交換機怎么工作的?主要這幾個動作,Learn,F(xiàn)lood,F(xiàn)ilter,F(xiàn)orward。交換機自身有轉(zhuǎn)發(fā)表,記錄了MAC地址對應(yīng)的交換機端口。與路由器的路由表不一樣,這個轉(zhuǎn)發(fā)表并沒有一個控制層(control plane)寫入,而是通過數(shù)據(jù)層(data plane)的自學(xué)習(xí)建立。當(dāng)交換機收到一個Ethernet Frame,交換機首先會將Frame的源MAC和入口端口記錄在轉(zhuǎn)發(fā)表中,之后交換機根據(jù)Frame的目的MAC,查表找到相應(yīng)的端口將Frame發(fā)送出去。如果目的MAC在轉(zhuǎn)發(fā)表中不存在,那么交換機會將這個Frame發(fā)送到除了入口端口的其他所有交換機端口(Flood),在響應(yīng)設(shè)備返回的Ethernet Frame中,再記錄MAC地址和交換機端口的關(guān)系。這樣下一次發(fā)往這個MAC地址的Frame,沒有必要再經(jīng)過一次Flood。 VPLS采用同樣的方式構(gòu)建轉(zhuǎn)發(fā)表,也就是說在數(shù)據(jù)層進行flood-learn,或者說是在SP提供的WAN上進行flood-learn。同樣的,為了避免轉(zhuǎn)發(fā)表無限膨脹,還需要給轉(zhuǎn)發(fā)表設(shè)置aging,清除不活躍的轉(zhuǎn)發(fā)條目。所有這些,隨著網(wǎng)絡(luò)規(guī)模的增加,對PE和WAN網(wǎng)絡(luò)的造成了很大的負擔(dān),進而限制了VPLS的網(wǎng)絡(luò)規(guī)模。所以,盡管VPLS還有其他的問題和限制,但其沒有控制層,或者說數(shù)據(jù)層不受控制,是VPLS發(fā)展的最大問題?,F(xiàn)在都說SDN架構(gòu),數(shù)據(jù)控制分離,到這還基本沒有控制層,明顯不合適,因此EVPN被提出。EVPN架構(gòu)是在現(xiàn)有的BGP VPLS(RFC4761)方案上,參考了BGP/MPLS L3 VPN(RFC4364)的架構(gòu)提出的。我們知道SDN架構(gòu)是控制數(shù)據(jù)分離,應(yīng)用在控制層之上構(gòu)建。對于EVPN來說,控制層是MP-BGP,而EVPN可以看成是構(gòu)建在MP-BGP上的應(yīng)用。所以EVPN不僅僅是一種技術(shù)和架構(gòu),它也有應(yīng)用場景的定義。更具體的說,EVPN不僅定義了L2 VPN的一種改進方案,還定義了各個應(yīng)用場景下的行為,像multi-homing,fast convergence,auto-discovery,MAC mobility等等,這些場景都非常有意思。隨著EVPN技術(shù)的討論,EVPN也被用來傳遞IP路由信息,作為VXLAN等overlay網(wǎng)絡(luò)的控制層,用來作為數(shù)據(jù)中心互聯(lián)的控制層等。所有的這些場景和討論,在一篇文章講清楚不現(xiàn)實,講清楚起碼要一本書。本文只介紹EVPN的基本概念和簡單場景,雖然基本和簡單,這些內(nèi)容是EVPN最核心的部分。 EVI(EVPN Instance):EVPN是一種虛擬私有網(wǎng)絡(luò),那么在一套物理設(shè)備上必然可以有多個同時存在的EVPN實例,每個實例獨立存在。每個EVI連接了一組或者多組用戶網(wǎng)絡(luò),構(gòu)成一個或者多個跨地域的二層網(wǎng)絡(luò)。 ET(Ethernet Tag):剛剛說了,每個EVI可以構(gòu)成一個或者多個二層網(wǎng)絡(luò)。當(dāng)EVI包含了多個二層網(wǎng)絡(luò)時,通過Ethernet Tag來區(qū)分這些二層網(wǎng)絡(luò)。如果我們把二層網(wǎng)絡(luò)看成是廣播域的話(Broadcast Domain),那么ET就是用來區(qū)分不同廣播域的。 簡單畫了一下它們的關(guān)系。 ? Ethernet Segment:這是在CE同時連接到多個PE時才會有的概念。本文暫時不涉及多連接的情況。 ? MAC-VRF:PE上的虛擬轉(zhuǎn)發(fā)單元,類似于BGP/MPLS L3 VPN中的VRF。通過將PE抽象出多個虛擬單元,可以支持多租戶場景,使PE同時被多個EVI使用。MAC-VRF中包含了實際的MAC轉(zhuǎn)發(fā)表。 每個EVI可以連接一組或多組網(wǎng)絡(luò)。這與EVPN的三種服務(wù)模式相關(guān)。 1.2.1 VLAN-Based Service Interface 這種模式下,每個EVI只有一個廣播域,連接一組用戶網(wǎng)絡(luò)。如下圖所示: 這種模式隔離最好,每組網(wǎng)絡(luò)都是獨立的,缺點是太費EVI了,例如,一個用戶如果需要10組L2 VPN網(wǎng)絡(luò),就需要10個EVI,而通常SP能提供的EVI數(shù)量是有限的。這種模式下,在EVI內(nèi)部類似于一個FLAT網(wǎng)絡(luò)。每個MAC-VRF中只有一張MAC轉(zhuǎn)發(fā)表。 1.2.2 VLAN Bundle Service Interface 一個EVI有多個廣播域,連接了多組用戶網(wǎng)絡(luò),但是多組用戶網(wǎng)絡(luò)共用MAC轉(zhuǎn)發(fā)表。如下圖所示: 這種模式,EVI內(nèi)部類似于VLAN with SVL(Shared VLAN learning)。實際上廣播域還是一個,通過邏輯分組區(qū)分不同的VLAN。在這種模式下,每個MAC-VRF只有一張MAC轉(zhuǎn)發(fā)表,但是轉(zhuǎn)發(fā)表類似于下圖所示: 端口5連接的CE對應(yīng)了三個用戶VLAN。由于多組用戶網(wǎng)絡(luò)共用MAC轉(zhuǎn)發(fā)表,實際上是通過MAC地址來做轉(zhuǎn)發(fā)決策,因此這種模式要求所有網(wǎng)絡(luò)中MAC地址唯一。并且,EVPN連接的用戶網(wǎng)絡(luò)VLAN ID必須一致(如圖所示)。舉個例子,右邊VID11的網(wǎng)絡(luò),有一條轉(zhuǎn)發(fā)信息發(fā)送到了左邊,左邊為了實現(xiàn)多租戶隔離,只能對某一個入口網(wǎng)絡(luò)開放轉(zhuǎn)發(fā)信息,這樣才能做到多租戶隔離,而由于只有一張轉(zhuǎn)發(fā)表,EVI(更確切的說是MAC-VRF)只能允許VID11的入口網(wǎng)絡(luò)使用這條轉(zhuǎn)發(fā)信息。 1.2.3 VLAN-Aware Bundle Service Interface 一個EVI有多個廣播域,連接了多組用戶網(wǎng)絡(luò),但是每組用戶網(wǎng)絡(luò)有自己獨立的MAC轉(zhuǎn)發(fā)表。如下圖所示: 這種模式,EVI內(nèi)部類似于VLAN with IVL(Independent VLAN learning)。每個MAC-VRF有多張MAC轉(zhuǎn)發(fā)表,每張MAC轉(zhuǎn)發(fā)表對應(yīng)一個用戶網(wǎng)絡(luò)。MAC地址和ET同時用來做轉(zhuǎn)發(fā)決策,通過ET定位到MAC轉(zhuǎn)發(fā)表,再通過MAC地址在轉(zhuǎn)發(fā)表內(nèi)尋址。這種模式允許多組用戶網(wǎng)絡(luò)之間存在重復(fù)的MAC地址,并且每組網(wǎng)絡(luò)的VLAN ID可以不一致。例如,左邊VID12的轉(zhuǎn)發(fā)信息,可以直接發(fā)到VID11對應(yīng)的MAC-VRF中。這種模式能解決上面兩種模式的問題,不過就是實現(xiàn)相對來說復(fù)雜一些。 二、EVPN的實現(xiàn) EVPN的實現(xiàn)參考了BGP/MPLS L3 VPN的架構(gòu)。下圖就是一個BGP/MPLS L3 VPN的架構(gòu)。EVPN架構(gòu)在這個層面上是一樣的。 這里的控制層是指MAC轉(zhuǎn)發(fā)信息的傳遞和MAC-VRF中MAC轉(zhuǎn)發(fā)表的寫入。具體的說,就是CE1的MAC地址,怎么發(fā)送到PE2,進而讓PE2收到目的MAC是CE1 MAC地址的Ethernet Frame時,知道應(yīng)該通過Tunnel發(fā)送到PE1。 CE1 -> PE1 CE-PE之間通常還是通過數(shù)據(jù)層進行MAC 學(xué)習(xí)。也就是說,PE1需要通過解析CE1發(fā)來的數(shù)據(jù)包,讀取其中的源MAC地址,并記錄在MAC-VRF中的MAC轉(zhuǎn)發(fā)表中。通常這些數(shù)據(jù)包是設(shè)備發(fā)出的第一個數(shù)據(jù)包,例如DHCP,ARP等。采用這種傳統(tǒng)的方式,一是CE不需要關(guān)心SP網(wǎng)絡(luò)的實現(xiàn),另一個是能更好的兼容CE設(shè)備。MAC-VRF也對應(yīng)了一個RD(Route Distinguisher)和一組RT(Route Target)。RD用來區(qū)分EVPN實例的信息,RT用來過濾MAC 路由。這在之前介紹BGP/MPLS L3 VPN時有過詳細的介紹,這里就不說了。 好了,有關(guān)CE1的MAC轉(zhuǎn)發(fā)信息到達了PE1,確切的說是到達了PE1內(nèi)的MAC-VRF。 PE1 -> PE2/MP-BGP PE之間的MAC轉(zhuǎn)發(fā)信息傳遞,是通過MP-BGP來進行,也就是在EVPN內(nèi)部,MAC轉(zhuǎn)發(fā)信息是通過控制層來傳輸。這是EVPN與VPLS最核心的區(qū)別。因為EVPN內(nèi)部是SP網(wǎng)絡(luò)了,SP想怎么玩都可以。MP-BGP是BGP-4的擴展,改版多次,最新的版本由RFC4760定義。EVPN中的MP-BGP本質(zhì)上還是一個IBGP?,F(xiàn)在PE1有了CE1的MAC轉(zhuǎn)發(fā)信息,需要做的是封裝成BGP數(shù)據(jù)傳遞給PE2。首先EVPN在MP-BGP中定義了自己的地址族(AFI 25,SAFI 70)。在這個地址族下,又定義了不同的NLRI(Network Layer Reachability Information)。同時EVPN也定義了多個新的BGP Extended Community(RFC4360),具體如下表所示。 看起來似乎很多,這里我們只看Route Type 2,也就是MAC/IP route,它的NLRI信息定義如下: ? RD:RD與MAC-VRF關(guān)聯(lián),RD的作用是為了區(qū)分不同的EVI之間重復(fù)的信息,因為PE之間只有一條MP-BGP連接,但是同時存在多個EVI。RD在這里的作用與L3 VPN中一樣。 ? ESI:前面說過,Ethernet Segment是與多連接相關(guān),ESI用來區(qū)分多連接中的每條鏈路。 ? Ethernet Tag ID:Ethernet Tag ID是4個字節(jié),可以包含12bit或者24bit的標(biāo)識符。前面說過,Ethernet Tag是用來區(qū)分同一個EVI中的不同的廣播域的。只有在VLAN-Aware Bundle Service Interface下,才存在多個廣播域,Ethernet Tag ID才有意義。Ethernet Tag ID可以用來區(qū)分MAC/IP route屬于MAC-VRF中的哪張MAC轉(zhuǎn)發(fā)表。 ? MAC Address Length/MAC Address:MAC地址。這就是PE需要封裝到BGP中的數(shù)據(jù)。 ? IP Address Length/IP Address:IP地址。注意這里的IP地址是可選的,這部分在后面講ARP/ND時會再說。 ? MPLS Label:VPN label。在MPLS網(wǎng)絡(luò)中傳輸時的內(nèi)層標(biāo)簽。在數(shù)據(jù)層,PE根據(jù)MPLS label將收到的Ethernet Frame發(fā)送到相應(yīng)的MAC-VRF,進而發(fā)送到對應(yīng)的CE。 MAC/IP route還必須帶上一到多個作為Extended community存在的RT。 PE1將這個MAC/IP route發(fā)送到PE2。與L3 VPN中的作用一樣,PE2通過MAC/IP route中帶的RT和自身的MAC-VRF的RT進行匹配,定位到哪些MAC-VRF接收這條路由。由于MAC-VRF可能存在多個轉(zhuǎn)發(fā)表,因此可能還需要ET ID來確定路由具體寫入到哪個轉(zhuǎn)發(fā)表。 到此為止,PE1通過MP-BGP將MAC轉(zhuǎn)發(fā)信息寫到了PE2。現(xiàn)在PE2上的MAC-VRF知道了,對應(yīng)的MAC應(yīng)該轉(zhuǎn)發(fā)到PE1上。 PE2 控制層數(shù)據(jù)到PE2 就結(jié)束了。前面介紹PE1傳給PE2的MAC/IP route中,有一個可選的IP地址項。如果IP地址也隨著MAC/IP route傳輸?shù)搅薖E2,那么PE2已經(jīng)有了響應(yīng)ARP request的全部信息。此時,如果PE2收到了ARP request,沒有必要廣播出去。因此,EVPN定義PE2可以支持ARP proxy,這樣可以避免ARP request在骨干網(wǎng)上廣播,減少不必要的廣播信息。 這是控制層MAC學(xué)習(xí)帶來的好處。在VPLS模式下,PE2沒有辦法事先知道CE1的IP/MAC,只能通過ARP request廣播來獲取響應(yīng)。 接下來看一下數(shù)據(jù)層,例如CE2如何ping到CE1。 CE2 -> PE2 在ping之前,CE2因為不知道CE1的MAC地址,必須要先發(fā)送ARP request,通過CE1的IP地址查詢CE1的MAC地址。前面說過PE2可以配置ARP proxy,這樣PE2收到ARP request之后,直接將CE1的MAC地址放在ARP response中回送給CE2。CE2拿到MAC地址,組裝Ethernet Header,將ping包發(fā)送到PE2。 PE2 -> PE1 PE2的MAC-VRF記錄了MAC的轉(zhuǎn)發(fā)信息,因此PE2知道,目的MAC是CE1 MAC的Ethernet Frame應(yīng)該發(fā)送到PE1。PE2->PE1這部分實際上是跑在SP網(wǎng)絡(luò)上。在EVPN下,定義了三種數(shù)據(jù)層。 
 先假設(shè)用MPLS作為數(shù)據(jù)層,VXLAN作為數(shù)據(jù)層以后有機會再單獨介紹。 前面在控制層MAC/IP route中帶的MPLS Label(VPN Label)在這里有用處了。它會被加到ping包中,之后為了在MPLS網(wǎng)絡(luò)中傳輸,還會在MPLS Label Stack中加上Public Label。中間通過MPLS傳輸,這就是一個普通的MPLS unicast傳輸。到達PE1的,實際上是帶上了VPN Label的ping包。 PE1 -> CE1 PE1收到的帶VPN Label的ping包。這個VPN Label是PE1通過MP-BGP發(fā)往PE2的。因此,PE1必然知道這個VPN Label應(yīng)該對應(yīng)自己的哪個MAC-VRF。所以,VPN Label被剝離,ping包被發(fā)往相應(yīng)的MAC-VRF,通過讀取MAC-VRF中的MAC轉(zhuǎn)發(fā)表,發(fā)往相應(yīng)的端口,也就是CE1。這樣,CE2 ping到了CE1。 這就是EVPN架構(gòu)中最基本的內(nèi)容??偟膩碚f,EVPN架構(gòu)與BGP/MPLS L3 VPN是一樣的。只是這里的轉(zhuǎn)發(fā)信息是MAC轉(zhuǎn)發(fā)信息,而L3 VPN中的轉(zhuǎn)發(fā)信息是IP prefix轉(zhuǎn)發(fā)信息。 三、EVPN的發(fā)展 EVPN的流行不僅在于它為L2 VPN帶來的改進,更多在于EVPN提供了一個L2層網(wǎng)絡(luò)的控制層。具體可以概括為以下幾點: ? 可以通過控制層學(xué)習(xí)L2和L3的可達信息。傳統(tǒng)的控制層只有L3的可達信息。 ? 通過MAC/IP route和ARP代理,減少網(wǎng)絡(luò)廣播。 ? 完整的多連接場景定義。 ? 完整的BUM數(shù)據(jù)發(fā)送的優(yōu)化定義。 ? 支持MAC遷移。 ? 支持拓撲自發(fā)現(xiàn)。 ? 支持多租戶。 隨著發(fā)展,EVPN開始支持更多的場景,EVPN新增了Route type 5,用來傳輸IP prefix 路由信息;作為overlay網(wǎng)絡(luò),例如VXLAN,的控制層;應(yīng)用在數(shù)據(jù)中心互聯(lián)的場景等,雖然相應(yīng)的標(biāo)準還沒有最終確定,但是IETF草案已經(jīng)討論改版多次。以后有機會可以再探討這些內(nèi)容。 | 
|  | 
來自: 王宇w3j0f3o2vv > 《待分類》