OpenFlow是一種新型網(wǎng)絡(luò)協(xié)議,起源于斯坦福大學的Clean Slate項目組。OpenFlow提出的出發(fā)點是由于研究人員無法改變現(xiàn)有網(wǎng)絡(luò)設(shè)備進行創(chuàng)新網(wǎng)絡(luò)架構(gòu)和協(xié)議的研究和實驗,而這些新的網(wǎng)絡(luò)創(chuàng)新思想恰恰需要在實際的網(wǎng)絡(luò)上才能更好地驗證。斯坦福大學因此提出了控制轉(zhuǎn)發(fā)分離架構(gòu),將控制邏輯從網(wǎng)絡(luò)設(shè)備中分離出來,交給中央控制器集中統(tǒng)一控制,實現(xiàn)網(wǎng)絡(luò)業(yè)務(wù)的靈活部署,并且他們設(shè)計了OpenFlow協(xié)議作為控制器與交換機通訊的標準接口。近年OpenFlow已經(jīng)引起了網(wǎng)絡(luò)設(shè)備商和網(wǎng)絡(luò)管理員的廣泛關(guān)注,使用OpenFlow協(xié)議實現(xiàn)軟件定義網(wǎng)絡(luò),可以把網(wǎng)絡(luò)作為一個整體而不是許多獨立分散的設(shè)備來集中進行管理,大大提升了網(wǎng)絡(luò)可用性和網(wǎng)絡(luò)管理效率。
OpenFlow的思路很簡單,網(wǎng)絡(luò)設(shè)備維護一個或者若干個流表,并且數(shù)據(jù)流只按照這些流表進行轉(zhuǎn)發(fā)。流表本身的生成、維護完全由外置的控制器來管理。流表項并非僅指普通的IP五元組,而是由一些關(guān)鍵字和執(zhí)行動作組成的靈活規(guī)則,并且每個關(guān)鍵字字段都是可以通配的。在實際應(yīng)用中,網(wǎng)絡(luò)管理人員可以通過配置流表項中具體的匹配關(guān)鍵字來決定使用何種粒度的流轉(zhuǎn)發(fā)規(guī)則。例如,如果只需要根據(jù)目的IP進行路由,那么下發(fā)流表項時,關(guān)鍵字只匹配目的IP字段,其它關(guān)鍵字全通配,而動作中只需要一個出端口即可實現(xiàn)常規(guī)的IP路由轉(zhuǎn)發(fā)。
自2009年底發(fā)布第一個正式版本v1.0以來,OpenFlow協(xié)議已經(jīng)經(jīng)歷了1.1、1.2、1.3以及最新發(fā)布的1.4等版本的演進過程。同時,2012年OpenFlow管理和配置協(xié)議也發(fā)布了第一個版本(OF-CONFIG1.0&1.1),用于配合OpenFlow協(xié)議進行自動化的網(wǎng)絡(luò)部署。圖1給出了OpenFlow協(xié)議各個版本的演進過程和主要變化,目前使用和支持最多的是OpenFlow1.0和OpenFlow1.3版本,圖2說明了這兩個版本的主要變化。
圖1:OpenFlow協(xié)議版本演進圖
OpenFlow協(xié)議是描述控制器和交換機之間交互信息的南向接口標準。OpenFlow協(xié)議支持三類消息類型:Controller-to-Switch,Asynchronous和Symmetric,每一種類型都有多個子類型,控制器和交換機之間通過這三類消息進行連接建立,流表下發(fā)和信息交換,實現(xiàn)對網(wǎng)絡(luò)中所有OpenFlow交換機的控制。
圖2:OpenFlow1.0到1.3版本演進的主要結(jié)構(gòu)變化
下面簡單介紹一下OpenFlow協(xié)議中1.0到1.4版本的主要變化過程。
OpenFlow1.0協(xié)議指定每個OpenFlow交換機中都存在一張流表,用于數(shù)據(jù)包查找、處理和轉(zhuǎn)發(fā),并且只能同一臺控制器進行通信,流表的維護也是通過控制器下發(fā)相應(yīng)的OpenFlow消息來實現(xiàn)。流表由多個流表項組成,而每個流表項就是一個轉(zhuǎn)發(fā)規(guī)則。流表項由匹配字段、計數(shù)器和動作組成。其中匹配字段是流表項的標識,OpenFlow1.0支持12個匹配字段;計數(shù)器用于流表項的匹配和收發(fā)包統(tǒng)計;動作指示對匹配流表項的數(shù)據(jù)包應(yīng)該執(zhí)行的動作,如轉(zhuǎn)發(fā)到另一端口,丟棄或送控制器處理,甚至可以修改數(shù)據(jù)包字段轉(zhuǎn)發(fā)。但OpenFlow1.0只支持IPv4。
OpenFlow1.0版本的優(yōu)勢是它可以與現(xiàn)有的商業(yè)交換芯片兼容,通過在傳統(tǒng)交換機上升級固件就可以支持OpenFlow1.0版本,既方便OpenFlow的推廣使用也有效保護了用戶的投資,因此OpenFlow1.0是目前使用和支持最廣泛的協(xié)議版本。
自O(shè)penFlow1.1版本開始支持多級流表,將流表匹配過程分解成多個步驟,形成流水線處理方式,這樣可以有效和靈活利用硬件內(nèi)部固有的多表特性,同時把數(shù)據(jù)包處理流程分解到不同的流表中也避免了單流表過度膨脹問題。除此之外OpenFlow1.1中還增加了對于VLAN和MPLS標簽的處理,并且增加了Group表,通過在不同流表項動作中引用相同的組表實現(xiàn)對數(shù)據(jù)包執(zhí)行相同的動作,簡化了流表的維護。OpenFlow1.1版本是OpenFlow協(xié)議版本發(fā)展的一個分水嶺,它和OpenFlow1.0版本開始不兼容,但后續(xù)版本仍然還是在此基礎(chǔ)上發(fā)展。
為了更好支持協(xié)議的可擴展性, OpenFlow1.2版本發(fā)展為下發(fā)規(guī)則的匹配字段不再通過固定長度的結(jié)構(gòu)來定義,而是采用了TLV結(jié)構(gòu)定義匹配字段,稱為OXM(OpenFlow Extensible Match),這樣用戶就可以靈活的下發(fā)自己的匹配字段,增加了更多關(guān)鍵字匹配字段的同時也節(jié)省了流表空間。同時,OpenFlow1.2規(guī)定可以使用多臺控制器和同一臺交換機進行連接增加可靠性,并且多控制器可以通過發(fā)送消息來變換自己的角色。還有重要的一點是自O(shè)penFlow1.2版本開始支持IPv6。
經(jīng)過1.1和1.2版本的演變積累,2012年4月發(fā)布的OpenFlow1.3版本成為長期支持的穩(wěn)定版本。OpenFlow1.3流表支持的匹配關(guān)鍵字已經(jīng)增加到40個,足以滿足現(xiàn)有網(wǎng)絡(luò)應(yīng)用的需要。OpenFlow1.3主要還增加了Meter表,用于控制關(guān)聯(lián)流表的數(shù)據(jù)包的傳送速率,但控制方式目前還相對簡單。OpenFlow1.3還改進了版本協(xié)商過程,允許交換機和控制器根據(jù)自己的能力協(xié)商支持的OpenFlow協(xié)議版本。同時,連接建立也增加了輔助連接提高交換機的處理效率和實現(xiàn)應(yīng)用的并行性。其它還有IPv6擴展頭和Table-miss表項的支持。
2013年最新發(fā)布的OpenFlow1.4版本仍然是基于1.3版本的特征改進版本,數(shù)據(jù)轉(zhuǎn)發(fā)層面沒有太大變化,主要是增加了一種流表同步機制,多個流表可以共享相同的匹配字段,但可以定義不同的動作;另外又增加了Bundle消息,確??刂破飨掳l(fā)一組完整消息或同時向多個交換機下發(fā)消息的狀態(tài)一致性。其它還支持光口屬性描述,多控制器相關(guān)的流表監(jiān)控等特征。
OpenFlow協(xié)議的發(fā)展演進一直都圍繞著兩個方面,一方面是控制面增強,讓系統(tǒng)功能更豐富更靈活;另一方面是轉(zhuǎn)發(fā)層面的增強,可以匹配更多的關(guān)鍵字,執(zhí)行更多的動作。每一個后續(xù)版本的OpenFlow協(xié)議都在前一版本的基礎(chǔ)上進行了或多或少的改進,但自O(shè)penFlow1.1版本開始和之前版本不兼容,OpenFlow協(xié)議官方維護組織ONF為了保證產(chǎn)業(yè)界有一個穩(wěn)定發(fā)展的平臺,把OpenFlow1.0和1.3版本作為長期支持的穩(wěn)定版本,一段時間內(nèi)后續(xù)版本發(fā)展要保持和穩(wěn)定版本的兼容。
圖3:OpenFlow1.0測試規(guī)范概要
DCN在2011年就開始OpenFlow交換機的研發(fā),全線交換產(chǎn)品支持OpenFlow1.0和1.3協(xié)議,并配合國內(nèi)多家高校,科研機構(gòu)和互聯(lián)網(wǎng)公司進行了OpenFlow科研和商用網(wǎng)絡(luò)的部署,是目前國內(nèi)擁有最多實際案例的設(shè)備廠商,在行業(yè)內(nèi)處于領(lǐng)先地位。2013年11月開放網(wǎng)絡(luò)基金會ONF正式推出OpenFlow1.0協(xié)議一致性認證業(yè)務(wù),為網(wǎng)絡(luò)設(shè)備商提供了證明其產(chǎn)品完全符合OpenFlow標準規(guī)范的機會,該測試涵蓋二層和三層交換功能的10個方面,共有200來個測試項。DCN公司憑借近幾年在OpenFlow研發(fā)的技術(shù)積累,其數(shù)據(jù)中心交換機CS6500于2014年4月順利通過ONF的規(guī)范測試,成為國內(nèi)首家通過OpenFlow1.0一致性認證的設(shè)備廠商。今后DCN將持續(xù)研發(fā)創(chuàng)新,積極配合用戶實踐SDN,引領(lǐng)網(wǎng)絡(luò)設(shè)備市場的新變革。