劉飛



摘 ?要: 本文利用數據捕獲開源庫WinPcap,致力于從網絡底層提供一種民航通信網絡的數據幀嗅探、網絡監視和應用分析的解決方案。方案架構是具有高并發的生產者消費者模式,多線程的完成四個功能架構模塊的處理,同時從五個方面來完成數據應用分析,實時掌握網絡利用情況,提供高效的數據查詢、信息統計和網絡監測服務,并對數據庫提出幾點優化改進意見。最后根據統計信息可以進一步優化網絡結構,提供更加安全、可靠和高效的通信服務。
關鍵詞: 民航通信;幀嗅探;網絡監測
中圖分類號: TP393.09 ???文獻標識碼: A ???DOI:10.3969/j.issn.1003-6970.2020.09.049
【Abstract】: This paper uses WinPcap, an open source data acquisition library, to provide a solution for data ??????frame sniffing, network monitoring and application analysis of civil aviation communication network from the bottom of the network. The scheme architecture is a producer-consumer mode with high concurrency. It completes the processing of four functional architecture modules by multithreading. At the same time, it completes data application analysis from five aspects, grasps the network utilization in real time, provides efficient data query, information statistics and network monitoring services, and puts forward some suggestions for database optimization and improvement. Finally, according to the statistical information, the network structure can be further optimized to provide more secure, reliable and efficient communication services.
【Key words】: Civil aviation communication; Frame sniffing; Network monitoring
0 ?引言
隨著民航的快速發展,民航通信網絡規模越來越大,網絡結構也越來越復雜。民航通信網絡大體分為局域通信網絡和異地傳輸網絡。傳輸網絡按照中國民航航空系統組塊升級(ASBU)發展與實施策略,未來將采用IP作為地面網絡的核心技術[1]。因此有必要從網絡底層提供一種民航通信局域網絡和傳輸終端網絡的數據幀嗅探、網絡監視和應用分析的解決方案。WinPcap提供抓包和網絡分析的功能,可通過網絡適配器監聽共享通信網絡上的數據幀,完成網絡監視、故障診斷、統計分析等功能。
1 ?網絡數據封裝
TCP/IP模型參考了OSI理論體系結構,具有分層結構,分別為應用層、傳輸層、網絡層和網絡接口層,見圖1。最上層的應用層通過各種協議向應用進程提供各種業務應用,數據在從上層向下層傳送的過程中完成數據封裝,并以比特流的形式傳給底層通信設備。網絡接口層使用兩種標準幀格式,Ethernet_II和IEEE802.3。不同的Length/Type字段值用來區別這兩種幀的類型,當字段值小于等于1 500(0x05DC)時,幀使用的是
IEEE802.3格式;當字段值大于等于1 536(0x0600)時,幀使用的是EthernetII格式,網絡中大部分使用EthernetII格式[2]。
本文例舉EthernetII格式,D.MAC代表目的物理地址,S.MAC代表源物理地址,TYPE標識協議類型,DATA為網絡層的數據包,FCS是校驗字段。數據封裝過程中,協議數據單元在傳輸層添加協議報頭生成數據段,網絡層添加IP報頭生成數據包,網絡接口層添加幀頭(D.MAC、S.MAC、TYPE)和幀尾(FCS)生成數據幀。解封裝是封裝的逆過程,從接口層到應用層逐漸拆解協議包,處理包頭中的信息,取出數據信息。本文根據解封裝過程,按照順序提取出幀中的type、timestamp、protocol、sourceIP、destinationIP、protocoldata等信息,為數據分析和統計做準備。
2 ?WinPcap技術
WinPcap(windows packet capture)是為應用程序捕獲網絡底層數據的開源庫,可以嗅探到網絡接口層的以太網幀,適用于數據監控、協議分析、網絡安全等方面。WinPcap分為三個部分:核心的NPF(netgroup packet filter),運行在操作系統內核中的驅動程序,直接與網絡驅動程序交互,獲取網絡上的原始數據[3];底層動態鏈接庫packet.dll,提供訪問驅動的函數;高級系統無關庫wpcap.dll,更強大的與libpcap一致的高層抓包函數庫。數據捕獲是將網絡適配器設置為混雜監聽模式(promiscuous),在總線型以太網上,適配器可以接收一切可接收的數據[4]。
3 ?協議解析算法
數據幀嗅探是直接調用wpcap.dll動態鏈接庫中的API函數來完成,但是捕獲到的以太網幀是一串需要按特定協議格式解析的字符串,API函數沒有此種函數。這就需要設計一種算法,便捷高效地完成以太網幀的解碼,其優劣也制約著數據交換處理能力。本算法基于函數unflatten from string,即按照簇規定的格式從字符串中智能化匹配出需要的信息,見圖2。第一次是從以太網幀中還原出以太網幀頭部和幀內容,第二次是從幀內容中還原出具體協議的頭部和協議內容,輸出的數據也是具有規定格式的簇變量,方便二次開發和數據傳遞。
4 ?功能應用分析
協議數據按不同字段存入MySQL中,應用分析從五個方面來統計分析庫中大量數據,實時掌握網絡利用情況。例如,針對信息安全等級為三級的監視數據處理服務器網絡,服務器通過1803端口本地廣播監視融合數據,服務器和終端通過1801端口本地廣播心跳信息,AeroTrac服務器會將單雷達數據繞轉到網絡中,萊斯監視服務器有專門的雷達子網。按照本文的解決方案,實時監測網絡中服務器不同端口UDP協議數量和網絡中單雷達數據,對于發現進程阻塞、心跳異常、信道故障等方面有積極作用。
4.1 ?協議數據
協議數據包括協議頭部和協議內容兩部分。協議頭部按照上文解析算法從簇變量中解綁得到Protocol、Identification、IP Address等信息,協議內容是應用層的應用進程協議數據單元PDU。同時太網幀中的Type字段,表示數據應該發送到上層哪個協議處理,也需要存入數據庫。協議數據按type、timestamp、protocol、sourceIP、destinationIP、protocoldata六列存入關系型數據庫MySQL,以便快速靈活完成數據查詢和統計分析功能。
4.2 ?協議分布
根據協議數據的時間戳timestamp查詢數據庫中單位時間各種協議數量,用ECharts餅圖展示各種協 ?議分布情況。數據庫字段type和protocol值可確定協議類型,比如UDP協議type值為0x0800,protocol值為17。
4.3 ?某IP活動
根據協議數據的時間戳timestamp查詢數據庫中單位時間IP數據包量和對應協議量,并以ECharts柱狀圖展示統計信息。數據庫字段sourceIP、destinationIP可確定源IP地址和目的IP地址,再根據字段type和protocol值可確定IP對于的協議類型數量。
4.4 ?故障診斷
根據時間戳timestamp和IP地址查找協議數據,針對故障現象從底層查找特定時間段、IP地址、端口、協議類型的數據包,分析故障原因。
4.5 ?安全監視
根據統計分析的結果,綜合評判網絡狀態、進程運行、信息傳輸狀況,發現網絡中的可疑網絡行為并提供告警服務。
5 ?架構與模塊
本文基于虛擬儀器技術,采用兩個隊列三個循環多線程完成數據采集、協議分析、存儲與應用分析,即生產者消費者模式。生產者與消費者之間通過隊列來作為數據緩沖區,平衡了生產者和消費者的處理能力,保證數據采集、處理和存儲的高并發。
5.2 ?協議分析模塊
該模塊負責將采集到的數據幀匹配出協議數據,庫PROT按照上文協議解析算法從以太網幀隊列取出數據幀來識別協議類型和完成協議分析,最后將得到的協議數據加入到協議數據隊列中。
PROT.Identify Protocol根據Length/Type字段識別幀類型和協議頭部Protocol值判斷協議類型;PROT.Parse Packet按照上文協議解析算法分析出協議頭部和協議內容。
5.3 ?存儲與應用分析模塊
該模塊取出協議數據隊列的數據,存儲于MySQL關系型數據庫中,同時完成協議分布、某IP活動、故障診斷、安全監視等方面的應用統計分析。此模塊涉及到數據庫插入和查詢功能,INSERT 函數將協議數據到存入MySQL數據庫,SELECT函數按照條件查詢來統計結果。
5.4 ?WEB服務模塊
Wampserver是一款Apache Web服務器、PHP解釋器以及MySQL數據庫的整合軟件包,免去繁瑣的配置環境過程,可以輕松搭建需要的WEB服務。ECharts是 JavaScript 實現的開源可視化庫,提供了豐富的可視化統計圖表。此模塊在Wampserver和ECharts基礎上,提供一個交互網頁,可以條件查詢MySQL中的協
議數據和調用ECharts圖表庫可視化顯示不同應用的統計分析信息。
6 ?數據庫優化
以太網幀在通信網絡中數據量較為巨大,對于幀速率為50pps的網絡來說,每天幀數量可達到400萬級。因此數據庫需要優化性能,提高數據庫訪問的靈活性和效率,減輕服務器負擔。本文在實踐的基礎上,提出幾點優化改進意見。
(1)選擇合適的存儲引擎。建立數據表時要根據應用特點確定存儲引擎,本文應用是插入和讀取操作為主,且對事務的ACID特性沒有要求,選擇MyISAM存儲引擎比較合適[5]。
(2)前期統計。在幀采集和分析時可利用移位寄存器來統計數據量,網頁端只需要調用統計量顯示即可,避免后期在大量數據中查詢統計。
(3)數據分表。每日生成一個數據表,協議數據按日期存入對應的數據表中,可以限制表的數據量,減少數據表負擔。同時采用MySQL事件調度器Event Scheduler,根據實際應用需求,周期性觸發數據表刪除操作,拋棄過期無用數據表;
(4)批量插入。數據存入表時選擇批量插入,在協議數據出隊列時再次增加緩沖手段,等待數據量到達一定量時才批量存入數據表;
(5)數據庫查詢優化。規范SQL語句,添加索引,使用where、limit、字段等來限制查詢結果,避免全表掃描和無用數據查詢。
7 ?結束語
本文從網絡底層完成民航通信網絡的多方面應用分析,可更徹底了解通信網絡運行狀態。整個方案架構是具有高并發的生產者消費者模式,利用緩沖特性的隊列多線程完成數據采集、協議分析、存儲與應用分析,最終通過Wampserver服務器提供高效的數據查詢、信息統計和網絡監測服務。在此基礎上,可以根據統計信息進一步優化網絡結構,提供更加安全、可靠和高效的通信服務。
參考文獻
[1]IB-TM-2015-002, 中國民航航空系統組塊升級(ASBU)發展與實施策略[S]. 中國: 中國民用航空局空管行業管理辦公室, 2015.
[2]以太網幀結構詳解[EB/OL]. https://www.cnblogs.com, 2019-6-6.
[3]吳玉, 李嵐. 基于WinPcap的網絡數據獲取系統的研究[J]. 微型電腦應用, (6): 10-12.
[4]沈輝, 張龍. 基于WinPcap的網絡數據監測及分析[J]. 計算機科學, 2012: 20-23+34.
[5]韋美雁, 段華斌, 周新林. 大數據環境下的MySQL優化技術探討[J]. 現代計算機(專業版), 2018, 630(30): 70-74.