一、简介
毅航互联vSBC-5000是纯软件实现,较多的部署在虚拟机或者云平台中使用,需要有测试来确定在常见的配置模式下大概的性能数据,作为现场部署的参考。
由于毅航互联vSBC-5000的功能非常多,本测试主要完成最简单情况下的通话测试,包括:不转码透传通话、加密通话和基于sipp的压力测试。
经过上述测试验证,毅航互联vSBC-5000产品支持编码透传、基于TLS/SRTP的加密通话和1000并发通话。
注:用sipp带媒体做压力测试,发现并发超过500时,sipp就很容易出现出现coredump、没有响应或者控制终端直接和服务器断开等现象,网络带宽也严重偏离。因此,在此测试中引入毅航硬件SBC(SBC-2000),sipp只是做信令处理,与SBC-2000对接,由SBC-2000和vSBC-5000对接,保证vSBC-5000具有真实的媒体流量。
毅航互联透传SBC-5000(简称vSBC)提供类似IMS网络A-SBC和I-SBC的功能,用于网络拓扑隐藏、NAT穿透、内外网隔离、VoIP安全和广域网组网等场景,也可以用于协议转换、SIP信令整形、视频会议、WebRTC接入等SBC场景。
毅航互联vSBC支持双机主备冗余功能(HA),主备切换不影响通话,现有通话不会中断,满足运营级要求。
毅航互联vSBC支持话单,可用于计费等运营场景。
毅航互联vSBC是纯软件实现,可部署在专用服务器、通用服务器、虚拟机(VMware、KVM、VirtualBox)和云平台(阿里云、腾讯云、百度云、华为云等)。
毅航互联vSBC具有高性能和大容量的特点。呼叫:500呼叫/秒,5000并发。注册:500事务/秒,5000并发。
毅航互联vSBC不执行媒体的编解码转换,并且采用内核包转发,具有极高的性能。
本测试的宿主服务器采用DELL PowerEdge R720机架式服务器。配置两颗intel E5-2690 v2 CPU,32G内存。
具体参数见网站:
https://www.dell.com/zh-cn/work/shop/povw/poweredge-r720
注意:DELL此产品已经下架,类似产品为R740。
宿主服务器和虚拟机均使用CentOS 7.5 64bits linux操作系统。
具体性能参数见网站:
https://www.centos.org
毅航互联 硬SBC由SBC 0500,SBC 1000,SBC 2000等系列产品组成,与毅航互联TG1000/TG4000网关共享相同平台、软件和架构。
毅航互联SBC面向运营商、互联网企业和呼叫中心,为客户的SIP网络提供强大的安全、编解码转换、内外网穿透、注册代理、路由、信令流控/转换、QoS/ACL等功能。
毅航互联SBC秉承毅航互联iSX4000多媒体交换机的“双星网”架构,采用高性能DSP/VoIP处理芯片、多核嵌入式CPU处理器、千兆无阻塞网络交换和高性能主机CPU,构成分布式计算网络,以极低的功耗实现极高的性能。
毅航互联SBC设备最大支持2000并发会话和2000路语音媒体转码。除传统电信编解码(G.711/G.729/G.723),还支持3G/4G编解码(AMR NB/AMR WB/GSM FR/EFR),以及互联网编解码(OPUS/SILK/iLBC)。另外,毅航互联SBC还支持高清语音(G.722编码)。
毅航互联SBC在必要时,可以插入中继模块或者STM-1光接口板,完成与传统PSTN网络的对接。
毅航互联SBC支持HA高可用配置,主备切换时信令和语音通话保持不中断。
为了简化,测试部件分成四个部分:
vSBC-5000:包括运行vSBC-5000软件的载体服务器;
Eyebeam 1.5:包括运行eyebeam的电脑,模拟电话;
亿联SIP硬话机:模拟电话;
sipp:压力测试时,模拟高并发;
SBC-2000:标准产品,将单纯信令的sipp呼叫转换为带媒体的SIP呼叫。
整体的测试结构简化如下图:
功能测试时,呼叫直接在vSBC-5000接通和包转发,不涉及到SBC-2000。
sipp压力测试时,由发起呼叫的sipp呼叫到SBC-2000,由SBC-2000转呼到vSBC。vSBC接收到呼叫后,再呼出到SBC-2000,然后由SBC-2000呼到应答sipp。整体的流程如下图:
测试版本为:iGatewayPackageRE-1.0.5.release.i386.tar.gz
操作系统如下:
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
[root@localhost ~]# cat /etc/system-release
CentOS Linux release 7.5.1804 (Core)
由于使用虚拟机进行测试,分配的CPU和内存如下图:
注:常规测试配置为8核,后续会做基于4核的性能测试。
[root@localhost ~]# free
total used free shared buff/cache available
Mem: 8008980 3520676 3798084 393640 690220 3806660
Swap: 2097148 2048 2095100
CPU为:
注:服务器配置了两颗E5-2690 V2 CPU。
使用测试版本。
由于eyebeam在counterpath已经下线和不提供下载,测试版本是从其他一些网站上下载的测试版本,测试后已经不再使用。
具体见:https://www.counterpath.com/
采用亿联T21P。
SBC-2000配置8块MGW-VOIP板,总并发可以做到4096(alaw/ulaw)。
为了避免NAT穿透对包可能产生影响,本设备不配置NAT穿透,直接和vSBC-5000做媒体的对接。
本节主要列出与呼叫测试相关的配置,其他常规的配置见使用手册。
SIP栈采用缺省配置,IP地址为10.10.99.28,配置完成后,直接激活。
为测试用的SIP分机配置账号,如下图:
从图上已经可以看到两个分机都已经注册上了SBC。
SBC-2000中继组是双向的:呼入和应答在同一个中继组中,配置如下图:
为了保证两个中继组间的分机互打,需要配置路由,如下图:
从SBC-2000呼入然后再呼出到SBC-2000的路由,如下图:
SIP栈采用缺省配置,IP地址为10.10.210.15,配置完成后,直接激活。
sipp发起呼叫和接收呼叫的中继组配置如下图:
中继组配置如下图:
需要配置两条路由:sipp_c(发起呼叫)到vSBC和vSBC到sipp_a(应答呼叫)。如下图:
Eyebeam的配置较为简单,见相关的手册说明。
亿联话机的配置也较为简单,见相关的手册说明。
发起呼叫采用如下的脚本:
由于G.711的包长度比G.729大很多,因此,只用G.711做测试。脚本如下:
./sipp -i 10.10.99.60 -p 6060 -sf ./sipp_uac_basic.xml 10.10.210.15:5060 -d 25000 -r 40 -rp 1000 -aa -m 10000
sipp_uac_basic.xml:本脚本会使用G.711 alaw编解码做协商,但是不会发RTP包。
应答呼叫的脚本:
./sipp -sf sipp_uas_basic.xml -i 10.10.99.30
不处理接收RTP包。
两个SIP电话间通过不同编码的互打,通话正常。
在中继组配置中,将alaw作为第一优先级,此时发起alaw通话,配置如下图:
通话时,语音正常,通过抓包,可以确认此时为alaw呼叫。
亿联话机配置成TLS/SRTP模式,然后和eyebeam通话,由vSBC执行SRTP/RTP的互相转换。
使用vSBC的web配置新的TLS中继组,以及在中继组中配置新的用户号码:400002。如下图:
配置SRTP-RTP的转换路由,如下图:
配置一个新的400002账号,信令使用TLS传输,配置如下:
媒体配置强制加密,这样就会采用SRTP,如下图:
在web上可以查询到话机已经注册,如下图:
通过亿联话机呼叫eyebeam,由vSBC-5000执行SRTP-RTP间的相互转换,通话语音清晰。由于亿联话机和vSBC间通过TLS传输,信令不可见,因此在抓包中看不到。
可以通过SIP的日志查询出亿联话机的信令:
信令是TLS传输,媒体为SRTP加密。
呼叫给eyebeam时,已经将信令转换为UDP传输和RTP媒体模式了。
媒体包也可以看到相应的转换:
压力测试时,由sipp打满,然后通过SIP电话抽听语音是否正常。
sipp呼叫保持时间大概是25s,将呼叫频度改为40CAPS,保证稳定的呼叫是1000并发。在此条件下,用SIP电话抽听语音正常。
./sipp -i 10.10.99.60 -p 6060 -sf ./sipp_uac_basic.xml 10.10.210.15:5060 -d 25000 -r 40 -rp 1000 -aa -m 10000
从web查看到的呼叫统计如下图:
单个中继组的并发是400CAPS,和计算相符。(40CAPS*25s保持时间=1000并发,由于是收到呼叫在转发出去,总并发是2000)
带宽计算:
整体并发要2000通道算,共计160M多。下图的带宽和计算相符,并且入和出是相同的,表示正常:
从下图可以看到CPU和内存均正常。
Eyebeam客户端的抓包分析,没有丢包和延迟,语音正常,如下图:
由于vSBC-5000不做编解码,只是透传RTP包,G.729的包更小,负荷更加轻载。所以本次不做相应的测试。
将CPU减少到4核,进行相应的压力测试,用于评估性能,作为上线的参考。
如下图,CPU已经调整为4核:
压力测试情况如下:
从web查看到的呼叫统计如下图:
表明可以支持1000并发。
整体并发要2000通道算,共计160M多。下图的带宽和计算相符,并且入和出是相同的,表示正常:
从下图可以看到CPU和内存均正常。
Eyebeam客户端的抓包分析,没有丢包和延迟,语音正常,如下图:
由于毅航互联vSBC-5000采用内核包转发模式,在4核/8核的KVM/QEUM虚拟机中,可以很好的支持1000并发。