王曙光,邹 慧,杨 维
(北京交通大学 电子信息工程学院,北京 100044)
VoIP(Voice over Internet Protocol)又称作IP电话,它是一种通过分组网Internet提供双方会话,另外还包括一些相应的增值业务的技术[1]。
如今Vo IP越来越引人注意,既因为它的廉价话费,也因为它可以提供多种增值服务。但是原有的Vo IP协议,即SIP协议和H.323协议,在某些特定环境下并不能很好地工作,这样给Vo IP的发展带来了很大的障碍,针对这种情况,Aster isk开发团队创造了Aster isk特有的协议—IAX协议。
IAX协议的设计借鉴了现有Vo IP协议的经验,并在它们的基础上进行了改进,其优点主要包括:最小化信令和媒体传输所需带宽;为网络地址转换提供内部支持;网关穿越和防火墙管理;对传输拨号方案信息的支持;对网页特征有效执行的支持[2]。
IAX是一种应用层通话控制及媒体协议,可以用来在IP网络上创建、修改和终止多媒体会话。IAX的主要设计目标是为Vo IP呼叫提供控制服务,同时也可以用来传输语音或者其他形式的多媒体数据。此外,IAX协议使用UDP协议代替RTP协议发送和接收信令和多媒体数据,这为IAX数据顺利穿越防火墙带来了极大便利。
IAX系统的工作原理简单概括如下:(1)主叫方发送呼叫信令到本地IAX服务器。(2)本地IAX服务器将呼叫消息进行IAX编码, IAX服务器将呼叫信息封装到IAX协议帧中并把多个呼叫信息复用到同一个信道,在分组网Internet上传输此呼叫信息。(3)当呼叫信息到达被叫端的IAX服务器时,被叫端服务器根据IAX协议帧中携带的信令把呼叫信息发送到被呼叫电话上[3]。
所有终端要进行呼叫,首先要向IAX服务器进行注册,注册使终端能够享受服务器提供的服务和与服务器断开连接,同时注册也可以为终端提供鉴权服务。图1为IAX终端注册状态图。
最初终端处于未注册状态,当终端向IAX服务器发送REGREQ请求注册后,终端就会进入到等待接受状态;IAX服务器收到REGREQ消息后,如果给注册终端发送REGREJ消息拒绝注册,则终端重新回到未注册状态,如果IAX服务器给注册终端发送REGAUTH消息进行认证,那么终端进入认证状态;终端进入认证状态后,如果终端发送给IAX服务器的REGREQ消息中包含不正确信息,那么认证失败,I A X服务器向终端发送REGREJ消息拒绝注册,终端又重新回到未注册状态,如果终端发送给IAX服务器的REGREQ消息中包含的消息都正确,那么IAX服务器向终端发送REGACK消息进行确认,完成认证,终端进入已注册状态,随后终端就可以通过IAX服务器向其他终端发起呼叫[4]。
图1 IAX终端注册状态图
IAX终端呼叫的建立和终止要通过支持IAX协议的代理服务器来完成,流程可以分为如下几个步骤:
(1)IAX服务器主叫用户向IAX服务器发送呼叫请求消息,消息中包含了呼叫所需的消息元素,如呼叫发起用户的用户名和被叫用户名等。
(2)IAX服务器接收到主叫用户的消息后,向主叫用户发送认证请求消息AUTHREQ,当主叫用户接收到此消息后要向I AX服务器发送AUTHREP消息以应答IAX服务器的认证请求消息。
(3)I A X服务器接收到主叫用户发送的AUTHREP消息后,IAX服务器就会向主叫用户发送ACCEPT消息代表此次认证通过,同时向被叫用户发送NEW消息;当被叫用户接收到呼叫请求后向IAX服务器发出Ringing振铃,IAX服务器将此消息转发给主叫用户;当被叫用户处理完消息并可以接通此次呼叫时,向IAX服务器发出ANSWER应答消息;AIX服务器将ANSWER应答消息转发到主叫用户;主叫用户返回ACK消息作为应答,此次通话建立。
(4)通话结束,主叫用户首先发出挂机请求消息HUNGUP。
(5)当被叫用户接收到HUNGUP消息后返回ACK消息作为应答,此次通话结束[4]。
首先搭建一个小型网络,网络拓扑图如图2。
图2 实验拓扑图
图2中,使用IP02作为语音服务器(IP-PBX),IP02是一个2端口的开源硬件IP-PBX设计,支持IAX协议;两台计算机上均安装有支持IAX协议的软电话Zoiper,将其作为IAX终端;在其中一台计算机上安装抓包软件Wi reshark,通过对抓取的数据包的分析,分析和研究IAX协议的注册和呼叫的信令流程。
通过IP02的图形化管理界面配置两个分机,号码分别为6001和6002。图3为分机6001在IP02上的配置界面。图3中显示,设置分机号码和密码都为6001,这样呼叫时被呼叫方显示的号码就为6001。软电话Zoiper上对分机6001的设置也要与图3上的配置一致,这样才能保证注册成功。图4为Zoiper上分机6001的设置。
图3 IP02上分机6001的配置
图4 Zoiper上分机6001的设置
对IAX终端注册的测试分为3种情况:注册成功、因密码错误而注册失败和因分机号码未在IP02上配置而注册失败。
2.2.1 终端注册成功
使用前面在IP02上注册的IAX分机6001,IP02的IP地址为192.168.1.141,终端6001所在主机的IP地址为192.168.1.123。在分机6001的设置界面上输入正确的分机号码与密码,然后进行注册,注册消息的信令流抓包如图5。
图5 IAX终端成功注册时信令流抓包
从图5中抓到的包分析可以看出,成功注册分以下5个步骤:(1)分机6001向IP02发送REGREQ消息进行注册请求。(2)IP02接收到REGREQ消息后要求6 0 0 1进行认证,因此向6 0 0 1发送REGAUTH消息请求认证。(3)6001接收到IP02的REGAUTH消息后向IP02发送含有授权信息的REGREQ消息进行注册认证。(4)因为该REGREQ消息携带的授权消息都正确,因此IP02向6001发送REGACK消息进行注册确认。(5)6001给IP02返回确认消息ACK,此时注册过程完成。
2.2.2 终端因输入密码错误而注册失败
图6为6001由于输入密码错误而不能成功注册时的信令流的抓包。
图6 输入密码错误时注册的信令流抓包
分析抓包可以看出,这种情况下注册的过程与注册成功情况下的注册过程基本相同,但是由于输入的密码不正确,导致认证失败,从而IP02向6001返回的消息由注册成功情况下的注册确认消息R E G A C K变成了此时的注册拒绝消息REGREJ。从抓包分析还可以看出,虽然IP02拒绝了6001的注册请求,但是6001仍会不断的向IP02发送REGREQ消息进行注册。
2.2.3 终端因分机未在IP02上进行配置而注册失败此次测试前首先把6001在IP02上配置删除,然后6001再进行注册。图7为分机号码未在IP02上配置而不能成功注册时信令流程的抓包。
图7 分机号码未在IP02上配置时注册的信令流抓包
抓包分析可以看出,6001首先向IP02发出REGREQ进行注册;IP02接收到REGREQ消息后,给6001返回一个ACK消息,对6001的注册请求进行确认;随后IP02就验证6001发送的REGREQ消息中的授权信息是否正确,由于分机号码未配置,所以IP02拒绝了6001的注册请求,向6001发出REGREJ消息拒绝此次注册;当6001接收到IP02的REGREJ消息后向IP02返回ACK消息表示确认,至此此次注册过程结束,以分机号码未在IP02上配置而失败。与终端输入密码错误相同,虽然此次注册失败,但是终端会不断地向IP02发送REGREQ消息进行注册。
此次测试同样采用前面建立的局域网Vo IP网络,两个IAX终端的分机号分别为6001和6002,所在主机IP地址分别为192.168.1.103和192.168.1.128。它们之间通过代理服务器建立呼叫和终止呼叫过程的信令流抓包如图8。
分析图8的抓包可以看出IAX协议终端通过IAX服务器呼叫建立呼叫以及终止的全过程,与前面介绍的流程基本相同,具体过程如下:
(1)主叫用户6001向IP02发送NEW消息进行呼叫请求。
(2)IP02接收到6001的NEW消息后要求对6001进行认证,向其发出AUTHREQ消息进行认证,当600 1接收到AUTHREQ后向IP02发送AUTHREP消息作为对AUTHREQ的应答。
图8 呼叫建立和终止过程的信令流抓包
(3)IP02接收6001发送的AUTHREP消息后,IP02向6001发送ACCEPT消息表示通过认证,同时向被呼叫方6002发送NEW消息进行呼叫请求。当6002接收到NEW消息后向IP02发出Ringing振铃消息, IP02将振铃消息转发给6001。6002处理完NEW消息并可以接通此次呼叫时则向IP02发出ANSWER消息对此次呼叫进行应答,IP02再将此消息转发给6002,通话过程建立。
(4)通话结束后6001发出HUNGUP消息请求挂机。
(5)6002接收到HUNGUP消息后发出ACK消息进行确认,此次通话结束。
作为新兴的Vo IP协议,IAX还不成熟,仍处在探索期,需不断地改进与完善。本文主要研究IAX协议的注册及呼叫过程并对其进行测试和验证,这对今后大规模部署基于IAX协议的Vo IP系统具有积极作用。
[1] 张登银,孙精科.VoIP技术分析与系统设计[M].北京:人民邮电出版社,2002.
[2]卜 巍.VoIP的原理、标准和技术浅析[J].计算机与网络,2004(12):54-55.
[3] Taemoor Abbasi, Shekhar Prasad, Nabil Seddigh, Ioannis Lambadaris.A comparative study of the SIP and IAX VoIP protocols. Electrical and Computer Engineering[J].2005(5):179-183.
[4] 邹 慧. 基于Asterisk的VoIP系统实验研究[D]. 北京:北京交通大学,2009.