很多事情遲遲沒有進展的原因在于解決思路的錯誤,SDN是否就是這樣一個概念呢?作者認為SDN是一個過于簡化設定的實現,引入網絡東西向的概念,實現Network Virtualization才是解決之道。
SDN在這幾年一直是個熱詞,但冷靜思考一下,似乎業界并沒有取得太大的進展。回溯到SDN產生的契機:數據中心虛擬化之后,南北向的數據交換或配置走到了傳統網絡的極限。陳建民(Rick Chen)認為SDN所討論的是,如何集中控制平面的設定到一個中央處理單元,但對于轉發的路徑還有物理層上的限制并沒有針對性的議題,是一個過于簡化設定的實現。他認為引入網絡東西向的概念,實現Network Virtualization才是解決之道。
以下為原文: 這兩個月來,不論在公司內部還是外部,我都收到一樣類似的老問題:SDN和網絡虛擬化有什么不一樣,你們為什么用網絡虛擬化來替代SDN? 其實這是一個講了很多年的問題了,說到胡須打結可能還是說不清楚,因為在問這個問題的人,他其實已經接收了部分技術訊息而產生疑惑,所以如果我還用純協議技術的角度作為討論的切入,其實只會越搞越混亂。
但是我之前還老是想不通用什么更好的方法來解釋這個部分,直到有一天看到麻將的東西南北,這才給我了一點啟發。 現在我們先不講上面那兩個是什么東西,我們就先討論一下,我們認識20多年的網絡對于數據交換的路徑是什么型態?就是我們傳統認識的三層架構,數據從access -> distribution -> core layer做數據路徑端到端的交換。 如果你是這樣想,那你完全命中我想問的問題。
沒錯,所以你可以很清楚的了解,今天我們所有的以物理網絡設備為基礎的通信路徑都是以南北向為數據流的方向。 所以L2的通信在跨交換機的時后,是南北向透過ethernet trunking穿過distrbution layer作為數據交換點,L3通信在跨subnet的時候,也是通過distrbution/core layer作為南北向的數據交換點,把問題在延伸的大一點,你的L4的ACL control 也是透過北向的路由器或是防火墻作為政策過濾的把關者,執行過濾之后才回歸到南向去。 所以做出一個簡單的總結,你總是需要有什么東西在北向幫你作為數據交換/過濾的點,才能完成你的端到端的通信。
作為一般用戶網路存取的架構,三層式架構大概短期也不需要有什么太大的變化。作為數據中心內部的需求而言,尤其是服務器虛擬化后的IaaS數據中心,這個問題可能就很大了。我別用太復雜的技術觀點來說明這其中的問題,只提出兩個問題,有實務經驗的人馬上就知道這其中的痛苦。
路徑都是通過北向作為數據交換的點,造成多余的配置復雜和增加數據旅行的延遲。 在提供IaaS云服務的數據中心,這架構限制的租戶網絡配置的擴展性和之后的一致性。 所以這也是網絡虛擬化為什么會在服務器虛擬化市場成熟后的幾年才被大幅討論,甚至開始應用起來。因為在虛擬化后的數據中心之內,南北向的數據交換或是配置的確已經走到了傳統網絡配置的極限,越來越多的營運問題陸續浮上臺面,所以才有人開始關注這個議題。但是網絡虛擬化對于南北向的問題有什么幫助呢?不就是建立隧道打通物理二層限制,透過controller實現SDN的概念嘛?我想網絡虛擬化和SDN的差別從這里就開始有所不同了。
SDN所討論的是,如何集中控制平面的設定到一個中央處理單元(Controller),但對于轉發的路徑還有物理層上的限制并沒有針對性的議題,所以我們可以把它想成,這是一個簡化設定的實現,但是如我之前的文章所提及的,他依然在實際應用的規模上出現的很大的限制。但是網絡虛擬化也不是隧道這種很膚淺的技術概念所可以實現的,或是多加了一個controller作為策略配置的工具,他所包含的其實是更多的深層的營運問題需要被解決的技術,這邊我也會替大家來解說我個人的想法。
東邊到西邊 這個部分我過去沒有在一般的演講的場合講過這個思維,但是隨著越來越多人詢問這方面的問題,我想現在因該是最佳的時機來討論這個概念。網絡虛擬化另一個重要的課題就是網絡功能分散化。過去網絡功能都是在南北向被實現,所以造成了上述的兩個問題。但是我們想要相同的結果,又不要被那些問題所困擾,網絡功能在東西向被實現成為了一個契機。
但是如臺灣人說的,唱的比說的好聽,這種分散式的網絡處理有這么容易嘛?過去20年來這些網絡大廠為什么沒有去實現?我不知道該如何回答這個問題,只能說套用老祖宗的經驗”時候到了”,沒有服務器虛擬化后所造成的網絡問題,這個東西大概也沒有機會可以誕生。 最早東西向的網絡概念,就是透過STT/VxLAN/GRE 所建立的L2 邏輯網絡,或稱為overlay network。在我過去幾年在這方面的工作經驗,這方式的確解決了部分問題,但是對于產業或是應用環境上,不是太吸引人。這個問題是整體的,不是片面的。
所以我所屬的公司,在過去的兩年內陸續開發了分散式的三層路由器,分散式的ACL等網絡功能分散化,把原本需要在北向被執行的功能,全部拉回在本地所屬的hypervisor被執行,及透過隧道的媒介,分散式的運算后的結果可以直接在HV-HV之間發送,無需透過北向作為數據交換的點,甚至跨 Hypervisor平臺也可以得到同樣的結果。分散運算后的北向只負責提供配置,完全不干涉數據的轉發和學習。這個技術所帶來的好處就可以更簡化邏輯網絡結構上的配置,讓網絡跟你的大腦的想法更貼近,并且降低南北向數據流所帶來的延遲,管理員不再需要每天在南跟北之間來回進行大腦奔波,最后跟我一樣,需要買特殊眼鏡才能繼續工作。
所以網絡虛擬化又被別人稱為下一代的SDN,對于我來說,我還是不想說SDN這個名詞,因為這個字眼被市場過度炒作及浮濫,所以當別人問我在做什么的時候,我的標準回答都是“Network Virtualization”。 為什么只有Hypervisor的環境去實現這個網絡虛擬化的議題,物理網絡為什么不也使用這個技術呢? 其實誰要去implement這個技術都無所為,重點在于,業務需求在哪里? 如果未來物理服務器也會飛來飛去的時候,也會動態的改變策略的時候,我相信物理網絡設備也會有這種東西向分散式配置的需求的。
所以當下次如果有人在問我網絡虛擬化跟SDN有什么不同的時候,我認識的人我會先打他一頓在跟他說,我不認識的人我會很有禮貌的請他看看這篇文章。因為技術其實很多時候是白板筆打架打出來的,工程師嘴巴爭吵吵出來的,如此的技術才有實戰可用的價值,沒有被挑戰過的技術,也只能是溫室的花朵,一捏就碎。