儲(chǔ)蘇紅,劉 磊
(1.中國(guó)科學(xué)院聲學(xué)研究所國(guó)家網(wǎng)絡(luò)新媒體工程技術(shù)研究中心,北京 100190; 2.中國(guó)科學(xué)院大學(xué),北京 100049)
隨著信息技術(shù)的蓬勃發(fā)展,新型網(wǎng)絡(luò)業(yè)務(wù)與應(yīng)用層出不窮,其多元化、個(gè)性化的網(wǎng)絡(luò)需求給靜態(tài)僵化的傳統(tǒng)網(wǎng)絡(luò)帶來了新的挑戰(zhàn)。依靠端到端連接和盡力而為路由轉(zhuǎn)發(fā)的傳統(tǒng)網(wǎng)絡(luò)無法保障低延遲、高可靠通信[1-2],另外傳統(tǒng)網(wǎng)絡(luò)依賴于硬件設(shè)備,不同廠商的設(shè)備難以統(tǒng)一部署管理,而且工作方式固定,難以根據(jù)業(yè)務(wù)需求自定義添加新功能,因此新型網(wǎng)絡(luò)的研發(fā)推廣勢(shì)在必行。軟件定義網(wǎng)絡(luò)(Software Defined Networking, SDN)[3-4]以其集中流管理、開放可編程、適應(yīng)性強(qiáng)的特點(diǎn)脫穎而出,通過在交換機(jī)與SDN控制器間定義統(tǒng)一編程接口,實(shí)現(xiàn)數(shù)據(jù)平面與控制平面的解耦,使得網(wǎng)絡(luò)具有強(qiáng)大的靈活性,可輕松實(shí)現(xiàn)網(wǎng)絡(luò)系統(tǒng)功能的修改、調(diào)整、拓展和提升,從而加快網(wǎng)絡(luò)業(yè)務(wù)部署的進(jìn)程。
SDN呈現(xiàn)出快速發(fā)展的趨勢(shì),也成為異構(gòu)網(wǎng)絡(luò)場(chǎng)景實(shí)施的關(guān)鍵推動(dòng)因素,在數(shù)據(jù)中心、城域網(wǎng)、校園網(wǎng)等場(chǎng)景均已實(shí)現(xiàn)落地[5]。隨著SDN的推廣,其帶來的網(wǎng)絡(luò)安全問題日益彰顯。通過防火墻、入侵檢測(cè)系統(tǒng)可以監(jiān)測(cè)DoS攻擊、非法訪問等外部網(wǎng)絡(luò)攻擊和威脅[6],但是對(duì)于交換機(jī)/控制器配置故障、轉(zhuǎn)發(fā)設(shè)備資源濫用、虛假流規(guī)則注入[7]、數(shù)據(jù)泄露等內(nèi)部安全威脅不能及時(shí)發(fā)現(xiàn)和跟蹤[8]。協(xié)議無感知轉(zhuǎn)發(fā)(Protocol Oblivious Forwarding, POF)[9-10]作為SDN的南向協(xié)議,是控制器和可編程交換機(jī)之間通信的橋梁[11]。POF消息中含有大量重要的控制、配置信息,獲取POF交換機(jī)硬件信息、設(shè)置交換機(jī)配置、進(jìn)行POF控制器角色變換、下發(fā)流規(guī)則等行為均需通過POF協(xié)議實(shí)現(xiàn)。因此可通過解析POF協(xié)議實(shí)現(xiàn)對(duì)內(nèi)部安全威脅進(jìn)行監(jiān)測(cè)和防范。但是目前并沒有針對(duì)POF協(xié)議的自動(dòng)化在線解析工具,常用的通用數(shù)據(jù)包分析軟件(例如Wireshark)需要捕獲數(shù)據(jù)包后依賴專業(yè)分析人員進(jìn)行分析[12]。
因此,本文基于網(wǎng)絡(luò)安全審計(jì)系統(tǒng),設(shè)計(jì)并實(shí)現(xiàn)一種新的POF協(xié)議解析器。該協(xié)議解析器能夠在線對(duì)POF消息進(jìn)行深度解析,實(shí)時(shí)監(jiān)測(cè)SDN網(wǎng)絡(luò)中的通信內(nèi)容,及時(shí)中斷非法操作保障網(wǎng)絡(luò)內(nèi)部安全。
網(wǎng)絡(luò)安全審計(jì)系統(tǒng)是為了應(yīng)對(duì)日益嚴(yán)峻的網(wǎng)絡(luò)安全形勢(shì)而設(shè)計(jì)的能夠?qū)Ω咚倬W(wǎng)絡(luò)數(shù)據(jù)進(jìn)行采集留存和分析檢索的系統(tǒng)[13-14]。通過旁路部署捕獲流經(jīng)交換機(jī)的流量,對(duì)采集的流量進(jìn)行深度協(xié)議解析,并將解析結(jié)果進(jìn)行存儲(chǔ)和展示,可實(shí)現(xiàn)實(shí)時(shí)監(jiān)控用戶網(wǎng)絡(luò)行為,及時(shí)發(fā)掘并阻止?jié)撛谕{[15]。網(wǎng)絡(luò)安全審計(jì)系統(tǒng)架構(gòu)由7個(gè)模塊構(gòu)成,分別是:采集模塊、數(shù)據(jù)包預(yù)處理模塊、數(shù)據(jù)包存儲(chǔ)模塊、協(xié)議識(shí)別模塊、協(xié)議解析模塊、日志管理模塊和展現(xiàn)模塊,如圖1所示。
圖1 網(wǎng)絡(luò)安全審計(jì)系統(tǒng)架構(gòu)
1)采集模塊。負(fù)責(zé)流量捕獲,基于DPDK(Data Plane Development Kit)[16-17]技術(shù)實(shí)現(xiàn)將網(wǎng)卡上收到的數(shù)據(jù)包以零拷貝的方式復(fù)制到用戶空間。
2)數(shù)據(jù)包預(yù)處理模塊。主要負(fù)責(zé)IP重組、TCP重組、流管理等操作,保證到達(dá)上層的數(shù)據(jù)包正確有序。
3)數(shù)據(jù)包存儲(chǔ)模塊。存儲(chǔ)捕獲的數(shù)據(jù)包,以供后續(xù)的取證分析。
4)協(xié)議識(shí)別模塊。由于應(yīng)用層協(xié)議眾多且協(xié)議格式不固定,因此在進(jìn)行應(yīng)用層協(xié)議解析之前需要針對(duì)不同的協(xié)議進(jìn)行區(qū)分。本模塊中采取協(xié)議號(hào)和端口號(hào)匹配方式[18]將報(bào)文分發(fā)到不同的解析模塊。
5)協(xié)議解析模塊。按照高層協(xié)議格式,對(duì)重組好的數(shù)據(jù)幀中的各個(gè)字段進(jìn)行分析,識(shí)別出設(shè)備信息、登錄信息、操作命令等關(guān)鍵信息,將用戶關(guān)心的特定內(nèi)容提取出來,并按照一定的格式封裝成解析日志并發(fā)送至數(shù)據(jù)庫保存。
6)日志管理模塊。負(fù)責(zé)存儲(chǔ)和搜索解析日志,對(duì)協(xié)議解析模塊生成的日志按照一定的格式進(jìn)行整合,并可根據(jù)展現(xiàn)模塊提供的關(guān)鍵字進(jìn)行日志檢索來進(jìn)行可視化顯示。
7)展現(xiàn)模塊。以圖形化的方式為用戶展示數(shù)據(jù)采集和分析的結(jié)果,可根據(jù)對(duì)應(yīng)的日志下載原始數(shù)據(jù)包進(jìn)行取證分析,另外基于Web的用戶界面允許網(wǎng)絡(luò)管理員實(shí)時(shí)監(jiān)控網(wǎng)絡(luò)流量信息,可根據(jù)用戶需求進(jìn)行采集分析的自定義配置。
POF是一種高度靈活和可編程的SDN轉(zhuǎn)發(fā)面技術(shù),以{type, offset, length}[19-20]三元組定義字段,并定義了一套協(xié)議無關(guān)的指令集對(duì)數(shù)據(jù)包做處理[21-22]。POF控制器對(duì)POF交換機(jī)的配置和管理主要是通過POF消息實(shí)現(xiàn)的,POF消息主要包括對(duì)稱消息[23]、交換機(jī)配置消息、異步消息[24]、控制器命令消息、控制器角色消息[25]。下面對(duì)具體的消息類型和應(yīng)用場(chǎng)景進(jìn)行介紹。
1)對(duì)稱消息。
HELLO消息:用于控制器和設(shè)備之間的握手。
ECHO消息:用于探測(cè)連接狀態(tài)、延遲和帶寬。
2)交換機(jī)配置消息。
FEATURE消息:用于控制器獲取交換機(jī)設(shè)備的硬件信息,如設(shè)備編號(hào)、端口等信息。
CONFIG消息:用于控制器配置和查詢交換機(jī)參數(shù)。
3)異步消息。
PACKET_IN消息:用于交換機(jī)將數(shù)據(jù)包上報(bào)給控制器。
FLOW_REMOVED消息:用于交換機(jī)刪除表項(xiàng)后報(bào)告給控制器。
PORT_STATUS消息:用于在握手階段和端口狀態(tài)發(fā)生變化時(shí),交換機(jī)向控制器上報(bào)其當(dāng)前狀態(tài)。
RESOURCE_REPORT消息:用于交換機(jī)將軟件資源配置信息上報(bào)給控制器,如支持的表數(shù)目、匹配域的總字節(jié)數(shù)等。
4)控制器命令消息。
PACKET_OUT消息:用于控制器發(fā)送數(shù)據(jù)包給交換機(jī)。
FLOW_MOD消息:用于流表操作,包括添加、刪除、修改流表項(xiàng),由控制器下發(fā)給交換機(jī),指導(dǎo)交換機(jī)對(duì)數(shù)據(jù)包的處理。
TABLE_MOD消息:由控制器發(fā)送給交換機(jī),用于flow table的創(chuàng)建。
INSTRUCTION_BLOCK_MOD消息:用于創(chuàng)建、刪除或修改一個(gè)指令塊。
ASM_MOD消息:用于創(chuàng)建或修改一個(gè)指令塊。
5)控制器角色消息。
ROLE消息:交換機(jī)與多控制器連接時(shí),控制器發(fā)送ROLE_REQUEST消息給交換機(jī)改變控制器角色,交換機(jī)回復(fù)ROLE_REPLY消息。
交換機(jī)與控制器通信時(shí)需要通過以上消息確定通信的POF版本并收集交換機(jī)的信息,具體的交互流程如圖2所示,分為3個(gè)階段:1)進(jìn)行POF版本協(xié)商階段,交換機(jī)與控制器建立TCP連接后,控制器主動(dòng)發(fā)送HELLO消息,交換機(jī)收到后應(yīng)答HELLO消息,在此過程中可以確定POF協(xié)議版本,當(dāng)控制器和交換機(jī)的協(xié)商版本不兼容時(shí),便會(huì)報(bào)告出錯(cuò)信息并斷開連接;2)進(jìn)行交換機(jī)配置詢問階段,控制器向交換機(jī)發(fā)送FEATURES_REQUEST消息詢問交換機(jī)的硬件信息,交換機(jī)進(jìn)行應(yīng)答,報(bào)告設(shè)備編號(hào)、端口數(shù)量、支持的最大表數(shù)目等信息;3)在交換機(jī)配置設(shè)置和資源上報(bào)階段,交換機(jī)應(yīng)答參數(shù)并上報(bào)交換機(jī)的資源配置信息、每個(gè)端口的狀態(tài)信息,當(dāng)流表中沒有匹配的流規(guī)則或者流規(guī)則是發(fā)往控制器的時(shí)候,交換機(jī)向控制器發(fā)送PACKET_IN消息,控制器下發(fā)PACKET_OUT指導(dǎo)交換機(jī)處理數(shù)據(jù)包[26]。
圖2 控制器與交換機(jī)交互流程
不同類型的POF消息具有不同的數(shù)據(jù)結(jié)構(gòu),字段實(shí)際內(nèi)容的偏移和長(zhǎng)度值也不同。但都是以相同的消息頭開始,消息頭具有固定8 byte的長(zhǎng)度,結(jié)構(gòu)如圖3所示,其中version表示POF版本號(hào),本文中以2.1版本的POF消息進(jìn)行解析;type是POF消息類型;length是POF消息總長(zhǎng)度;xid表明事件ID,對(duì)于同一事件例如FEATURES_REQUEST和FEATURES_REPLY的事件ID相同[27]。解析從第1個(gè)字段按序進(jìn)行,解析完固定結(jié)構(gòu)的消息頭后,再根據(jù)不同消息類型具有的特有數(shù)據(jù)結(jié)構(gòu)來解析字段[28-29]。
圖3 POF消息首部結(jié)構(gòu)
在交換機(jī)和控制器交互過程中傳遞了很多設(shè)備和配置信息,當(dāng)發(fā)生異常行為時(shí)可根據(jù)這些信息快速定位到網(wǎng)絡(luò)安全問題發(fā)生點(diǎn),并且可以在事后進(jìn)行溯源取證。本文基于網(wǎng)絡(luò)安全審計(jì)系統(tǒng),針對(duì)2.1版本的POF協(xié)議設(shè)計(jì)并實(shí)現(xiàn)了協(xié)議解析器。該協(xié)議解析器能夠?qū)崿F(xiàn)對(duì)網(wǎng)絡(luò)鏈路上采集到的POF數(shù)據(jù)包進(jìn)行深度解析并實(shí)時(shí)產(chǎn)生審計(jì)數(shù)據(jù),以日志的形式發(fā)送至數(shù)據(jù)庫保存。POF協(xié)議解析器主要包含2個(gè)模塊:消息提取模塊和消息解析模塊。
通過網(wǎng)絡(luò)安全審計(jì)系統(tǒng)的數(shù)據(jù)包預(yù)處理模塊復(fù)原出POF數(shù)據(jù)包的有序載荷,再由協(xié)議識(shí)別模塊通過POF協(xié)議號(hào)和端口6643將POF數(shù)據(jù)包發(fā)送到POF協(xié)議解析器進(jìn)行協(xié)議解析。但是經(jīng)過數(shù)據(jù)包預(yù)處理模塊處理后的數(shù)據(jù)包只能保證是嚴(yán)格有序的,由于TCP/IP其基于流的傳輸方式,不能保證每個(gè)TCP數(shù)據(jù)包都是一個(gè)完整的應(yīng)用層POF消息或只包含一個(gè)POF消息[30-31]。因此,POF協(xié)議解析器需要先對(duì)收到的POF載荷進(jìn)行處理,提取出完整的POF消息后才能進(jìn)行后續(xù)的協(xié)議解析流程。處理POF數(shù)據(jù)包得到完整POF消息的主流程以偽代碼的形式展示,如算法1所示。
算法1POF Packets Process
1:start←payload
2:payload_len←len(payload)
3:whilepayload_len>0do
4:ifcache is NULLthen
5:process raw packets directly
6:else
7:process cache
8:endif
9:endwhile
算法1的主流程中,根據(jù)是否已經(jīng)存在緩存對(duì)接收到的數(shù)據(jù)包分別進(jìn)行處理(算法1第5~7行)。這是因?yàn)槿魧?duì)每個(gè)新來的數(shù)據(jù)包都加入緩存處理,將會(huì)浪費(fèi)大量的緩存空間,而且數(shù)據(jù)包拷貝也會(huì)影響解析器的性能;對(duì)于不完整的POF消息,解析器又無法實(shí)現(xiàn)正確解析,則需要將數(shù)據(jù)包加入緩存,與其他數(shù)據(jù)包拼裝組成一條完整的消息。針對(duì)這2種場(chǎng)景設(shè)計(jì)的對(duì)原始數(shù)據(jù)包直接處理和對(duì)緩存數(shù)據(jù)處理的流程如算法2和算法3所示。
算法2Raw POF Packets Process
1:ifpayload_len≥8then
2:msg_len←parser_pof_header(payload)
3:ifmsg_len≤payload_lenthen
4:process msg
5:payload←payload+msg_len
6:packet_len←packet_len-msg_len
7:else
8:cache←cache_add(payload, payload_len)
9:continue to receive packet
10:endif
11:else
12:cache←cache_add(payload, payload_len)
13:continue to receive packet
14:endif
算法3Cache Process
1:cache←cache_add(payload, payload_len)
2:payload_len←0
3:ifcache_len≥8then
4:msg_len←parser_pof_header(cache, length)
5:ifmsg_len≤cache_lenthen
6:process msg
7:cache_remove(cache, msg_len)
8:else
9:continue to receive packet
10:endif
11:else
12:continue to receive packet
13:endif
以圖4中的數(shù)據(jù)包為例,說明以上數(shù)據(jù)包處理算法的執(zhí)行過程。首先cache中無緩存數(shù)據(jù),收到交互過程中的第1個(gè)數(shù)據(jù)包載荷后,判斷數(shù)據(jù)包長(zhǎng)度是否不小于8 byte。這是因?yàn)镻OF所有消息都包含相同8 byte結(jié)構(gòu)的首部,因此最小的POF數(shù)據(jù)包載荷是8 byte,當(dāng)收到的數(shù)據(jù)包長(zhǎng)度小于8 byte時(shí)表明其是不完整的數(shù)據(jù)包,無法完成正確解析,只能直接加入緩存。圖4中的第一個(gè)數(shù)據(jù)包長(zhǎng)度是22 byte,滿足上述條件,于是解析出POF消息頭中的length字段,length字段的值是8,表明這條完整的POF消息應(yīng)該具有的長(zhǎng)度是8 byte,根據(jù)length長(zhǎng)度提取出第1條完整的消息;繼續(xù)將剩余的數(shù)據(jù)包長(zhǎng)度與8比較,滿足條件則解析出本應(yīng)具有的長(zhǎng)度。解析完第2條消息后,數(shù)據(jù)包1剩余長(zhǎng)度為6 byte,是不完整的數(shù)據(jù)包,則加入緩存。當(dāng)?shù)?個(gè)數(shù)據(jù)包到來,緩存中存在數(shù)據(jù),將此數(shù)據(jù)包加入緩存進(jìn)行數(shù)據(jù)包拼接。將拼接后的數(shù)據(jù)包按照同樣的邏輯解析出POF消息頭中的length字段,從而根據(jù)消息長(zhǎng)度判斷消息邊界,提取出完整的消息。
圖4 POF數(shù)據(jù)包處理算法實(shí)例
以上這種數(shù)據(jù)包處理算法,根據(jù)是否存在緩存決定是直接處理數(shù)據(jù)包還是需要將數(shù)據(jù)包加入緩存進(jìn)行數(shù)據(jù)包的拼接。在判斷消息邊界過程中,根據(jù)POF消息頭的length字段獲取這條完整POF消息的長(zhǎng)度,根據(jù)此長(zhǎng)度提取出完整消息;對(duì)于不完整的消息需要進(jìn)行緩存與后續(xù)數(shù)據(jù)包進(jìn)行拼接后再處理。這種方式避免將所有的數(shù)據(jù)包都加入緩存,有效減少緩存空間并提高數(shù)據(jù)包處理效率。
經(jīng)過消息提取模塊得到完整的POF消息后便可進(jìn)行POF消息的解析。解析流程如算法4所示,由于POF消息種類較多,其數(shù)據(jù)結(jié)構(gòu)也各不相同,因此需要首先解析出是哪種類型的消息(算法4第3行),然后針對(duì)特定的消息解析出用戶感興趣的內(nèi)容,例如table id、port id等,并將其生成特定格式的日志,發(fā)送至數(shù)據(jù)庫保存。日志分為會(huì)話日志和操作日志,會(huì)話日志用來表示一個(gè)POF會(huì)話的特征,日志內(nèi)容包括IP、MAC、應(yīng)用協(xié)議版本、用戶名稱、登錄登出時(shí)間、請(qǐng)求包個(gè)數(shù)、響應(yīng)包個(gè)數(shù)等信息;操作日志用來表示操作行為,包括操作命令、操作開始時(shí)間、操作結(jié)束時(shí)間等信息,其中關(guān)鍵內(nèi)容及其描述如表1所示。在會(huì)話日志中,可根據(jù)服務(wù)端和客戶端確定通信設(shè)備,當(dāng)結(jié)束狀態(tài)非0時(shí)表明非正常結(jié)束,根據(jù)相應(yīng)的結(jié)束狀態(tài)碼判斷異常結(jié)束原因,管理人員可根據(jù)記錄的時(shí)間定位到異常行為的發(fā)生點(diǎn)進(jìn)行異常檢測(cè)。在操作日志中需要著重關(guān)注操作命令內(nèi)容,因?yàn)樗涗浟速Y源配置、流表和指令塊增刪改、控制器角色更換等操作行為,這些操作與網(wǎng)絡(luò)異常行為息息相關(guān),例如當(dāng)控制器的角色發(fā)生變化時(shí),表明網(wǎng)絡(luò)中可能出現(xiàn)中斷、崩潰退出或重啟等異常情況,安全分析人員可獲取日志和原始數(shù)據(jù)包回溯分析當(dāng)時(shí)網(wǎng)絡(luò)狀況。
表1 關(guān)鍵日志內(nèi)容
算法4POF Message Parse
1:version←get_version(msg)
2:transaction ID←get_xid(msg)
3:type←get_type(msg)
4:switch(type)
5:caseFEATURES_REPLY:
6:get the client, username and login time of the flow
7:casePACKET_IN:
8:get the cookie, table id and port id
9:caseFLOW_REMOED or TABLE_MOD:
10:get the cookie and table id of flow
11:casePORT_STATUS_MESSAGE:
12:get the port id
13:caseINSTRUCTION_BLOCK_MOD or FLOW_MOD or ASM_MOD:
14:get the table id and msg command
15:caseROLE_REQUEST or ROLE_REPLY:
16:get the controller role
17:default:
18:break;
19:generate and send logs
本文設(shè)計(jì)的POF協(xié)議解析器是在基于Linux平臺(tái)開發(fā)的網(wǎng)絡(luò)安全審計(jì)系統(tǒng)上實(shí)現(xiàn)的,實(shí)驗(yàn)測(cè)試環(huán)境如圖5所示,Spirent測(cè)試儀SPT-C100通過交換機(jī)與網(wǎng)絡(luò)安全審計(jì)系統(tǒng)相連。網(wǎng)絡(luò)安全審計(jì)系統(tǒng)使用的操作系統(tǒng)為CentOS 7.6.1810 LTS,內(nèi)核版本為3.10.0-957.el7.x86_64,CPU型號(hào)為Intel(R) Xeon(R) Silver 4116 CPU @ 2.10 GHz,內(nèi)存大小為144 GB。Spirent測(cè)試儀作為流量產(chǎn)生器,回放提前抓取的控制器與交換機(jī)協(xié)商過程的POF數(shù)據(jù)包,交換機(jī)設(shè)置鏡像功能,將Spirent發(fā)送的流量全部導(dǎo)入到安全審計(jì)系統(tǒng),安全審計(jì)系統(tǒng)采集流量提交給POF解析模塊進(jìn)行解析,協(xié)議解析結(jié)果通過Web界面可視化進(jìn)行展現(xiàn),可將結(jié)果與Wireshark解析結(jié)果對(duì)比,驗(yàn)證POF協(xié)議解析模塊能否正確實(shí)現(xiàn)解析。實(shí)驗(yàn)中針對(duì)2.1節(jié)所述的不同類型的POF消息都進(jìn)行了解析結(jié)果對(duì)比,POF協(xié)議解析器均能實(shí)現(xiàn)正確解析。圖6以FEATURES_REPLY消息為例進(jìn)行說明,圖6(a)為協(xié)議解析器的解析結(jié)果,包含版本、消息類型,交換機(jī)型號(hào)等信息,圖6(b)為Wireshark解析結(jié)果,兩者對(duì)比無誤,說明此POF協(xié)議解析模塊能夠正確解析出用戶感興趣的字段并生成相對(duì)應(yīng)的日志。
圖5 測(cè)試環(huán)境
(a) 協(xié)議解析器解析結(jié)果
(b) Wireshark解析結(jié)果圖6 POF協(xié)議解析結(jié)果
性能測(cè)試采用每秒并發(fā)連接數(shù)、吞吐和每秒包數(shù)這3個(gè)指標(biāo),實(shí)驗(yàn)數(shù)據(jù)包為對(duì)抓取的POF數(shù)據(jù)包進(jìn)行改造后的數(shù)據(jù)包,只包含完整協(xié)商過程。在測(cè)試過程中使用2種方式,一種是只生成表示POF會(huì)話特征的會(huì)話日志,另一種是均生成會(huì)話日志和表示行為特征的操作日志。在測(cè)試吞吐過程中,調(diào)整數(shù)據(jù)包中PACKRT_IN和PACKET_OUT發(fā)送的次數(shù),構(gòu)造大流量高吞吐的場(chǎng)景。測(cè)試結(jié)果如圖7所示,只生成會(huì)話日志時(shí)能達(dá)到62000的每秒并發(fā)連接數(shù)(CPS)、700 Mbps吞吐和每秒能處理74萬個(gè)數(shù)據(jù)包;會(huì)話日志和操作日志均生成的時(shí)候也能達(dá)到30000的CPS、460 Mbps吞吐和每秒處理53萬個(gè)數(shù)據(jù)包的性能。
(a) 每秒并發(fā)連接數(shù)
(b) 吞吐量
(c) 每秒包數(shù)圖7 性能測(cè)試結(jié)果
從測(cè)試結(jié)果可以看出,POF協(xié)議解析過程中只生成會(huì)話日志時(shí)有更好的性能,能夠解析更多的POF數(shù)據(jù)流;當(dāng)2種日志均生成時(shí),性能雖然降低,但能有更細(xì)粒度的解析結(jié)果。因此,可根據(jù)實(shí)際網(wǎng)絡(luò)環(huán)境選擇合適的方式。
為了監(jiān)測(cè)和防范SDN網(wǎng)絡(luò)中內(nèi)部安全問題,本文基于網(wǎng)絡(luò)安全審計(jì)系統(tǒng)設(shè)計(jì)并實(shí)現(xiàn)了POF協(xié)議解析器。該協(xié)議解析器能夠在線對(duì)POF流量實(shí)現(xiàn)深度解析生成日志,并通過Web界面可視化展現(xiàn)。通過功能驗(yàn)證,POF協(xié)議解析器能夠正確解析出POF版本、交換機(jī)設(shè)備信息、流表信息、端口信息、控制器角色等關(guān)鍵信息;經(jīng)過性能測(cè)試,集成POF協(xié)議解析器的網(wǎng)絡(luò)安全審計(jì)系統(tǒng)在滿足不丟包情況下至少能達(dá)到的性能每秒連接數(shù)為30000,吞吐為460 Mbps,每秒處理數(shù)據(jù)包53萬個(gè),可以為SDN的安全審計(jì)工作提供有力支持,也能夠?yàn)槠渌滦蛥f(xié)議解析提供參考。