前段時間有幸和國內(nèi)的同行們交流了一番,發(fā)現(xiàn)形勢大好。云,openstack,VMWare,SDN都開始有repeatable use case出現(xiàn)了,技術(shù)落地也越來越扎實。這是好事,大家加油。
這篇文章會用上篇文章中的概念繼續(xù)聊如何在多租戶數(shù)據(jù)中心里進行數(shù)據(jù)包的轉(zhuǎn)發(fā)。在聊具體方案之前,大家先嘗試回答一下這個問題:如果你是當(dāng)初第一個設(shè)計多租戶數(shù)據(jù)中心轉(zhuǎn)發(fā)平面的架構(gòu)師,openstack上的一個租戶起了一個router,你會如何實現(xiàn)這個router呢?想清楚這個問題,多租戶數(shù)據(jù)中心數(shù)據(jù)平面的大框架就有了,剩下的都是在為這個大框架添磚加瓦,小修小補。目前工業(yè)界有兩大類方案,overlay和fabric。這兩個方案完全不同,而他們之所以不同的最根本原因就是對上面這個問題的答案不同。
Overlay
這類方案的設(shè)計者是這樣回答以上問題的:既然用戶在orchestration系統(tǒng)上起了一個router,那我們也對應(yīng)起一個router就好了。問題是這個router應(yīng)該起在哪兒呢?在一臺服務(wù)器上起一個軟件router是最直接的選擇(在多租戶的概念剛興起的時候,這甚至是唯一的選擇)。于是這個orchestration系統(tǒng)中邏輯上的router就和一臺軟件router一一對應(yīng)了。這臺軟件router很自然的便成了那個租戶所有subnet的default gateway。一個很自然的問題便是:如果一個租戶的vm和router不在同一臺物理服務(wù)器上,那這個vm要如何才能夠和這個router實現(xiàn)二層互聯(lián)呢?兩個最容易想到的選擇便是:1) 通過配置vlan直接實現(xiàn)二層互聯(lián),2) 通過隧道實現(xiàn)layer2 over layer3。選項1)在實踐中一直是一個很頭疼的問題:給定任意的拓普,都能夠動態(tài)的配置vlan,trunk和STP,這是整個網(wǎng)絡(luò)行業(yè)解決了20年都沒有解決好的問題。于是選項2)成了唯一的選擇。
接下來的故事就非常順理成章了:vxlan應(yīng)運而生,用來打隧道以及通過VNI來區(qū)分更多數(shù)量的租戶;一個軟件router沒有HA,于是先引入VRRP做冗余,之后是DVR;軟件router的性能可能會成為瓶頸,于是DPDK相關(guān)的技術(shù)又迎來了春天。
博主還是堅持一直以來的觀點:所有的技術(shù)都是上層應(yīng)用驅(qū)動的。如果最初的架構(gòu)師們對以上那個問題給出了不同的答案,vxlan,DVR,DPDK這些技術(shù)就很可能不會有今天這樣火爆了。
Fabric
這類方案的設(shè)計者對以上那個黑體字問題的回答完全不同:這個router應(yīng)該實現(xiàn)在交換機上,因為這是交換機的專長。既然在多租戶的數(shù)據(jù)中心里subnet并不和機架綁定,一個IP可能被orchestration系統(tǒng)分配到任何位置,那么這個router就應(yīng)該分布式的實現(xiàn)在所有交換機上。
這是一個非常合理同時也非常大膽的回答。我們先來看看在這樣的回答之下,一臺交換機究竟在扮演怎樣的角色。我們首先把目光關(guān)注在第一跳的交換機上 (如果是VM,那這第一跳交換機就是一臺軟件交換機;如果是bare metal服務(wù)器,那這第一跳交換機就是一臺硬件交換機)。不管是軟件還是硬件交換機,如果服務(wù)器發(fā)出的是二層報文,這臺交換機就應(yīng)該能夠進行二層轉(zhuǎn)發(fā)/廣播;如果服務(wù)器發(fā)ARP要gateway的mac,這臺交換機就應(yīng)該做ARP reply;如果服務(wù)器發(fā)出的是三層報文,這臺交換機就應(yīng)該能夠進行三層轉(zhuǎn)發(fā)。例子舉到這里,大家就會發(fā)現(xiàn)在fabric的解決方案里,一臺交換機究竟是二層還是三層已經(jīng)變得模糊,數(shù)據(jù)的轉(zhuǎn)發(fā)平面需要進行精心的設(shè)計。在這類解決方案當(dāng)中,最具代表性的是Big Cloud Fabric。
比較到這里,兩類方案最大的區(qū)別就講清楚了:在overlay方案里,default gateway往往在某一臺物理服務(wù)器上;在fabric方案里,default gateway在第一跳的交換機上。不少方案就是在這兩種極端的解決方案之間尋找一個折中:比如有些方案會把tunnel打在硬件交換機上,用來保證性能以及滿足bare metal用戶的需求。關(guān)于兩種方案的優(yōu)劣,博主之前已經(jīng)聊了不少(文章4,文章10)。從各個角度來看,博主依然堅定的認為fabric是在技術(shù)上更加優(yōu)秀的方案。在之后的文章中,博主會對fabric方案中,default gateway之后究竟會發(fā)生什么進行進一步討論。