SDN的迷思

軟體定義網路Software Defined Networking,簡稱SDN,是一個最近當紅的網路技術與研究題目。在工作上被分派到這個任務的我,除了要撰寫一大堆計劃書以外,還必須面對一堆長官的「刁難」和「冷嘲熱諷」。美其名叫作計劃審查,但我覺得和他們報告根本就是對牛彈琴、他們根本就是鴨子聽雷,然後在發表一堆可笑的「真知灼見」,如果不是因為他的位置比較高,真想把他們捻下來訓一頓,台灣的研發會走到今天這個地步,這群人的思維要附上很大的一部份責任。下面紀錄一些這些人的經典語錄:

  1. 技術方面不是重點啦,重點是能帶來多少的市場效益 ...(這位長官,你知道這次的報告是創新前瞻的計劃嗎?能帶來立即明顯效益的還叫作創新前瞻嗎?)
  2. 恩,我剛剛沒在聽(喔,原來你根本沒聽嘛)... 你應該想想其他網路廠商像是cisco他們的看法,還有能對台灣產業界帶來多少的幫助(...第1,我剛剛就提過了;第2,Cisco根本一開始就反對這樣的模式,後來不得已而轉型,今天你在叫我回去參考Cisco?第3,這個計劃才多少錢而已,要我揹負台灣產業的成敗?)
  3. 你不可以因為這個技術新的就來提計劃(所以要提舊的?)要做好效益評估...(我是RD還是策略規劃師?你長官的位置下來我做好了)
  4. 聽起來不錯,我想,先給你兩個人夠不夠?(很夠了,我想拿來應付會內的文件產生應該足夠了...)
其實還有更多,只能說無能的長官比競爭對手更可怕 ...

離題了,其實今天會寫這篇文章主要是想要回答一個問題:「有什麼事情是傳統網路架構做不到,而透過SDN可以解決的?」這種問題你去問一堆推動SDN的人,他們也許可以講的很頭頭是道,事實上,我也可以,畢竟對外也講過、報告過很多次了。但因為站在技術開發者的角度,有些話是當時講不出來的,這裡紀錄的是我內心真正的想法。

在回答這個問題以前,先來看看到底什麼是SDN?SDN說穿了就是下面幾個特性:
  1. 切割控制層和資料層:讓網路設備負責執行資料的處理,而將網路控制權從網路設備中抽離。這樣最大的好處是可以簡化網路設備的成本並提升效率。
  2. 高效的網路處理晶片。這個晶片可以處理所有L2-L4的封包。 這裡指的是晶片有能力處理封包,但是要怎麼處理要透過集中控制器來決定。
  3. 集中式控制:所有網路設備控制權被集中到一台控制器。所以傳統網路在設計上的分散式架構被打破了,也因此,傳統網路很多的行為是不必要的,如Flooding。畢竟當整個網路都在同一個人的手裡管理時,決策的答案往往很簡單,不用因為不明白整個網路的情況而做無腦的廣播詢問。
這裡所謂的Software,就是在集中管理器上所寫的軟體,利用軟體來決定要如何處理封包。一旦軟體更新,整個網路處理封包的行為可以整個翻新。因為這裡不是在討論SDN的架構,所以什麼Northbound、Southbound都先略過不提。

有什麼事情是傳統網路做不到,而SDN可以解決的?

上面之所以介紹了SDN的概念(是概念,非細節),再回頭來看這個問題的時候,會發現,這個概念在傳統上不就已經出現過很多次了嗎?舉例來說,大部分的網路大廠在賣設備的時候,通常還會附帶一套網路管理軟體,來畫出網路拓樸、設定網路設備等,這不就是集中式管理的概念?而現在大部分的網路晶片也都可以處理大部份L2-L4的封包,證據就是以現在市面上在賣的OpenFlow Switch全部都是拿舊有晶片改出來的,而且可以滿足絕大部分的功能(有哪些功能不能滿足?有業務告訴我一個例子,就是沒辦法讓TTL+1,話說我要讓TTL+1幹嘛 ...)

可是Google不是利用SDN改造了自己的資料中心嗎?傳統的網路設備不是做不到這件事情嗎?

Well ... SDN喊的最響的就是Google,這邊先不理會Google到底拿SDN來做什麼。但在這邊我必須說,用傳統網路設備做不到的人是Google,而不是Cisco。這是什麼意思?意思是如果Cisco想要做的話,它絕對做的出來。只要額外客制一套管理協定,提供管理軟體以及升級各網路設備即可。問題是Cisco不太願意為客戶做個別的客制化管理,Cisco說你可以怎麼樣用網路,你就只可以怎樣使用。當然Google大概也不願意把自己想要的東西跟Cisco說。所以這裡的做不到,是政策議題、是商業模式議題,卻絕對不是技術議題。也因此,對RD來說,這不是做不到,而是Cisco才不會讓我把自己寫的軟體放到它的設備上,這才是問題。

綜合上面所說,SDN更新的是觀念,不是技術。觀念不是說什麼集中式管理、資料層控制層分開這些,而是網路使用方式由網路設備商的手上回到使用者的手上。所以要我誠實回答的話,技術上來看,沒有什麼東西是傳統網路設備做不到而SDN做的到的。


ps. 文中的Cisco是網路設備商的代稱:p

留言

這個網誌中的熱門文章

我弟家的新居感恩禮拜分享:善頌善禱

如何將Linux打造成OpenFlow Switch:Openvswitch

Openssl 範例程式:建立SSL連線