編者按:SDN到底是什么?雖然這個(gè)概念已經(jīng)被炒到了,但還沒(méi)有人對(duì)其給出一個(gè)明確的概念。盛科網(wǎng)絡(luò)總監(jiān)張衛(wèi)峰撰寫(xiě)了自己關(guān)注SDN以來(lái),對(duì)其認(rèn)識(shí)的四個(gè)階段,最后一個(gè)階段又回到了SDN字面的意思軟件定義網(wǎng)絡(luò),每個(gè)階段作者的新觀點(diǎn),也會(huì)給我們帶來(lái)一些啟發(fā)。以下為原文:
SDN的概念從提出到現(xiàn)在已經(jīng)過(guò)了4年多了,但是關(guān)于SDN最基本的問(wèn)題,“什么是SDN”的爭(zhēng)論和探討從來(lái)都沒(méi)停止過(guò),就像一些哲學(xué)家經(jīng)常思考的“我是誰(shuí)”,“我從哪里來(lái)”,“我要去哪里”一樣。有人跟我說(shuō),越討論越迷糊,有時(shí)候覺(jué)得清楚了,再跟不同的人討論,又迷糊了。因?yàn)楣ぷ鞯年P(guān)系,在過(guò)去一年的時(shí)間內(nèi),我到處去跟各個(gè)運(yùn)營(yíng)商,互聯(lián)網(wǎng)公司,電商,設(shè)備商,普通企業(yè),高校,研究所的不同人進(jìn)行交流,曾經(jīng)跟一個(gè)朋友自嘲說(shuō)除了ONF的執(zhí)行總裁Dan Pitt,可能我是世界上跟別人講SDN講得最多的了。在這個(gè)過(guò)程中我不斷反思,不斷歸納總結(jié),現(xiàn)在我當(dāng)然不敢說(shuō)我的想法就一定是對(duì)的,但是我認(rèn)為我有必要把我的看法分享出來(lái),供大家參考,是否認(rèn)同不要緊,但是希望能對(duì)大家所有啟發(fā)。
我對(duì)SDN的認(rèn)識(shí)可以分為四個(gè)階段,最后一個(gè)階段是在第三個(gè)階段基礎(chǔ)上的頓悟。
第一階段:SDN=OpenFlow?
跟很多其他人一樣,我最初接觸SDN是從OpenFlow開(kāi)始的,那個(gè)時(shí)候甚至都沒(méi)去思考什么是SDN的問(wèn)題,本能的就認(rèn)為OpenFlow就是SDN,SDN就是Openflow,其實(shí)潛意識(shí)中,就是把SDN看作是一個(gè)具體的技術(shù)和協(xié)議,在將近有半年的時(shí)間里,都處于這種認(rèn)識(shí),因?yàn)槟莻€(gè)時(shí)候還沒(méi)有接觸實(shí)際案例,也沒(méi)有廣泛去網(wǎng)上了解關(guān)于SDN的技術(shù)文章,這是最原始的第一階段。實(shí)際上,就算是現(xiàn)在很多人嘴里面說(shuō)SDN不等于Openflow,但是潛意識(shí)里面還會(huì)自覺(jué)不自覺(jué)地將SDN往Openflow靠攏。為什么呢?因?yàn)镺penflow是大多數(shù)人唯一看得到的具體化的SDN的實(shí)現(xiàn)形式(實(shí)際上當(dāng)然還有別的實(shí)現(xiàn)形式,但是很多人并沒(méi)有看到或者看到了也沒(méi)意識(shí)到)。
第二階段:SDN的三個(gè)本質(zhì)屬性
后來(lái)隨著對(duì)各種SDN產(chǎn)品了解和網(wǎng)上諸多技術(shù)文章的閱讀,逐漸意識(shí)到,SDN只是一種架構(gòu),一種思想,具體的實(shí)現(xiàn)多種多樣,OpenFlow只是其中一種。我自己總結(jié)出SDN的三個(gè)本質(zhì)屬性,認(rèn)為只要符合控制跟轉(zhuǎn)發(fā)分離、有開(kāi)放的編程接口、集中式的控制就可以認(rèn)為是SDN?;谶@樣一種理念,某個(gè)產(chǎn)品或者方案,哪怕沒(méi)有使用Openflow,只要它符合這三個(gè)原則,也可以認(rèn)為是SDN。比如Juniper的Open Contrail,不支持Openflow,但是也是SDN。在很長(zhǎng)一段時(shí)間內(nèi),我都堅(jiān)定不移地認(rèn)為這是最符合SDN思想的定義。包括我開(kāi)始寫(xiě)《深度解析SDN》那本書(shū)的期間,也是這樣認(rèn)為。
第三階段:狹義SDN、廣義SDN、超廣義SDN
后來(lái)突然看到阿里巴巴推出了自己的SDN方案,在2013 GITC會(huì)議期間,我詳細(xì)聽(tīng)了阿里巴巴專家的介紹,發(fā)現(xiàn)他們這種SDN跟我理解中的控制跟轉(zhuǎn)發(fā)分離并不相同,他們自己也說(shuō)他們的SDN不是大家一般所理解中的SDN,他們的SDN是通過(guò)軟件控制腳本,讓這些腳本向遠(yuǎn)程的交換機(jī)發(fā)送命令(不清楚是NetConf還是直接的命令行)來(lái)控制交換機(jī),交換機(jī)上仍然運(yùn)行了傳統(tǒng)的二三層協(xié)議,控制跟轉(zhuǎn)發(fā)并沒(méi)有分離,分離的是管理和控制。剛看到這個(gè)方案的時(shí)候,我馬上就問(wèn)自己,這算不算SDN?我反復(fù)思考了這個(gè)問(wèn)題,他們?yōu)槭裁匆@么做,而不是使用更徹底的控制跟轉(zhuǎn)發(fā)分離?我個(gè)人理解是他們網(wǎng)絡(luò)中已經(jīng)有了大量傳統(tǒng)的交換機(jī),他們不可能把這些交換機(jī)都替換掉,但是又想通過(guò)軟件自動(dòng)化來(lái)代替手動(dòng)操作,所以就采取了這樣一種折衷的做法。這種做法有沒(méi)有價(jià)值?肯定是有,否則他們不會(huì)這么干。那算不算SDN?我一時(shí)陷入了迷茫。幾經(jīng)思考之后,我認(rèn)為,其實(shí)SDN并沒(méi)有確切的定義,只要能實(shí)現(xiàn)網(wǎng)絡(luò)自動(dòng)化,能夠滿足特定場(chǎng)景的需求,哪怕這種做法對(duì)別的用戶沒(méi)有意義,它也應(yīng)該算SDN。只是從通用的角度來(lái)看,這種SDN靈活性比不上控制與轉(zhuǎn)發(fā)分離的那種架構(gòu),但是不可否認(rèn)的是,它能解決特定客戶特定場(chǎng)景的需求。認(rèn)識(shí)到這一點(diǎn)之后,我在對(duì)外宣講的PPT中,將SDN定義歸為三類,第一類是狹義SDN(等同于Openflow),第二類是廣義SDN(控制與轉(zhuǎn)發(fā)分離),第三類是超廣義SDN(管理與控制分離)。而且我認(rèn)為,第二類定義中的SDN,是最通用,最有價(jià)值的一種。
第四階段:返璞歸真,回到軟件定義網(wǎng)絡(luò)
在跟中國(guó)電信研究院的專家們一次交流中,我講了我對(duì)SDN的看法之后,研究院的王老師向我提出了一個(gè)問(wèn)題:從SDN的字面意思來(lái)看,根本看不出控制與轉(zhuǎn)發(fā)分離的意思,你怎么看這個(gè)問(wèn)題?雖然我當(dāng)時(shí)噼里啪啦講了一堆,回答了這個(gè)問(wèn)題。但是回來(lái)之后,我又深入的思考了一下王老師的這個(gè)問(wèn)題,很慚愧,這么一個(gè)明顯的問(wèn)題,我之前居然都沒(méi)去思考過(guò)。思考的過(guò)程中,我突然有種醍醐灌頂?shù)母杏X(jué),就像佛語(yǔ)經(jīng)常說(shuō)的那樣:看山是山->看山不是山->看山還是山。無(wú)論是控制與轉(zhuǎn)發(fā)分離,還是管理與控制分離其實(shí)都不是SDN的本質(zhì)定義,SDN的本質(zhì)定義就是軟件定義網(wǎng)絡(luò),也就是說(shuō)希望應(yīng)用軟件可以參與對(duì)網(wǎng)絡(luò)的控制管理,滿足上層業(yè)務(wù)需求,通過(guò)自動(dòng)化業(yè)務(wù)部署簡(jiǎn)化網(wǎng)絡(luò)運(yùn)維,這是SDN的核心訴求,控制與轉(zhuǎn)發(fā)分離不是。但為了滿足這種核心訴求,不分離控制與轉(zhuǎn)發(fā),比較難以做到,至少是不靈活。換句話說(shuō),控制與轉(zhuǎn)發(fā)分離只是為了滿足SDN的核心訴求的一種手段,如果某些場(chǎng)景中有別的手段可以滿足,那也可以,比如管理與控制分離。