孫峰等
摘 要: 提出一種基于深度包解析技術(shù)的Web信息系統(tǒng)性能監(jiān)測分析方法。首先,闡述方法實現(xiàn)的技術(shù)基礎;其次,給出方法的具體實現(xiàn)步驟,涉及網(wǎng)絡傳輸時延、頁面訪問時延、系統(tǒng)健康度等指標;最后,在某電力企業(yè)門戶系統(tǒng)中對上述方法進行驗證。實踐表明,該性能監(jiān)測分析方法運行穩(wěn)定、分析直觀,具有較好的實用性與市場價值。
關鍵詞: 深度包解析; 性能監(jiān)測; 訪問時延; 系統(tǒng)健康度
中圖分類號: TN06?34 文獻標識碼: A 文章編號: 1004?373X(2015)21?0118?05
Analysis method of performance monitoring for information
system based on deep packet inspection
SUN Feng1, CHEN Yuhui1, LIU Jiahua1, CHEN Long1, CAI Guangchen2
(1. NARI Group Corporation/ State Grid Electric Power Research Institute, Nanjing 210000, China;
2. Pactera Technology International Ltd., Nanjing 210000, China)
Abstract: An analysis method of performance monitoring for Web information system based on deep packet inspection is proposed. The technology foundation for implementing this method is explained. The specific realization steps of this method are proposed, which involves the indicators of network transmission delay, page access delay and system health?degree. The proposed method was verified in a certain power enterprise portal system. The practice results show that this analysis method of performance monitoring can operate stably and analyze intuitively, and has good practicability and market value.
Keywords: deep packet inspection; performance monitoring; access delay; system health?degree
信息系統(tǒng)正逐漸成為支撐大型企事業(yè)單位生產(chǎn)的必要工具,而信息系統(tǒng)性能優(yōu)劣已成為生產(chǎn)力的主要體現(xiàn)?;谏疃劝馕黾夹g(shù)的Web信息系統(tǒng)性能監(jiān)測分析方法,通過對用戶訪問信息系統(tǒng)的真實鏡像數(shù)據(jù)進行分析,提煉出系統(tǒng)使用過程中的網(wǎng)絡時延、業(yè)務處理時延等指標,從用戶視角描述系統(tǒng)性能,計算出系統(tǒng)健康度。相比于傳統(tǒng)的通過采集主機硬件、操作系統(tǒng)、中間件、數(shù)據(jù)庫等資源指標來判斷系統(tǒng)性能狀況的技術(shù),該方法具有分析更準確、直接、可有效降低運維人員巡檢工作量等優(yōu)勢。
1 深度Web業(yè)務包解析基礎
相比于普通的數(shù)據(jù)包解析,深度包解析技術(shù)(DPI)在分析IP數(shù)據(jù)包源地址、目的地址、源端口、目的端口以及協(xié)議類型等包頭信息的基礎上,還增加了對應用層單個數(shù)據(jù)包內(nèi)容的分析,并且能夠把分散的數(shù)據(jù)包重新組合成一個相關聯(lián)的數(shù)據(jù)流,通過對數(shù)據(jù)流的分析,提煉出用戶訪問信息系統(tǒng)不同頁面、不同應用的行為。業(yè)務數(shù)據(jù)包捕獲過濾與重組還原是該技術(shù)的基礎。
1.1 業(yè)務數(shù)據(jù)捕獲與過濾
采用旁路偵聽的方式實現(xiàn)業(yè)務數(shù)據(jù)捕獲與過濾,優(yōu)點是對Web信息系統(tǒng)的正常運行幾乎無影響,同時管理效果也很優(yōu)異。具體步驟是,首先配置交換機,將Web信息系統(tǒng)所在交換機端口的數(shù)據(jù)復制到鏡像口;其次,使用網(wǎng)線連接鏡像口與監(jiān)控主機;第三,在監(jiān)控主機部署數(shù)據(jù)包采集模塊。模塊采用免費、公共的WinPcap(Windows Packet Capture)開發(fā)包,它為Windows應用程序提供了訪問網(wǎng)絡底層數(shù)據(jù)的能力。WinPcap操作的核心流程如圖1所示。
其中,pcap_lookupdev()函數(shù):遍歷本地網(wǎng)卡設備,與鏡像口相連的本地網(wǎng)卡可作為數(shù)據(jù)操作網(wǎng)卡;
pcap_open_live()函數(shù):打開選中的設備;
pcap_setfilter()函數(shù):設置過濾器,將過濾字符串設定成“tcp and server?ip and server?port”的形式,WinPcap提供的內(nèi)核級數(shù)據(jù)包過濾機制將準確地捕獲訪問業(yè)務信息系統(tǒng)的所有TCP數(shù)據(jù)包,如“tcp and host 101.144.100.242 and port 80”規(guī)則表示捕獲IP地址為101.144.100.242的服務器80端口所有的TCP數(shù)據(jù)包;
pcap_loop()函數(shù):使用回調(diào)函數(shù)循環(huán)捕獲網(wǎng)絡數(shù)據(jù),在函數(shù)中進行數(shù)據(jù)包分析、數(shù)據(jù)包儲存等操作。
圖1 WinPcap捕獲過濾網(wǎng)絡數(shù)據(jù)包核心流程
1.2 數(shù)據(jù)包重組
1.2.1 TCP數(shù)據(jù)包重組
依據(jù)TCP/IP協(xié)議原理,TCP會話的每一端都包含1個序列號與確認號,分別用來跟蹤該端發(fā)送的數(shù)據(jù)量與接收的數(shù)據(jù)量。同一TCP會話中,同方向的一對數(shù)據(jù)包,前者的相對序列號seq值與包內(nèi)容長度len值之和應該等于后者的seq值;反方向的一對數(shù)據(jù)包,前者的seq值與len值之和,應等于后者的相對確認號ack值。
因此,依據(jù)seq,ack,len之間的關系,為同一TCP會話建立兩個數(shù)據(jù)包隊列,依次分別存入正常包序與異常包序的TCP報文。異常包序情況包括完全重復、部分重復、數(shù)據(jù)后發(fā)先到、len=0等。
待當前TCP會話的全部報文收取完畢后,取出正常隊列中的最后一個TCP報文,根據(jù)其seq值與len值,在異常隊列中查找其后續(xù)報文,按去重原則將異常隊列數(shù)據(jù)包丟棄或者存入正常隊列。
例如,正常隊列最后一個TCP報文數(shù)據(jù)段第一字節(jié)的序號為seq=200,len=150,異常隊列取出的同向TCP報文數(shù)據(jù)段第一字節(jié)的序號為seq=300,len=160,則報文數(shù)據(jù)序號300~350區(qū)間是重復的,因此修改異常報文seq值為350,len值為110,將其存入正常報文隊列尾。
1.2.2 HTTP數(shù)據(jù)包重組
HTTP協(xié)議是基于TCP協(xié)議,在Web信息系統(tǒng)中使用最廣泛的一種通信協(xié)議,由終端瀏覽器向服務器發(fā)起請求,服務器反饋請求結(jié)果。
HTTP請求方法包括GET,HEAD,POST等,其中GET表示請求指定的Web文檔,POST表示請求Web服務器接收指定文檔。HTTP響應包括HTTP連接狀態(tài)碼、響應頭、響應數(shù)據(jù)等信息。
HTTP包重組是對同一TCP會話中重組過的正常包序的TCP報文進行分析,識別出HTTP請求頭與響應包頭,根據(jù)響應包頭中的Content?Length值或chunked信息,找出所有HTTP響應數(shù)據(jù)報文。重組流程見圖2。
2 信息系統(tǒng)性能監(jiān)測分析方法實施步驟
基于深度包解析技術(shù)的Web信息系統(tǒng)性能監(jiān)測分析的目的在于,從原始網(wǎng)絡數(shù)據(jù)包中提煉出信息系統(tǒng)訪問數(shù)據(jù)并展開分析,其包括業(yè)務數(shù)據(jù)捕獲過濾、深度包解析與時延指標獲取、系統(tǒng)性能健康度分析三大步驟,數(shù)據(jù)流向如圖3所示。
2.1 業(yè)務數(shù)據(jù)包存儲
本方法采用嵌套鏈表的方式保存、捕獲、過濾并經(jīng)重組還原的,所有TCP,HTTP業(yè)務數(shù)據(jù)包。
同一個Web信息系統(tǒng)會被多臺終端訪問,因此在IP層面,信息系統(tǒng)的IP與其訪問終端IP是一對多的關系,為每一個訪問終端的IP維護一張IP鏈表。
在端口層面,信息系統(tǒng)提供的服務端口一般固定不變,而訪問終端所使用的端口卻是變化不定的,因此,信息系統(tǒng)的端口與訪問終端的端口也是一對多的關系。在IP鏈表中,為每個訪問Web信息系統(tǒng)的端口維護一張Port子鏈表。子鏈表中的每個節(jié)點保存該端口下所有經(jīng)重組提煉出的HTTP協(xié)議包,分為HTTP請求數(shù)據(jù)與響應數(shù)據(jù)兩部分,后者可能含有若干TCP分片包,也可能只有一個TCP包。為方便后續(xù)分析,以Port子鏈表節(jié)點首個數(shù)據(jù)報文開始時間先后為排序規(guī)則,為所有的Port子鏈表節(jié)點建立節(jié)點時間索引表,如圖4所示。
所有待分析的數(shù)據(jù)都保存在嵌套鏈表中,分析完畢后,從鏈表中刪除所有已分析的數(shù)據(jù)。信息系統(tǒng)訪問量特別大時,可以選擇將嵌套鏈表的數(shù)據(jù)定期存入實時數(shù)據(jù)庫或文件,由分析線程讀取數(shù)據(jù)庫或文件數(shù)據(jù)進行指標提煉,并刪除過期數(shù)據(jù)。
2.2 深度業(yè)務包解析與時延指標獲取
信息系統(tǒng)訪問整體時延=建立連接時延+網(wǎng)絡傳輸時延+系統(tǒng)響應時延,對用戶而言,瀏覽器渲染時間也是影響體驗的因素之一,這里暫不考慮。
2.2.1 連接建立時延與網(wǎng)絡傳輸時延
監(jiān)控模塊為每個收到的TCP數(shù)據(jù)包加上時間戳,對于每一次終端開始訪問Web信息系統(tǒng)前的TCP三次握手,認定收到的第一個握手AYN包時間為[T1,]第二次握手SYN ACK包時間為[T2,]第三次握手時間為[T3,]如圖5所示。
定義[ΔT(1?2)=T2-T1,]則[ΔT(1?2)]表示服務器本身對TCP握手包響應的處理時間,則該時間近乎為0,同理訪問終端對SYN ACK包的響應時間近乎為0。定義[ΔT(2?3)=T3-T2,]則[ΔT(2?3)]表示SYN ACK包與ACK包在網(wǎng)絡上傳輸?shù)臅r間。因此:
2.2.2 系統(tǒng)響應時延
系統(tǒng)響應時延=頁面訪問結(jié)束時間-頁面訪問開始時間。而頁面開始時間的判斷,是基于通過深度包解析建立的頁面專屬信息庫。
(1) 頁面專屬信息庫
本方法提出頁面指紋與頁面資源兩個概念。頁面指紋是指能把某個頁面與其他頁面區(qū)分開的頁面信息組合。多數(shù)信息系統(tǒng)不同的頁面對應不同的URL,因此URL信息可作為頁面的指紋,結(jié)合HTTP請求命令,該類型指紋定義形式為“請求方式+URL”。少數(shù)信息系統(tǒng)采用了flex等開發(fā)技術(shù),不同頁面采用相同的URL,如此,就需要對這部分頁面的起始交互數(shù)據(jù)進行深度數(shù)據(jù)包分析,提煉出能夠標識頁面的數(shù)據(jù)信息,指紋定義形式為“請求方式+URL+內(nèi)容關鍵詞”。
頁面資源是指信息系統(tǒng)服務器反饋給訪問終端的各頁面組成元素,如js資源、css資源、圖片資源、xml資源等。
為待分析的Web信息系統(tǒng)建立包含頁面指紋與頁面資源專屬信息庫,是系統(tǒng)響應時延分析的前提。信息庫格式如表1所示。
(2) 頁面響應時間的計算
讀取每一個訪問終端的IP父鏈表的時間索引表,順序找到各Port子鏈表的節(jié)點,對節(jié)點HTTP請求部分的數(shù)據(jù)進行頁面指紋信息匹配。如果找到頁面指紋信息,并且節(jié)點HTTP響應碼為200OK等正確碼,則認定該節(jié)點第一個數(shù)據(jù)報文的開始時間為對應頁面的開始時間,若響應碼為400,500等錯誤碼,則判定頁面訪問失敗。時間索引表與Port子鏈表的對應關系如圖6所示。
為當前訪問終端IP的每個檢測到開始的頁面建立一個隊列,從Port子鏈表刪除已經(jīng)匹配到頁面指紋的節(jié)點,將其加入到對應的新建的頁面隊列中,同一個IP終端,訪問同一個頁面的隊列應具有惟一性。
如果在同一IP父鏈表中,短時間內(nèi)連續(xù)識別出某些Port子鏈表節(jié)點,它們均匹配到相同的頁面,則終端可能存在頁面刷新與重復打開行為,此時應以最后一個Port子鏈表節(jié)點的第一個數(shù)據(jù)報文的開始時間作為頁面的開始時間。
如果當前Port子鏈表節(jié)點不屬于頁面開始節(jié)點,則提取出該節(jié)點HTTP請求部分的資源信息,判斷該資源是否屬于當前正在分析中頁面的頁面資源。如果不是,則丟棄該節(jié)點;如果是,將其從Port子鏈表刪除,加入對應的頁面隊列,同時更新該頁面隊列最遲數(shù)據(jù)包的接收時間。
若某頁面隊列從最遲數(shù)據(jù)包接收時間開始,超過頁面訪問時間(一般為20 s),沒有新的Port子鏈表節(jié)點加入,則視最遲數(shù)據(jù)包接收時間為頁面結(jié)束時間。計算頁面結(jié)束時間與開始時間的差值作為頁面響應時間,同時刪除該頁面隊列。
2.3 Web信息系統(tǒng)性能健康度計算
信息系統(tǒng)的組成頁面是多樣性的,不同類型頁面的時延評價標準應具有差異性,將頁面定義為3大類、13小類(如表2所示),由用戶根據(jù)自身需求為其分別定義標準響應時長。信息系統(tǒng)的性能健康度評價基于目標系統(tǒng)是否有響應、目標系統(tǒng)響應時間是否超過基線時間。
圖9 系統(tǒng)健康度與時延截圖
4 結(jié) 語
本文給出一種基于深度包解析技術(shù)的Web信息系統(tǒng)性能監(jiān)測分析方法,從用戶使用的角度對信息系統(tǒng)的性能狀況做出分析與評價,該方法是信息系統(tǒng)性能監(jiān)測方式的一種有益的嘗試與創(chuàng)新,已經(jīng)應用于實際生產(chǎn)環(huán)境并得到了用戶好評。然而,本方法還存在部分待改進的地方,如增加對HTTPS等協(xié)議的支持,增加用戶模擬訪問環(huán)節(jié),用于在沒有真實用戶訪問的時間段對Web信息系統(tǒng)開展持續(xù)的實時監(jiān)控等。本文將以上述存在的問題作為后續(xù)研究的方向與內(nèi)容,開展更深入、細致的研究工作。
參考文獻
[1] 金冬成.P2P檢測控制系統(tǒng)中的協(xié)議分析[J].廣東通信技術(shù),2008(12):65?68.
[2] 謝連朋.基于WinPcap的網(wǎng)絡底層數(shù)據(jù)采集系統(tǒng)設計[J].網(wǎng)絡安全技術(shù)與應用,2014(8):93?94.
[3] 饒瑾.深度包檢測(DPI)技術(shù)淺談與應用[J].信息通信,2014(11):245?246.
[4] STEVENS W R.TCP/IP詳解(卷1:協(xié)議)[M].范建華,胥光輝,張濤,等譯.北京:機械工業(yè)出版社,2007.
[5] 韓東東.電子郵件監(jiān)控與審計系統(tǒng)的設計與研究[D].北京:北京化工大學,2008.
[6] 董永吉,郭云飛,黃慧群,等.面向內(nèi)容安全的報文解析結(jié)構(gòu)研究[J].四川大學學報:工程科學版,2012,44(5):130?135.
[7] 孫宏君.業(yè)務網(wǎng)及業(yè)務性能的虛擬化監(jiān)測平臺的設計與實現(xiàn)[D].北京:北京郵電大學,2013.
[8] 吳彥倫.基于WinPcap的Web用戶業(yè)務統(tǒng)計[J].電子世界,2014(15):161?162.
[9] 曾彬.基于主動測試的網(wǎng)絡性能監(jiān)測技術(shù)研究[D].長沙:湖南大學,2009.
[10] 張婧婧,陳福文.互聯(lián)網(wǎng)流量分析技術(shù)及部署方案[J].移動通信,2013(19):71?73.