SDN和OpenFlow是兩件事。SDN(Software Defined Network,軟件定義網(wǎng)絡(luò))具備靈活的集中控制和云化的應(yīng)用感知能力,是靠譜的下一代IP網(wǎng)絡(luò)管理架構(gòu)設(shè)計(jì)思路;而Openflow因管理顆粒度不完整和架構(gòu)缺乏網(wǎng)管網(wǎng)設(shè)計(jì),算得上是一種不靠譜的協(xié)議。
SDN是下一代IP網(wǎng)絡(luò)管理架構(gòu)設(shè)計(jì)的代表,這種思路強(qiáng)調(diào)拆分控制層面與轉(zhuǎn)發(fā)層面,用“流交換”替換“包轉(zhuǎn)換”,用“集中管理”取代單獨(dú)配置。OpenFlow則是實(shí)現(xiàn)這種思路時,用網(wǎng)絡(luò)集中管理平臺的流表(Flow Table,更通用的詞是NIB,即Network Information Base)取代網(wǎng)絡(luò)設(shè)備路由表(RIB,Routing Information Base)的協(xié)議。
學(xué)術(shù)界當(dāng)初因OpenFlow提出了SDN,基于可以理解的動機(jī),這兩個概念被有意地模糊。但事實(shí)上,從理論體系的完善性和具體實(shí)踐看,這兩者有著巨大的區(qū)別。
為什么說SDN靠譜呢?
我們先看網(wǎng)絡(luò)的現(xiàn)狀。信息如同資金,要有流動性才能發(fā)揮價值。于是,隨著IT的重要性提升和體量增長,網(wǎng)絡(luò)作為信息流動的平臺,其規(guī)模越來越大。伴隨著規(guī)模的擴(kuò)張,用戶發(fā)現(xiàn)了兩個現(xiàn)象。一是,其平均端口建設(shè)成本和管理成本不但沒有按規(guī)模遞減,反而更貴了;二是,不同應(yīng)用對網(wǎng)絡(luò)的要求很不一樣,既有IP網(wǎng)絡(luò)根本無法實(shí)現(xiàn)針對性的管理。
第一個現(xiàn)象產(chǎn)生了集中控制的需求;第二個現(xiàn)象則是要求網(wǎng)絡(luò)能夠?qū)崿F(xiàn)應(yīng)用感知。SDN初始的架構(gòu)設(shè)計(jì),以及經(jīng)谷歌、Facebook等公司的實(shí)踐改進(jìn),恰好能夠?qū)崿F(xiàn)靈活的集中控制和云化的應(yīng)用感知。SDN的靈活性體現(xiàn)在,它提供了集中控制的NIB表、將NIB打包成服務(wù)的API,再將API網(wǎng)管策略邏輯化的控制引擎。建表的目前主要還是OpenFlow,打包API的包括Onix,控制引擎包括Ethane和Google使用FML(Flow-based Management Language)自建的安全平臺等。這幾種技術(shù)和軟件配合,可完整實(shí)現(xiàn)以“流”的方式管理流量。而SDN云化的應(yīng)用感知不僅體現(xiàn)在NIB表可以做到4~7層,更重要的是,可以在控制引擎中直接輸入應(yīng)用狀態(tài)控制策略。例如,當(dāng)應(yīng)用在不同數(shù)據(jù)中心漂移時,其包括IP地址在內(nèi)的網(wǎng)絡(luò)屬性也可以跟著移動。
下面,談?wù)劄楹蜲penflow不靠譜。
管理顆粒度不完整是OpenFlow面臨的第一大問題。OpenFlow形成流表的源數(shù)據(jù)來源只是TCAM(Ternary Content Addressable Memory,即三態(tài)內(nèi)容可尋址存儲器)。而為實(shí)現(xiàn)管理目標(biāo),既有網(wǎng)絡(luò)設(shè)備還有大量其他技術(shù)方式。例如,對MAC地址的過濾是通過端口ASIC芯片直接完成的;SNMP Community管理是通過CPU實(shí)現(xiàn)的;線速交換控制是通過FPGA(Field Programmable Gate Array,即現(xiàn)場可編程門陣列)實(shí)現(xiàn)的。管理不完整還意味著不同管理機(jī)制間無法協(xié)調(diào),這實(shí)際讓Openflow完全不可用。而基于TCAM所導(dǎo)致的另一問題是網(wǎng)絡(luò)規(guī)模不可能太大。因?yàn)?,畢竟廠商提供TCAM的初衷只是針對一臺設(shè)備,而非整個網(wǎng)絡(luò)。
第二個問題是架構(gòu)缺陷,即缺乏網(wǎng)管網(wǎng)的設(shè)計(jì)。所謂網(wǎng)管網(wǎng),就是網(wǎng)絡(luò)管理平臺為了完成與網(wǎng)絡(luò)設(shè)備通訊自身需要建設(shè)一張管理網(wǎng)。這張網(wǎng)管網(wǎng),如何跟業(yè)務(wù)網(wǎng)(也就是跑其他應(yīng)用的網(wǎng)絡(luò))分開,是帶外還是帶內(nèi),是靜態(tài)協(xié)議還是動態(tài)協(xié)議,OpenFlow的架構(gòu)中沒有設(shè)計(jì)。沒有網(wǎng)管網(wǎng)的架構(gòu)設(shè)計(jì),OpenFlow各種上行和下行管理報文在規(guī)模化部署的場景下,一定會出現(xiàn)問題。集中控制本身就意味把雞蛋放在一個籃子里。如果無法保證籃子的可靠性,任何設(shè)計(jì)都是“對策比問題更糟糕”。
因此,這就不難解釋互聯(lián)網(wǎng)界對這兩者的態(tài)度了。比如,谷歌在ONF 2012(Open Networking Foundation,開放網(wǎng)絡(luò)基金會)上,熱情洋溢地將提高自身廣域網(wǎng)100%利用率的功勞歸于SDN,而對OpenFlow謹(jǐn)慎地使用了“Infancy”(嬰兒期)的詞匯。同時,谷歌還在公開場合將OpenFlow形容為“Improvise”(湊合)。
相比谷歌這樣的互聯(lián)網(wǎng)大佬,廠商界則有更強(qiáng)勁的理由追捧SDN和抨擊Openflow。比如,思科目前的官方態(tài)度是“看好SDN,但不表示看好OpenFlow”。SDN是由學(xué)術(shù)界發(fā)起的,大勢已成,廠商們只能跟牌;同時,順勢而為還能省下大筆教育客戶的成本。而前文分析到OpenFlow的管理顆粒度不完整這一缺陷,廠商實(shí)際可以從根本上解決。解決方法也很簡單,就是直接修改網(wǎng)絡(luò)操作系統(tǒng),讓Openflow的管理數(shù)據(jù)來源從TCAM延伸到ASIC、CPU、FPGA。甚至于說,廠商可以將原操作系統(tǒng) API化,讓集中控制引擎直接調(diào)用操作系統(tǒng),實(shí)現(xiàn)更為精細(xì)的控制。
近十幾年來,除端口速率、每端口成本、每設(shè)備端口密度等偏向制造能力驅(qū)動的創(chuàng)新外,IP網(wǎng)絡(luò)業(yè)已沉靜太久,而SDN是最佳攪局者。這次,會真的不同。