?

一種用戶態報文抓包方法

2022-06-02 11:41馮仰忠
中國新通信 2022年6期
關鍵詞:報文進程網絡安全

【摘要】? ? 本文首先分析了常用網絡抓包工具tcpdump的常用功能以及作用,接著指出tcpdump只能通過命令方式抓取內核網口報文無法靈活抓取用戶態報文以及存在網絡安全等缺點,提出了一種適用于用戶態進程的報文抓包方法,該方法可以靈活抓取用戶態報文,并且能夠應用于多進程或多線程之間錯包、丟包以及時間敏感型報文的故障定位并且具有一定的安全性。最后,經過實例驗證表明本文提出的報文抓包方法具備可行性和實用性并且具有一定的安全性。

【關鍵詞】? ? tcpdump? ? 用戶態? ? 報文? ? 抓包? ? 進程? ? 網絡安全

一、概述

隨著5G時代的到來,網絡設備對數據報文傳輸的高帶寬、低延時、準確性等特點要求越來越高,面對這種特點,網絡設備在處理報文數據時必須要能夠保證自身內部數據的正確、無丟失以及低延時等特性,同時一旦出現問題,我們必須要有一定的手段去定位解決這類問題。

Tcpdump作為一種常用的網絡抓包工具,支持針對網絡層、協議、主機、網絡或端口的過濾,抓取到的報文支持直接打印輸出,也可以寫到文件中。Tcpdump的使用要在shell下采用命令行的形式,不便于用戶態進程抓包,尤其是進程間報文數據傳遞問題的分析定位。Tcpdump在使用時需要將網絡接口設置為混雜模式,同時具備root權限的用戶可以直接執行它來獲取網絡上的信息,因此會對網絡上的其他計算機的安全帶來威脅。

本文主要設計一種用戶態報文抓包方法,該方法支持多種方式抓包,它能夠方便在用戶態進程使用,可以靈活部署在不同的進程或線程,并且不受進程以及線程個數限制,而且不會給網絡帶來安全威脅。本文先是分析了用戶態抓包方法的技術特點和應用價值,接著給出了用戶態抓包方法包含的功能組件以及組件結構圖,然后給出了一種應用實例以及抓包效果分析,最后用實例結果表明本文描述的抓包方法具備可行性和實用性。

二、用戶態抓包方法的技術特點和應用價值

(一)用戶態抓包方法的技術特點

1.可以支持報文長度內任意字段匹配,每個字段匹配長度可以是1~N,用戶使用時可以自定義匹配字段長度。一般在使用時建議盡可能地找出報文特點進行匹配,盡量減少匹配長度,因為過長的匹配字段會影響抓包性能。

2.可以支持識別標準協議報文和非標準協議報文匹配,標準協議如二層、三層、四層等層級協議報文。二層報文可以對以太頭的MAC、VLAN、以太類型等字段匹配;三層報文可以對IPV4/IPV6的版本號/IP源地址/IP目的地址/分片標識/DSCP等字段匹配;四層協議報文支持對例如UDP的源端口號、目的端口號等字段的匹配。非標準協議報文,比如在二層和三層協議報文之間添加自定義字段的報文匹配等。

3.可以支持報文內存存儲或者文件存儲或者直接打印輸出,文件存儲可以支持.txt、.cap、.pcap等格式。Txt格式文件可以方便用notepad等工具軟件打開,便于直接查看報文內容;.cap、.pcap格式文件可以用wireshark等工具軟件打開,可以非常方便分析應用層協議。同時為了提高存儲效率,可以根據配置只提取二層/三層/四層等層級配置偏移開始的部分字節,如128字節,如果報文長度小于配置提取的字節長度,則只提取報文的實際長度,如果報文超過配置提取的字節長度則只提取配置長度。

4.支持多進程或者多線程同時抓包,方便多個業務模塊對比分析報文數據,如分析丟失、錯包、超時等情況。

5.本文描述的抓包方法可以做到與網口的個數無關,抓包軟件主要配置在進程/線程上,同一進程/線程也可以在多點部署。

6.為了方便產品使用,可以支持在進程下或者操作與維護界面(OAM界面)通過配置命令方式使用。

(二) 用戶態抓包方法的應用價值

網絡設備在處理數據時經常會用到run to completion或pipeline模型,run to completion模型主要指一個程序中一般會分成幾個不同的邏輯功能,但是這幾個邏輯功能會在一個CPU核上運行;pipeline模型是指將一個功能分解成多個獨立的階段,不同階段間通過一定的方式傳遞數據。無論哪種模型在傳遞數據過程中都可能會有丟失、錯誤、超時等現象發生,為了定位這些問題,可以有統計、抓包等方法。使用統計方法可以方便對比報文數量,定位數據丟失,但是不方便查看錯誤和超時,而使用抓包方法則不受這種限制。

本文設計的用戶態抓包方法可以靈活的部署在run to completion或pipeline模型的不同邏輯功能或者不同階段中,方便開發者在每個進程或線程中使用,可以方便定位出上文描述的故障。

三、用戶態抓包功能相關組件

(一) 組件功能描述

1.開始抓包部分:包含初始化部分和啟動開始抓包處理兩部分。初始化部分主要完成抓包軟件代碼的初始化,對于同一進程下的多個線程抓包,為了提高性能,使用無鎖操作,可以通過數組或鏈表來管理各個線程的特征信息,同時對于文件存儲模式在線程初始化時可以申請一塊內存來臨時存儲抓到的報文,報文存儲到一定的閾值后再整體寫入文件中,以此來提高存儲效率。同時,初始化完成后會立即啟動抓包。

2.報文匹配解析:主要完成報文的解析、特征字段提取以及用戶配置字段的匹配等操作,如:各層協議的特征字段的提取和精確匹配、位置和數據長度精確匹配等;匹配解析可以同時支持多種字段或者多種協議,支持“與”、“或”、“非”邏輯操作。

3.報文格式打印或存儲:抓到的報文可以直接打印輸出也可以存儲起來。報文存儲可以支持.txt/.cap/.pcap等格式,并且報文存儲或打印時均打上時間戳。.txt格式可以直接用notepad工具打開,直接查看報文內容;.cap/.pcap 格式可以使用wireshark打開,非常方便分析應用層協議報文。出于系統安全考慮,對于直接打印輸出方式,為了防止打印對系統造成影響,默認只打印一定數量的報文就會自動關閉抓包使能和打印;文件存儲方式則采用循環覆蓋方式存儲并且存儲一定數量后也會自動關閉抓包使能。57C0D073-41D6-4DD2-AE7B-315B4B059CC2

4.抓包模式配置:如表1所示,描述了三種抓包模式,分別對應N種匹配格式。模式1描述的是位置和長度匹配模式,即根據配置的位置和此位置匹配的長度提取數據并與匹配值進行匹配,如果命中則存儲記錄或打印,這種匹配格式可以配置N種,每種匹配格式對應的位置和長度可以不同。模式2描述的是根據協議字段進行匹配,根據配置的協議以及協議字段提取數據并與標準協議值或者匹配值進行對比匹配,此種方式也可以配置N種。模式3描述的場景可以是一些非標準協議,比如在報文二層頭和三層頭之間插入自定義頭,根據配置的位置可以直接找到標準協議所在的位置進行匹配。以上3種模式并非固定不變的,也可以按照匹配格式為單位混合使用。

5.配置命令分發模塊:接收操作與維護界面的配置命令,并將其解析為業務進程/線程識別的信息,如開始抓包命令、停止抓包命令、抓包位置、匹配協議、匹配長度、匹配值等等,然后分發給各個業務進程/線程處理。各個業務進程/線程需要注冊配置命令接收客戶端以方便接收配置命令分發模塊發送的抓包信息。

6.停止抓包處理:包含關閉抓包使能、保存最后處理的報文以及將仍在內存中存儲的報文轉存到文件中并釋放內存資源等。

(二)組件結構

組件結構如圖1所示,配置命令分發模塊接收操作與維護界面的配置命令并將其解析為業務進程/線程識別的信息,然后分發給各個進程/線程的配置命令接收客戶端模塊,并進行模式配置、開始抓包、匹配解析、停止抓包等命令配置,如圖中1、2、3、4順序所示。匹配解析模塊匹配到報文后會將其交給打印/存儲模塊進行處理。

四、用戶態抓包應用實例

(一)實例應用背景

本文所述應用實例,包含多種不同類型的報文,它們有著不同的報文特征。根據常用業務架構和軟件架構設計,網絡設備主要處理協議報文、控制管理報文和轉發數據報文,這些報文可能從一個網口送到CPU也可能從多個網口送到CPU,流量可大可小。本實例主要用報文收發設備的一個網口對接網絡設備的一個網口,在報文收發設備上使用網絡發包工具(如xcap或小兵以太網測試儀)構造多種不同特征的報文并發送到網絡設備的CPU上,然后在網絡設備的CPU上完成本文描述的抓包方法驗證。

(二)實例應用使用的軟硬件資源

根據以上實例應用背景,本實例用到的軟硬件資源包括個人PC、網絡設備、報文收發設備等。如上圖,網絡設備同時和用戶PC以及報文收發設備對接,在用戶PC上通過網口或串口登錄到網絡設備的進程/線程下或操作與維護界面進行抓包配置,在網絡設備CPU上起不同的進程/線程進行轉發報文處理,然后在報文收發設備上通過測試儀或網絡發包工具構造不同類型的報文并發送到CPU網口進行驗證。

(三)實例應用具體配置方法

1.如圖3所示,采用pipeline模型驗證本抓包方法,在網絡設備上起多個(設為N個)用戶態進程或線程來做業務處理,并分別在進程/線程1、進程/線程2、進程/線程N處部署抓包軟件代碼以及配置命令接收客戶端,默認抓包使能不打開。

2.在進程下或者操作與維護界面配置抓包過濾條件、報文存儲文件格式以及最大抓包長度等信息。本實例中先配置基于模式1抓包,抓包存儲格式為.cap,并分別配置幾種匹配格式的位置、長度、匹配值,如配置二層DMAC、SMAC、VLAN、以太類型或者三層IPV4的DIP、SIP地址等字段。

3.在報文收發設備上使用xcap網絡發包工具構造不同類型的報文,并分別配置二層DMAC、SMAC、VLAN、以太頭或者三層IPV4的DIP、SIP地址等字段在一定的范圍內變化的報文并發送報文。驗證的同時可以在某些業務處理流程中添加構造一些錯包、丟包、延時場景以驗證本文描述的抓包方法的實用性。

4.打開抓包使能開關,抓包軟件代碼會根據抓包匹配條件自動抓取對應的報文,并存儲到本進程/線程特征對應的文件中。

5.根據報文存儲格式分別使用對應的軟件打開生成的文件,并對比分析,即可得到報文的錯誤、丟失、重傳或者延時點。

(四) 測試小結

按照上述方案完成軟件設計后,通過如下操作驗證本文提出的抓包方法的實踐效果。

1.發送一段時間后停止發包,取生成的多個.cap文件(每個進程或線程都會產生一個文件)并打開。通過查看收到的報文可以確認是否接收到目標報文;通過對比一定時間內的目標報文數量可以確認目標報文是否有丟失;通過對比抓取到的報文和發包工具發送的報文可以確認報文的正確性;通過查看報文的時間戳可以確認報文是否有延時。

2.按照相同的方法驗證匹配模式2、匹配模式3以及混合場景。同時可以分別配置“與”、“或”、“非”幾種邏輯場景進行驗證。

3.經過驗證,本文所述抓包方法可以對錯包、丟包、延時場景進行驗證,滿足文中描述的應用場景。

五、結束語

本文主要描述了一種用戶態報文抓包方法,按照文中描述的方法,可以非常方便地抓取到需要的報文,特別是針對錯包、丟包、重傳、超時等場景問題定位有著非常好的效果,可以非??焖俚亩ㄎ坏絾栴}點,節省問題定位時間,提高客戶體驗度。同時,本文描述的抓包方法主要應用在用戶態進程或線程,對網口的安全策略無影響,并且用戶態進程/線程抓取一定量的報文后會自動關閉抓包,因此并不會影響網絡安全和主機安全。另外,本文描述的抓包方法還有很大的提升空間,例如在匹配模式的多樣化等方面上還可以進一步的研究提升。

作者單位:馮仰忠? ? 中興通訊股份有限公司

參? 考? 文? 獻

[1]趙琳.網絡抓包工具tcpdump使用指南.網絡安全和信息化,2020-11-05.

[2] Intel? data plane development kit(Intel? DPDK)programmers guide [EB/OL][2015-03-24]. https://www.intel.com/content/www/us/en/embedded/technology/packet-processing/dpdk/dpdk-programmers-guide.html.

[3]王偉.計算機網絡流量模擬與預測模型研究.南開大學,2008 .

[4]高曉東.基于多核平臺的高速網絡數據捕獲和并行處理研究與實現[D].哈爾濱工業大學,2020.

[5]王佰玲,方濱興,云小春.傳統報文捕獲平臺性能影響因素分析[J].計算機工程與應用,2003,22(2):151-152.

[6]王佰玲,方濱興,云小春.零拷貝報文捕獲平臺的研究與實現[J].計算機學報,2005,28(1):66-52.

[7] 李舒.基于LInux多核平臺的高性能報文采集系統的研究與設計[D].北京:北京郵電大學,2012:58.

[8] 郭凱.基于WinPcap的數據包捕獲系統的設計與實現[D].西安:西安電子科技大學,2013:7-8.

[9] 張楠.基于IP網絡的通用數據采集系統的設計與實現[碩士學位論文].北京:北京郵電大學,2015.

[10] 焦妍君,高瑜.網絡控制問題中的丟包問題分析.現代計算機:下月版,2012(10).57C0D073-41D6-4DD2-AE7B-315B4B059CC2

猜你喜歡
報文進程網絡安全
云計算環境下網絡安全等級保護的實現途徑
海法新港一期自動化集裝箱碼頭電子數據交換報文系統設計與實現
基于報文類型的限速值動態調整
全國多地聯動2020年國家網絡安全宣傳周啟動
Dalvik虛擬機進程模型研究
新量子通信線路保障網絡安全
快速殺掉頑固進程
不留死角 全方位監控系統
保護個人信息安全,還看新法
用戶設備進行組播路徑追蹤的方法及系統
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合