4.1 会话管理协议
SIP协议(Session Initiation Protocol,会话发起协议),是用于多媒体通信的应用层控制(信令)协议,相比H.323协议而言,具有扩展容易,比较简单等特点[1] [5]。考虑到本系统嵌入式、结构简单的特性,我们部分地参照了SIP 协议。
呼叫前节点A处于空闲(Idle)状态。当节点A要呼叫节点B时,A向B发出Invite请求信令并进入Inviting状态。当B也处于Idle状态时,则返回Ack_Ringing应答信令表示正在响铃同时B进入Being_Invited状态。当B提起话筒后,B返回Ack_Invite_OK信令,A收到后返回Ack_Invite_Resure再次应答确认,表示会话建立成功,A和B进入Talking状态,开始传输语音数据。这样,经历了三次握手,以保证会话的可靠建立。
当A或B挂断时,挂断方发出Bye请求,另一方返回Ack_Bye_OK应答,A和B进入Idle状态。
注:当A向B发出Invite请求时B不处于Idle状态,B则返回ACK_Busy,A收到后提示对方正忙并返回到Idle状态。在A拨号后没接通电话就挂机,A发出Cancel信令,B返回Ack_Cancel_OK, A和B返回到Idle状态。
为保证会话建立的可靠性,设计中使用了定时器机制,充分考虑数据包丢失的情况。例如当A发出一个需要应答的请求信令一段时间后还没收到应答,则说明A发出的请求数据包或B返回的应答数据包丢失,A会再次发送请求信令,如果发送三次仍未收到应答,A端报告网络故障并自动进入某一状态。这样保证了状态机工作不会紊乱。
4.2 语音传输协议
会话建立后,开始进行语音数据的传输。实时传输协议(Realtime Transport Protocol,RT P)可提供实时数据的端到端传输,如音频、视频和非实时应用数据[1] [6]。
RTP协议建立在UDP协议之上。根据顺序编号和时间戳,舍弃因网络阻塞等原因导致先被发出却后到达的数据包。
AMBE2000编码器每隔20ms输出一帧长度为24个字长(48bytes)的数据,其中前12个字长的数据包含当前编码速率在内的状态信息,后12个字长包含了语音数据。IP2K将语音数据打包上传。同时解开收到的语音包,将语音数据连同控制信息送给AMBE2000进行解码处理。
4.3 根据ID查询对应IP
网络上每个节点都有不同的IP地址,同时为了便于操作管理,每个节点都有自己的ID号。例如要呼叫12楼02室拨1202这个ID号即可。这样一个ID对应着一个IP。这个ID-IP映射表存储在门口机的Flash里。每个用户机存储着门口机和管理机的IP地址。当门口机呼叫用户机时,门口机根据ID查询到对应的IP后向其发出呼叫请求。当管理机呼叫用户机时,被呼叫方的IP查询有两种方式,一种是向门口机查询对应ID的IP;另一种是通过广播的形式查询,网络上各用户机节点收到查询IP的信令后与自己的ID进行比较,若匹配返回给查询方。通过广播的方式,即使门口机发生故障,管理机仍可以正常呼叫用户机,提高了系统的健壮性。用户机呼叫管理机只需读出存储在本地的管理机IP即可。
5 结论
本文成功研制出了基于IP的智能小区对讲系统。该方案已完成全部软、硬件的实现以及网络的组建,并已通过初步测试,运行稳定可靠。