2013年11月26日 星期二

網路的東西南北

前一陣子連續出差, 加上許多的內部會議, 搞的差點想去撞牆把自己搞昏之後就可以休息一下. 但是家中還有嗷嗷待哺的嬰兒需要爸爸幫他洗屁屁, 所以只有咬牙繼續撐下去.  不過這兩個月來, 不論在公司內部還是外部, 我都收到一樣類似的老問題那就是:(認識我的人都知道, 我現在只有談數據中心的網路比較多)

- SDN和網絡虛擬化有什麼不一樣, 你們為什麼用網絡虛擬化來替代SDN的主題

其實這是一個講了很多年的問題了, 說到鬍鬚打結可能還是說不清楚, 因為在問這個問題的人, 他其實已經接收了部分技術訊息而產生疑惑, 所以如果我還用純協議技術的角度作為討論的切入, 其實只會越搞越混亂.  但是我之前還老是想不通用什麼更好的方法來解釋這個部分, 直到有一天看到麻將的東西南北, 這才給我了一點啟發. 

現在我們先不講上面那兩個是什麼東西, 我們就先討論一下, 我們認識20多年的網絡對於數據交換的路徑是什麼型態?.............................. 還能有什麼型態,  不就是我們傳統認識的三層架構, 數據從access -> distribution -> core layer做數據路徑端到端的交換.  如果你是這樣想, 那你完全命中我想問的問題. 沒錯, 所以你可以很清楚的了解, 今天我們所有的以物理網絡設備為基礎的通信路徑都是以南北向為數據流的方向. 所以L2的通信在跨交換機的時後, 是南北向透過ethernet trunking穿過distrbution layer作為數據交換點, L3通信在跨subnet的時候, 也是通過distrbution/core layer作為南北向的數據交換點, 把問題在延伸的大一點, 你的L4的ACL control 也是透過北向的路由器或是防火牆作為政策過濾的把關者,  執行過濾之後才回歸到南向去. 所以做出一個簡單的總結, 你總是需要有什麼東西在北向幫你作為數據交換/過濾的點, 才能完成你的端到端的通信. 



作為一般用戶網路存取的架構, 上面的三層式架構大概短期也不需要有什麼太大的變化. 作為數據中心內部的需求而言, 尤其是服務器虛擬化後的IAAS數據中心, 這個問題可能就很大了. 我別用太複雜的技術觀點來說明這其中的問題, 只提出兩個問題,  有實務經驗的人馬上就知道這其中的痛苦.

1) 路徑都是通過北向作為數據交換的點, 造成多餘的配置複雜和增加數據旅行的延遲. 
2) 在提供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有什麼不同的時候, 我認識的人我會先打他一頓在跟他說, 我不認識的人我會很有禮貌的請他看看這篇文章. 因為技術其實很多時候是白板筆打架打出來的, 工程師嘴巴爭吵吵出來的, 如此的技術才有實戰可用的價值, 沒有被挑戰過的技術, 也只能是溫室的花朵, 一捏就碎. 






6 則留言:

  1. 我不知道這樣講對不對,傳統網路就是當你到達一個陌生的城市,你需要去問旅客服務中心,這時候他就會跟你說你要怎麼到達你要的目的地,新的虛擬網路就是,你會拿到一份整個城市的地圖,而這份地圖隨時都在更新,你可以自己決定,判斷哪條路可以最快到達目的地。錯了還請糾正!!謝謝!!

    回覆刪除
  2. 差不多, 南北向在更貼切一點, 旅客每次去那都要去問遊客中心, 所以浪費很多資源及時間, 搞的自己很累. 東西向就是給你一個GPS, 所有資訊都從北向告訴你了, 你自己就去東西向移動吧~

    回覆刪除
  3. 您好,我是CSDN云计算频道的编辑,可以转载您这篇文章吗?

    回覆刪除