APP下载

基于深度包解析的信息系统性能监测分析方法

2015-11-09孙峰等

现代电子技术 2015年21期

孙峰等

摘 要: 提出一种基于深度包解析技术的Web信息系统性能监测分析方法。首先,阐述方法实现的技术基础;其次,给出方法的具体实现步骤,涉及网络传输时延、页面访问时延、系统健康度等指标;最后,在某电力企业门户系统中对上述方法进行验证。实践表明,该性能监测分析方法运行稳定、分析直观,具有较好的实用性与市场价值。

关键词: 深度包解析; 性能监测; 访问时延; 系统健康度

中图分类号: 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

信息系统正逐渐成为支撑大型企事业单位生产的必要工具,而信息系统性能优劣已成为生产力的主要体现。基于深度包解析技术的Web信息系统性能监测分析方法,通过对用户访问信息系统的真实镜像数据进行分析,提炼出系统使用过程中的网络时延、业务处理时延等指标,从用户视角描述系统性能,计算出系统健康度。相比于传统的通过采集主机硬件、操作系统、中间件、数据库等资源指标来判断系统性能状况的技术,该方法具有分析更准确、直接、可有效降低运维人员巡检工作量等优势。

1 深度Web业务包解析基础

相比于普通的数据包解析,深度包解析技术(DPI)在分析IP数据包源地址、目的地址、源端口、目的端口以及协议类型等包头信息的基础上,还增加了对应用层单个数据包内容的分析,并且能够把分散的数据包重新组合成一个相关联的数据流,通过对数据流的分析,提炼出用户访问信息系统不同页面、不同应用的行为。业务数据包捕获过滤与重组还原是该技术的基础。

1.1 业务数据捕获与过滤

采用旁路侦听的方式实现业务数据捕获与过滤,优点是对Web信息系统的正常运行几乎无影响,同时管理效果也很优异。具体步骤是,首先配置交换机,将Web信息系统所在交换机端口的数据复制到镜像口;其次,使用网线连接镜像口与监控主机;第三,在监控主机部署数据包采集模块。模块采用免费、公共的WinPcap(Windows Packet Capture)开发包,它为Windows应用程序提供了访问网络底层数据的能力。WinPcap操作的核心流程如图1所示。

其中,pcap_lookupdev()函数:遍历本地网卡设备,与镜像口相连的本地网卡可作为数据操作网卡;

pcap_open_live()函数:打开选中的设备;

pcap_setfilter()函数:设置过滤器,将过滤字符串设定成“tcp and server?ip and server?port”的形式,WinPcap提供的内核级数据包过滤机制将准确地捕获访问业务信息系统的所有TCP数据包,如“tcp and host 101.144.100.242 and port 80”规则表示捕获IP地址为101.144.100.242的服务器80端口所有的TCP数据包;

pcap_loop()函数:使用回调函数循环捕获网络数据,在函数中进行数据包分析、数据包储存等操作。

图1 WinPcap捕获过滤网络数据包核心流程

1.2 数据包重组

1.2.1 TCP数据包重组

依据TCP/IP协议原理,TCP会话的每一端都包含1个序列号与确认号,分别用来跟踪该端发送的数据量与接收的数据量。同一TCP会话中,同方向的一对数据包,前者的相对序列号seq值与包内容长度len值之和应该等于后者的seq值;反方向的一对数据包,前者的seq值与len值之和,应等于后者的相对确认号ack值。

因此,依据seq,ack,len之间的关系,为同一TCP会话建立两个数据包队列,依次分别存入正常包序与异常包序的TCP报文。异常包序情况包括完全重复、部分重复、数据后发先到、len=0等。

待当前TCP会话的全部报文收取完毕后,取出正常队列中的最后一个TCP报文,根据其seq值与len值,在异常队列中查找其后续报文,按去重原则将异常队列数据包丢弃或者存入正常队列。

例如,正常队列最后一个TCP报文数据段第一字节的序号为seq=200,len=150,异常队列取出的同向TCP报文数据段第一字节的序号为seq=300,len=160,则报文数据序号300~350区间是重复的,因此修改异常报文seq值为350,len值为110,将其存入正常报文队列尾。

1.2.2 HTTP数据包重组

HTTP协议是基于TCP协议,在Web信息系统中使用最广泛的一种通信协议,由终端浏览器向服务器发起请求,服务器反馈请求结果。

HTTP请求方法包括GET,HEAD,POST等,其中GET表示请求指定的Web文档,POST表示请求Web服务器接收指定文档。HTTP响应包括HTTP连接状态码、响应头、响应数据等信息。

HTTP包重组是对同一TCP会话中重组过的正常包序的TCP报文进行分析,识别出HTTP请求头与响应包头,根据响应包头中的Content?Length值或chunked信息,找出所有HTTP响应数据报文。重组流程见图2。

2 信息系统性能监测分析方法实施步骤

基于深度包解析技术的Web信息系统性能监测分析的目的在于,从原始网络数据包中提炼出信息系统访问数据并展开分析,其包括业务数据捕获过滤、深度包解析与时延指标获取、系统性能健康度分析三大步骤,数据流向如图3所示。

2.1 业务数据包存储

本方法采用嵌套链表的方式保存、捕获、过滤并经重组还原的,所有TCP,HTTP业务数据包。

同一个Web信息系统会被多台终端访问,因此在IP层面,信息系统的IP与其访问终端IP是一对多的关系,为每一个访问终端的IP维护一张IP链表。

在端口层面,信息系统提供的服务端口一般固定不变,而访问终端所使用的端口却是变化不定的,因此,信息系统的端口与访问终端的端口也是一对多的关系。在IP链表中,为每个访问Web信息系统的端口维护一张Port子链表。子链表中的每个节点保存该端口下所有经重组提炼出的HTTP协议包,分为HTTP请求数据与响应数据两部分,后者可能含有若干TCP分片包,也可能只有一个TCP包。为方便后续分析,以Port子链表节点首个数据报文开始时间先后为排序规则,为所有的Port子链表节点建立节点时间索引表,如图4所示。

所有待分析的数据都保存在嵌套链表中,分析完毕后,从链表中删除所有已分析的数据。信息系统访问量特别大时,可以选择将嵌套链表的数据定期存入实时数据库或文件,由分析线程读取数据库或文件数据进行指标提炼,并删除过期数据。

2.2 深度业务包解析与时延指标获取

信息系统访问整体时延=建立连接时延+网络传输时延+系统响应时延,对用户而言,浏览器渲染时间也是影响体验的因素之一,这里暂不考虑。

2.2.1 连接建立时延与网络传输时延

监控模块为每个收到的TCP数据包加上时间戳,对于每一次终端开始访问Web信息系统前的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包在网络上传输的时间。因此:

2.2.2 系统响应时延

系统响应时延=页面访问结束时间-页面访问开始时间。而页面开始时间的判断,是基于通过深度包解析建立的页面专属信息库。

(1) 页面专属信息库

本方法提出页面指纹与页面资源两个概念。页面指纹是指能把某个页面与其他页面区分开的页面信息组合。多数信息系统不同的页面对应不同的URL,因此URL信息可作为页面的指纹,结合HTTP请求命令,该类型指纹定义形式为“请求方式+URL”。少数信息系统采用了flex等开发技术,不同页面采用相同的URL,如此,就需要对这部分页面的起始交互数据进行深度数据包分析,提炼出能够标识页面的数据信息,指纹定义形式为“请求方式+URL+内容关键词”。

页面资源是指信息系统服务器反馈给访问终端的各页面组成元素,如js资源、css资源、图片资源、xml资源等。

为待分析的Web信息系统建立包含页面指纹与页面资源专属信息库,是系统响应时延分析的前提。信息库格式如表1所示。

(2) 页面响应时间的计算

读取每一个访问终端的IP父链表的时间索引表,顺序找到各Port子链表的节点,对节点HTTP请求部分的数据进行页面指纹信息匹配。如果找到页面指纹信息,并且节点HTTP响应码为200OK等正确码,则认定该节点第一个数据报文的开始时间为对应页面的开始时间,若响应码为400,500等错误码,则判定页面访问失败。时间索引表与Port子链表的对应关系如图6所示。

为当前访问终端IP的每个检测到开始的页面建立一个队列,从Port子链表删除已经匹配到页面指纹的节点,将其加入到对应的新建的页面队列中,同一个IP终端,访问同一个页面的队列应具有惟一性。

如果在同一IP父链表中,短时间内连续识别出某些Port子链表节点,它们均匹配到相同的页面,则终端可能存在页面刷新与重复打开行为,此时应以最后一个Port子链表节点的第一个数据报文的开始时间作为页面的开始时间。

如果当前Port子链表节点不属于页面开始节点,则提取出该节点HTTP请求部分的资源信息,判断该资源是否属于当前正在分析中页面的页面资源。如果不是,则丢弃该节点;如果是,将其从Port子链表删除,加入对应的页面队列,同时更新该页面队列最迟数据包的接收时间。

若某页面队列从最迟数据包接收时间开始,超过页面访问时间(一般为20 s),没有新的Port子链表节点加入,则视最迟数据包接收时间为页面结束时间。计算页面结束时间与开始时间的差值作为页面响应时间,同时删除该页面队列。

2.3 Web信息系统性能健康度计算

信息系统的组成页面是多样性的,不同类型页面的时延评价标准应具有差异性,将页面定义为3大类、13小类(如表2所示),由用户根据自身需求为其分别定义标准响应时长。信息系统的性能健康度评价基于目标系统是否有响应、目标系统响应时间是否超过基线时间。

图9 系统健康度与时延截图

4 结 语

本文给出一种基于深度包解析技术的Web信息系统性能监测分析方法,从用户使用的角度对信息系统的性能状况做出分析与评价,该方法是信息系统性能监测方式的一种有益的尝试与创新,已经应用于实际生产环境并得到了用户好评。然而,本方法还存在部分待改进的地方,如增加对HTTPS等协议的支持,增加用户模拟访问环节,用于在没有真实用户访问的时间段对Web信息系统开展持续的实时监控等。本文将以上述存在的问题作为后续研究的方向与内容,开展更深入、细致的研究工作。

参考文献

[1] 金冬成.P2P检测控制系统中的协议分析[J].广东通信技术,2008(12):65?68.

[2] 谢连朋.基于WinPcap的网络底层数据采集系统设计[J].网络安全技术与应用,2014(8):93?94.

[3] 饶瑾.深度包检测(DPI)技术浅谈与应用[J].信息通信,2014(11):245?246.

[4] STEVENS W R.TCP/IP详解(卷1:协议)[M].范建华,胥光辉,张涛,等译.北京:机械工业出版社,2007.

[5] 韩东东.电子邮件监控与审计系统的设计与研究[D].北京:北京化工大学,2008.

[6] 董永吉,郭云飞,黄慧群,等.面向内容安全的报文解析结构研究[J].四川大学学报:工程科学版,2012,44(5):130?135.

[7] 孙宏君.业务网及业务性能的虚拟化监测平台的设计与实现[D].北京:北京邮电大学,2013.

[8] 吴彦伦.基于WinPcap的Web用户业务统计[J].电子世界,2014(15):161?162.

[9] 曾彬.基于主动测试的网络性能监测技术研究[D].长沙:湖南大学,2009.

[10] 张婧婧,陈福文.互联网流量分析技术及部署方案[J].移动通信,2013(19):71?73.