◆周凱
(南京藝術(shù)學(xué)院信息化建設(shè)管理中心 江蘇 210013)
軟件定義網(wǎng)絡(luò)(Software Defined Network,SDN)一種新型網(wǎng)絡(luò)架構(gòu),網(wǎng)絡(luò)虛擬化的一種實現(xiàn)方式。通過OpenFlow 等技術(shù)將網(wǎng)絡(luò)設(shè)備的控制與數(shù)據(jù)面進(jìn)行分離,從而實現(xiàn)網(wǎng)絡(luò)的靈活控制,使網(wǎng)絡(luò)變得更加智能[1]。本文將從SDN 網(wǎng)絡(luò)架構(gòu)思想出發(fā),結(jié)合SDN 和服務(wù)鏈技術(shù),實現(xiàn)一種能對網(wǎng)絡(luò)數(shù)據(jù)流自由編排策略、按需適配、動態(tài)調(diào)度控制的安全服務(wù)鏈,從而使整體網(wǎng)絡(luò)架構(gòu)的拓展、安全防御及性能得到進(jìn)一步的提升。
服務(wù)鏈(Service Function Chain),一種典型的應(yīng)用模式。傳統(tǒng)服務(wù)鏈被設(shè)計在網(wǎng)關(guān)處,保障主機(jī)和外部網(wǎng)絡(luò)之間的數(shù)據(jù)安傳輸。并在可信網(wǎng)絡(luò)與非可信網(wǎng)絡(luò)之間架設(shè)相關(guān)安全服務(wù)節(jié)點,這些安全服務(wù)節(jié)點按照用戶事先配置的安全策略過濾和阻斷有害的數(shù)據(jù)傳輸來保證可信與非可信網(wǎng)絡(luò)之間雙向通訊的安全。這種部署方式主要存在以下問題:
(1)服務(wù)節(jié)點宕機(jī)導(dǎo)致整體數(shù)據(jù)通訊中斷;新增或拓展服務(wù)節(jié)點需要暫時性業(yè)務(wù)中斷,策略部署工作復(fù)雜、重復(fù)性高;
(2)隨著服務(wù)節(jié)點的增加,網(wǎng)絡(luò)拓?fù)鋵蛹壗Y(jié)構(gòu)越復(fù)雜;
(3)由于傳統(tǒng)服務(wù)鏈的固定性導(dǎo)致數(shù)據(jù)流不能按需適配、靈活調(diào)度;
(4)運維難度大,出現(xiàn)網(wǎng)絡(luò)故障很難快速準(zhǔn)確的定位故障點等。
傳統(tǒng)網(wǎng)絡(luò)設(shè)備一般包含控制和轉(zhuǎn)發(fā)兩套邏輯,網(wǎng)絡(luò)屬于一種分布式架構(gòu),嚴(yán)格地按照TCP/ⅠP 五層模型來進(jìn)行設(shè)計。SDN 將網(wǎng)絡(luò)設(shè)備上的控制邏輯單獨提取出來,作為控制平面,形成一種控制平面與轉(zhuǎn)發(fā)平面相分離的網(wǎng)絡(luò)架構(gòu)[2]。并且盡可能地使網(wǎng)絡(luò)扁平化,數(shù)據(jù)包的匹配不再是一層層地進(jìn)行,而是同時進(jìn)行。服務(wù)功能上主要分為兩大類:Networking Ⅰnfrastructure,提供網(wǎng)絡(luò)基礎(chǔ)架構(gòu)功能;Networking Service,提供網(wǎng)絡(luò)服務(wù)功能。
基于SDN 的安全服務(wù)鏈?zhǔn)窃趥鹘y(tǒng)服務(wù)鏈的基礎(chǔ)上,融合上述SDN 的網(wǎng)絡(luò)架構(gòu)思想及技術(shù)設(shè)計實現(xiàn)。即由SDN 控制和管理服務(wù)鏈,將服務(wù)功能加入網(wǎng)絡(luò)流量路徑中,實現(xiàn)網(wǎng)絡(luò)服務(wù)(L4-L7),是一種更靈活的網(wǎng)絡(luò)功能方式。它的主要優(yōu)勢在于:
(1)網(wǎng)絡(luò)與功能解耦,使網(wǎng)絡(luò)可編程,可以按照用戶的需求自定義業(yè)務(wù)邏輯,實時動態(tài)的調(diào)度服務(wù)鏈的轉(zhuǎn)發(fā)策略進(jìn)行轉(zhuǎn)發(fā);
(2)網(wǎng)絡(luò)服務(wù)節(jié)點由原來的串聯(lián)變成串并行,提高了網(wǎng)絡(luò)的穩(wěn)定及容錯能力;
(3)網(wǎng)絡(luò)服務(wù)節(jié)點的彈性擴(kuò)容實現(xiàn)熱部署及負(fù)載均衡的功能?;赟DN 網(wǎng)絡(luò)添加服務(wù)節(jié)點可以在不中斷網(wǎng)絡(luò)的情況下,通過在控制器上添加對應(yīng)的轉(zhuǎn)發(fā)策略即可即時生效。
面對業(yè)務(wù)系統(tǒng)數(shù)據(jù)傳輸需求,主要分為單向和雙向兩種形式上的鏈:單向服務(wù)鏈為僅存在單一方向的服務(wù)鏈如源節(jié)點到目的節(jié)點的數(shù)據(jù)通訊或目的節(jié)點到源節(jié)點的數(shù)據(jù)通訊;雙向為同時存在源到目的和目的到源的數(shù)據(jù)通訊的服務(wù)鏈。本文將依據(jù)一個典型SDN 網(wǎng)絡(luò)架構(gòu)以實例做具體闡述。
網(wǎng)絡(luò)架構(gòu)環(huán)境:將SDN 交換機(jī)以透明橋的模式部署在出口與網(wǎng)絡(luò)核心交換機(jī)之間,SDN 交換機(jī)只通過控制器及OpenFlow 網(wǎng)絡(luò)通訊協(xié)議對服務(wù)鏈進(jìn)行相關(guān)流量轉(zhuǎn)發(fā)和控制。在SDN 交換機(jī)上以旁掛串并行的方式接入防火墻(FW)和Web 應(yīng)用防護(hù)系統(tǒng)(WAF)。如圖1 所示,出口接入SDN 交換機(jī)eth-0-2 口,入口接入eth-0-1 口,F(xiàn)W流量進(jìn)出口為eth-0-3 口和eth-0-4 口,WAF 流量進(jìn)出口為eth-0-5 口和eth-0-6 口。
服務(wù)需求為:只把TCP 80 端口的數(shù)據(jù)流給WAF 處理,F(xiàn)W 處理所有數(shù)據(jù)流,如表1 所示。具體分項包括:表項號、流表方向、源接口、目的接口、優(yōu)先級、Match 及標(biāo)注。表項號為流表序列;流表方向分為上行和下行,在這里單向服務(wù)鏈代表只有上行或下行,雙向服務(wù)鏈為同時存在上、下行數(shù)據(jù)流;優(yōu)先級作用于每條表項的執(zhí)行順序由數(shù)值來表示,數(shù)值大代表優(yōu)先級關(guān)系越高,反之則低;為了能精細(xì)化控制和管理數(shù)據(jù)流,本設(shè)計將Match 分為三層:二層表示為以太網(wǎng)類型字段和值,區(qū)分各協(xié)議如ⅠPv4(0x0800)、ⅠPv6(0x08DD)、SNMP(0x 814C)等;三層表示為網(wǎng)絡(luò)層ⅠP 協(xié)議用來定義特殊處理的ⅠP 地址段;四層表示程序端口號。
圖1 旁掛串并行的方式接入防火墻和Web 應(yīng)用防護(hù)系統(tǒng)
(1)單向服務(wù)鏈
即SDN 交換機(jī)的流表中只包含一個方向的流表。如圖1 所示接入到SDN 交換機(jī)上的各服務(wù)節(jié)點都需要配備兩張網(wǎng)卡,分別與SDN交換機(jī)上的網(wǎng)口互連,保證數(shù)據(jù)流的進(jìn)和出。下面將依據(jù)前面定義的網(wǎng)絡(luò)架構(gòu)及服務(wù)需求以單上行為例,具體實現(xiàn)如下:從eth-0-2 口進(jìn)入的全部數(shù)據(jù)流在SDN 交換機(jī)的流表中進(jìn)行匹配,所有數(shù)據(jù)流將匹配表項1,從eth-0-4 口轉(zhuǎn)發(fā)出來至FW 進(jìn)口,經(jīng)FW 程序處理后,沒有被丟棄的數(shù)據(jù)包將從FW 出口返回給交換機(jī)eth-0-3 口,并由eth-0-3 口依據(jù)表項5 將未被丟棄的數(shù)據(jù)包(不包括端口80 數(shù)據(jù)包)轉(zhuǎn)發(fā)給eth-0-1 口,端口80 的數(shù)據(jù)包將依據(jù)表項4 轉(zhuǎn)發(fā)給WAF,經(jīng)WAF 程序處理后,沒有被丟棄的數(shù)據(jù)包將依據(jù)表項6 由eth-0-5 口轉(zhuǎn)發(fā)給eth-0-1 口。
(2)雙向服務(wù)鏈
即SDN 交換機(jī)的流表中包含上行和下線兩個方向的流表,擁有雙向流表的服務(wù)的主機(jī)ⅠP 地址即要作為目的地址也要作為源地址而存在。根據(jù)前面定義的網(wǎng)絡(luò)架構(gòu)及服務(wù)需求,雙向?qū)崿F(xiàn)如下:上行服務(wù)鏈與上述描述一致,下行服務(wù)鏈將由eth-0-1 口依據(jù)表項7 和表項8 分別將TCP:80 端口數(shù)據(jù)流轉(zhuǎn)發(fā)給eth-0-5 口至WAF,非80 端口數(shù)據(jù)流轉(zhuǎn)發(fā)給eth-0-3 口至FW,經(jīng)WAF 程序處理后,未被丟棄的數(shù)據(jù)包依據(jù)表項10 轉(zhuǎn)發(fā)給FW,最后經(jīng)FW 程序處理后,未被丟棄的數(shù)據(jù)包依據(jù)表項12 由eth-0-4 口轉(zhuǎn)發(fā)給eth-0-2 口。
(3)單點故障
分發(fā)任務(wù)的主節(jié)點發(fā)生故障,導(dǎo)致各分節(jié)點無法正常接發(fā),引發(fā)整體系統(tǒng)故障。我們把這種故障叫作單點故障。基于SDN 服務(wù)鏈的網(wǎng)絡(luò)架構(gòu)單點故障主要關(guān)注兩個環(huán)節(jié):一是SDN 交換機(jī)帶來的單點故障;二是并行掛載在SDN 交換機(jī)上的各節(jié)點毀壞引發(fā)的單點故障。前者可以通過雙機(jī)熱備的方式,采用主備、主主備等策略來完善。后者也可以采用與前者同樣的方式來解決,但這種方式違背了基于SDN 服務(wù)鏈架構(gòu)的核心思想,本文將就第二種現(xiàn)象給予討論并給出解決方案。
基于SDN 服務(wù)鏈的網(wǎng)絡(luò)架構(gòu)核心優(yōu)勢之一在于對同構(gòu)設(shè)備的解耦,對異構(gòu)設(shè)備的重組。在網(wǎng)絡(luò)安全方面,特別是依據(jù)特征庫對網(wǎng)絡(luò)流量數(shù)據(jù)包進(jìn)行檢測與防御的安全防御設(shè)備如:WAF、ⅠDS、ⅠPS、防毒設(shè)備等,同品牌設(shè)備特征庫基本一樣。而各廠家趨于對各自產(chǎn)品市場與技術(shù)的保護(hù),實現(xiàn)雙機(jī)熱備部署必須使用兩臺同品牌甚至同型號的設(shè)備來完成,對用戶而言如“雞肋”一般。怎樣能脫離這樣的局限,即能解決單點故障又能起到安全加固的效果,下面將引入備份流表的方式來解決。
備份流表:在主流表服務(wù)鏈路徑的基礎(chǔ)上,建立一套優(yōu)先級低于前者的備份流表服務(wù)鏈路徑,當(dāng)節(jié)點故障時主流表服務(wù)鏈路徑失效,將自啟用備份流表服務(wù)鏈路徑來進(jìn)行引流。這種機(jī)制不僅可以解決節(jié)點故障時的引流問題,還可以將一組節(jié)點設(shè)備劃為一個共享資源池,進(jìn)行更廣泛的應(yīng)用。
如流表1 所示,依據(jù)上述設(shè)定好的架構(gòu)與需求,以下行為例,當(dāng)數(shù)據(jù)流從eth-0-1 口依據(jù)表項7(優(yōu)先級:1001)和表項8(優(yōu)先級:992)分別根據(jù)各自策略要求將數(shù)據(jù)流轉(zhuǎn)發(fā)給WAF 和FW,若單WAF設(shè)備毀壞,將依據(jù)表項8,由eth-0-1 口直接將全部數(shù)據(jù)流轉(zhuǎn)發(fā)FW,經(jīng)FW 程序處理過后未被丟棄的數(shù)據(jù)包依據(jù)表項12(優(yōu)先級:983)轉(zhuǎn)發(fā)給eth-0-2 口;若單FW 設(shè)備毀壞,端口80 數(shù)據(jù)流將依據(jù)表項7轉(zhuǎn)發(fā)給WAF,經(jīng)WAF 程序處理過后未被丟棄的數(shù)據(jù)包依據(jù)表項11跳過FW 直接轉(zhuǎn)發(fā)給eth-0-2 口,非端口80 的數(shù)據(jù)流將依據(jù)表項9,跳過FW 直接轉(zhuǎn)發(fā)給eth-0-2 口。
表1 流表
本文詳細(xì)介紹了傳統(tǒng)網(wǎng)絡(luò)服務(wù)鏈和SDN 網(wǎng)絡(luò)服務(wù)鏈的優(yōu)劣對比及SDN 安全服務(wù)鏈的設(shè)計原理,并基于場景實例闡述了它的設(shè)計與實現(xiàn)。筆者認(rèn)為此項技術(shù)研究將是以后數(shù)據(jù)中心智慧化安全建設(shè)的關(guān)鍵技術(shù),它不僅有效地清洗了網(wǎng)絡(luò)中的數(shù)據(jù)流,實現(xiàn)了精準(zhǔn)按需動態(tài)調(diào)度,強(qiáng)化了網(wǎng)絡(luò)安全保障,而且使整體網(wǎng)絡(luò)架構(gòu)的拓展能力也變得更為靈活。