雲網絡的宏大未來:大二層網絡

雲計算催生了更多“離奇”的客戶需求,雲計算技術的迅猛發展也孕育出針對這些客戶需求的更多更好的解決方案。大二層網絡,這個曾經看來異常理想化的構想,就是一個非常典型的例子。讓我們從需求案例說起:

客戶需求一:我有n個數據中心,在硅谷的數據中心有一臺VM,在北京的數據中心有另一臺VM,我想讓這兩臺VM,都感覺對方和自己處於同一個二層網絡。

客戶需求二:我有n個數據中心,在硅谷的數據中心有編號爲ABCVM,在新加坡的數據中心有編號爲DEFVM,在上海的數據中心有編號爲GHJVM,我想虛擬出三個二層網絡:{ADG}{BEH}{CFJ}。每個虛擬二層網中的VM,覺得自己和其餘兩臺機器就像連在同一臺交換機上一樣;而三個虛擬二層網彼此隔離,處於不同虛擬網絡的VM在二層網絡上不連通,必須通過router交互。

第一個充滿野性的需求,實質是要求一張廣闊無垠的二層網絡,主題是二層網絡在WAN範圍內的按需延伸。第二個需求看起來更加常規一些,但實現起來也並不容易。出於安全和性能考慮,碩大的二層虛擬網太過於平坦,從性能上來講,廣播幀會像洪水一樣吃盡資源;從安全上來講,沒有隔離機制的海量VM組成的網絡,既沒有必要,也難以讓人信任。

產品化的解決方案:

1. CiscoOTV

永遠不要低估業界巨頭對技術潮流的把握能力!

雖然是傳統的物理網絡供應商,但Cisco似乎在雲網絡的領域一直走在最前端。早在20102月,Cisco就推出了自己針對雲架構的產品OTVOverlay Transport Virtualization)。通過在硬件交換機上,採用擴展鏈路層網絡的技術,它可以使二層網跨越數據中心。最吸引人的,是很多資料中宣稱,OTV安裝和使用的便捷性:據說安裝OTV的流程只需要5條命令,耗時僅僅5分鐘!從物理網絡來講,跨數據中心肯定數據包肯定要向上進入三層網絡,通過路由,再到達目的端。這也就決定了二層廣播幀不可達。爲了實現這一目標,隧道技術的採用是不可避免的。OTV很自然地採用了MAC in IP的封裝方式。

圖1是使用Cisco OTV之後的網絡效果圖,圖中處於VLAN 1VM,事實上分佈於物理網絡上不同的數據中心,僅憑物理網絡,無法直接二層通信。引入OTV之後,它們彼此認爲自己處於同一個VLAN標註之下的一個二層網絡中,廣播幀可送達任何一臺VM

 

圖1  OTV跨數據中心二層連通示意圖 

 

那麼Cisco是怎麼做到這一點的呢?在圖2中你肯定能找到想要的答案。

 

2  OTV工作原理示意圖

很顯然,Cisco既然是硬件廠商,那麼改改自己交換機中的轉發策略還是很easy的一件事情。要實現這一功能,技術細節很多,但簡要來講,他們是通過在交換機的MAC地址轉發表上動手腳實現的。對於處於同一數據中心,物理二層網絡連通的機器,在轉發表中,對應MAC地址轉發到某交換機端口。而處於不同數據中心的機器,它的MAC地址對應的轉發目的地不是端口,而是一個IP,這個IP就是對方數據中心OTV模塊的三層網絡地址。本地OTV模塊,會將需要跨越數據中心傳輸的二層幀,完整地打包到一個三層數據包中。通過路由,交付到對端OTV模塊進行處理。接下來的,不用我說,相信你也瞭然於胸了。

Cisco的官方文檔,強調了幾點使用OTV的好處,作爲自己產品的賣點。比如,對現存網絡設施無影響;操作簡單,並且可以與其它Cisco設備集成管理;沒有在協議上動什麼大手腳,複雜性低。其實最後一條也是Cisco解決方案的一大特點,畢竟麼,人家可以輕輕鬆鬆改自己硬件產品的轉發邏輯。相比之下,其它軟件廠商給出的方案,就只能另闢蹊徑了,通過在協議上做文章,達到同樣目的,這個在後面會討論到。

 

2. VMware的VXLAN

看完了硬件廠商的方案,我們再來看看虛擬化領頭羊的前沿產品。VMware從一開始提VXLAN,其格局就比CiscoOTV要大很多。VXLAN不僅着眼於二層網絡按需延伸,更是在安全隔離上走的更遠,從某種程度上說,它也可以被認爲是對SDN概念的一次嘗試。雲時代的數據中心,從VM接入數量來說,本來就愈加龐大,再加上大二層網絡技術的推廣,一個平坦的二層虛擬網絡上連接百萬臺以上的VM也許不再是什麼癡人說夢了。要對百萬級別VM的接入,在二層做到很好隔離。傳統的VLAN技術表示它要瘋了

爲此,在2011VMworld大會上,CiscoVMware共同提出了VXLAN技術,在業界引發巨大反響。(怎麼雲網絡裏哪兒都有Cisco的事兒?呵呵,這也印證了上一篇博文裏說的Ecosystem觀點,大家都在生態圈裏佔地盤,Cisco爲了雲戰略就和VMware走的很近,長期partner

目前VXLAN已經提交了IETF草案,在努力朝着標準化的方向前進。站在這一陣營的包括VMwareCiscoAristaBroadcomCitrixRedhat,怎麼樣,這個團隊看着還不錯吧。

軟件廠商沒法修改硬件的轉發策略,那麼VXLAN就充分利用了IP多播技術。通過IP多播技術,在UDP包中,完整封裝VM的二層數據包,達到跨數據中心,跨路由的目標。由此而形成的虛擬二層網絡,其上的VM認爲自己處在一個真實的二層網絡中,但實際上,有些廣播幀卻是在VXLAN的協助下,通過三層網絡送達遠端數據中心裏的VM。因此,在業界也有一個好玩的說法,稱VXLAN“坐在2.5層”。

VXLAN定義了相應的協議,圖3是其數據包格式圖:

3 VXLAN數據包格式

VXLAN的具體實現十分複雜,對於虛擬交換機來說,需要data plane的支持,在VMware的產品中,爲了支持VXLAN,對位於ESX之上的vSwitchvDSkernel module模塊都做了大量改動。這個問題如果展開,不是一時半會兒能討論完的,我們這裏就不做詳細分析了。選擇幾個比較有意思的切入點分析一下:

隔離能力的擴展:傳統VLAN tag只有12位,在雲裏,4096這個極限怎麼看怎麼不夠用。VXLAN在網絡隔離時,採用的VXLAN ID(圖3中第7個字段)有24bit,可以劃分出高達1600萬個相互嚴格隔離的虛二層網絡,目前看來這樣的擴展性是遠遠足夠的。

 圖4  VXLAN網絡示意圖

對跨數據中心,跨物理VLAN的熱遷移提供支持:使用VXLAN之後,原來侷限於同數據中心,同物理二層網,同樣VLANvMotion,現在可以不受這些限制,按需擴展到虛擬二層網絡上的任何地方。這是一個非常令人激動的進步!

不足:由於VXLAN基於IP多播原理實現,而現實中很多路由也許不支持PIM,或者雖支持多播,但出於某種原因,路由默認情況下未配置。就會有問題。不過這個可以通過其他技術手段改善,如加入proxy機制加以解決。

  

3. 微軟在做什麼?

在這場轟轟烈烈的大二層網戰役中,哪個大廠商也不甘落後,話語權就是商業利益啊!VXLAN出來沒多久,Microsoft就聯合Intel, HP& Dell 提出了NVGRE標準(NetworkVirtualization using Generic Routing Encapsulation)。說白了也是一種Mac In IP的解決方案,但是與VXLAN不同,它使用GRE (Generic Routing Encapsulation) key的低24位作爲二層虛擬網絡標示符,進行隔離。同樣是24位,同樣是1600萬個子網容量!我怎麼看怎麼覺得像VXLAN,比較好奇性能上會有大不同麼?如果沒有大創新,爲什麼搞這麼些標準出來...

 

時間關係,今天就先覆蓋這兩種比較主流的方案,對NVGRE僅作簡單介紹。謝謝大家關注!歡迎回帖討論!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章