SDN是什麼
本文轉載自微信公眾號“ 標哥說天下”(ID:bgstx001),作者:李宗標。
SDN,Software Defined Network,軟體定義的網路,這些年方興未艾,愈演愈烈。但是,筆者以為,SDN 也有愈演愈劣的趨勢。而且,現在業界關於什麼叫 SDN,也是眾說紛壇,莫衷一是。筆者在此試圖梳理一下,SDN 到底是什麼!
一、SDN 發展的三條主線
SDN 從誕生到發展,有三條非常關鍵的主線。
第一條主線的主角是史丹佛大學。2008年,史丹佛大學 Nick McKeown 教授等人提出了 OpenFlow 的概念,並基於OpenFlow 為網路帶來的可程式設計的特性,進一步提出了SDN(Software Defined Network,軟體定義網路)的概念。2009年,SDN 概念入圍Technology Review年度十大前沿技術,自此獲得了學術界和工業界的廣泛認可和大力支援。2009年12月,OpenFlow 規範釋出了具有里程碑意義的可用於商業化產品的1.0版本。
第二條主線的主角是 Google。Google 的 B4 網路 SDN 改造,給業界打了一針巨大無比的雞血。 Google的改造分為三個階段。第一階段在2010年春天完成,第二階段是到 2011年中完成,第三個階段在2012年初完 成,整個B4網路完全切換到了 OpenFlow 網路。經過改造之後,鏈路頻寬利用率提高了3倍以上,接近100%。這個給業界帶來無法形容的衝擊和震撼。筆者以為,SDN 開始爆發性發展,自此方始!
第三條主線的主角是 Cisco。2012年6月,思科推出了ONE(Open Network Environment)戰略。2013年4月,思科與其他公司一起發起成立了Open Daylight 開源組織,開發 SDN 控制器。思科這兩件事情,其主旨都在“重新定義 SDN”。在此之前,SDN 還是與 Openflow 基本畫上等號的,Cisco 站住來說,SDN 不等於 Openflow,這個我們從 ONE 的架構與 ODL 的架構可見一斑,如下圖所示:
圖1 Cisco onePK 架構
圖2 ODL 架構
圖1 是“onePK(One Platform Kit)”,是為了支撐 Cisco 的 ONE 戰略。圖2 是 ODL 的架構。這些架構,我們只需要關注圖中紅框的部分。onePK 紅框部分,都是 Cisco 的裝置,Cisco 的意思是:我家的裝置就是 SDN,我給你包裝一個 API(onePK) 就行了。ODL 紅框部分的意思是:SDN 的協議,除了 OpenFlow,也可以是其他協議(NETCONF, BGP 等等)
這三條主線非常有意思。史丹佛大學(Nick McKeown 教授等人)發明了 SDN,試圖重新定義網路,Google 則將 SDN 推向了第一個高潮,而 Cisco 則希望將 SDN 轉個方向,重新定義 SDN!
如果說,史丹佛大學發現了一股清流,Google 則是掀起了一股巨浪,而 Cisco 就是攪渾這一池春水!
(注:與思科一起成立 ODL 的公司有:IBM、微軟、Big Switch、博科、思傑、戴爾、愛立信、富士通、英特爾、瞻博網路、NEC、惠普、紅帽和VMware)
二、SDN 的三大流派
恰恰來說,前面所說的三條主線,演化為了 SDN 的三大流派。
1、軟體定義網元
我們仍然套用 SDN 的命名方法,把軟體定義網元命名為:Softeware Defined Network Element(SDNE)。網元指的就是交換機、路由器等等這些網路裝置。
這一流派源於史丹佛大學的 OpenFlow。史丹佛大學提出的 SDN 概念,以 OpenFlow 協議為基礎,強調控制面與轉發面分離,強調集中控制。
但是,集中控制,這個詞,如果摳字眼的話,其含義是有分歧的。
一種含義是控制器心中有整個網路,基於這張網路做路徑規劃/計算,然後再針對每一個網元下發轉發規則。
一種含義是,雖然一個控制器可以管理(控制)整個網路中的所有(相關)網元,但是這個控制器心中只有一個個獨立的網元,而不是一張網路。控制器是每個網元自身做交換規則配置。比如我們在Neutron 實現模型中所描述的計算節點中的 br-ex 和 br-int。
這兩種含義,都是一個控制器管理(控制)所有(相關)網元,也即集中控制。但是,後一種含義,其實只是離散地單個網元的控制。
軟體定義網元(SDNE),就是屬於後一種含義。由於 OpenFlow 自身協議的缺陷和相關硬體的轉發效能問題,其應用場景非常有限。現在基於 OpenFlow(或者其他類似的協議)做 SDNE,並不是主流。或者是一些小公司/創業公司,或者是大公司在極度有限的場景內,在推出 SDNE 相關產品。
SDNE 流派,從表面上看,是繼承了 SDN 的純正地位,實際上已經對正統的 SDN 做了裁剪。
這一流派雖然力量不大,但是仍然是現在業界延續 SDN 香火的主要力量。
2、軟體定義網管
軟體定義網管,Software Defined Network Management System,SDNMS。這一流派源於 Cisco 那個所謂的“重新定義 SDN”。Cisco 又是推出 ONE 戰略,又是整一個 ODL 開源,雖然 ODL 開源號稱也支援 OpenFlow,但是 Cisco 的本質是把傳統裝置做個包裝,換個馬甲,搖身一變為 SDN。
話又說來,當裝置還是那個裝置時,無論它是軟的(VNF)還是硬的(PNF,傳統路由器/交換機),其業務發放,除了象網管一樣,做個配置,又能做什麼?
筆者在一個微信群裡,看到有人轉發一篇文章,如下圖所示:
圖3 某廠的 SDN 宣傳資料
在該篇文章中,其宣稱:控制器只負責業務下發,不負責轉發表項的計算。轉發表項的計算使用成熟度高的標準 BGP-EVPN 協議完成。
這就是當前業界拿著網管當作控制器當作 SDN 來大肆宣傳的典型案例。現在業界這種聲音非常大,非常主流。他們在宣傳時,還有一個經典的理論:網管的架構不好,網管的介面抽象的不好。(說的好像它的架構就很好,它的介面就很抽象似的。)
我們不比較是網管與那個所謂的控制器,誰的架構好,誰的介面抽象。
我們要認清一點:
兩個軟體系統,做的事情(功能)是一樣的,架構好壞,介面是否抽象,那是純軟體設計/開發的事情,那取決於設計開發這個系統的“人”,而不是冠一個 SDN 的名頭,架構啥的就能自動變好。
這個基本邏輯要清楚!如果連這樣的邏輯都沒有......
這個業界主流聲音,有兩大可怕的後果:(1)思想上,混淆了 SDN 的概念;(2)行動上,浪費大量的人力物力,重新做一遍網管。
對於那些沒有網管產品的公司/組織來說(比如某些公司,比如絕大多數開源組織),重新做一遍網管,沒有任何問題,因為它們本來就沒有網管。而對於那些已經有巨形網管產品的公司來說,這樣的想法,是要命的!
3、軟體定義網路最佳化
軟體定義網路最佳化,Software Defined Network Optimization,SDNO。SDNO 與 SDN Orchestrator 的簡稱重複了,請您注意不要搞混
這一流派,起源於 Google,與 Google 稍有不同的是,Google 採用的網元是 OpenFlow 網元(交換機),而這一流派採用的是傳統的網元。這一流派也有一點 Cisco 的影子。不過 Cisco 流派的本質是網管,而這一流派的本質還是網路最佳化,所以我們還是把這一流派歸為 Google 流派。
前文說過,由於 OpenFlow 的限制,OpenFlow 網元(交換機)的應用場景並不多,所以這一流派採用傳統網元,並沒有什麼不好,反而是非常正確。
網路最佳化,指的是網路流量最佳化,在滿足 QoS 的前提下,儘量提高網路的利用率。
這一流派細分為兩點:(A)靜態最優路徑計算;(B)動態路徑調優。
靜態最優路徑計算,就是先期計算一條路由的最優路徑(一般是最短路徑)。但是這個方法一個是沒有全域性的觀念,一個是沒有動態調優的能力,而且傳統的路由協議,也基本上具有這樣的能力,所以這一點,我們就不展開講述了。不過需要指出的是,這一小流派,也是有一定的市場,他們往往拿著這一小點跟網管 PK,說它們不僅僅是做個網管,還做個路徑計算。唉,不知道怎麼說他們為好:(1)這是一個純演算法的程式設計,不是 SDN 獨有的;(2)網管早已具備這樣的能力。
好了,不吐槽了,我們來看看動態路徑調優。我們先舉一個例子,如下圖所示:
圖4 動態路徑調優示例
圖中,一條流的路徑,原本規劃是:R1-R2-R3。但是,當這條路徑擁塞時,會動態調整為一條較為空閒的路徑:R1-R4-R3。
這就是動態路徑調優的一個簡單的示意。
從技術高大上的角度而言,動態路徑調優,是這三個流派中技術含量最高的。但是,偏偏就是流派在SDN 業界的聲音最小。
這一流派的鼻祖 Google,當年偶露一小手,就名動江湖,為什麼這一流派卻難成氣候呢?是其他公司都傻嗎?也不完全都傻,^_^
這一流派有很多技術難點需要克服:流量實時監控與預測;大象流老鼠流的區分與預測;流的 QoS 的定義。這些技術難點,都難以克服。筆者就不展開描述這些技術難點了,您只需要關注一個詞“預測”,就能想象有多難!比如上圖中的例子,當你把一個流調整到 R1-R4-R3 路徑時,突然間風雲突變,R1-R2-R3 路徑變空閒了,R1-R4-R3 變擁塞了。唉,被公司開除了,你都不知道找誰說理去!
但是,這些那點為什麼 Google 就能克服呢? Google 有什麼黑科技嗎?網上有一篇文章講的非常好,“不要為了 SDN 而 SDN - Google 的 SDN 和你沒關係”(),建議您閱讀一下。筆者這裡簡略摘抄幾條:
(1)昂貴的跨國鏈路和海纜:相對於國內的傳輸鏈路,海纜和跨國鏈路會是天價。
(2)N年的MPLS-TE部署經驗
(3)資料等級的分類:Google B4的海纜和跨國鏈路的平均利用率能維持在95%以上,這是一個極為驚人的數字。但在這個數字背後,我們可以讀出什麼?
A. 內部資料已經有嚴格的等級區分了:什麼樣的資料是高優先順序,什麼是中、低優先順序已經明確定義了。從伺服器入口開始對應用就開始標識、限速;
B. 各等級流量大小明確:從入口開始,每一種業務會有多少流量已經非常清楚了,這樣才能彙總出整體各個等級的流量,才可以指定彙總的CoS等級規劃。否則流量CoS是木有辦法做的,這也是國內常常沒有辦法做CoS的原因;
C. 中低優先順序的犧牲成就了高利用率:CoS不能產生頻寬,能維持高利用率是因為高優先順序流量的輕載,然後用中低優先順序去填充,那麼故障、高優先順序有突發流量等狀況發生時低優先順序一定會被延遲或者丟棄;
總結起來就是三點:(1)需求強烈;(2)經驗足,技術好;(3)流量狀況自己能夠掌握。
對不起,滿足這三點的,好像就是隻有 Google 一家公司。Google 的網路,跑著是自己家的流量,那麼這些流量它自己就可以規劃,而我們要面對的是一個未知的網路,誰知道這個網路裡的流量是什麼情況,誰知道這個網路裡的流應該是什麼等級?Google 恰恰是沒有黑科技,而是從源頭上來講,我們(除了 Google 以外所有人)與 Google 所面對的複雜度是完全不可同日而語的。
另外,網路動態調優,還有一個悖論:不在現網做大量測試,就沒法穩定,沒法商用;但是,沒有一個現網能允許一個不穩定的程式在其上面做大量測試。這就形成了一個死迴圈。而 Google 恰巧也能打破這個死迴圈,因為它的流量成本非常高,“昂貴的跨國鏈路和海纜:相對於國內的傳輸鏈路,海纜和跨國鏈路會是天價”。高昂的成本能夠促使其下定決心來打破這個死迴圈,很遺憾,我們好像找不到還有誰家有動力打破這個死迴圈。
第三點,Google 是自己研發。自己最懂自己的網路,這一點,也是無法比擬的。正是有這三點保證,Google 能夠偶露崢嶸,而其他公司要想做到,幾乎不大可能。這也正是這一流派,看起來很美,其實非常勢微的原因。
(筆者猜想,這同時也是 Google 為什麼在露一手以後,極少在 SDN 業界發音的原因。他也找不到第二個相同的 story 了。事了拂衣去 深藏功與名!)
4、小結
我們上一張“SDN 成熟度”圖譜,這個圖譜,是鄙人定義的。如下圖所示:
圖5 SDN 成熟圖圖譜
橫座標表示“通用硬體成熟度”,縱座標表示“流量最佳化(全域性網路)成熟度”。
我們先講 SDNE(軟體定義網元),由於 OpenFlow 自身的限制,SDNE 當前還是隻能侷限在有限的場景中應用,所以我把它的通用硬體成熟度,歸結為“0.1”。而 SDNE 流派,如果拋開 OpenFlow 不談,其實它也是個網管,也是控制器心中沒有全網(全網在人的心中),也是僅僅做個配置而已,所以我把它的“流量最佳化(全域性網路)成熟度”歸結為“0”。
以 SDNE 為參照物,那麼很自然地,我們就可以把 SDNMS(軟體定義網管)這一流派歸結為(0, 0)這一維度,既沒有通用硬體成熟度,也沒有流量最佳化(全域性網路)成熟度。
SDNO-1,靜態網路最佳化,比 SDNE 稍微好一點,畢竟做了一些靜態全域性最優路徑計算,所以我把歸結為(0, 0.1)這一維度。
我們再看看偉大的 Google,其實也才屬於(0.1, 0.2)這一維度。它使用的是 OpenFlow 交換機,所以通用硬體成熟度是 0.1,而它的動態流量最佳化是建立在“流量盡在掌握”的前提下做的,所以我只把它的流量最佳化(全域性網路)成熟度歸結為 0.2。
圖中,我把兩個成熟度為“1”的地方,都畫了個圓圈,其實我是比較委婉,我本來是想畫個紅叉的。
在當前階段,動態流量最佳化幾乎不可能,也許將來大資料、人工智慧技術成熟以後,這一塊可以突破。
而統一硬體成熟度這一塊,OpenFlow 已經沒有希望,現在替換 OpenFlow 的相關軟硬體技術也有,不過筆者以為,那也是不解決問題。硬體成熟度要想達到“1”,短期內,也是幾乎不可能。
兩個不可能,鄙人覺得,可以給我們一些啟示:
作為產品規劃,大公司可以冷靜下來了,當前現狀,SDN 不適合去大張旗鼓做一個產品,而是應該轉為純理論研究。至於小公司/創業公司,在 SDNE(軟體定義網元)這一領域可以賺點錢,這無可厚非,儘管去發展。
至於那個 SDNMS(軟體定義網管),如果您當前沒有這個網管,那麼您就做,如果您需要的話,而如果您想繼續鼓吹這就是 SDN,那就鼓吹吧,畢竟這個世界需要謊言。如果您當前已經有一個巨型網管產品,筆者奉勸一句:停下來吧,不要再重做一遍網管!!!
至於 SDNO-1,靜態網路最佳化,它的體量還不足以成為一個產品,也就是一個模組,建議整合到網管中裡面吧,不要拿這個來說事,給自己重新做一遍網管找個理由了!
不要以狼性為幌子,做公司的罪人!不要以行動的勤奮,掩蓋思考的懶惰!補充一句,我一直都沒有提 SDN 協同器。那麼 SDN 協同器應該劃歸為哪一個維度呢?你猜......
三、SDN 的本質
在我心中,SDN 的本質,如下圖所示:
圖6 SDN 的本質
在我心中,SDN 的本質,只需要達到(1, 0.1)即可,不需要達到(1, 1),當然,能達到更好。
一個通用的硬體,加上一個靜態最優路徑演算法,就是我心中的 SDN 的本質。至於 Google 的那個海纜價格太貴,那是個別需求,不影響大局。
我以前說過,SDN 的本質是“淘寶 + 百度”,有人把我這個觀點理解為“SDN 就是白盒化”,對不起,您誤解了我的觀點。
分析一個技術的本質,首先要看這個技術的經濟效益體量。如果一個技術的經濟效益體量也就產生三毛二毛的利潤,那麼這個技術,我們沒必要去分析其本質。專業化產生封閉,標準化產生分工,而社會化大分工,巨大提高社會生產率。複雜化、專業化,會產生個別企業的高利潤,而標準化、簡單化,社會化大分工,會產生全民的高收益。
SDN 的本意,以 OpenFlow 為基礎(我們假設 OpenFlow 行得通),推匯出標準化的硬體和簡單化的軟體。我們想象一下這個場景:硬體已經標準化,那就是唾手可得(這是我說從淘寶買硬體的原因),通訊協議基礎包,屆時肯定是開源了,只需要在其基礎上做個性化需求即可(這是我說在百度上搜尋軟體的原因)。
至於淘寶上是否買到假貨,百度上是否搜到盜版,對不起,那不是 SDN 的事情,OpenFlow當前有各種各樣的問題,那是技術本身的問題,這不影響 SDN 的本質。
SDN 的本質如果能實現,那必然是全社會的電信生產效率巨大提高,全民付出的電信資費極度降低。
當前的科學證明,宇宙中的速度不能超過光速。對於科學,我們需要保持敬畏!SDN 的本質能否實現,從科學角度講,是可能的,還是不可能,這同樣需要思考!另一個層面的思考!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31509936/viewspace-2157081/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SDN平臺架構是什麼樣的?-VeCloud架構Cloud
- 什麼是DNS,什麼是HostsDNS
- 這是什麼這是什麼
- 什麼是分而治之?什麼是WBS?
- 什麼是WebAuthn、FIDO 是什麼?Web
- 什麼是cookie,什麼是sessionCookieSession
- 為什麼SDN和IBN需要更好的網路可見性
- ###什麼是Linux核心###什麼是MMULinux
- ITIL是什麼意思?ITIL是什麼?
- SNP全稱是什麼? SNP是什麼公司? SNP是什麼意思?
- 人是什麼?人生是什麼?人為什麼會變?
- 什麼是正向代理?什麼是反向代理?
- NLA是什麼?NLA的原理是什麼?
- ftp是什麼,ftp是什麼東西?FTP
- Java是什麼_Java是做什麼的?Java
- 什麼是this
- 為什麼要有 Servlet ,什麼是 Servlet 容器,什麼是 Web 容器?ServletWeb
- 什麼是API介面,具體是什麼意思?API
- IDFA、IMEI、OAID 是什麼,區別是什麼AI
- DRBD是什麼意思?優缺點是什麼?
- 什麼是SSRF攻擊?SSRF用途是什麼?
- GNU是什麼?和Linux是什麼關係?Linux
- 什麼是塊元素?什麼是行內元素?
- 什麼是Tornado?它的特點是什麼?
- 什麼是框架?為什麼說 Angular 是框架?框架Angular
- 什麼是zoom?它有什麼作用?OOM
- 什麼是NLA,它有什麼用?
- 什麼是Django?有什麼用途?Django
- nginx 是什麼,能幹什麼?Nginx
- AI三重問:什麼是AI?什麼是AI模型?什麼是AI大模型?AI大模型
- 什麼是eval()?eval是用來幹什麼的?
- 什麼是CDN?CDN的技術原理是什麼?
- 域名是什麼?申請域名的流程是什麼?
- DHCP是什麼?DHCP伺服器是什麼意思?伺服器
- 什麼是樂觀鎖,什麼是悲觀鎖
- 什麼是重繪repaint?什麼是迴流reflow?AI
- 車上HOLD是什麼意思,AUTO HOLD是什麼功能,有什麼作用?
- 幽默圖:什麼是Bug纏身?什麼是義大利麵條?什麼是大泥球?