在SIP网络环境中,为了满足用户的需求和功能实现,需要部署多种SIP网络设备或者网元来,例如注册服务,转发代理服务器,有状态代理,SBC和B2BUA等支持业务的需求。因为业务需求复杂,很多时候,这些设备的执行性能存在很多的偏差。其性能认知的排查很大程度上取决于测试手段是否规范。规范的测试手段能够保证其性能测试取得一个比较权威的结果。另外,具体测试项目或者被测设备(DUT)的必要参数参数也是非常重要的指标。其参数指标包括SIP注册速率,会话创建速率等。实际上,RFC7502规范(信息类)提供了针对SIP执行性能的参数指标和针对这些参数指标的方法手段。在以下的章节中,我们将根据RFC7502的内容,为大家介绍其基准测试的手段和测试项目的用例说明。
这里提醒读者,在关于RFC7502的规范分享中,其规范涉及到了RFC7501中的一些必要指标的说明。笔者在这里会交叉引用这些说明,请读者在阅读时注意。
在关于RFC7502规范的分享中,其主要内容包括了基准测试的网络拓扑,测试创建参数详解,生成报告格式和测试用例等几个核心章节。因为篇幅的关系,笔者直接介绍这些核心的章节,其它辅助说明,读者可参考规范链接查看全文。
背景说明
关于SIP的性能参数有很多的介绍,绝大部分的讨论聚焦于SIP服务器或者媒体服务器的性能,包括CPS值,和媒体相关的编码转换处理等。一些细节的测试指标包括RFC6076中的指标都有相关的规范和算法。
完整RFC6076-端对端SIP网络九大性能评价指标(KPI)概论和时延产生其他因素的相关性讨论
我们在本文档中讨论重点讨论的是注册速率和会话创建的速率方面的测试指标。在SIP规范RFC3261中涉及了很多的SIP终端设备,这些设备是一些被测设备-Device Under Test (DUT),它们充当着各种SIP中间人角色,例如,它们可以是注册服务器,转发服务器,有状态代理(本规范中不涉及无状态代理),SBC或者我们经常看到的其它B2BUA角色,这些被测设备的性能会影响着整个SIP网络的性能。这些测试中包括了代理设备配合媒体服务时的不同类型的对比。我们期望通过不同类型的对比来验证其设备的执行性能。
测试这些DUT设备需要按照不同的测试用例手段进行测试。在本规范中讨论了测试用例中需要测试的几个指标。这些具体的指标包括最大SIP注册速率和最大SIP会话创建速率。我们通过测试这两个指标来检验在一定时间周期内,成功状态下的SIP设备可承受的压力。在测试过程中,整个时间周期也需要设定的算法来保证。这些指标中涉及了会话过程中绑定媒体流的性能测试和转发媒体流的性能测试。这些测试用例也同样影响SIP设备的性能。RFC7502通过不同厂家SIP设备输出的性能指标来为SIP网络部署提供性能指标参考。
Benchmarking Topologies-基准测试拓扑实现
在前面的背景介绍中,我们已经提到。输出准确的指标我们需要首先确认测试用例拓扑实现。这些用例通过集线器,网络交换机,路由器等设备,测试用例会生成大量的网络数据包,这些设备的性能也会影响测试的最终结果。因此,在测试用例的执行中,我们要首先保证这些网络设备的能力支持。
测试用例是非常关键的。在此建议规范中,规定了两种测试用例拓扑,它们分别是:媒体处理的DUT设备和转发媒体处理的DUT设备处理的流程。
另外关于注册性能测试中,以下用例测试了注册和重新注册使用的测试流程。通过后台的注册和重新注册机制中的时间周期数字测试来测试其DUT设备的稳定性。
测试创建参数
在确定了参数用例以后,为了测试DUT设备的性能,我们需要按照参数设置分别进行性能测试。这些创建参数测试的指标包括了传输协议使用,传输协议连接的管理,信令服务器,关联媒体,关联媒体的选择(RTP和SRTP),每个SIP会话所关联的媒体流的数量,编码类型,会话时长,每秒尝试会话等参数。
广告
除了涉及到的这些参数以外,规范中推荐了一种算法来处理这些参数值的计算。在RFC7502的4.10章节介绍了一个关于测试用例的算法伪代码。此参数算法是通过R 统计语言Rtool来实现的。其目的是找到最大值R(SIP尝试速率),以sessions per second (sps)来参数。与之相对的是N值,代表N个SIP会话次数。通过N和R的交互测试其最终结果,主要涉及的参数包括:
; ---- Parameters of test; adjust as needed
N := 50000 ; Global maximum; once largest session rate has
; been established, send this many requests before
; calling the test a success
m := {...} ; Other attributes that affect testing, such
; as media streams, etc.
r := 100 ; Initial session attempt rate (in sessions/sec).
; Adjust as needed (for example, if DUT can handle
; thousands of calls in steady state, set to
; appropriate value in the thousands).
w := 0.10 ; Traffic increase weight (0 < w <= 1.0)
d := max(0.10, w / 2) ; Traffic decrease weight
测试报告格式
测试报告需要一定的规范来标识其参数测试情况。报告规范涉及了测试创建报告(传输协议,连接管理策略,会话尝试速率,总会话尝试数量,编码类型,媒体数据包大小,创建阀值时间,使用的TLS套件,IPsec属性等),针对会话创建的设备基准报告(会话创建速率),针对注册和重注册的设备基准报告(注册速率,重注册速率)。更多关于具体参数的计算单位的定义,读者可参考RFC7502的第五章节。
测试用例
在此建议规范中规定了八个测试用例分别测试DUT不同的衡量指标。每个测试用例包括了测试目的,测试流程和期望输出结果。
Baseline Session Establishment Rate of the Testbed
目标 | 枚举代理的会话创建速率,无失败记录 |
测试流程 | 1)在示例1中配置DUT。2)设置每个会话的媒体流为0。3)执行基准算法,获得基准会话创建速率。 |
期望输出结果 | 获得EA的最大创建速率。 |
Session Establishment Rate without Media
目标 | 测试无媒体关联时,DUT的会话创建速率。 |
测试流程 | 1)根据配置示例1或者2配置。2)设置每个会话的媒体流为0。3)执行基准算法,获得基准会话创建速率。 |
期望输出结果 | 获得当无媒体流发送时的EA的最大创建速率。 |
Session Establishment Rate with Media Not on DUT
目标 | 衡量DUT的会话创建速率,包括媒体流,无失败结果,媒体不通过DUT运行。 |
测试流程 | 1)通过测试用例1配置一台DUT。2)设置每个会话的媒体流为1。 |
期望输出结果 | 获得测试结果,带媒体的会话创建速率,每个SIP会话携带的任何媒体流数量来确认其性能。 |
Session Establishment Rate with Media on DUT
目标 | 衡量DUT的会话创建速率,包括媒体流,无失败结果,媒体通过DUT运行。 |
测试流程 | 1)通过测试用例2配置一台DUT。2)设置每个会话的媒体流为1。 |
期望输出结果 | 获得测试结果,运行在同一平台的带媒体的会话创建速率和不带媒体的会话创建速率对比。通过硬件专有的媒体路径硬件处理,测试转发媒体,处理媒体(媒体转换),各种媒体类型的处理 |
Session Establishment Rate with TLS-Encrypted SIP
目标 | 衡量带TLS加密的SIP的会话创建速率 |
测试流程 | 1)如果DUT作为一个代理或者B2BUA测试时,按照用例1或者用例2配置。2)测试期间开启TSL支持,使用推荐的加密套件。3)设置每个会话的媒体流为0, 无媒体介入。4)执行测试算法,并且支持TSL加密。 |
期望输出结果 | 期望获得一个带TLS加密的SIP 会话创建速率,这个值可能低于明文SIP环境。 |
Session Establishment Rate with IPsec-Encrypted SIP
目标 | 衡量带IPsec加密的SIP的会话创建速率 |
测试流程 | 1)使用测试图例1或者2配置一台DUT。2)设置每个会话的媒体流为0,不使用媒体。3)针对IPsec执行配置。4)执行基准算法获得带IPsec加密的会话创建速率。 |
期望输出结果 | 期望获得一个带IPsec加密的SIP 会话创建速率,这个值可能低于明文SIP环境。 |
Registration Rate-注册速率
目标 | 衡量最大注册速率,DUT可以在一个延长时间内处理的,无失败结果。 |
测试流程 | 1)根据示例3配置DUT。2)设置注册超时时间,至少为3600秒。3)每个注册请求必须通过不同的AOR地址执行。4)执行基准算法获得最大注册速率。 |
期望输出结果 | 提供最大注册速率。 |
Re-registration Rate-重新注册速率
目标 | 使用同样后台处理流程,重新注册DUT设备进行测试。 |
测试流程 | 1)通过示例3配置DUT。2)执行注册。3)5分钟以后,少于10分钟内执行注册步骤2,使用同样的AOR注册。 |
期望输出结果 | 通过重新注册,进行注册对比测试。 |
其他测试工具讨论
关于SIP测试的讨论涉及很多领域的内容,可以测试硬件服务器性能包括硬盘读写速度,可以测试内存,网口等性能,当然也可以测试更多涉及SIP呼叫的其他参数,例如PRD,SRD,抖动等。使用的工具也很多,大家可能比较常用的就是SIPP,也可以使用其他的商业软件来进行测试。
关于SIP性能测试的以上测试指标以外,还有针对具体SIP语法处理的测试,例如文本消息解析,无序的头字段重排,各种变量值大小,非敏感字母处理,消息扩展支持等要素,这些要素可能会影响CPU性能和内存大小。
在更复杂的流程处理中,各种代理服务器路由之间的切换需要使用各种进程来处理这些流程。这些进程也同样影响着代理服务器的每秒呼叫量,响应时间和CPU占比。
如果在3GPP, IMS网络呼叫环境中,S-CSCF的呼叫流程更加复杂,
在S-CSCF测试环境中,基准测试中的创建和拆线时间也会出现很大的不同。
总结
测试是员工非常复杂的过程,首先需要定义衡量指标,确认测试算法,并且还要输出测试结果。测试SIP DUT设备在不同网络环境,不同业务流程的性能是一个设备性能指标中非常重要的指标。RFC7502发布了一个信息类的规范,能够帮助大家通过一个规范来输出标准的测试数据,通过不同厂家SIP设备性能的对比来帮助用户更加理性选择合适的产品。在衡量指标测试中,根据8个不同测试场景,按照Rtool工具的算法处理来输出一个完整的SIP终端的衡量指标。
在最后章节,笔者补充了一些其它的测试方式,方便读者比较全面地了解关于SIP测试的指标说明。
参考资料:
www.sip.org.cn
www.dinstar.cn
https://datatracker.ietf.org/doc/html/rfc7502
https://www.rfc-editor.org/rfc/rfc7501
https://www.r-project.org/
https://www.rfc-editor.org/rfc/rfc6357
https://sipp.sourceforge.net/doc3.3/reference.html