SDN实战团分享(二十七):如何通过网络应用性能对SDN及虚拟化网络产品进行评估

【编者的话】本文系SDN实战团微信群组织的线上技术分享整理而成,由ZD高级策划经理董培欣带来《如何通过网络应用性能对SDN及虚拟化网络产品进行评估》的分享。
-------------------------------------------------------------------------
嘉宾简介:

董培欣:现任ZD高级策划经理,2002年起在赛迪评测开始网络及网络安全产品测试工作。曾主持编写《交换机产品测试规范》和《路由器产品测试规范》并成功申请到了相关的国家测试实验室资质。

2007年-2015年独自一人在网络世界评测实验室进网络及网络安全产品测试。曾编写《网络世界媒体推广确认测试标准》、并在《网络世界》杂志及网界网上发表过多篇网络及网络安全产品评测及产品分析文章。
------------------------------------------------------------------------
分享正文:

网络应用性能的重要性

这个我想先举一个我身边刚刚发生的小例子:

6月份孩子小升初,升学派位的结果在网站上进行公布。

晚上8点公布结果,8点10分我进网站去查询。但是在用户登录时,始终登录不上去。

总是提示我“你没有任何功能项的操作权限,请联系管理员配置你的权限”。

这个问题,我想大家都清楚,首页可以登录、背景图片可以显示,应该不是DNS和网络带宽的问题,想必是网站的用户登录模块挂掉了。

怎么挂掉的,应该是用户登录模块同时登录连接数过多,导致缓存溢出。

导致的影响是什么,可以看一下截图

我上网站上查了一下,我所在的区去年小升初是4000多个孩子,今年会有增长,但应该也不会超过6000,就算孩子父母一个用手机,一个用电脑同时进行查询,并发用户数最多也就在1万上下。(还有些准8点就去查已经查到的,我就懒了那么一会……)

做系统的技术烂不烂,我们先不去追究,通过这个案例我想说的是,如果在系统上线之前进行过网络应用性能测试,这个问题全完可以提前避免。

无非是统计一下今年有多少生源,从而确定一个最大并发访问量,再查看一下反回数据的文件大小,比上教委网站的带宽,就可以知道新建连接的速率,HTTP新建和并发测试又是在网络应用性能里非常成熟的测试方法,用它来对系统提前进行一下压力测试,肯定可以提前发现并解决问题。

而且,网络应用性能测试还有利于明确问题责任划分,是网络的问题还是网站的问题可以做到一目了然。(当相互推诿的时候,网络的一方如果可以拿出一个应用性能报告,说明可以处理多少、多少的应用连接、可以保持多少连接的正常访问,那另外一方就啥话也别说,只能乖乖的去改代码……)

我在这里举这个例子,实际上是想把这个问题引申一下。也就是说,当前的SDN和NFV产品,同样可以利用网络应用性能的方式对其功能模块进行评估。

下面我们就来看一下,网络应用性能可以对什么产品或功能进行评测

网络应用性能可以对什么产品或功能进行评测

网络应用测试——简单又不简单

说网络应用性能测试简单,是因为就那么几个测试指标,测试方法也比较固定。

说网络应用测试不简单,是因为他可以对当前近乎所有的网络功能进行评估,并可以做出最真实的,接近实际应用的分析。

我从04年左右开始接触网络应用性能测试,从服务器测到负载均衡,乃至于下一代防火墙,都可以通过网络应用测试对其进行最直观的分析。

那时候,曾经夸下海口,只要有网络端口,不管什么网络设备,我都可以进行测试。

现在的情况是,在虚拟化的场景下,从理论上讲,没有物理的网络端口,也可以通过虚拟端口对云计算系统进行分析。

为什么说是理论上,主要是现在虚拟系统的坑实在是太多了,真不够我这个小身板去填的。

然后我又在想这个坑为什么要我去填?(关键是懒……)我以前测试华三、思科的产品之前,难道还要先考一个他们的证书,学一下怎么去编他们的代码?那我也就别干别的了。

前段时间,也曾经试着搭建过一些虚拟化系统,并得到了一些测试数据,但突然发现这么做,除了装装B,可以和别人吹一下我也做虚拟化了,其它并没有什么卵用。关键是这样的测试没有一点实际的代表意义。怎么才可以做些有意义的东西出来,在结尾的时候我会将我的想法写出来,供大家参考。

好了,牢骚就先发这么多,现在转入正题,如何通过网络用性能对SDN、NFV产品进行评估

虚拟网络端口

首先看一下网络虚拟端口

很明显,这只是一个链路层的东西,也要用应用层测试指标去衡量吗?

我想说的是,这里有一些误解,大家一提到网络应用,首先反映到的就是七层的各种服务。

实际上,链路层上的数据转发,本身也是一种网络应用,不但链路层,网络层,传输层乃至于二到七层也都一样。

链路层上的转发、延时、系统资源占用的分析,一样也是属于网络应用的一种。链路层性能的测试方法,有很多大牛都公布过,我也就不在这里现丑了。

在这里想多提一句的是CPU占用,虚拟网卡也是个程序,程序干活要消耗CPU、内存等系统资源。

这里就有一个资源分配的问题,给虚拟网卡分配的资源多了转发性能自然会好,但服务器就干不了别的,买个服务器就为了当交换机使虽然是SDN的本意,但整个数据中心服务器全干这个,那就是笑话了。

现在Intel到是出了DPDK但虚拟端口的流量能否用DPDK进行卸载,我还没有见到成功的案例,9号下午实战团活动,倒是有DPDK的介绍,可我下午正好有事,给错过了,十分的遗憾。

但是DPDK必竟还只是软解压,无论怎么节省,还是要消耗CPU资源,据说Mellanox的网卡可以不占用CPU,完全通过网卡对数据包转发进行卸载,但还没碰到实际的产品,有机会的话,可以去试着去祸害一下。

但即便如此Mellanox也不可以过分大意,如果Intel下一步将网卡芯片直接集成到CPU内部,那Mellanox的“硬解压”优势就会被极大削弱。现在的至强D应该就是Intel的一次尝试。

不过现在看至强D还是有些不上不下,将它当处理芯片吧,计算能力比较弱,当转发芯片吧成本又太高,就算是在白盒交换上做个控制芯片,可能都有人会嫌它贵,只有一些财大气粗的用户现在在用,但CPU与网卡芯片融合肯定是未来技术发展的趋势,说不定那天AMD先它鼓捣出来了呢。

虚拟机

谈完虚拟化网络端口,下面讲一下虚机

通常评估虚机的性能,都是用分配了多少个核,多高主频,多大内存。但虚机可以进行多少应用的处理,没有一个统一的评估方法。而网络应用处理性能,正是网络应用性能测试的强项。

在很早以前的服务器性能测试中,我就开始利用http的连接处理能力(HTTP新建)对服务器CPU处理性能进行测试,取得了很直观的测试效果。

有兴趣的同学可以去找找八九年前赛迪评测出的Intel与AMD CPU性能对比报告,在那里应该有这方面的测试结果。

同样,利用http的连接保持能力测试(HTTP并发),可以对内存性能进行分析。

再结合HTTP的传输流量,基本上可以将服务器的整体应用处理性能进行全向的分析。

后来这些指标更多的用在了网络四七层设备、负载均衡、流量监控以及下一代防火墙等产品的测试之中,服务器的网络应用性能测试反而没有得到很好的普及推广(当时对服务器的测试方法还有很多,而我的关注点又转到了网络和网络安全设备上,所以服务器的网络应用性能测试被逐渐淡化了)。

我想,对虚拟机的网络应用性能测试,可以算的上是服务器网络应用测试方法的一种回归。当用户可以了解到虚机对一个最简HTTP连接的处理性能之后,对自身的网页加以一个估算,就可以大至计算出,自身的网络应用需要多高的计算能力,需要什么样的系统资源配置,以及在什么状态下,可能会出现问题,届时应当如何进行处理。

有条件的用户还可以直接利用网络应用测试的方法,直接对自身的网络应用进行测试,那将会得到更加直观的测试结果,有利用网络相关问题的提前发现,并在事前加以解决。也就避免了开头我举例问题的发生。

控制器

说完虚机,最后想说一下控制器。

控制器看上去功能众多结构复杂,实际上在我看来,就是一张大表,上面记录着所有的Mac、IP、端口、服务、VLAN(VXLAN)ID等信息。

按照Mac管理时它是控制器,按IP控制时,它是路由(现在时兴的说法好像是SDWAN),按端口可以当防火墙,按服务可以做应用分析,按VLAN可以做管理……。

总之这个表做的越大,对数据流分析的越深,做的功能就会越多,管理的规模就会越大。

这也不是什么新技术,下一代防火墙上早就是这么干的了,现在NGFW在网络应用处理性能上也早不存在什么瓶颈。

不知为什么到SDN控制器这里为什么会变得这么难?

看来是以前忽略了一个兼容性的问题——跨平台的通用型应用编程语言(如JAVA)和及面向对象语言(如Python)它们的执行效率问题。编程语言本身效率不高,想让程序具有高效率就是沙地上建塔了。

未来云计算底层应用应该如何为上层兼容性提供支持,是云计算厂商需要着重说明的一件事情,否则云计算就只是中看不中用了。

用什么指标测试是车轱辘话,也没必要再多说了吧?

至于高可用(HA 双活)、负载均衡、安全等NFV功能,利用网络应用性能测试的方法也是大同小异。

总之,网络应用性能测试的适用范围非常广泛,并可以非常直观的对产品应用能力进行评估。我也希望今后有更多基于网络应用性能的测试结果可以展现出来。

如何进行网络应用评估

按道理网络应用性能的介绍到此就应该结束了,但我还想多说一下,如何进行网络应用性能评估。

现在对虚拟系统测试的方法有很多,在Linux下有Iperf、NetPerf、ab等免费工具可以直接使用,也有一些测试仪表厂商为虚拟化产品测试,推出了专用的测试软件。

这些免费工具针对一两个虚机进行测试时,使用起来确实非常简便。但是很难用于大规模测试场景之中。

专用测试软件可以进行大规模网络应用测试,并且测试项目和测试结果的精确度也不是免费工具可以比拟的。

我个人对此的看法是,有多大的碗,盛多少的饭。不管是用免费工具也好,收费仪表也罢,厂商可以组织多大规模的测试,就可以出多大规模的产品。

就像我刚开始做网络应用性能测试时一样,当时国内本身就没有几台应用测试仪表,厂商不得不送产品到我实验室里来,边测试,边改bug。现如今,厂商巴不得我到他们那里去,不但是测产品,更要让别人知道他们的产品测试实力。

这就是一种本质性的改变。在这种变革之下,我自然也不能总抱着产品测试不放。现在我来到ZD,做宣传策划,也正是出于这个原因。今后会通过至顶网这个优质的企业媒体宣传平台,将更多厂商在产品技术、质量管控乃至于技术服务方面的企业优势更好的宣传出来。

测试只是手段,不是目的,通过测试,通过可以直接分析的性能指标,了解功能,了解产品,并知道可以为用户解决什么样的实际问题,这才是厂商最需要做到的。我在今后也会尽全力协助有这方面需求的厂商,去做大做好。

Q&A

Q1:看完之后我还是不知道具体的测试手段,比如iperf的参数,在什么样的场景下改如何设置?
A1:iperf参数网上百度一下就好,我一开始也一样不了解,也是百度着一点点学的。

Q2:网络安全产品测试的性能指标可能和一般的网络产品的不太一样,我想了解一下如果是防火墙产品的话,主要的性能指标是什么?有什么具体的解决方案吗?
A2:性能指标,二三层转发时延、四七层新建、并发,但一定要注意把这些指标带到具体功能里进行测试。

Q3:您测试Http主要用Spirent和ixia的产品吧?
A3:对,这两家的产品都用过

Q4:请教,就产品而言,控制器该如何测量性能呢?有哪些指标呢?
A4:我建议在传输层通过TCP建立速率来进行重点测试,这是控制器的弱项,也是十分重要的考核指标。

Q5:是不是还应该考虑到防护攻击和病毒时候的23转发时延和47的新建以及并发?
A5:在对具体功能时,要具体的去看,是哪层的设备,是哪层的指标

Q6:请问TCP建立速率主要取决于哪些因素?
A6:新建连接考查的是产品的CPU处理能力,你产品做的好,在测新建时,CPU的占用就会少

Q7:这是产品性能的评测,对于用户体验一般是如何评测?
A7:应用性能测试直接反映的就是用户体验,新建不足,用户的连接就建立不起来,等待时间就会加长,并发不够,就有可能令服务器瘫痪,这些都是用户在实际体验时可以真实遇到问题。

Q8:那您现在主要用什么工具来测试每秒新建和最大并发呢?除了Spirent和ixia还有别的选择吗?
A8:我倾向于用avalanche,现在专用仪表,就他们两家,ixload在处理一些脚本时我觉得不是很自由

Q9:虚拟化解决方案的测试有一套系统的指标吗?
A9:我以前总结了一些,但时间比较长了,要找找,不过我倾向于具体功能具体分析,应用不同,评估的尺度也不一样。

Q10:除了并发,对于产品性能还有哪些地方测试不足会影响用户体验
A10:一般来讲,新建测CPU、并发内存,按道理流量测网络吞吐,但在七层测试中流量测试时基本跑的都是大包,吞吐性能不能很好的反映出来,所以才需要在二三层再测一下

Q11:SR-IOV如何测试呢
A11:存储我还要简单说一下,应用性能有个局限,就是对存储性能没有什么好的测试办法,因为应用请求在服务器端基本会被内存给缓存住了,所以存储的性能很难测试到。

Q12:在网络安全测试方面,是用的哪个流量发生器?
A12:avalanche、ixload、breaking point

Q13:对于tcp/http连接测试能否把这些测试工具分几个级别介绍一下,比如10W并发有哪些工具,100W并发有哪些?
A13:纯软件的用an即可,10万内可以,100W的可以集群吧,或者就上avalanche

Q14:能再略微详细说说负载均衡应用的压力测试吗?
A14:负载均衡看是四层还是七层负载,指标都是新建和并发,http://test.cnw.com.cn/test-report/htm2011/20110708_228729.shtml 这个是以前的负载均衡测试报告,可以参考下

Q15:如何检测某一网络安全产品对DDoS的防御能力?
A15:http://test.cnw.com.cn/test-report/htm2011/20110708_228729.shtml 这个以参考下

Q16:为什么路由器的测试只是一些压力的测试用例呢?
A16:也可以测试路由表的深度,在测试仪表上有相关的设置的,我所说的那几个只是基本测试指标,对不同功能,在应用上海需要进行多种不同设置,基本指标只是性能的一个参考。像一些网络厂商,这样的测试项,会有成百上千种之多,这里没办法一一列举的。

Q17:网络流量吞吐需要关注吗?
A17:网络流量吞吐当然要关注,在不同包长下的吞吐,CPU的占用是不同的,一般来讲512Byet以上吞吐基本不丢包就可以满足正常应用,但还要再重复一下,要看具体应用!具体应用!!具体应用!!!应用不同,考核的指标也要随着改变。

--------------------------------------------------------------------------
SDN实战团微信群由Brocade中国区CTO张宇峰领衔组织创立,携手SDN Lab以及海内外SDN/NFV/云计算产学研生态系统相关领域实战技术牛,每周都会组织定向的技术及业界动态分享,欢迎感兴趣的同学加微信:eigenswing,进群参与,您有想听的话题可以给我们留言。


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/17441.html
分享到:
相关文章
条评论

登录后才可以评论

SDNLAB君 发表于16-07-21
1