◆周凱
(南京藝術學院信息化建設管理中心 江蘇 210013)
軟件定義網絡(Software Defined Network,SDN)一種新型網絡架構,網絡虛擬化的一種實現方式。通過OpenFlow 等技術將網絡設備的控制與數據面進行分離,從而實現網絡的靈活控制,使網絡變得更加智能[1]。本文將從SDN 網絡架構思想出發,結合SDN 和服務鏈技術,實現一種能對網絡數據流自由編排策略、按需適配、動態調度控制的安全服務鏈,從而使整體網絡架構的拓展、安全防御及性能得到進一步的提升。
服務鏈(Service Function Chain),一種典型的應用模式。傳統服務鏈被設計在網關處,保障主機和外部網絡之間的數據安傳輸。并在可信網絡與非可信網絡之間架設相關安全服務節點,這些安全服務節點按照用戶事先配置的安全策略過濾和阻斷有害的數據傳輸來保證可信與非可信網絡之間雙向通訊的安全。這種部署方式主要存在以下問題:
(1)服務節點宕機導致整體數據通訊中斷;新增或拓展服務節點需要暫時性業務中斷,策略部署工作復雜、重復性高;
(2)隨著服務節點的增加,網絡拓撲層級結構越復雜;
(3)由于傳統服務鏈的固定性導致數據流不能按需適配、靈活調度;
(4)運維難度大,出現網絡故障很難快速準確的定位故障點等。
傳統網絡設備一般包含控制和轉發兩套邏輯,網絡屬于一種分布式架構,嚴格地按照TCP/ⅠP 五層模型來進行設計。SDN 將網絡設備上的控制邏輯單獨提取出來,作為控制平面,形成一種控制平面與轉發平面相分離的網絡架構[2]。并且盡可能地使網絡扁平化,數據包的匹配不再是一層層地進行,而是同時進行。服務功能上主要分為兩大類:Networking Ⅰnfrastructure,提供網絡基礎架構功能;Networking Service,提供網絡服務功能。
基于SDN 的安全服務鏈是在傳統服務鏈的基礎上,融合上述SDN 的網絡架構思想及技術設計實現。即由SDN 控制和管理服務鏈,將服務功能加入網絡流量路徑中,實現網絡服務(L4-L7),是一種更靈活的網絡功能方式。它的主要優勢在于:
(1)網絡與功能解耦,使網絡可編程,可以按照用戶的需求自定義業務邏輯,實時動態的調度服務鏈的轉發策略進行轉發;
(2)網絡服務節點由原來的串聯變成串并行,提高了網絡的穩定及容錯能力;
(3)網絡服務節點的彈性擴容實現熱部署及負載均衡的功能。基于SDN 網絡添加服務節點可以在不中斷網絡的情況下,通過在控制器上添加對應的轉發策略即可即時生效。
面對業務系統數據傳輸需求,主要分為單向和雙向兩種形式上的鏈:單向服務鏈為僅存在單一方向的服務鏈如源節點到目的節點的數據通訊或目的節點到源節點的數據通訊;雙向為同時存在源到目的和目的到源的數據通訊的服務鏈。本文將依據一個典型SDN 網絡架構以實例做具體闡述。
網絡架構環境:將SDN 交換機以透明橋的模式部署在出口與網絡核心交換機之間,SDN 交換機只通過控制器及OpenFlow 網絡通訊協議對服務鏈進行相關流量轉發和控制。在SDN 交換機上以旁掛串并行的方式接入防火墻(FW)和Web 應用防護系統(WAF)。如圖1 所示,出口接入SDN 交換機eth-0-2 口,入口接入eth-0-1 口,FW流量進出口為eth-0-3 口和eth-0-4 口,WAF 流量進出口為eth-0-5 口和eth-0-6 口。
服務需求為:只把TCP 80 端口的數據流給WAF 處理,FW 處理所有數據流,如表1 所示。具體分項包括:表項號、流表方向、源接口、目的接口、優先級、Match 及標注。表項號為流表序列;流表方向分為上行和下行,在這里單向服務鏈代表只有上行或下行,雙向服務鏈為同時存在上、下行數據流;優先級作用于每條表項的執行順序由數值來表示,數值大代表優先級關系越高,反之則低;為了能精細化控制和管理數據流,本設計將Match 分為三層:二層表示為以太網類型字段和值,區分各協議如ⅠPv4(0x0800)、ⅠPv6(0x08DD)、SNMP(0x 814C)等;三層表示為網絡層ⅠP 協議用來定義特殊處理的ⅠP 地址段;四層表示程序端口號。

圖1 旁掛串并行的方式接入防火墻和Web 應用防護系統
(1)單向服務鏈
即SDN 交換機的流表中只包含一個方向的流表。如圖1 所示接入到SDN 交換機上的各服務節點都需要配備兩張網卡,分別與SDN交換機上的網口互連,保證數據流的進和出。下面將依據前面定義的網絡架構及服務需求以單上行為例,具體實現如下:從eth-0-2 口進入的全部數據流在SDN 交換機的流表中進行匹配,所有數據流將匹配表項1,從eth-0-4 口轉發出來至FW 進口,經FW 程序處理后,沒有被丟棄的數據包將從FW 出口返回給交換機eth-0-3 口,并由eth-0-3 口依據表項5 將未被丟棄的數據包(不包括端口80 數據包)轉發給eth-0-1 口,端口80 的數據包將依據表項4 轉發給WAF,經WAF 程序處理后,沒有被丟棄的數據包將依據表項6 由eth-0-5 口轉發給eth-0-1 口。
(2)雙向服務鏈
即SDN 交換機的流表中包含上行和下線兩個方向的流表,擁有雙向流表的服務的主機ⅠP 地址即要作為目的地址也要作為源地址而存在。根據前面定義的網絡架構及服務需求,雙向實現如下:上行服務鏈與上述描述一致,下行服務鏈將由eth-0-1 口依據表項7 和表項8 分別將TCP:80 端口數據流轉發給eth-0-5 口至WAF,非80 端口數據流轉發給eth-0-3 口至FW,經WAF 程序處理后,未被丟棄的數據包依據表項10 轉發給FW,最后經FW 程序處理后,未被丟棄的數據包依據表項12 由eth-0-4 口轉發給eth-0-2 口。
(3)單點故障
分發任務的主節點發生故障,導致各分節點無法正常接發,引發整體系統故障。我們把這種故障叫作單點故障。基于SDN 服務鏈的網絡架構單點故障主要關注兩個環節:一是SDN 交換機帶來的單點故障;二是并行掛載在SDN 交換機上的各節點毀壞引發的單點故障。前者可以通過雙機熱備的方式,采用主備、主主備等策略來完善。后者也可以采用與前者同樣的方式來解決,但這種方式違背了基于SDN 服務鏈架構的核心思想,本文將就第二種現象給予討論并給出解決方案。
基于SDN 服務鏈的網絡架構核心優勢之一在于對同構設備的解耦,對異構設備的重組。在網絡安全方面,特別是依據特征庫對網絡流量數據包進行檢測與防御的安全防御設備如:WAF、ⅠDS、ⅠPS、防毒設備等,同品牌設備特征庫基本一樣。而各廠家趨于對各自產品市場與技術的保護,實現雙機熱備部署必須使用兩臺同品牌甚至同型號的設備來完成,對用戶而言如“雞肋”一般。怎樣能脫離這樣的局限,即能解決單點故障又能起到安全加固的效果,下面將引入備份流表的方式來解決。
備份流表:在主流表服務鏈路徑的基礎上,建立一套優先級低于前者的備份流表服務鏈路徑,當節點故障時主流表服務鏈路徑失效,將自啟用備份流表服務鏈路徑來進行引流。這種機制不僅可以解決節點故障時的引流問題,還可以將一組節點設備劃為一個共享資源池,進行更廣泛的應用。
如流表1 所示,依據上述設定好的架構與需求,以下行為例,當數據流從eth-0-1 口依據表項7(優先級:1001)和表項8(優先級:992)分別根據各自策略要求將數據流轉發給WAF 和FW,若單WAF設備毀壞,將依據表項8,由eth-0-1 口直接將全部數據流轉發FW,經FW 程序處理過后未被丟棄的數據包依據表項12(優先級:983)轉發給eth-0-2 口;若單FW 設備毀壞,端口80 數據流將依據表項7轉發給WAF,經WAF 程序處理過后未被丟棄的數據包依據表項11跳過FW 直接轉發給eth-0-2 口,非端口80 的數據流將依據表項9,跳過FW 直接轉發給eth-0-2 口。

表1 流表
本文詳細介紹了傳統網絡服務鏈和SDN 網絡服務鏈的優劣對比及SDN 安全服務鏈的設計原理,并基于場景實例闡述了它的設計與實現。筆者認為此項技術研究將是以后數據中心智慧化安全建設的關鍵技術,它不僅有效地清洗了網絡中的數據流,實現了精準按需動態調度,強化了網絡安全保障,而且使整體網絡架構的拓展能力也變得更為靈活。