欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于OpenFlow協(xié)議的SDN防火墻狀態(tài)檢測(cè)方法及系統(tǒng)的制作方法

文檔序號(hào):7811176閱讀:1214來(lái)源:國(guó)知局
一種基于OpenFlow協(xié)議的SDN防火墻狀態(tài)檢測(cè)方法及系統(tǒng)的制作方法
【專(zhuān)利摘要】本發(fā)明放開(kāi)了一種基于OpenFlow協(xié)議的SDN防火墻狀態(tài)檢測(cè)方法及系統(tǒng),通過(guò)在OpenFlow交換機(jī)中增加狀態(tài)表和狀態(tài)轉(zhuǎn)換表,記錄數(shù)據(jù)流的狀態(tài)及其變化信息。同時(shí),在SDN控制器中也同樣建立和維護(hù)一張狀態(tài)轉(zhuǎn)換表,以便實(shí)現(xiàn)控制器與交換機(jī)數(shù)據(jù)流狀態(tài)的同步。此外,本發(fā)明提出了對(duì)原有OpenFlow流表格式的修改,在其中添加了相關(guān)狀態(tài)字段,同時(shí)也修改了OpenFlow協(xié)議,添加了新的消息State_In,以便處理控制器與交換機(jī)之前的狀態(tài)操作消息,保持控制器和交換機(jī)中連接狀態(tài)表保持一致。本發(fā)明可有效實(shí)現(xiàn)更細(xì)粒度的訪問(wèn)控制。同時(shí),通過(guò)Openflow交換機(jī)和SDN控制器的協(xié)同工作,完成了狀態(tài)檢測(cè)防火墻的部署,為SDN網(wǎng)絡(luò)提供更加安全有效的服務(wù)。
【專(zhuān)利說(shuō)明】[0001] -種基于OpenF I ow協(xié)議的SDN防火墻狀態(tài)檢測(cè)方法及系統(tǒng)

【技術(shù)領(lǐng)域】
[0002] 本發(fā)明屬于互聯(lián)網(wǎng)【技術(shù)領(lǐng)域】,主要針對(duì)現(xiàn)有OpenFlow協(xié)議的無(wú)狀態(tài)性而導(dǎo)致的 SDN防火墻無(wú)法進(jìn)行狀態(tài)檢測(cè)問(wèn)題,提出了一種基于OpenFlow協(xié)議的SDN防火墻狀態(tài)檢測(cè) 方法及系統(tǒng)。
[0003]

【背景技術(shù)】
[0004] 軟件定義網(wǎng)絡(luò)(Software Defined Network, SDN ),是一種新型網(wǎng)絡(luò)創(chuàng)新架構(gòu),其 核心技術(shù)OpenFlow通過(guò)將網(wǎng)絡(luò)設(shè)備控制面與數(shù)據(jù)面分離開(kāi)來(lái),從而實(shí)現(xiàn)了網(wǎng)絡(luò)流量的靈 活控制,為核心網(wǎng)絡(luò)及應(yīng)用的創(chuàng)新提供了良好的平臺(tái)??刂茖油ㄟ^(guò)OpenFlow協(xié)議這個(gè)標(biāo)準(zhǔn) 接口對(duì)OpenFlow交換機(jī)中的流表進(jìn)行控制,從而實(shí)現(xiàn)對(duì)整個(gè)網(wǎng)絡(luò)進(jìn)行集中控制。
[0005] 然而,相對(duì)于傳統(tǒng)網(wǎng)絡(luò),SDN在給網(wǎng)絡(luò)管理人員帶了更多便捷,更多控制能力的同 時(shí),作為一種嶄新的網(wǎng)絡(luò)體系架構(gòu),其防火墻技術(shù)解決方案并不完善,存在著許多安全威 脅。目前,部分SDN控制器具有防火墻應(yīng)用模塊,但是其功能只是簡(jiǎn)單的包過(guò)濾,根據(jù)一個(gè) 網(wǎng)流的首個(gè)數(shù)據(jù)包進(jìn)行安全處理,實(shí)現(xiàn)了簡(jiǎn)單的訪問(wèn)控制。然而,這種簡(jiǎn)單的訪問(wèn)控制,無(wú) 法監(jiān)測(cè)SDN數(shù)據(jù)流的狀態(tài)。
[0006] 目前,Shin S等人提出了一個(gè)在SDN架構(gòu)上開(kāi)發(fā)網(wǎng)絡(luò)安全應(yīng)用的開(kāi)發(fā)環(huán)境 FRESCO, FRESCO本身作為SDN應(yīng)用層的一個(gè)應(yīng)用,運(yùn)行在上面所述的安全加固的控制層操 作系統(tǒng)(增強(qiáng)的Ν0Χ)上,允許安全人員創(chuàng)建新的模塊化庫(kù),整合和擴(kuò)展安全功能,從而使用 OpenFlow控制器和硬件進(jìn)行控制和管理流量;Porrasy P等人也提出一種加固的控制平面 操作系統(tǒng)FortNOX。FortNOX通過(guò)擴(kuò)展開(kāi)源的Ν0Χ操作系統(tǒng)的Send_0penflow_Command模 塊,增加了策略沖突消解功能;這些方法都一定程度地增強(qiáng)了防火墻的安全性,無(wú)論是在流 量清洗與控制,策略沖突的消解。但是這些方法并未在應(yīng)用層協(xié)議上實(shí)現(xiàn)更加細(xì)粒度的訪 問(wèn)控制。Divjyot Sethi等人也提出了模型檢測(cè)控制器的抽象概念,其論文中提到了學(xué)習(xí)型 交換機(jī),和一個(gè)簡(jiǎn)單狀態(tài)防火墻的實(shí)現(xiàn)。該防火墻通過(guò)兩個(gè)交換機(jī)協(xié)同工作,實(shí)現(xiàn)了阻止外 網(wǎng)和內(nèi)網(wǎng)主動(dòng)通信的功能;但是這種方法并未將控制器的集中控制性體現(xiàn)出來(lái),而且也并 未抽取應(yīng)用層協(xié)議的狀態(tài)信息,雖然論文通過(guò)巧妙的設(shè)計(jì)思路實(shí)現(xiàn)了簡(jiǎn)單的內(nèi)網(wǎng)與外網(wǎng)單 向連接,然后這種設(shè)計(jì)思路并不是通過(guò)抽取狀態(tài)信息實(shí)現(xiàn)的。
[0007]


【發(fā)明內(nèi)容】

[0008] 為了解決上述技術(shù)問(wèn)題,本發(fā)明從SDN架構(gòu)特點(diǎn)出發(fā),通過(guò)在SDN控制器和 OpenFlow交換機(jī)中增加狀態(tài)表和變換流表,提出了一種基于OpenFlow協(xié)議的SDN防火墻狀 態(tài)檢測(cè)方法及系統(tǒng)。
[0009] 本發(fā)明的方法所采用的技術(shù)方案是:一種基于OpenFlow協(xié)議的SDN防火墻狀態(tài) 檢測(cè)方法,其特征在于:SDN防火墻模塊分別部署在SDN控制器和OpenFlow交換機(jī)中,通 過(guò)在SDN控制器中添加連接狀態(tài)表,在OpenFlow交換機(jī)中添加連接狀態(tài)表,并且修改原 有OpenFlow流表格式,在其中添加相關(guān)狀態(tài)字段,同時(shí)修改OpenFlow協(xié)議,添加新的消息 State_In,保持SDN控制器和OpenFlow交換機(jī)中連接狀態(tài)表保持一致,從而實(shí)現(xiàn)了 SDN防 火墻模塊的部署。
[0010] 本發(fā)明的系統(tǒng)所采用的技術(shù)方案是:一種基于OpenFlow協(xié)議的SDN防火墻狀態(tài)檢 測(cè)系統(tǒng),包括SDN控制器、OpenFlow交換機(jī);其特征在于:還包括交換機(jī)中包頭信息提取模 塊、狀態(tài)表建立和更新模塊、變換流表(shifted FIow Tab 1 e )建立和更新模塊、合法性檢測(cè) 模塊和SDN控制器端命令下發(fā)及連接狀態(tài)表同步模塊; 所述的交換機(jī)中包頭信息提取模塊用于提取數(shù)據(jù)包頭部中關(guān)鍵信息,所述的關(guān)鍵信息 包括數(shù)據(jù)包的源地址,源端口,目的地址,目的端口,序列號(hào),確認(rèn)號(hào)以及TCP標(biāo)志位; 所述的狀態(tài)表建立和更新模塊用于在所述的OpenFlow交換機(jī)中建立連接狀態(tài)表,并 同時(shí)將連接狀態(tài)表的更新同步到所述的SDN控制器中,該模塊的連接狀態(tài)表的更新將由變 換流表通過(guò)set_state指令控制; 所述的變換流表建立和更新模塊用于在由所述的SDN控制器下發(fā)指令在所述的 OpenFlow交換機(jī)中建立變換流表,負(fù)責(zé)狀態(tài)轉(zhuǎn)換過(guò)程以及數(shù)據(jù)包轉(zhuǎn)發(fā)操作; 所述的合法性檢測(cè)模塊用于負(fù)責(zé)判別來(lái)到所述的OpenFlow交換機(jī)數(shù)據(jù)包屬于哪一次 連接; 所述的SDN控制器端命令下發(fā)及連接狀態(tài)表同步模塊用于在所述的SDN控制器端建立 連接狀態(tài)表,與所述的OpenFlow交換機(jī)中的狀態(tài)表保持同步,同時(shí)當(dāng)收到所述的OpenFlow 交換機(jī)發(fā)送Packet_In消息時(shí),該模塊將會(huì)將包頭信息和狀態(tài)信息與連接狀態(tài)表或者防火 墻規(guī)則集進(jìn)行對(duì)比,分配相應(yīng)狀態(tài),同時(shí)下發(fā)變換流表到所述的OpenFlow交換機(jī)中。
[0011] 作為優(yōu)選,所述的連接狀態(tài)表的建立首先定義兩種消息結(jié)構(gòu)讓SDN控制器和 OpenFlow交換機(jī)完成同步連接狀態(tài)表的操作,當(dāng)OpenFlow交換機(jī)處的連接狀態(tài)表發(fā)生狀 態(tài)更新時(shí),OpenFlow交換機(jī)給SDN控制器發(fā)送一個(gè)STATE_IN消息,通知SDN控制器對(duì)相 應(yīng)狀態(tài)記錄進(jìn)行更新,而當(dāng)SDN控制器處的連接狀態(tài)表發(fā)生狀態(tài)更新時(shí),SDN控制器也向 OpenFlow交換機(jī)發(fā)送一個(gè)0FP_STATE _ MOD消息,命令OpenFlow交換機(jī)對(duì)相應(yīng)狀態(tài)記錄 進(jìn)行更新;然后連接狀態(tài)表用一個(gè)四元組組成(Match Field, State, Timeout, Packet_ count),其中Match Field包括數(shù)據(jù)包的IP(源地址,目的地址,但是針對(duì)連接,本發(fā)明在 匹配連接狀態(tài)表的時(shí)候不區(qū)分)和協(xié)議類(lèi)型(包括TCP/UDP,ICMP等等),State表示連 接狀態(tài),Timeout表示連接的超時(shí)時(shí)間,Packet_count表示通過(guò)數(shù)據(jù)包的數(shù)目。
[0012] 作為優(yōu)選,為了實(shí)現(xiàn)連接狀態(tài)表的更新、維護(hù)以及管理,使數(shù)據(jù)包轉(zhuǎn)發(fā)過(guò)程中帶 上有狀態(tài)的特征,本發(fā)明對(duì)OpenFlow協(xié)議定義的變換流表的基本結(jié)構(gòu)添加了一個(gè)狀態(tài)屬 性(State),以及該狀態(tài)對(duì)應(yīng)的下一個(gè)狀態(tài)屬性(Next_State),并重新定義了數(shù)據(jù)包與表 項(xiàng)記錄匹配的過(guò)程,使匹配不僅僅依賴(lài)與數(shù)據(jù)包包頭的信息,同時(shí)也取決于它的狀態(tài)(當(dāng) 數(shù)據(jù)包經(jīng)過(guò)連接狀態(tài)表的匹配后,會(huì)在其包頭信息中添加該狀態(tài)信息);匹配不成功則 OpenFlow交換機(jī)將向SDN控制器發(fā)送一個(gè)Packet_IN請(qǐng)求消息,其中將會(huì)包含數(shù)據(jù)包包頭 的信息,也包含其狀態(tài)信息,作為回應(yīng),SDN控制器會(huì)向OpenFlow交換機(jī)發(fā)送一個(gè)Flowjnod 消息,向OpenFlow交換機(jī)添加相應(yīng)記錄;當(dāng)匹配成功時(shí),則執(zhí)行一個(gè)的OFPIT_SET_STATE指 令,該指令將連接狀態(tài)表中狀態(tài)賦值為變換流表中相應(yīng)記錄的下一個(gè)狀態(tài)(Next_State), 完成狀態(tài)的轉(zhuǎn)換;同時(shí)按照ACTION處理該數(shù)據(jù)包。
[0013] 作為優(yōu)選,當(dāng)一個(gè)數(shù)據(jù)包來(lái)到OpenFlow交換機(jī)時(shí),OpenFlow交換機(jī)的狀態(tài)管理過(guò) 程包括以下步驟: 步驟1-1:狀態(tài)查詢(xún),這一查詢(xún)是在連接狀態(tài)表中進(jìn)行的,把數(shù)據(jù)包的包頭信息作為查 詢(xún)關(guān)鍵字,如果在連接狀態(tài)表中沒(méi)有關(guān)于該查詢(xún)的記錄,則在連接狀態(tài)表中添加該項(xiàng),將其 狀態(tài)置為DEFAULT ; 步驟1-2 :變換流表實(shí)現(xiàn)狀態(tài)轉(zhuǎn)換,當(dāng)數(shù)據(jù)包經(jīng)過(guò)連接狀態(tài)表的匹配后,其數(shù)據(jù)包包頭 被加上狀態(tài)信息,在查詢(xún)變換流表的時(shí),該狀態(tài)信息也將作為一個(gè)關(guān)鍵字,如果找到記錄, 則執(zhí)行數(shù)據(jù)包處理操作,同時(shí)將下一個(gè)狀態(tài)信息寫(xiě)回到原來(lái)的連接狀態(tài)表,對(duì)狀態(tài)進(jìn)行更 新; 步驟1-3 :狀態(tài)更新,包含添加、刪除和修改,通過(guò)OFPIT_SET_STATE指令完成狀態(tài)更 新,或使用State_mod指令完成狀態(tài)更新。
[0014] 作為優(yōu)選,步驟1-1中所述的查詢(xún)關(guān)鍵字為源IP地址。
[0015] 作為優(yōu)選,所述的SDN防火墻狀態(tài)檢測(cè)系統(tǒng)接收到數(shù)據(jù)包后的處理過(guò)程包括以下 步驟: 步驟2-1 :數(shù)據(jù)包頭部信息通過(guò)關(guān)鍵信息提取模塊,提取數(shù)據(jù)包包頭關(guān)鍵信息; 步驟2-2 :將包頭關(guān)鍵信息與狀態(tài)表進(jìn)行匹配,如果狀態(tài)表中沒(méi)有關(guān)于該項(xiàng)的記錄,則 添加記錄,并將其狀態(tài)置為DEFAULT ; 步驟2-3:將匹配域信息與該狀態(tài)信息一并發(fā)送,與變換流表(Shifted Flow Table) 進(jìn)行匹配,若變換流表中沒(méi)有相應(yīng)記錄,則發(fā)送Packet_In消息到SDN控制器端,SDN控制 器端匹配連接狀態(tài)表或者規(guī)則集下發(fā)Flow_Mod到OpenFlow交換機(jī); 步驟2-4 :按照SDN控制器指令更新變換流表同時(shí)執(zhí)行相應(yīng)數(shù)據(jù)轉(zhuǎn)發(fā)操作; 步驟2- 5 :將變換流表中的下一個(gè)狀態(tài)的信息寫(xiě)回到狀態(tài)表; 步驟2-6 :0penFl〇W交換機(jī)向SDN控制器發(fā)送State_In消息對(duì)SDN控制器中的狀態(tài)表 進(jìn)行更新。
[0016] 本發(fā)明與Shin S等人的工作不同,通過(guò)在SDN控制器和OpenFlow交換機(jī)通過(guò)定 義兩種表(連接狀態(tài)表和變換流表)來(lái)完成狀態(tài)檢測(cè)與轉(zhuǎn)換流程。對(duì)OpenFlow交換機(jī)中定 義的流表的結(jié)構(gòu)進(jìn)行修改,添加狀態(tài)項(xiàng),使得流表的轉(zhuǎn)發(fā)和狀態(tài)關(guān)聯(lián)起來(lái),并且完成了對(duì)狀 態(tài)表的維護(hù)和更新。采用OpenFlow交換機(jī)和SDN控制器協(xié)同工作的方式來(lái)實(shí)現(xiàn)對(duì)全局網(wǎng) 絡(luò)通信狀態(tài)的檢測(cè),保證了 SDN控制器的集中化控制,同時(shí)用SDN控制器與OpenFlow交換 機(jī)之間較小的通信量實(shí)現(xiàn)了 SDN控制器對(duì)全局網(wǎng)絡(luò)通信狀態(tài)的掌握與控制。此外,由于連 接狀態(tài)表建立在OpenFlow交換機(jī)和SDN控制器中,本發(fā)明修改了消息機(jī)制即時(shí)同步兩表中 的內(nèi)容,使得兩張表中關(guān)于相同連接的狀態(tài)保持高度一致。
[0017] 本發(fā)明的有益創(chuàng)新為: 1.提出并設(shè)計(jì)了一種SDN防火墻狀態(tài)檢測(cè)方法,SDN網(wǎng)絡(luò)架構(gòu)的防火墻大多都是傳統(tǒng) 的包過(guò)濾防火墻,沒(méi)有狀態(tài)檢測(cè)功能。要在SDN架構(gòu)下實(shí)現(xiàn)狀態(tài)檢測(cè)防火墻的方法是多種 多樣的,而本發(fā)明用交換機(jī)和控制器協(xié)同工作的方式來(lái)實(shí)現(xiàn)對(duì)全局網(wǎng)絡(luò)通信狀態(tài)的檢測(cè), 這種設(shè)計(jì)方案是比較高效且不違背SDN架構(gòu)設(shè)計(jì)宗旨和初衷的,本發(fā)明的設(shè)計(jì)和實(shí)現(xiàn)方法 保證了控制器的控制集中化不受影響,同時(shí)用控制器與交換機(jī)之間較小的通信量實(shí)現(xiàn)了控 制器對(duì)全局網(wǎng)絡(luò)通信狀態(tài)的掌握與控制。
[0018] 2.現(xiàn)有OpenFlow流表是無(wú)狀態(tài)的,因?yàn)闊o(wú)法完成對(duì)網(wǎng)絡(luò)通信狀態(tài)進(jìn)行檢測(cè)的功 能,帶來(lái)了很多安全威脅,如防御DDos攻擊困難等。本發(fā)明對(duì)OpenFlow協(xié)議中定義的流表 的基本結(jié)構(gòu)進(jìn)行了修改,添加了相關(guān)狀態(tài)項(xiàng),使得數(shù)據(jù)流轉(zhuǎn)發(fā)不再與狀態(tài)無(wú)關(guān),完成了對(duì) 狀態(tài)表的維護(hù)與更新的功能。
[0019]

【專(zhuān)利附圖】

【附圖說(shuō)明】
[0020] 圖1 :是本發(fā)明實(shí)施例的系統(tǒng)架構(gòu)示意圖。
[0021] 圖2 :是本發(fā)明實(shí)施例的系統(tǒng)收到數(shù)據(jù)包時(shí)處理的流程圖。
[0022] 圖3 :是本發(fā)明實(shí)施例的TCP數(shù)據(jù)包處理流程圖。
[0023] 圖4 :是本發(fā)明實(shí)施例的UDP對(duì)虛連接狀態(tài)檢測(cè)流程圖。
[0024] 圖5 :是本發(fā)明實(shí)施例的ICMP數(shù)據(jù)包處理流程圖。
[0025] 圖6 :是本發(fā)明實(shí)施例的TCP狀態(tài)轉(zhuǎn)換圖。
[0026] 圖7 :是本發(fā)明實(shí)施例的UDP狀態(tài)轉(zhuǎn)換圖。
[0027] 圖8 :是本發(fā)明實(shí)施例的ICMP狀態(tài)轉(zhuǎn)換圖。
[0028]

【具體實(shí)施方式】
[0029] 為了便于本領(lǐng)域普通技術(shù)人員理解和實(shí)施本發(fā)明,下面結(jié)合附圖及實(shí)施例對(duì)本發(fā) 明作進(jìn)一步的詳細(xì)描述,應(yīng)當(dāng)理解,此處所描述的實(shí)施示例僅用于說(shuō)明和解釋本發(fā)明,并不 用于限定本發(fā)明。
[0030] 本發(fā)明的方法所采用的技術(shù)方案是:一種基于OpenFlow協(xié)議的SDN防火墻狀態(tài)檢 測(cè)方法,SDN防火墻模塊分別部署在SDN控制器和OpenFlow交換機(jī)中,通過(guò)在SDN控制器 中添加連接狀態(tài)表,在OpenFlow交換機(jī)中添加連接狀態(tài)表,并且修改原有OpenFlow流表格 式,在其中添加相關(guān)狀態(tài)字段,同時(shí)修改OpenFlow協(xié)議,添加新的消息State_In,保持SDN 控制器和OpenFlow交換機(jī)中連接狀態(tài)表保持一致,從而實(shí)現(xiàn)了 SDN防火墻模塊的部署。
[0031] 請(qǐng)見(jiàn)圖1,本發(fā)明的系統(tǒng)所采用的技術(shù)方案是:一種基于OpenFlow協(xié)議的SDN防 火墻狀態(tài)檢測(cè)系統(tǒng),包括SDN控制器、OpenFlow交換機(jī)、交換機(jī)中包頭信息提取模塊、狀態(tài) 表建立和更新模塊、變換流表建立和更新模塊、合法性檢測(cè)模塊和SDN控制器端命令下發(fā) 及連接狀態(tài)表同步模塊;交換機(jī)中包頭信息提取模塊用于提取數(shù)據(jù)包頭部中關(guān)鍵信息,關(guān) 鍵信息包括數(shù)據(jù)包的源地址,源端口,目的地址,目的端口,序列號(hào),確認(rèn)號(hào)以及TCP標(biāo)志 位;狀態(tài)表建立和更新模塊用于在OpenFlow交換機(jī)中建立連接狀態(tài)表,并同時(shí)將連接狀態(tài) 表的更新同步到SDN控制器中,該模塊的連接狀態(tài)表的更新將由變換流表通過(guò) Set_State 指令控制;變換流表建立和更新模塊用于在由SDN控制器下發(fā)指令在OpenFlow交換機(jī)中建 立變換流表,負(fù)責(zé)狀態(tài)轉(zhuǎn)換過(guò)程以及數(shù)據(jù)包轉(zhuǎn)發(fā)操作;合法性檢測(cè)模塊用于負(fù)責(zé)判別來(lái)到 OpenFlow交換機(jī)數(shù)據(jù)包屬于哪一次連接;SDN控制器端命令下發(fā)及連接狀態(tài)表同步模塊用 于在SDN控制器端建立連接狀態(tài)表,與OpenFlow交換機(jī)中的狀態(tài)表保持同步,同時(shí)當(dāng)收到 OpenFlow交換機(jī)發(fā)送Packet_In消息時(shí),該模塊將會(huì)將包頭信息和狀態(tài)信息與連接狀態(tài)表 或者防火墻規(guī)則集進(jìn)行對(duì)比,分配相應(yīng)狀態(tài),同時(shí)下發(fā)變換流表到OpenFlow交換機(jī)中。
[0032] 其中,連接狀態(tài)表的建立首先定義兩種消息結(jié)構(gòu)讓SDN控制器和OpenFlow交 換機(jī)完成同步連接狀態(tài)表的操作,當(dāng)OpenFlow交換機(jī)處的連接狀態(tài)表發(fā)生狀態(tài)更新時(shí), OpenFlow交換機(jī)給SDN控制器發(fā)送一個(gè)STATE_IN消息,通知SDN控制器對(duì)相應(yīng)狀態(tài)記錄 進(jìn)行更新,而當(dāng)SDN控制器處的連接狀態(tài)表發(fā)生狀態(tài)更新時(shí),SDN控制器也向OpenFlow交 換機(jī)發(fā)送一個(gè)〇FP_STATE _ MOD消息,命令OpenFlow交換機(jī)對(duì)相應(yīng)狀態(tài)記錄進(jìn)行更新;然 后連接狀態(tài)表用一個(gè)四元組組成(Match Field, State, Timeout, Packet_count),其中 Match Field包括數(shù)據(jù)包的IP和協(xié)議類(lèi)型,State表示連接狀態(tài),Timeout表示連接的超 時(shí)時(shí)間,Packet_count表示通過(guò)數(shù)據(jù)包的數(shù)目。
[0033] 其中,變換流表的基本結(jié)構(gòu)添加了一個(gè)狀態(tài)屬性(State),以及該狀態(tài)對(duì)應(yīng)的下一 個(gè)狀態(tài)屬性(Next_State),并重新定義了數(shù)據(jù)包與表項(xiàng)記錄匹配的過(guò)程,使匹配不僅僅依 賴(lài)與數(shù)據(jù)包包頭的信息,同時(shí)也取決于它的狀態(tài);匹配不成功則OpenFlow交換機(jī)將向SDN 控制器發(fā)送一個(gè)Packet_IN請(qǐng)求消息,其中將會(huì)包含數(shù)據(jù)包包頭的信息,也包含其狀態(tài)信 息,作為回應(yīng),SDN控制器會(huì)向OpenFlow交換機(jī)發(fā)送一個(gè)Flow_mod消息,向OpenFlow交換 機(jī)添加相應(yīng)記錄;當(dāng)匹配成功時(shí),則執(zhí)行一個(gè)的〇FPIT_SET_STATE指令,該指令將連接狀態(tài) 表中狀態(tài)賦值為變換流表中相應(yīng)記錄的下一個(gè)狀態(tài)(Next_State),完成狀態(tài)的轉(zhuǎn)換;同時(shí) 按照ACTION處理該數(shù)據(jù)包。
[0034] 其中,當(dāng)一個(gè)數(shù)據(jù)包來(lái)到OpenFlow交換機(jī)時(shí),OpenFlow交換機(jī)的狀態(tài)管理過(guò)程包 括以下步驟: 步驟1-1:狀態(tài)查詢(xún),這一查詢(xún)是在連接狀態(tài)表中進(jìn)行的,把數(shù)據(jù)包的包頭信息作為查 詢(xún)關(guān)鍵字(例如源IP地址),如果在連接狀態(tài)表中沒(méi)有關(guān)于該查詢(xún)的記錄,則在連接狀態(tài)表 中添加該項(xiàng),將其狀態(tài)置為DEFAULT ; 步驟1-2 :變換流表實(shí)現(xiàn)狀態(tài)轉(zhuǎn)換,當(dāng)數(shù)據(jù)包經(jīng)過(guò)連接狀態(tài)表的匹配后,其數(shù)據(jù)包包頭 被加上狀態(tài)信息,在查詢(xún)變換流表的時(shí),該狀態(tài)信息也將作為一個(gè)關(guān)鍵字,如果找到記錄, 則執(zhí)行數(shù)據(jù)包處理操作,同時(shí)將下一個(gè)狀態(tài)信息寫(xiě)回到原來(lái)的連接狀態(tài)表,對(duì)狀態(tài)進(jìn)行更 新; 步驟1-3 :狀態(tài)更新,包含添加、刪除和修改,通過(guò)0FPIT_SET_STATE指令完成狀態(tài)更 新。
[0035] 請(qǐng)見(jiàn)圖2, SDN防火墻狀態(tài)檢測(cè)系統(tǒng)接收到數(shù)據(jù)包后的處理過(guò)程包括以下步驟: 步驟2-1 :數(shù)據(jù)包頭部信息通過(guò)關(guān)鍵信息提取模塊,提取數(shù)據(jù)包包頭關(guān)鍵信息; 步驟2-2 :將包頭關(guān)鍵信息與狀態(tài)表進(jìn)行匹配,如果狀態(tài)表中沒(méi)有關(guān)于該項(xiàng)的記錄,則 添加記錄,并將其狀態(tài)置為DEFAULT ; 步驟2-3 :將匹配域信息與該狀態(tài)信息一并發(fā)送,與變換流表進(jìn)行匹配,若變換流表中 沒(méi)有相應(yīng)記錄,則發(fā)送Packet_In消息到SDN控制器端,SDN控制器端匹配連接狀態(tài)表或者 規(guī)則集下發(fā)Flow_Mod到OpenFlow交換機(jī); 步驟2-4 :按照SDN控制器指令更新變換流表同時(shí)執(zhí)行相應(yīng)數(shù)據(jù)轉(zhuǎn)發(fā)操作; 步驟2- 5 :將變換流表中的下一個(gè)狀態(tài)的信息寫(xiě)回到狀態(tài)表; 步驟2-6 :OpenFl〇W交換機(jī)向SDN控制器發(fā)送State_In消息對(duì)SDN控制器中的狀態(tài)表 進(jìn)行更新。
[0036] 在SDN網(wǎng)絡(luò)環(huán)境下,本發(fā)明定義數(shù)據(jù)包傳送有兩種方式:一種是流進(jìn)狀態(tài)檢測(cè)防 火墻的,比如TCP、UDP包等,還有一種是直接通過(guò)核心包過(guò)濾層進(jìn)行通信的,比如ICMP包 等。
[0037] 當(dāng)OpenFlow交換機(jī)(以下簡(jiǎn)稱(chēng)交換機(jī))收到一個(gè)數(shù)據(jù)包的包頭信息消息時(shí),交換機(jī) 將根據(jù)解析數(shù)據(jù)包包頭信息得到原數(shù)據(jù)包包頭信息中與匹配相關(guān)的關(guān)鍵信息,在變換流表 (即shifted Flow Table)中沒(méi)有該項(xiàng)記錄的時(shí)候,交換機(jī)將數(shù)據(jù)包包頭信息通過(guò)Packet_ IN消息發(fā)給SDN控制器(以下簡(jiǎn)稱(chēng)控制器)。
[0038] (1 )Packet_IN消息發(fā)送到控制器端后,如果判斷數(shù)據(jù)包協(xié)議類(lèi)型為UDP或者TCP, 則該數(shù)據(jù)包將根據(jù)規(guī)則和狀態(tài)表來(lái)判斷是否允許被轉(zhuǎn)發(fā);如果允許,控制器即下發(fā)Flow_ mod命令到交換機(jī),添加相應(yīng)表項(xiàng),并執(zhí)行Forward操作。通過(guò)交換機(jī)轉(zhuǎn)發(fā)到目的主機(jī)。
[0039] (2)Packet_IN消息發(fā)送到控制器后,如果判斷為ICMP的數(shù)據(jù)包,則該模塊即根據(jù) 其訪問(wèn)控制規(guī)則,對(duì)消息進(jìn)行處理,決定是否允許數(shù)據(jù)包轉(zhuǎn)發(fā)。
[0040] IP數(shù)據(jù)包是基于TCP、UDP、ICMP和IGMP四種協(xié)議,其中IGMP用來(lái)把一個(gè)UDP數(shù) 據(jù)報(bào)多播到多個(gè)主機(jī),系統(tǒng)不對(duì)此協(xié)議進(jìn)行處理,IP數(shù)據(jù)包解析后得到分別基于TCP、UDP 和ICMP協(xié)議的三種數(shù)據(jù)包信息。而這三種協(xié)議的工作原理和方式不盡相同,所以對(duì)不同的 協(xié)議的數(shù)據(jù)包需要采用不同的方法進(jìn)行處理。
[0041] 下面分別介紹針對(duì)不同種類(lèi)的數(shù)據(jù)包的檢測(cè)流程。
[0042] 請(qǐng)見(jiàn)圖3, TCP數(shù)據(jù)包處理流程為: TCP數(shù)據(jù)包狀態(tài)檢測(cè)模塊的主要工作是創(chuàng)建一個(gè)TCP連接狀態(tài)表,當(dāng)數(shù)據(jù)包來(lái)到交 換機(jī)時(shí),該交換機(jī)的關(guān)鍵信息提取模塊啟動(dòng),根據(jù)交換機(jī)中的狀態(tài)表(State Table)和變 換流表(Shifted Flow Table)的匹配情況,如果沒(méi)有記錄與之匹配,那么首先判斷是否 是SYN數(shù)據(jù)包,如果是SYN數(shù)據(jù)包,說(shuō)明是新建連接,就與控制器中防火墻模塊的規(guī)則集 進(jìn)行匹配,匹配成功后,向交換機(jī)中發(fā)送fl〇w_mod消息,在變換流表中,添加記錄,動(dòng)作為 forward,分配下一個(gè)狀態(tài)標(biāo)志,交換機(jī)收到后,立即執(zhí)行SET_STATE操作,即更新連接狀 態(tài)表(包括控制器中的連接狀態(tài)表(state Table-C,和交換機(jī)中的連接狀態(tài)表(state Table-SW),兩者通過(guò)state-mod實(shí)現(xiàn)同步),進(jìn)行合法性檢測(cè)后,轉(zhuǎn)發(fā)該數(shù)據(jù)包。
[0043] 如果不是SYN連接,說(shuō)明可能是原有連接的一部分,不需要規(guī)則匹配,直接查詢(xún) 控制器連接狀態(tài)表,如果存在,則下發(fā)Flowjnod消息,向交換機(jī)中變換流表添加記錄,動(dòng)作 為forward,分配下一個(gè)狀態(tài)標(biāo)志,交換機(jī)收到后,立即執(zhí)行SET_STATE操作,即更新連接 狀態(tài)表(包括控制器中的連接狀態(tài)表(state Table-C,和交換機(jī)中的連接狀態(tài)表(state Table-SW),兩者通過(guò)state-mod實(shí)現(xiàn)同步),進(jìn)行合法性檢測(cè)后,轉(zhuǎn)發(fā)該數(shù)據(jù)包。
[0044] 那么如果數(shù)據(jù)包可與交換機(jī)中狀態(tài)表(state Table-SW)和變換流表(Shifted Flow Table)都匹配,則數(shù)據(jù)包包頭信息不發(fā)給控制器,直接由交換機(jī)處理。
[0045] 請(qǐng)見(jiàn)圖4, UDP數(shù)據(jù)包處理流程為: UDP是一種面向無(wú)連接的協(xié)議,UDP數(shù)據(jù)包首部信息中不包含記錄連接的相關(guān)標(biāo)志位。 通過(guò)UDP協(xié)議傳輸數(shù)據(jù)不需要實(shí)現(xiàn)建立連接,而是在網(wǎng)絡(luò)路徑中的每個(gè)中間節(jié)點(diǎn)對(duì)UDP數(shù) 據(jù)包進(jìn)行路由。
[0046] 對(duì)于UDP服務(wù)從狀態(tài)防火墻動(dòng)態(tài)打開(kāi)端口并為其建立連接狀態(tài)、交換數(shù)據(jù)到連接 結(jié)束,關(guān)閉相應(yīng)端口并刪除其狀態(tài)信息的這種完整的通信過(guò)程,本發(fā)明稱(chēng)之為一次虛連接。
[0047] 當(dāng)接收到一個(gè)UDP數(shù)據(jù)包時(shí),根據(jù)從關(guān)鍵信息模塊提取出來(lái)的關(guān)鍵信息是否存在 于狀態(tài)表(SW)中判斷數(shù)據(jù)包的處理去向。若存在,就將狀態(tài)表中對(duì)應(yīng)的狀態(tài)信息寫(xiě)入到 數(shù)據(jù)包的包頭信息;否則,將狀態(tài)域設(shè)置為DEFAULT,并同步到控制器中的狀態(tài)表。接下來(lái) 查詢(xún)是否匹配變換流表,若匹配,直接用SET_STATE操作改變狀態(tài)表(state Table-SW)的 狀態(tài)值,同時(shí)控制器端狀態(tài)表同步更新,轉(zhuǎn)發(fā)數(shù)據(jù)包;否則,將包頭信息發(fā)給控制器,查詢(xún)控 制器狀態(tài)表,若不存在,發(fā)送DROP命令;否則,再查詢(xún)規(guī)則集合,根據(jù)規(guī)則集合的要求執(zhí)行 ACTION。對(duì)虛連接狀態(tài)檢測(cè)流程如圖4所示。
[0048] 請(qǐng)見(jiàn)圖5, ICMP數(shù)據(jù)包處理流程為: 與其他格式的數(shù)據(jù)包處理方式不同,當(dāng)ICMP的第一個(gè)數(shù)據(jù)包發(fā)達(dá)到交換機(jī)中時(shí),交換 機(jī)的狀態(tài)表的關(guān)于該數(shù)據(jù)包記錄變?yōu)镈EFAULT,接著其因?yàn)槠ヅ洳坏浇粨Q機(jī)變換流表項(xiàng),所 以,包頭信息被發(fā)到控制器,而控制器將查詢(xún)到相關(guān)記錄(因?yàn)榻粨Q機(jī)狀態(tài)表與控制器的 狀態(tài)表同步),當(dāng)該包不違反防火墻規(guī)則時(shí),控制器即向交換機(jī)發(fā)送fl〇w_mod信息,在交 換機(jī)變換流表中添加記錄,將下一個(gè)狀態(tài)標(biāo)志置為NULL,轉(zhuǎn)發(fā)該數(shù)據(jù)包的同時(shí)修改狀態(tài)表 關(guān)于該記錄的狀態(tài),同步到控制器,控制器發(fā)現(xiàn)狀態(tài)被置NULL后,即向交換機(jī)變換流表中 添加 STATE =NULL ,且Next_State =NULL的記錄。當(dāng)下一個(gè)數(shù)據(jù)包來(lái)到交換機(jī)的時(shí)候,可以 匹配到狀態(tài)表中相關(guān)項(xiàng),其狀態(tài)位為NULL,匹配交換機(jī)變換流表時(shí),也可以匹配到相關(guān)項(xiàng)。 本發(fā)明定義當(dāng)60s內(nèi)沒(méi)有在這條連接記錄上沒(méi)有數(shù)據(jù)流動(dòng)時(shí),控制器即刪掉相關(guān)項(xiàng)。
[0049] 實(shí)例其中關(guān)鍵部分的具體實(shí)現(xiàn)說(shuō)明如下: 1. TCP狀態(tài)檢測(cè) 對(duì)于如下所示的防火墻規(guī)則(內(nèi)外網(wǎng)間的單向訪問(wèn),TCP狀態(tài)轉(zhuǎn)換如圖6所示)

【權(quán)利要求】
1. 一種基于OpenFlow協(xié)議的SDN防火墻狀態(tài)檢測(cè)方法,其特征在于:SDN防火墻模 塊分別部署在SDN控制器和OpenFlow交換機(jī)中,通過(guò)在SDN控制器中添加連接狀態(tài)表,在 OpenFlow交換機(jī)中添加連接狀態(tài)表,并且修改原有OpenFlow流表格式,在其中添加相關(guān)狀 態(tài)字段,同時(shí)修改OpenFlow協(xié)議,添加新的消息State_In,保持SDN控制器和OpenFlow交 換機(jī)中連接狀態(tài)表保持一致,從而實(shí)現(xiàn)了 SDN防火墻模塊的部署。
2. -種利用權(quán)利要求1所述的基于OpenFlow協(xié)議的SDN防火墻狀態(tài)檢測(cè)方法進(jìn)行SDN 防火墻狀態(tài)檢測(cè)的系統(tǒng),包括SDN控制器、OpenFlow交換機(jī);其特征在于:還包括交換機(jī)中 包頭信息提取模塊、狀態(tài)表建立和更新模塊、變換流表建立和更新模塊、合法性檢測(cè)模塊和 SDN控制器端命令下發(fā)連接狀態(tài)表同步模塊; 所述的交換機(jī)中包頭信息提取模塊用于提取數(shù)據(jù)包頭部中關(guān)鍵信息,所述的關(guān)鍵信息 包括數(shù)據(jù)包的源地址,源端口,目的地址,目的端口,序列號(hào),確認(rèn)號(hào)以及TCP標(biāo)志位; 所述的狀態(tài)表建立和更新模塊用于在所述的OpenFlow交換機(jī)中建立連接狀態(tài)表,并 同時(shí)將連接狀態(tài)表的更新同步到所述的SDN控制器中,該模塊的連接狀態(tài)表的更新將由變 換流表通過(guò)set_state指令控制; 所述的變換流表建立和更新模塊用于在由所述的SDN控制器下發(fā)指令在所述的 OpenFlow交換機(jī)中建立變換流表,負(fù)責(zé)狀態(tài)轉(zhuǎn)換過(guò)程以及數(shù)據(jù)包轉(zhuǎn)發(fā)操作; 所述的合法性檢測(cè)模塊用于負(fù)責(zé)判別來(lái)到所述的OpenFlow交換機(jī)數(shù)據(jù)包屬于哪一次 連接; 所述的SDN控制器端命令下發(fā)及連接狀態(tài)表同步模塊用于在所述的SDN控制器端建立 連接狀態(tài)表,與所述的OpenFlow交換機(jī)中的狀態(tài)表保持同步,同時(shí)當(dāng)收到所述的OpenFlow 交換機(jī)發(fā)送Packet_In消息時(shí),該模塊將會(huì)將包頭信息和狀態(tài)信息與連接狀態(tài)表或者防火 墻規(guī)則集進(jìn)行對(duì)比,分配相應(yīng)狀態(tài),同時(shí)下發(fā)變換流表到所述的OpenFlow交換機(jī)中。
3. 根據(jù)權(quán)利要求2所述的基于OpenFlow協(xié)議的SDN防火墻狀態(tài)檢測(cè)系統(tǒng),其特征在 于:所述的連接狀態(tài)表的建立首先定義兩種消息結(jié)構(gòu)讓SDN控制器和OpenFlow交換機(jī)完 成同步連接狀態(tài)表的操作,當(dāng)OpenFlow交換機(jī)處的連接狀態(tài)表發(fā)生狀態(tài)更新時(shí),OpenFlow 交換機(jī)給SDN控制器發(fā)送一個(gè)STATE_IN消息,通知SDN控制器對(duì)相應(yīng)狀態(tài)記錄進(jìn)行更新; 連接狀態(tài)表用一個(gè)四元組組成(Match Field, State, Timeout, Packet_count),其中 Match Field包括數(shù)據(jù)包的IP和協(xié)議類(lèi)型,State表示連接狀態(tài),Timeout表示連接的超 時(shí)時(shí)間,Packet_count表示通過(guò)數(shù)據(jù)包的數(shù)目。
4. 根據(jù)權(quán)利要求2所述的基于OpenFlow協(xié)議的SDN防火墻狀態(tài)檢測(cè)系統(tǒng),其特征在 于:所述的變換流表的基本結(jié)構(gòu)添加了一個(gè)狀態(tài)屬性(State),以及該狀態(tài)對(duì)應(yīng)的下一個(gè) 狀態(tài)屬性(Next_State),并重新定義了數(shù)據(jù)包與表項(xiàng)記錄匹配的過(guò)程,使匹配不僅僅依賴(lài) 與數(shù)據(jù)包包頭的信息,同時(shí)也取決于它的狀態(tài);匹配不成功則OpenFlow交換機(jī)將向SDN控 制器發(fā)送一個(gè)Packet_IN請(qǐng)求消息,其中將會(huì)包含數(shù)據(jù)包包頭的信息,也包含其狀態(tài)信息, 作為回應(yīng),SDN控制器會(huì)向OpenFlow交換機(jī)發(fā)送一個(gè)Flow_mod消息,向OpenFlow交換機(jī) 添加相應(yīng)記錄;當(dāng)匹配成功時(shí),則執(zhí)行一個(gè)的〇FPIT_SET_STATE指令,該指令將連接狀態(tài)表 中狀態(tài)賦值為變換流表中相應(yīng)記錄的下一個(gè)狀態(tài)(Next_State),完成狀態(tài)的轉(zhuǎn)換;同時(shí)按 照ACTION處理該數(shù)據(jù)包。
5. 根據(jù)權(quán)利要求2所述的基于OpenFlow協(xié)議的SDN防火墻狀態(tài)檢測(cè)系統(tǒng),其特征在 于:當(dāng)一個(gè)數(shù)據(jù)包來(lái)到OpenFlow交換機(jī)時(shí),OpenFlow交換機(jī)的狀態(tài)管理過(guò)程包括以下步 驟: 步驟1-1 :狀態(tài)查詢(xún),這一查詢(xún)是在連接狀態(tài)表中進(jìn)行的,把數(shù)據(jù)包的包頭信息作為查 詢(xún)關(guān)鍵字,如果在連接狀態(tài)表中沒(méi)有關(guān)于該查詢(xún)的記錄,則在連接狀態(tài)表中添加該項(xiàng),將其 狀態(tài)置為DEFAULT ; 步驟1-2 :變換流表實(shí)現(xiàn)狀態(tài)轉(zhuǎn)換,當(dāng)數(shù)據(jù)包經(jīng)過(guò)連接狀態(tài)表的匹配后,其數(shù)據(jù)包包頭 被加上狀態(tài)信息,在查詢(xún)變換流表的時(shí),該狀態(tài)信息也將作為一個(gè)關(guān)鍵字,如果找到記錄, 則執(zhí)行數(shù)據(jù)包處理操作,同時(shí)將下一個(gè)狀態(tài)信息寫(xiě)回到原來(lái)的連接狀態(tài)表,對(duì)狀態(tài)進(jìn)行更 新; 步驟1-3 :狀態(tài)更新,包含添加、刪除和修改,通過(guò)OFPIT_SET_STATE指令完成狀態(tài)更 新。
6. 根據(jù)權(quán)利要求5所述的基于OpenFlow協(xié)議的SDN防火墻狀態(tài)檢測(cè)系統(tǒng),其特征在 于:步驟1-1中所述的查詢(xún)關(guān)鍵字為源IP地址。
7. 根據(jù)權(quán)利要求2、3、4或5所述的基于OpenFlow協(xié)議的SDN防火墻狀態(tài)檢測(cè)系統(tǒng),其 特征在于:所述的SDN防火墻狀態(tài)檢測(cè)系統(tǒng)接收到數(shù)據(jù)包后的處理過(guò)程包括以下步驟: 步驟2-1 :數(shù)據(jù)包頭部信息通過(guò)關(guān)鍵信息提取模塊,提取數(shù)據(jù)包包頭關(guān)鍵信息; 步驟2-2 :將包頭關(guān)鍵信息與狀態(tài)表進(jìn)行匹配,如果狀態(tài)表中沒(méi)有關(guān)于該項(xiàng)的記錄,則 添加記錄,并將其狀態(tài)置為DEFAULT ; 步驟2-3 :將匹配域信息與該狀態(tài)信息一并發(fā)送,與變換流表進(jìn)行匹配,若變換流表中 沒(méi)有相應(yīng)記錄,則發(fā)送Packet_In消息到SDN控制器端,SDN控制器端匹配連接狀態(tài)表或者 規(guī)則集下發(fā)Flow_Mod到OpenFlow交換機(jī); 步驟2-4 :按照SDN控制器指令更新變換流表同時(shí)執(zhí)行相應(yīng)數(shù)據(jù)轉(zhuǎn)發(fā)操作; 步驟2- 5 :將變換流表中的下一個(gè)狀態(tài)的信息寫(xiě)回到狀態(tài)表; 步驟2-6 :0penFl〇W交換機(jī)向SDN控制器發(fā)送State_In消息對(duì)SDN控制器中的狀態(tài)表 進(jìn)行更新。
【文檔編號(hào)】H04L29/06GK104104561SQ201410393568
【公開(kāi)日】2014年10月15日 申請(qǐng)日期:2014年8月11日 優(yōu)先權(quán)日:2014年8月11日
【發(fā)明者】王鵑, 王江, 陳詩(shī)雅, 焦虹陽(yáng), 康強(qiáng)龍 申請(qǐng)人:武漢大學(xué)
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
当雄县| 孟村| 渑池县| 宜州市| 科尔| 河北区| 曲水县| 合江县| 北海市| 四川省| 鄂托克前旗| 讷河市| 会东县| 东兰县| 抚州市| 吉水县| 凌云县| 屯昌县| 治多县| 双辽市| 双城市| 漳平市| 河北区| 安康市| 图木舒克市| 曲靖市| 红原县| 宁波市| 建始县| 荔浦县| 万年县| 仁寿县| 汉中市| 宁津县| 新津县| 九台市| 辉南县| 灵川县| 图们市| 扎兰屯市| 西城区|