基于SIP会话的RTP话音识别及压缩设计

2018-08-01 08:06贺翔张问谦
现代计算机 2018年19期
关键词:话音报头会话

贺翔,张问谦

(广州海格通信集团股份有限公司,广州 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会话业务需求不断增长,卫星终端的成本逐渐降低,该方式应用将会越来越广泛。同时也可以推广到其他类型无线网络中使用。

猜你喜欢
话音报头会话
QQ和微信会话话轮及话轮转换特点浅析
报业文化中的一道独特风景
CDMA移动通信系统网上话音问题浅析
用绘画导入英语教学
地空话音组网系统的应用及前景分析研究
淡妆浓抹总相宜
——对中国晚报报头变化的研究与欣赏
运营商存费送业务分析及策略建议
简论报纸的报头设计
年龄大小的种种说法
毛主席为《人民日报》写报头