從ACI和OpFlex解讀思科的SDN戰(zhàn)略
(作者簡(jiǎn)介:張衛(wèi)峰,《深度解析sdn》一書(shū)作者,盛科網(wǎng)絡(luò)軟件總監(jiān),數(shù)據(jù)通信和芯片設(shè)計(jì)領(lǐng)域資深專(zhuān)家,有十幾年的網(wǎng)絡(luò)實(shí)踐經(jīng)驗(yàn),對(duì)SDN、傳統(tǒng)二三層交換機(jī)、數(shù)據(jù)傳輸設(shè)備,從管理面到協(xié)議控制面一直到芯片轉(zhuǎn)發(fā)面,都有著深刻的理解。)
去年下半年,思科隆重推出了他們的秘密武器ACI(Application Centric Infrastructure),你說(shuō)他是用ACI來(lái)對(duì)抗SDN也好,或者是擁抱SDN也好,反正他們自己宣稱(chēng)是既不同于VMware NSX,又不同于ONF OpenFlow的有思科特色的SDN。一時(shí)之間ACI成了一個(gè)大熱的話(huà)題,眾說(shuō)紛紜,吸引了足夠的眼球。
最近思科又聯(lián)合IBM、Citrix、微軟等向IETF提交了一個(gè)新的draft,名字叫OpFlex,號(hào)稱(chēng)是要取代OpenFlow(不知道是第三方的人這么講的還是思科自己講的)。但是跟ACI相比,算是低調(diào)多了,國(guó)內(nèi)外討論的人都比較少。甚至都看不到一篇正兒八經(jīng)分析的文章。去年大張旗鼓推出硬的ACI,今年低調(diào)地推出軟的OpFlex,兩者之間有什么關(guān)系嗎?
OpFlex這個(gè)draft篇幅不長(zhǎng),一共只有21頁(yè),去掉一些標(biāo)題,引用之類(lèi)的之后,有效頁(yè)數(shù)不超過(guò)16頁(yè)。如果你之前從來(lái)都不了解ACI,來(lái)讀這篇draft的話(huà),我相信就算你是個(gè)資深網(wǎng)絡(luò)技術(shù)人員也會(huì)覺(jué)得不知所云,不是看不明白每一句話(huà),而是不明白它的目的是什么,要解決什么問(wèn)題。但是如果之前比較深入地了解過(guò)ACI,再看這個(gè)draft就會(huì)明白了,OpFlex其實(shí)就是ACI內(nèi)部的策略控制協(xié)議,現(xiàn)在思科把它給標(biāo)準(zhǔn)化了。所謂的用OpFlex替代OpenFlow云云,本質(zhì)上還是用ACI這種SDN去跟OpenFlow以及Vmware的NSX之類(lèi)架構(gòu)去競(jìng)爭(zhēng)。這里要順便吐槽一下,OpFlex這個(gè)draft寫(xiě)得真是坑爹,一般RFC都會(huì)把背景情況,來(lái)龍去脈交代的一清二楚,而OpFlex這個(gè)draft很多背景都直接省略掉了,因?yàn)樗腔谝粋€(gè)已經(jīng)存在的東西,作者潛意識(shí)里面覺(jué)得背景已經(jīng)很清楚了。
這里簡(jiǎn)單分析一下ACI和OpFlex,我們先看看ACI的架構(gòu)。
ACI是把數(shù)據(jù)中心中的物理網(wǎng)絡(luò)視為一個(gè)封閉的Fabric系統(tǒng),對(duì)用戶(hù)來(lái)說(shuō)是個(gè)黑盒,用戶(hù)不需要關(guān)心里面是運(yùn)行了什么協(xié)議,如何連接。這個(gè)封閉的Fabric系統(tǒng)就是ACI(Application Centric Infrastructure)。那如何對(duì)這個(gè)封閉系統(tǒng)進(jìn)行控制呢?這里的控制分為兩部分,一部分是配置傳統(tǒng)路由交換功能,使得ACI中的各個(gè)物理設(shè)備彼此可達(dá),這個(gè)時(shí)候是靠傳統(tǒng)方式去配置的,而且這種配置通常是一次性的,配好之后就不用再動(dòng)了。另外一部分則是用戶(hù)業(yè)務(wù)的策略控制(比如基于A(yíng)CI部署云計(jì)算網(wǎng)絡(luò)),這部分不是靠傳統(tǒng)網(wǎng)管,而是靠一個(gè)SDN控制器,這個(gè)控制器也有個(gè)名字,叫APIC(Application Policy Infrastructure Controller)。
APIC向上通過(guò)開(kāi)放的Restful API跟各個(gè)第三方的系統(tǒng)或者工具進(jìn)行集成,這些工具可以通過(guò)APIC來(lái)控制整個(gè)物理網(wǎng)絡(luò),應(yīng)用策略,進(jìn)而達(dá)到控制所有接入到該網(wǎng)絡(luò)中的其它設(shè)備的目的。向下,APIC可以去控制整個(gè)ACI中的物理交換機(jī)(Spine/Leaf節(jié)點(diǎn)),不包括連接到這個(gè)物理網(wǎng)絡(luò)中的其它設(shè)備(計(jì)算、存儲(chǔ)、安全或者其它ACI之外的交換路由設(shè)備)。如上圖中最下面那部分,外圍的那一圈設(shè)備就不屬于A(yíng)CI的范疇,在A(yíng)PIC的架構(gòu)中,這些接入到該Fabric中的用戶(hù)設(shè)備,稱(chēng)為Endpoint(EP),相同類(lèi)型的Endpoint組成一個(gè)Endpoint Group(EPG),比如所有的計(jì)算節(jié)點(diǎn)可以是一個(gè)EPG,或者所有具有相同Vlan的設(shè)備也可以是一個(gè)EPG,APIC并不規(guī)定EPG如何定義。
APIC如何來(lái)控制ACI中的設(shè)備呢?它所采用的協(xié)議就是OpFlex(當(dāng)然,不清楚思科是否把ACI所用到的所有細(xì)則都寫(xiě)到OpFlex標(biāo)準(zhǔn)中去了)。那接下來(lái)我們就分析一下OpFlex,看它如何應(yīng)用于A(yíng)CI。
OpFlex協(xié)議中有AD(administrative Domain)、PR(Policy Repository)、PE(Policy Element)、EP(Endpoint)和 EPR(Endpoint Registry)這幾個(gè)概念。它提到AD就是一個(gè)所有支持OpFlex的設(shè)備組成的管理域(該draft舉例說(shuō),比如一個(gè)數(shù)據(jù)中心的物理Fabric網(wǎng)絡(luò)就是一個(gè)AD);PR是在一個(gè)全局集中的地方,負(fù)責(zé)存放Policy;EPR也是在一個(gè)全局集中的地方,負(fù)責(zé)管理Endpoint的注冊(cè),PE則位于A(yíng)CI中每一臺(tái)需要管理的設(shè)備上(是一個(gè)邏輯功能組件),它負(fù)責(zé)向上通告Endpoint的注冊(cè)、變更,并應(yīng)用來(lái)自APIC的Policy。而EP就是接入到該管理域的用戶(hù)設(shè)備。顯而易見(jiàn),PR和EPR都(邏輯的或物理的)位于A(yíng)PIC上。
上面這段文字可能比較抽象,我們換個(gè)更直白的說(shuō)法,它的工作原理大概是這樣的:用戶(hù)在A(yíng)PIC上配置了一堆的Policy,比如“如果某個(gè)用戶(hù)設(shè)備的Mac是位于某地址段,就把它們劃分到Compute Node EPG,統(tǒng)一應(yīng)用策略A”;“如果某用戶(hù)設(shè)備發(fā)出來(lái)的報(bào)文Vlan是10,就把它劃分到Tenant1,統(tǒng)一應(yīng)用策略B”等等。當(dāng)ACI中的邊界節(jié)點(diǎn)檢測(cè)到某臺(tái)用戶(hù)設(shè)備接入的時(shí)候(具體檢測(cè)方式并沒(méi)有提到,估計(jì)是用戶(hù)自定義,由APIC通過(guò)策略告知所有的邊界設(shè)備),就把這個(gè)EP的信息主動(dòng)上報(bào),注意它并不是直接報(bào)給APIC,而是先報(bào)給上一級(jí)設(shè)備(Spine節(jié)點(diǎn)),如此層層上報(bào),最終到達(dá)APIC。之所以要層層上報(bào)而不是直接報(bào)給APIC,是因?yàn)橹虚g的設(shè)備也需要了解這些信息。舉個(gè)例子說(shuō),如果檢測(cè)到Vlan 10接入了,那就需要通知上聯(lián)設(shè)備把相應(yīng)的端口上使能Vlan 10。報(bào)給APIC之后,APIC分析接入的設(shè)備信息,決定它屬于哪個(gè)策略組(EPG),然后把該EPG所對(duì)應(yīng)的Policy下發(fā)給所有的相關(guān)設(shè)備,這些設(shè)備就在本地應(yīng)用這些Policy。當(dāng)然,也可能是APIC預(yù)先把這些Policy下發(fā)給這些設(shè)備了,這取決于應(yīng)用場(chǎng)景。
ACI帶來(lái)的好處就是業(yè)務(wù)的自動(dòng)化部署,設(shè)備即插即用。你可以想象成你買(mǎi)了一個(gè)USB的設(shè)備,插到電腦上之后自動(dòng)安裝驅(qū)動(dòng)和應(yīng)用程序。當(dāng)然ACI要做到這一點(diǎn)并不是那么容易,以上都是理論分析,實(shí)際網(wǎng)絡(luò)要復(fù)雜得多,未必都能做到。
OpFlex詳細(xì)定義了各種消息格式(都是基于JSON),以及每種消息的通信主體。它試圖把OpFlex盡量定義得更通用,不僅僅局限于數(shù)據(jù)中心云計(jì)算網(wǎng)絡(luò),而是任何適合需要自動(dòng)化網(wǎng)絡(luò)業(yè)務(wù)部署的場(chǎng)所。
ACI和OpFlex技術(shù)本身的分析到此結(jié)束了,下面我們來(lái)分析一下思科的SDN思路。
首先,ACI和OpFlex算不算是SDN?絕對(duì)算。當(dāng)然我知道有人不同意,說(shuō)明明他們的設(shè)備上都運(yùn)行了傳統(tǒng)協(xié)議,怎么能算SDN呢?但是你要明白,交換機(jī)上不運(yùn)行路由協(xié)議,只是OpenFlow的要求(甚至就算是OpenFlow,都定義了output to normal這種動(dòng)作,也就是說(shuō)走完OpenFlow流程后再走傳統(tǒng)轉(zhuǎn)發(fā)流程),不是SDN的要求,SDN只是說(shuō)軟件參與到網(wǎng)絡(luò)控制中。在A(yíng)CI的這個(gè)架構(gòu)中,最上層的應(yīng)用和各種工具通過(guò)開(kāi)放的Restful API來(lái)控制Controller,Controller則通過(guò)開(kāi)放的OpFlex API來(lái)控制轉(zhuǎn)發(fā)設(shè)備,用戶(hù)通過(guò)Policy幾乎可以控制一切。有人說(shuō),ACI設(shè)備之間的數(shù)據(jù)報(bào)文通信,還是要靠路由協(xié)議,用戶(hù)無(wú)法直接控制。但問(wèn)題是,用戶(hù)為什么需要控制這個(gè)?能帶來(lái)什么價(jià)值?SDN并不意味著用戶(hù)需要控制一切,而是讓用戶(hù)可以控制他需要控制的東西。所以,盡管我不是思科的粉絲,但是我這個(gè)SDN的堅(jiān)定支持者也必須承認(rèn)ACI是SDN。
其次,思科為什么要將OpFlex標(biāo)準(zhǔn)化?很顯然,這是它整個(gè)戰(zhàn)略中重要的一步。我不清楚他們是不是開(kāi)始的時(shí)候就已經(jīng)想好了這一步,但是很顯然,ACI被很多人批評(píng)的一點(diǎn)就是它是一個(gè)完全私有、完全封閉的東西,不僅跟其他廠(chǎng)商設(shè)備不兼容,連跟自己之前的設(shè)備都不兼容,這是它***的一個(gè)弊端?,F(xiàn)在它希望通過(guò)開(kāi)放并標(biāo)準(zhǔn)化它的控制協(xié)議來(lái)規(guī)避這個(gè)問(wèn)題。雖然OpFlex這個(gè)draft上列了好幾個(gè)公司的作者,但是明眼人很容易看出來(lái),那幾個(gè)公司的作者都是打醬油的,都屬于思科的戰(zhàn)友,來(lái)幫思科撐場(chǎng)子的,表示這個(gè)協(xié)議不是思科一家支持。
***,最關(guān)鍵的問(wèn)題,思科的意圖能達(dá)到嗎?
一方面,它感受到了SDN的威脅,想反擊。但是另外一方面,它沒(méi)辦法阻擋這個(gè)潮流,只能也宣稱(chēng)擁抱SDN,但是擁抱的是最有利于自己的一種SDN實(shí)現(xiàn)方式。我個(gè)人的觀(guān)點(diǎn)是,這個(gè)技術(shù)確實(shí)有很多亮點(diǎn),但是要讓其它設(shè)備商都跟進(jìn)很難。***,這個(gè)標(biāo)準(zhǔn)跟硬件設(shè)備能力強(qiáng)相關(guān),思科為了這個(gè)ACI,專(zhuān)門(mén)開(kāi)發(fā)了自己的芯片,別的廠(chǎng)商如果直接用商業(yè)芯片,某些功能做不到,所以就算支持OpFlex,功能上也不如思科強(qiáng)大。
第二,OpFlex代表思科的利益,其他設(shè)備商都看得很清楚,誰(shuí)會(huì)愿意跟進(jìn)?OpFlex作者列表中的那些公司,都是搞軟件的。
第三,OpFlex這個(gè)協(xié)議從網(wǎng)絡(luò)框架來(lái)說(shuō),相比較OpenFlow過(guò)于復(fù)雜了一些,小公司很難玩得轉(zhuǎn)。而我們知道,技術(shù)從來(lái)都不是商業(yè)勝出的唯一要素,實(shí)現(xiàn)和部署的復(fù)雜性會(huì)影響它的推廣,ATM與Ethernet(以太網(wǎng))的戰(zhàn)爭(zhēng)就是一個(gè)很好的例子。當(dāng)然OpenFlow也未必就會(huì)贏(yíng),OpenFlow的問(wèn)題也很多。
歸根結(jié)底一句話(huà),ACI/OpFlex也許會(huì)叫好,但是極有可能不叫座……就像失敗的FabricPath和QFabric一樣?