三層網(wǎng)絡(luò)轉(zhuǎn)發(fā)技術(shù)在SDN中的基礎(chǔ)應(yīng)用
我一定讓很多瀏覽我blog關(guān)于描述 Arista’s VARP 和 Enterasys’ Fabric Routing 的讀者感到困惑—- 我得到了很多關(guān)于文章中“關(guān)于其如何在生產(chǎn)環(huán)境下工作”的問題。 接下來我們將就這個問題的細(xì)節(jié)進行討論。
簡單網(wǎng)絡(luò)拓?fù)?/strong>
我們以一個簡單的網(wǎng)絡(luò)拓?fù)錇槔?拓?fù)渲邪▋膳_邊界交換機(E1和E2),一個單獨的核心交換機(C1), 三臺主機(A,B1和B2)分別隸屬于兩個子網(wǎng)(A和B)。
我們假設(shè)我們已經(jīng)完成了一些針對于三層轉(zhuǎn)發(fā)的優(yōu)化配置, 所以E1和E2將負(fù)責(zé)子網(wǎng)A和B三層數(shù)據(jù)的轉(zhuǎn)發(fā)(通常這種轉(zhuǎn)發(fā)我們稱之為路由)。
當(dāng)A發(fā)送網(wǎng)絡(luò)流量給B1或者B2時,E1將數(shù)據(jù)發(fā)送給子網(wǎng)B,相對應(yīng)如果B2想與A通信,E2將會轉(zhuǎn)發(fā)數(shù)據(jù)流給子網(wǎng)A。
拓?fù)渲姓l做了些什么?
在上面拓?fù)洵h(huán)境中,真正我們應(yīng)該關(guān)心的問題是:在數(shù)據(jù)轉(zhuǎn)發(fā)路徑中(E1-C1-E2),哪個交換機負(fù)責(zé)二層轉(zhuǎn)發(fā)(通過查詢目的MAC地址進行轉(zhuǎn)發(fā)),哪個負(fù)責(zé)三層路由(通過目的IP地址進行路由)?
首先我們對子網(wǎng)內(nèi)部數(shù)據(jù)轉(zhuǎn)發(fā)進行分析: B1發(fā)送IP數(shù)據(jù)包給B2。 要想完成數(shù)據(jù)通信, B1必須將IP數(shù)據(jù)包封裝進MAC數(shù)據(jù)幀里, 這時,目的MAC地址將會是什么呢?
B1封裝數(shù)據(jù)幀時,目的MAC地址是B1通過向B2的IP發(fā)送ARP請求去獲取的—-通常來講, 也就是B2的MAC地址。數(shù)據(jù)幀在由B1到B2的路徑上一直以B2的MAC地址作為目的MAC地址,與此同時,路徑上(E1,C1,E2)的交換機在進行二層轉(zhuǎn)發(fā)時也是根據(jù)B2的MAC地址進行轉(zhuǎn)發(fā)的。 以上流程如果能夠工作,那么E1,C1,E2必須同時屬于VLAN-B。
現(xiàn)在我們來討論跨子網(wǎng)數(shù)據(jù)轉(zhuǎn)發(fā):A發(fā)送IP流量給B2, A知道B2在一個與自身不同的子網(wǎng)中, 這時, A將查詢它自身的IP路由表去找到B2 IP的下一跳地址。 這里,主機通常有一條默認(rèn)路由,這條默認(rèn)路由指向默認(rèn)網(wǎng)關(guān)(GW-A – the VARP/VRRP IP,這個IP地址由E1與E2共同維護)—-A將發(fā)送IP數(shù)據(jù)包給網(wǎng)關(guān)GW-A,并以GW-A的MAC地址進行數(shù)據(jù)幀封裝。對于GW-A MAC地址, E1和E2是共享這個MAC地址的;在E1收到這個數(shù)據(jù)包后, 其將進行三層轉(zhuǎn)發(fā)。
作為三層轉(zhuǎn)發(fā)流程的一部分,E1自身遞減了IP包的TTL并且重寫MAC數(shù)據(jù)幀幀頭。 重寫后,目的MAC地址將變?yōu)樾翴P的下一跳對應(yīng)的MAC地址—-在這個拓?fù)洵h(huán)境中, 這個下一跳為B2(這里注意:E1將會將IP包由子網(wǎng)A轉(zhuǎn)發(fā)至子網(wǎng)B)。在之后的轉(zhuǎn)發(fā)過程中,轉(zhuǎn)發(fā)路徑中的交換機(C1與E2)將遵循二層轉(zhuǎn)發(fā)原則進行基于目的MAC地址轉(zhuǎn)發(fā)數(shù)據(jù)。
總結(jié):E1 如果要與B2通信,其必須要有B2的ARP表項(否則E1將不知道B2的MAC地址),同時,與B2二層網(wǎng)絡(luò)必須暢通(否則數(shù)據(jù)幀將無法到達B2)。
拓?fù)渲?,E1(作為入口交換機)進行三層(跨子網(wǎng))基于目的IP地址的數(shù)據(jù)轉(zhuǎn)發(fā),其他交換機進行二層(子網(wǎng)內(nèi))基于目的MAC地址的數(shù)據(jù)轉(zhuǎn)發(fā)。每個VLAN必須將覆蓋所有邊界及核心交換機。
最優(yōu)化三層轉(zhuǎn)發(fā)的擴展局限性
既然我們已經(jīng)知道了轉(zhuǎn)發(fā)流程的細(xì)節(jié), 這里可以很容易想到這種最優(yōu)化三層轉(zhuǎn)發(fā)的擴展局限性:
每一個VLAN必須跨域所有在同一個路由域中的邊界及核心交換機。整個路由域?qū)⒊蔀橐粋€單點失效域(single failure domain),換句話說也是一個無法擴展點。
每一個邊界交換機必須知道所有活躍IP主機的MAC地址。
每一個邊界交換機必須具有所有活躍IP主機的ARP表項。
此外,如果我們想用傳統(tǒng)的配置機制(每一個邊界交換機作為一個獨立的可配置設(shè)備),每一個邊界交換機需要在每一個子網(wǎng)中有一個網(wǎng)管IP地址。假設(shè)我們網(wǎng)絡(luò)中有50臺交換機,那么意味著我們將在每個/24 IPv4的子網(wǎng)中浪費50個地址(當(dāng)然,這個問題在IPv6網(wǎng)絡(luò)中我們應(yīng)該不會那么擔(dān)心)。
更多的細(xì)節(jié):
從以上的討論中,我想讀者已經(jīng)得到ARP表項的相關(guān)細(xì)節(jié)了, 而在我們對一個最優(yōu)三層轉(zhuǎn)發(fā)拓?fù)浼軜?gòu)進行評估時,邊界交換機支持我們?nèi)z查ARP表項(也就是IPv4 主機路由)。 QFX3500( QFX3500 has 8000 ARP entries)擁有8000條ARP表項的存儲,QFX3600也一樣。 Arista 7150較比QFX3500與3600而來,下一跳表項的存儲空間達到了64K。如果需要更多數(shù)據(jù),讀者可以從Data Center Fabric Architectures webinar中得到前十名的設(shè)備提供商的大多數(shù)數(shù)據(jù)中心交換機的數(shù)據(jù)。