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