深度应用识别DAR性能测试分析

标签:
深度应用识别dar流识别性能测试it |
分类: 网络 |
文/朱皓
众所周知,路由器(Router)是一个网络层的设备,主要功能是网络层数据的转发。随着硬件的提升和技术的发展,路由器已经可以承担更多的工作。用户需要对业务流量进行控制,由此产生了路由器上的流量深度监测技术,H3C称之为深度应用识别(DAR, Deeper Application Recognition)。这种技术把路由器对流分类控制的能力扩展到了应用层。本文分析了DAR技术的性能测试方法,可以用来深入评估该技术的有效性,使之在实际应用中更合理的部署。
1 技术回顾
1.1 网络数据的封装
今天的网络,主流是由TCP/IP协议族构成的网络。在这个网络中,网络层是IP协议,传输层是TCP或UDP协议,各种应用是承载在传输层之上的应用层。数据在现实网络的转发中,用户的数据报文首先要经过层层封装,数据首先被封装应用层的标志,然后按照预先的定义选择TCP或者UDP进行封装,最后封装IP层,也就是网络层。
从网络层来看,同种数据报文的特征就是IP报文的源地址SIP、目的地址DIP、协议类型。
从传输层来看,同种数据报文的特征就是传输层协议类型(包含在IP封装中)、源端口号、目的端口号。
从应用层来看,同种数据报文的特征就是应用层协议的类型,或者数据中特殊的固定字段。比如telnet和ftp就是不同的应用层协议类型。或者在BT这种点到点的应用中,可以通过定位数据报文中的特殊字段,来识别这种应用。
1.2 快速转发技术
路由器作为一个网络层的转发设备,通过查找路由表来决定如何进行数据转发。也就是说当路由器收到一个数据报文,会根据报文IP层中的目的IP,查找自己的路由表,命中一条路由,并根据下一跳地址完成转发。查找路由表是比较低效的方式,因此各厂商都有自己的快速转发技术。
比较主流的一种思路是首先对数据进行流分类,同一条流进行一次查表,后续的报文就不再查路由表了。流分类可以基于IP封装中的3个元素,源IP、目的IP、协议类型;也可以基于包括传输层封装在内的5个元素,源IP、目的IP、协议类型、源端口号、目的端口号。同一条数据流中的第一个报文完成路由查表后,得到下一跳信息。然后会建立一个快转表,包含流分类的信息和下一跳转发相关的处理。快转表是一种HASH表,查表速度非常快,因此就能够实现快速转发的目的。
快速转发技术的出现,实际上已经要求路由器不仅仅识别网络层的信息,而且要识别传输层的信息。同时根据网络层和传输层的信息来完成快速转发。
2 深度应用识别技术
深度应用识别技术DAR就是基于上述的技术作为基础,进一步发展了路由器流分类的能力,并且把流分类的结果与快速转发技术相结合,达到最终对业务流量进行控制的目的。
DAR技术可以识别上百种已知的协议类型,并且可以自定义新的协议类型。对于需要通过特征字识别的数据流,可以通过加载特征文件的方式进行更灵活的定义,包括定义报文的协议类型、特征字段的长度、在数据载荷中的偏移量等等。
DAR完成流识别后,会建立基于流的DAR session并且加入到快转的流程中去。这个session是双向的,保证双向业务流都能快速命中DAR。
DAR仅仅是流识别、分类技术,需要与QoS技术结合完成流量的控制,比如限速、更改优先级等。
3 性能测试方法
DAR需要对数据报文进行识别,并且建立和维护会话,必然带来系统开销的增加。因此有必要测试DAR在实际使用中对整机性能的影响,作为实际部署流量控制时的理论依据。
针对应用识别的技术特征,可以总结出一些需要测试的数据。测试设计主要从2个方面考虑,一方面因为DAR需要建立和维护会话,那么需要测试单个会话和大量会话的情况。另一方面就是对不同种类的业务流量进行识别时性能的差异。
因此设计了如下性能测试项:
测试项 |
测试目的 |
双向业务流的性能测试 |
与单机普通转发性能做对比 |
单项业务流和双向业务流的性能测试 |
验证双向业务对性能数据的影响 |
多条业务流的性能测试 |
与单条业务流性能做对比 |
识别应用报文中不同协议包头的固定字段的性能测试 |
识别不同固定字段时对性能的影响 |
不同种类应用报文的性能测试 |
不同种类的应用识别方法对性能的影响 |
大量DAR会话的设计
通过多条业务流触发建立大量的DAR会话。主要是生成多条快转表和DAR的session,因此在源IP、目的IP、协议号、源端口、目的端口号这5元组上做变化。
测试实例中可以采用两种情况,第一种是构造200条源目的IP变化的业务流。第二种情况是UDP端口号变化的500条业务流。测试字节数分别为78、128、512、1518(测试仪器构造带传输层载荷的最小报文为78Bytes)。
不同种类应用识别的设计
对于不同业务流的设计,可以从两个角度做测试设计。
第一个角度是选择以下2种网络上常见的多媒体数据流RTP,然后对比DAR的资源消耗:
- IP语音数据。需要识别传输层协议为UDP,端口号为16384以上的偶数端口号;
- 视频数据。需要识别RTP载荷种类为H.264标准,传输层协议为UDP,端口号为16384以上的偶数端口号。
第二个角度是完全不同的业务流,不考虑数据报文的长度变化。可以采用:
- GRE的流量。这种流量只需要识别IP报文头部中的协议字段;
- IP语音数据。这种流量需要识别IP报文头部的协议字段及UDP端口号;
- 某种应用采用UDP协议,并且载荷首部特殊字符串为ACAD的流量。根据数据封装情况及特征字段的偏移量来命中特殊字符串。
DAR完成流分类后的处理
DAR在实际的使用中不会单独存在,DAR之后必然要对流量进行处理,一般是使用各种QoS策略。实际上QoS操作也会占用CPU资源造成性能的下降,这并不属于本文讨论的范畴,因此我们选择比较简单的remark DSCP操作,也就是对命中DAR的流量,更改数据的DSCP字段。
性能数据计算标准
中低端路由器的转发性能看pps(packet per second),也就是每秒转发的包数量,与包的大小关系不大。因此比较数据时建议取各字节最大转发能力的pps求平均值,如果某个字节转发达到线速,那么包数会远小于平均值,要剔除该数据不参与平均值计算。
4 测试数据分析
使用Sprient公司的TestCenter测试仪器,配置测试流量报文为78字节,测试结果如图1所示。
http://www.h3c.com.cn/res/201204/18/20120418_1338732_image002_741994_30008_0.png图1 数据对比一(pps)
总的来说,DAR业务会大量占用系统资源,因此加载DAR业务后性能会大幅度下降。但是考虑到在实际的网络应用中数据报文的长度平均在300~400字节。在这个字节长度上,加载DAR业务后性能下降22%左右(根据报文长度折算得出)。相当于原本1000M的带宽可以线速转发,加载DAR后下降到780M。
双向业务比单向业务消耗了更多CPU资源,但性能下降不多。对于IP语音数据和视频数据的识别,虽然识别字段不同,但是对性能基本没有影响。
多业务流的测试说明DAR维护越多会话数量,消耗的系统资源越大。但性能的下降在可接受的范围内。
针对完全不同的业务数据流,使用IXIA公司的N2X系统作为测试仪器,配置测试流量报文为78字节,测试动态性能结果如图2所示。
http://www.h3c.com.cn/res/201204/18/20120418_1338733_image003_741994_30008_0.png图2 数据对比二(Mbps)
从测试结果来看,检查特征字符串的定位方法虽然看上去很复杂,但是从代码实现上估计只需要做一次查找,因此效率最高。IP语音数据流,需要检查协议号和端口号2个位置,效率最低。
GRE数据流也是只需要检查IP报文头部的协议字段,与检查特征字符串相比,性能明显下降。说明在代码的实现上,不同的协议识别还是有细微的差距,因此表现在最终性能数据存在差异。
5 结束语
本文从各种角度对深度应用识别技术DAR进行了分析和测试。测试结果说明在实际网络中DAR确实能有效的识别不同业务数据,并最终进行精细的流量控制。即便是在大流量、多业务流的复杂环境中部署DAR特性,资源消耗的增长也在可接受的范围之内。