L3 VNI

WHY

前幾天哥們?cè)诳碫xLAN,看到L3 VNI感覺(jué)很疑惑,就問(wèn):為什么需要L3 VNI?

這個(gè)問(wèn)題在我17年學(xué)習(xí)VxLAN時(shí)也同樣疑惑了很久,對(duì)著CiscoLive上的文檔看了半天沒(méi)看明白,同時(shí)當(dāng)時(shí)沒(méi)看明白的還有對(duì)稱、非對(duì)稱IRB(Integrated Routing and Bridge)。

正好前段時(shí)間搭建cloudcampus環(huán)境,園區(qū)網(wǎng)部分用到的就是VxLAN,在環(huán)境搭建中又重新研究了一遍VxLAN,發(fā)現(xiàn)回到二三層轉(zhuǎn)發(fā)的本質(zhì)看VxLAN的轉(zhuǎn)發(fā),當(dāng)時(shí)困惑的問(wèn)題就很清晰了。

(題外話:H記的方向是數(shù)據(jù)中心交換機(jī)支持VxLAN,但是園區(qū)網(wǎng)主推的解決方案中沒(méi)有涉及到VxLAN,但是很多其他廠家的智慧園區(qū)網(wǎng)解決方案中都上了VxLAN,為了對(duì)標(biāo)解決方案,只能在園區(qū)網(wǎng)交換機(jī)上新開(kāi)發(fā)了VxLAN功能。H記園區(qū)網(wǎng)交換機(jī)、數(shù)據(jù)中心交換機(jī)特性差距還是很大,不同的研發(fā)團(tuán)隊(duì),想想也是蠻有趣,不過(guò)還是要感謝這個(gè)“強(qiáng)行的”上的特性,不然我也沒(méi)機(jī)會(huì)實(shí)際環(huán)境中搞一搞VxLAN)。

傳統(tǒng)VLAN三層轉(zhuǎn)發(fā)

VxLAN我們叫做MAC in UDP,本質(zhì)還是基于MAC的轉(zhuǎn)發(fā),只是轉(zhuǎn)發(fā)的接口從交換機(jī)的物理接口變成了VxLAN Tunnel的接口,所以如果只是二層轉(zhuǎn)發(fā)的VxLAN從轉(zhuǎn)發(fā)平面原理上來(lái)看,和傳統(tǒng)二層交換機(jī)轉(zhuǎn)發(fā)沒(méi)多大區(qū)別(VxLAN二層轉(zhuǎn)發(fā)也不涉及到L3 VNI)。

區(qū)別就在于三層轉(zhuǎn)發(fā)時(shí),VxLAN多了一個(gè)分布式網(wǎng)關(guān),這和傳統(tǒng)的交換機(jī)VLANIF(SVI)接口三層轉(zhuǎn)發(fā)就存在一些區(qū)別了,不過(guò)本質(zhì)還是有很多相同點(diǎn),所以先回顧下交換機(jī)使用VLANIF(SVI)接口的細(xì)節(jié)。

VLANIF實(shí)現(xiàn)VLAN間通信


以上面最簡(jiǎn)單的topo為例:

host1、host2分別連接在交換機(jī)的VLAN 10、VLAN 20接口上,交換機(jī)創(chuàng)建VLANIF10 20接口作為VLAN 10、VLAN 20的網(wǎng)關(guān)(這里假設(shè)VLANIF的MAC都為MAC2,實(shí)際中有些廠家交換機(jī)VLANIF接口MAC地址并不一致,比如C記就有一段bridge MAC的概念,每個(gè)VLANIF接口的MAC地址都不一致)。

這里ARP學(xué)習(xí)過(guò)程就不展開(kāi),直接講轉(zhuǎn)發(fā)過(guò)程,Host 1與Host 2如何進(jìn)行三層通信。

1.Host1想要給Host2發(fā)送報(bào)文,通過(guò)對(duì)比目的IP與自身的接口掩碼,發(fā)現(xiàn)并非與自己同網(wǎng)段的IP地址,需要進(jìn)行三層轉(zhuǎn)發(fā)。根據(jù)本地的路由表查找路由,對(duì)于windows主機(jī)配置網(wǎng)關(guān)其實(shí)就是生成一條默認(rèn)路由,下一跳地址就是網(wǎng)關(guān)。此時(shí)主機(jī)查找路由表匹配中默認(rèn)路由,將報(bào)文交給網(wǎng)關(guān)。此時(shí)報(bào)文源MAC:MAC1,目的MAC:MAC2。

2. 交換機(jī)收到報(bào)文之后,目的MAC為本地VLANIF的MAC地址,二層轉(zhuǎn)發(fā)模塊交給三層轉(zhuǎn)發(fā)模塊處理,VLANIF 20解析查看目的IP地址為10.1.2.1,非本接口IP地址,查找IP路由表,此時(shí)將會(huì)匹配到由VLANIF 20生成的直連路由,交給VLANIF 20處理。

3. VLANIF 20此時(shí)將會(huì)查找ARP表項(xiàng),找到10.1.2.1的MAC地址,生成數(shù)據(jù)幀:源MAC為自身接口MAC地址(MAC2,雖然看起來(lái)沒(méi)變化,但是如果是路由器三層接口轉(zhuǎn)發(fā)或者C記的SVI接口MAC地址不一樣,此時(shí)就可以看到三層轉(zhuǎn)發(fā)的源MAC地址變化了),目的MAC:MAC3。生成的二層數(shù)據(jù)幀交給二層轉(zhuǎn)發(fā)模塊處理,二層模塊根據(jù)MAC地址表,從對(duì)應(yīng)接口轉(zhuǎn)發(fā)出去,到此數(shù)據(jù)包才到達(dá)了Host2。

2、3步驟圖解

以上過(guò)程的重點(diǎn)內(nèi)容:

1.? VLANIF 10三層查找路由表,交由VLANIF 20

2. VLANIF 20查找ARP之后二層查找MAC地址表

3. 源目MAC的替換

下面的VxLAN轉(zhuǎn)發(fā)過(guò)程這些內(nèi)容非常類似。

VxLAN三層轉(zhuǎn)發(fā)

在上面的過(guò)程中跨網(wǎng)段轉(zhuǎn)發(fā)是在交換機(jī)內(nèi)部的VLANIF中執(zhí)行三層轉(zhuǎn)發(fā)的,對(duì)比來(lái)看下VxLAN的三層轉(zhuǎn)發(fā),很多場(chǎng)景下VxLAN的VNI就是由VLAN? Tag映射而來(lái),把VxLAN的三層轉(zhuǎn)發(fā)對(duì)比看做VLAN之間的三層轉(zhuǎn)發(fā),此時(shí)去看VxLAN集中式網(wǎng)關(guān)是不是覺(jué)得很類似,只是VLAN ID變成了VNI,VLANIF變成了VBDIF。

集中式網(wǎng)關(guān)

上面的topo中Host1、Host2分別屬于VLAN 10、VLAN 20,在進(jìn)入VxLAN中時(shí)被映射到VNI 100、200,網(wǎng)關(guān)分別為VBDIF 10、VBDIF 20。

上面的topo為例VxLAN網(wǎng)絡(luò)中Host 1訪問(wèn)Host 2的跨三層轉(zhuǎn)發(fā):

1.Host1訪問(wèn)Host2的報(bào)文發(fā)送到網(wǎng)關(guān)(源MAC:MAC1,目的MAC:MAC2),報(bào)文經(jīng)由非VxLAN交換機(jī)到達(dá)VTEP2,查找MAC地址表,加上VxLAN頭部封裝通過(guò)VxLAN Tunnel發(fā)送給VTEP1。

2. VTEP1收到之后查看外層目的MAC、目的IP,去除外層封裝將內(nèi)層報(bào)文本地解析交給VxLAN模塊處理,內(nèi)部報(bào)文目的MAC為MAC2,也就是VBDIF接口MAC,查看內(nèi)層目的IP,非本接口IP,此時(shí)需要查找VxLAN三層轉(zhuǎn)發(fā)表項(xiàng),發(fā)現(xiàn)需要交由VBDIF20處理。VBDIF20收到之后查找ARP表項(xiàng),生成二層數(shù)據(jù)幀,此時(shí)源MAC:MAC3,目的MAC:MAC4。查找二層轉(zhuǎn)發(fā)表項(xiàng),發(fā)現(xiàn)需要通過(guò)VxLAN Tunnel交由VTEP3,加上VxLAN頭部發(fā)送給VTEP3。

3.VTEP3去除外部封裝之后,查看目的MAC,交由下層非VxLAN交換機(jī)轉(zhuǎn)發(fā),經(jīng)由下游交換機(jī)最終轉(zhuǎn)發(fā)到Host2。

2、3步驟圖解

還是看轉(zhuǎn)發(fā)過(guò)程中重點(diǎn)內(nèi)容:

1.VBDIF 10三層轉(zhuǎn)發(fā)查找路由表把處理過(guò)程交給了VBDIF 20

2.VBDIF 20查找ARP之后查找二層表項(xiàng),發(fā)現(xiàn)出接口為VxLAN Tunnel,交給VTEP 3,此時(shí)為二層轉(zhuǎn)發(fā)

3. VTEP 3將報(bào)文從VxLAN域內(nèi)轉(zhuǎn)到了非VxLAN域。

分布式網(wǎng)關(guān)三層轉(zhuǎn)發(fā)

只是看集中式網(wǎng)關(guān),VxLAN的三層轉(zhuǎn)發(fā)和VLAN間三層轉(zhuǎn)發(fā)很類似,但是如果是分布式網(wǎng)關(guān)呢?

分布式網(wǎng)關(guān)

以上面的拓?fù)錇槔琕TEP1 VTEP2都是分布式網(wǎng)關(guān),都存在VBDIF10、VBDIF 20。

那問(wèn)題就來(lái)了:

Host1訪問(wèn)Host2時(shí)VBDIF10三層轉(zhuǎn)發(fā)查找路由表,把報(bào)文交給VBDIF20,由哪臺(tái)設(shè)備上的VBDIF 20執(zhí)行二層轉(zhuǎn)發(fā)查找Host2的MAC呢?

試想一下可能的方式:

1. VTEP1上,VBDIF 10三層轉(zhuǎn)發(fā)交給VBDIF 20,VBDIF 20查找ARP、二層查找MAC表項(xiàng),之后發(fā)送給VTEP2,此時(shí)已經(jīng)屬于二層轉(zhuǎn)發(fā)過(guò)程,VTEP 2收到之后執(zhí)行二層轉(zhuǎn)發(fā)。

也就是說(shuō)VTEP1上發(fā)送給VTEP2的內(nèi)層報(bào)文目的MAC已經(jīng)替換為Host2的MAC地址:MAC4,并且此時(shí)VNI已經(jīng)為Host 2所屬VNI。


VTEP1上執(zhí)行二層轉(zhuǎn)發(fā)

2. VTEP2上,VTEP1上的VBDIF 10三層轉(zhuǎn)發(fā)通過(guò)VxLAN Tunnel把報(bào)文交給VTEP2的VBDIF 20,VTEP2上VBDIF 20執(zhí)行二層轉(zhuǎn)發(fā)過(guò)程。

也就說(shuō)VTEP1上發(fā)送給VTEP2的內(nèi)層報(bào)文目的MAC不是Host2的MAC地址,而是VBDIF20的MAC地址:MAC3(三層轉(zhuǎn)發(fā)匹配主機(jī)路由時(shí)為什么內(nèi)層目的MAC是MAC3大家自己感興趣可以深入研究)。 此時(shí)的VNI其實(shí)就是L3 VNI,作用可以自行先想下。


VTEP 2上執(zhí)行二層轉(zhuǎn)發(fā)

再深入想一下,方式1和方式2 中VTEP 1的處理有什么區(qū)別:

1. VTEP 1上的VBDIF 20執(zhí)行二層查找、轉(zhuǎn)發(fā),那就意味著:

????a) VTEP 1上需要?jiǎng)?chuàng)建整網(wǎng)所有VNI的分布式網(wǎng)關(guān):即便VTEP 1下面并沒(méi)有VNI 200那也得創(chuàng)建VBDIF 20。

????b)VTEP1擁有VNI 200所屬?gòu)V播域的ARP表項(xiàng),這樣才能知道二層轉(zhuǎn)發(fā)時(shí)扔給哪個(gè)VTEP。

2. VTEP 2上不執(zhí)行VBDIF 20執(zhí)行二層查找、轉(zhuǎn)發(fā):

????a)VTEP1不需要?jiǎng)?chuàng)建整網(wǎng)所有VNI的分布式網(wǎng)關(guān),它不需要其他的VBDIF用于執(zhí)行二層轉(zhuǎn)發(fā)。

????b)VTEP 1上擁有Host2的路由表項(xiàng)就可以,VTEP1知道扔給VTEP 2就可以,二層查找交由VTEP 2上的VBDIF 20執(zhí)行。

對(duì)稱IRB和非對(duì)稱IRB

實(shí)際上第一種方式就是非對(duì)稱IRB,第二種方式就是對(duì)稱IRB。

仔細(xì)想一下第2種方式時(shí)Host 1和Host 2相互訪問(wèn)時(shí)VTEP1 VTEP2之間傳輸?shù)膬?nèi)層報(bào)文的源目MAC是不是互反的(VBDIF 10、VBDIF 20的MAC)。

第1種方式Host 1訪問(wèn)Host 2時(shí)源MAC為MAC3(VBDIF 20),目的MAC為MAC4(Host2)。而Host 2訪問(wèn)Host 1時(shí)源MAC為MAC 2(VBDIF 10),目的MAC為MAC1(Host)。來(lái)回報(bào)文源目MAC并不對(duì)稱,所以稱為非對(duì)稱式(未標(biāo)注VNI)。

非對(duì)稱IRB

第2種方式Host 1、Host 2之間互訪來(lái)回內(nèi)層報(bào)文源目MAC都是VBDIF 10、VBDIF 20,所以被稱為對(duì)稱式IRB(未標(biāo)注VNI)。

對(duì)稱IRB

回歸正題- L3 VNI

為什么需要L3 VNI?

非對(duì)稱IRB轉(zhuǎn)發(fā)時(shí)從VTEP到另外一個(gè)VTEP此時(shí)已經(jīng)為二層轉(zhuǎn)發(fā),VxLAN頭部中的VNI已經(jīng)為目的主機(jī)所屬VNI(上面的圖并沒(méi)有標(biāo)出)。

對(duì)稱式IRB轉(zhuǎn)發(fā)這個(gè)VNI應(yīng)該是什么?目的主機(jī)所屬的VNI嗎?

那就是非對(duì)稱IRB了。

那應(yīng)該是什么?

標(biāo)記交給哪個(gè)VBDIF處理的VNI。

對(duì)稱式IRB轉(zhuǎn)發(fā)時(shí)VTEP對(duì)于接收到的報(bào)文需要判斷內(nèi)層報(bào)文應(yīng)該交給哪個(gè)VBDIF去處理,這個(gè)判斷依據(jù)就是L3 VNI,間接關(guān)聯(lián)在VBDIF下的VNI。

ipvpn-instance vpn1

?ipv4-family

?route-distinguisher 2:100

? vpn-target 1:100export-extcommunity evpn

? vpn-target 1:100import-extcommunity evpn

?vxlan vni 100???? //三層VNI

interface Vbdif10

?mac-address0000-5e00-0101

?ip binding vpn-instance vpn1

?arp collect hostenable

?arpdistribute-gateway enable

?ip address192.168.10.1 255.255.255.0

總結(jié)

實(shí)際中L3 VNI的作用并不只是上面說(shuō)的那么簡(jiǎn)單:判斷交給VBDIF處理。

和傳統(tǒng)的ip vpn-instance一樣,在控制平面BGP?EVPN中,還可以控制路由的學(xué)習(xí)。

同時(shí)很多細(xì)節(jié)也沒(méi)有展開(kāi),如對(duì)稱IRB轉(zhuǎn)發(fā)時(shí),從VTEP 1到VTEP 2匹配中主機(jī)路由,內(nèi)層報(bào)文目的MAC是MAC3,為什么是MAC3?這個(gè)MAC3實(shí)際上是BGP EVPN通過(guò)Type2 IRB類型路由傳遞主機(jī)路由時(shí)攜帶的MAC地址,同時(shí)L3 VNI也是通過(guò)該方式攜帶,這里只是為了從轉(zhuǎn)發(fā)的角度結(jié)合傳統(tǒng)的VLAN之間三層轉(zhuǎn)發(fā),方便大家理解。

最后,二、三層轉(zhuǎn)發(fā)基礎(chǔ)很重要(任何基礎(chǔ)都挺重要),扎實(shí)的基礎(chǔ)、研究過(guò)MPLS L3 VPN、L2 VPN再看VxLAN,相似的地方真多,理解起來(lái)真簡(jiǎn)單,interesting!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

  • Chapter 1 - VXLAN簡(jiǎn)介 隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,云計(jì)算憑借其在系統(tǒng)利用率高、人力/管理成本低、靈活性/...
    武漢中繼者閱讀 9,785評(píng)論 0 5
  • 本篇文章主要介紹了"VXLAN, 一種疊加在L3網(wǎng)絡(luò)上的L2網(wǎng)絡(luò) ",主要涉及到VXLAN, 一種疊加在L3網(wǎng)絡(luò)上...
    ximitc閱讀 3,310評(píng)論 0 7
  • 1. vxlan 簡(jiǎn)介 VXLAN 全稱是Virtual eXtensible Local Area Networ...
    殺破魂閱讀 8,982評(píng)論 0 20
  • 今天大概算是過(guò)去了,沒(méi)有特別的,沒(méi)有什么值得開(kāi)心的事,也沒(méi)有什么有意義的事,只是,今天和昨天不一樣,昨天和前天不一...
    容闕閱讀 188評(píng)論 0 1
  • 被貓團(tuán)團(tuán)圍住的小老鼠,從他們的底下給鉆了過(guò)去,然后又有很多很多的貓來(lái)抓他,結(jié)果他跑到了一只貓的房子里,老鼠...
    馮李卓閱讀 134評(píng)論 1 0

友情鏈接更多精彩內(nèi)容