基于SIP会话的RTP话音识别及压缩设计
2018-08-01贺翔张问谦
贺翔,张问谦
(广州海格通信集团股份有限公司,广州 510663)
0 引言
卫星通信链路由于其传输距离远、频谱资源珍贵等特点,在网络中往往作为跨区域主干链路传输高价值数据[1]。VoIP话音作为一种关键业务通常被同时多路使用。
VoIP话音业务一般采用RTP协议承载话音数据,其包头字段之间存在很大的冗余度,传输开销较大,多路业务并发时效率极其低下。压缩后传输能够显著地节约系统带宽,提高业务并发数量,但RTP协议流媒体的识别有一定难度。业内常用的识别算法通常基于RTP协议的多种特征,根据上下文进行会话匹配,但存在一定的漏报率和误报率[2],而误报会造成数据损坏,产生较为恶劣的影响。
经分析,VoIP话音在会话建立和维持方面,通常采用H.323或SIP协议。由于H.323协议标准复杂而严格,卫星通信网络中多采用灵活易扩展的SIP协议。
本文阐述了当前识别RTP流存在的困难,并分析RTP协议和传输具有的特征,在这个基础上针对SIP会话场景,设计出一种快速RTP识别方法,并在保证稳健性的前提下,采用ROHC包头压缩技术压缩传输,极大地提高了卫星信道资源利用率。
1 RTP特征识别
RTP协议作为应用层协议,其传输层可用TCP或UDP协议。在卫星网络应用实际情况中,由于UDP协议简单,无需握手确认等特点,RTP协议通常采用UDP协议作为传输层协议,即采用IP/UDP/RTP分组。
RTP报文用于传输多媒体数据,由RTP报头和数据两部分组成,对RTP的识别主要是对RTP首部的识别。RTP首部及数据格式定义如下:
图1 RTP协议格式定义
在RTP首部中,前12字节是固定的,而且是必须的。下面主要介绍前12字节的含义。
1.V:指示RTP协议的版本号,2bit,目前为0b10;
2.P:填充标志,指示报文尾部是否填充额外信息;
3.X:扩展标记,指示是否有RTP头扩展;
4.CC:CSRC计数器;指示 CSRC的个数(0-15);
5.M:与载荷有关的标记信息;
6.PT:载荷类型;
7.Sequence number:RTP报文序列号,每次加1;
8.timestamp:时间戳,用于同步控制;
9.SSRC:同步信源标示符,用于标识同步信源(一次会话一个值);
10.CSRC:特约信源标识符,标识了包含在该RTP报文的所有特约信源;
11.内容:这里存放载荷数据。
识别RTP协议的过程即是根据RTP协议的特点把RTP数据识别出来,上述可见,RTP协议包可以总结为一下特征:
1.总长度不少于12字节;
2.首字节最高两个比特为0b10;
3.CC字段为0-15,且CC*4+12应大于总长度;
4.Sequence number每次加1
5.timestamp为递增关系;
6.SSRC每次会话中不变。
业内常用的识别算法通常基于上述信息指定,其中Sequence number、timestamp和SSRC的判定需要结合上下文考虑,检测会消耗较多资源,且仍存在漏报或误报的可能[3]。本方法不采用这三个特征,在沿用前3个特征的基础上,增加IP地址和UDP端口号作为精确的识别特征,以此可以进行精确判断。由于RTP采用的UDP端口号是动态的,故增加SIP会话识别的方法进行确定。
2 SIP特征识别
SIP协议是一种在IP网络中建立、修改和终止多媒体会话的应用层协议,一般采用5060号端口,识别后可用于判断一个VoIP会话的开始和结束,从而用来得到一次会话的相关信息,如源/目的IP地址及端口号等[4]。
SIP 请求消息分为:INVITE、ACK、OPTIONS、BYE、CANCEL、REGISTER和INFO等;SIP响应消息使用响应状态码标识。下面描述下识别会话相关的消息:
1.INVITE:用于邀请对方加入会话,标识着一个会话的开始;
2.BYE:释放呼叫,标识着一个会话的结束;
3.CANCEL:取消一个进行中的请求,通常标识着呼叫的取消;
4.SIP/2.0 200 OK:标识着一个请求消息已经被正确的理解和执行,在后续协议串中会包含执行的内容,如标识INVITE或BYE的成功执行。
值得注意的是:在INVITE及其应答消息中,具备本次通话约定的相关描述。例如RTP采用的音频传输端口号描述为:
m=audio 10010 RTP/AVP 111 110 0 8 101
表示音频传输采用10010端口。
需要收集的信息包括RTP端口号、源IP地址、目的IP地址。
该方法利用上述信息建立和释放RTP会话,该方法可以取得很高的识别精度。
3 压缩设计
一个典型的VoIP话音数据包采用IP/UDP/RTP分组结构,报头的总开销包括:IP(20字节)+UDP(8字节)+RTP头(12字节)=40字节,而有效负载通常只有几十字节。为避免带宽浪费,需要对报头进行压缩。
ROHC是IETF专门针对无线链路的特点而提出的稳健报头压缩技术,可通过选择profile的形式针对IP、UDP、RTP进行压缩。其功能实体分为两个部分:压缩端和解压缩端[5]。当压缩端收到一个IP分组时,首先进入初始化状态,采集报头信息存入上下文中,同时将该信息传送给解压端,解压缩端接收到后,解压缩出报头信息并存入上下文[6-7]。双方建立好上下文后开始进行压缩传输。
ROHC协议在协议栈中的位置处于链路层和IP层之间,对每个分组流都分配一个唯一的上下文标识(CID)用于唯一识别,去掉了冗长的IP报头和UDP报头,换成了简短的多的ROHC压缩报头。
ROHC可工作在无反馈信道(U模式)、弱反馈信道(O模式)、强反馈信道(R模式)三种模式,基于卫星无线链路反馈时间长、信道资源紧张的特点,适合采用U模式。压缩方采用乐观逼近和周期性则进行状态转移。该模式下的状态转移图如下:
图2 U模式状态转移图
U模式下初始进入IR(初始化)状态,在发送N包后自动切换为FO(复位有序)状态,进而在发送一段N包后,切换到SO(完全有序)状态,在用户定时周期到后切换回IR状态。在U模式下不采用反馈信道,包只沿着一个方向传输,即从压缩端到解压缩端,虽然压缩率相对O模式和R模式较低,但应用在不可靠的卫星无线链路环境下,可有效避免可能的反复确认,鉴于话音通信的特点,在合理调整回退周期时间后,基本不影响话音通信质量。
4 整体流程
使用上述方案合理配合以形成完整的RTP话音识别、压缩、传输流程。具体流程如下:
1.接收到UDP包;
2.判断是否是SIP端口(5060)发来消息,若不是进入第9步;
3.判断是否是INVITE消息或其应答,若不是进入第6步;
4.判断会话记录总条数是否满,若满则替代最旧那条记录,否则增加一条会话记录;
5.传送该包,流程结束;
6.若SIP端口接收到的是CANCEL、BYE消息或其应答,解析得到会话数据;
7.在会话列表中删除该条记录;
8.跳转到第5步;
9.接收到非SIP端口UDP数据,判断是否符合上述RTP特征,若不符合跳转到第5步;
10.检查会话列表中是否有符合的会话,若未找到,跳转到第5步;
11.送IP包给ROHC压缩器进行压缩;
12.跳转到第5步。
在接收方,接收到正常IP数据包不做处理,直接转发;接收到ROHC数据包后,进行解压缩处理,然后转发。如出现无线链路不可靠造成的上下文丢失,则该包丢弃,直到下一个周期来到,重建上下文。
图3 RTP识别、压缩、传输流程
5 结语
基于SIP会话的RTP话音识别及压缩方法在宽带卫星通信网络中得到了很好的应用,有效解决了空中传输VoIP话音资源占用过多问题,显著提高了有限带宽条件下话音接入数量。随着我国海洋运输、海域管理的蓬勃发展,卫星VoIP会话业务需求不断增长,卫星终端的成本逐渐降低,该方式应用将会越来越广泛。同时也可以推广到其他类型无线网络中使用。