王曙光,鄒 慧,楊 維
(北京交通大學(xué) 電子信息工程學(xué)院,北京 100044)
VoIP(Voice over Internet Protocol)又稱作IP電話,它是一種通過分組網(wǎng)Internet提供雙方會話,另外還包括一些相應(yīng)的增值業(yè)務(wù)的技術(shù)[1]。
如今Vo IP越來越引人注意,既因為它的廉價話費,也因為它可以提供多種增值服務(wù)。但是原有的Vo IP協(xié)議,即SIP協(xié)議和H.323協(xié)議,在某些特定環(huán)境下并不能很好地工作,這樣給Vo IP的發(fā)展帶來了很大的障礙,針對這種情況,Aster isk開發(fā)團隊創(chuàng)造了Aster isk特有的協(xié)議—IAX協(xié)議。
IAX協(xié)議的設(shè)計借鑒了現(xiàn)有Vo IP協(xié)議的經(jīng)驗,并在它們的基礎(chǔ)上進行了改進,其優(yōu)點主要包括:最小化信令和媒體傳輸所需帶寬;為網(wǎng)絡(luò)地址轉(zhuǎn)換提供內(nèi)部支持;網(wǎng)關(guān)穿越和防火墻管理;對傳輸撥號方案信息的支持;對網(wǎng)頁特征有效執(zhí)行的支持[2]。
IAX是一種應(yīng)用層通話控制及媒體協(xié)議,可以用來在IP網(wǎng)絡(luò)上創(chuàng)建、修改和終止多媒體會話。IAX的主要設(shè)計目標是為Vo IP呼叫提供控制服務(wù),同時也可以用來傳輸語音或者其他形式的多媒體數(shù)據(jù)。此外,IAX協(xié)議使用UDP協(xié)議代替RTP協(xié)議發(fā)送和接收信令和多媒體數(shù)據(jù),這為IAX數(shù)據(jù)順利穿越防火墻帶來了極大便利。
IAX系統(tǒng)的工作原理簡單概括如下:(1)主叫方發(fā)送呼叫信令到本地IAX服務(wù)器。(2)本地IAX服務(wù)器將呼叫消息進行IAX編碼, IAX服務(wù)器將呼叫信息封裝到IAX協(xié)議幀中并把多個呼叫信息復(fù)用到同一個信道,在分組網(wǎng)Internet上傳輸此呼叫信息。(3)當呼叫信息到達被叫端的IAX服務(wù)器時,被叫端服務(wù)器根據(jù)IAX協(xié)議幀中攜帶的信令把呼叫信息發(fā)送到被呼叫電話上[3]。
所有終端要進行呼叫,首先要向IAX服務(wù)器進行注冊,注冊使終端能夠享受服務(wù)器提供的服務(wù)和與服務(wù)器斷開連接,同時注冊也可以為終端提供鑒權(quán)服務(wù)。圖1為IAX終端注冊狀態(tài)圖。
最初終端處于未注冊狀態(tài),當終端向IAX服務(wù)器發(fā)送REGREQ請求注冊后,終端就會進入到等待接受狀態(tài);IAX服務(wù)器收到REGREQ消息后,如果給注冊終端發(fā)送REGREJ消息拒絕注冊,則終端重新回到未注冊狀態(tài),如果IAX服務(wù)器給注冊終端發(fā)送REGAUTH消息進行認證,那么終端進入認證狀態(tài);終端進入認證狀態(tài)后,如果終端發(fā)送給IAX服務(wù)器的REGREQ消息中包含不正確信息,那么認證失敗,I A X服務(wù)器向終端發(fā)送REGREJ消息拒絕注冊,終端又重新回到未注冊狀態(tài),如果終端發(fā)送給IAX服務(wù)器的REGREQ消息中包含的消息都正確,那么IAX服務(wù)器向終端發(fā)送REGACK消息進行確認,完成認證,終端進入已注冊狀態(tài),隨后終端就可以通過IAX服務(wù)器向其他終端發(fā)起呼叫[4]。
圖1 IAX終端注冊狀態(tài)圖
IAX終端呼叫的建立和終止要通過支持IAX協(xié)議的代理服務(wù)器來完成,流程可以分為如下幾個步驟:
(1)IAX服務(wù)器主叫用戶向IAX服務(wù)器發(fā)送呼叫請求消息,消息中包含了呼叫所需的消息元素,如呼叫發(fā)起用戶的用戶名和被叫用戶名等。
(2)IAX服務(wù)器接收到主叫用戶的消息后,向主叫用戶發(fā)送認證請求消息AUTHREQ,當主叫用戶接收到此消息后要向I AX服務(wù)器發(fā)送AUTHREP消息以應(yīng)答IAX服務(wù)器的認證請求消息。
(3)I A X服務(wù)器接收到主叫用戶發(fā)送的AUTHREP消息后,IAX服務(wù)器就會向主叫用戶發(fā)送ACCEPT消息代表此次認證通過,同時向被叫用戶發(fā)送NEW消息;當被叫用戶接收到呼叫請求后向IAX服務(wù)器發(fā)出Ringing振鈴,IAX服務(wù)器將此消息轉(zhuǎn)發(fā)給主叫用戶;當被叫用戶處理完消息并可以接通此次呼叫時,向IAX服務(wù)器發(fā)出ANSWER應(yīng)答消息;AIX服務(wù)器將ANSWER應(yīng)答消息轉(zhuǎn)發(fā)到主叫用戶;主叫用戶返回ACK消息作為應(yīng)答,此次通話建立。
(4)通話結(jié)束,主叫用戶首先發(fā)出掛機請求消息HUNGUP。
(5)當被叫用戶接收到HUNGUP消息后返回ACK消息作為應(yīng)答,此次通話結(jié)束[4]。
首先搭建一個小型網(wǎng)絡(luò),網(wǎng)絡(luò)拓撲圖如圖2。
圖2 實驗拓撲圖
圖2中,使用IP02作為語音服務(wù)器(IP-PBX),IP02是一個2端口的開源硬件IP-PBX設(shè)計,支持IAX協(xié)議;兩臺計算機上均安裝有支持IAX協(xié)議的軟電話Zoiper,將其作為IAX終端;在其中一臺計算機上安裝抓包軟件Wi reshark,通過對抓取的數(shù)據(jù)包的分析,分析和研究IAX協(xié)議的注冊和呼叫的信令流程。
通過IP02的圖形化管理界面配置兩個分機,號碼分別為6001和6002。圖3為分機6001在IP02上的配置界面。圖3中顯示,設(shè)置分機號碼和密碼都為6001,這樣呼叫時被呼叫方顯示的號碼就為6001。軟電話Zoiper上對分機6001的設(shè)置也要與圖3上的配置一致,這樣才能保證注冊成功。圖4為Zoiper上分機6001的設(shè)置。
圖3 IP02上分機6001的配置
圖4 Zoiper上分機6001的設(shè)置
對IAX終端注冊的測試分為3種情況:注冊成功、因密碼錯誤而注冊失敗和因分機號碼未在IP02上配置而注冊失敗。
2.2.1 終端注冊成功
使用前面在IP02上注冊的IAX分機6001,IP02的IP地址為192.168.1.141,終端6001所在主機的IP地址為192.168.1.123。在分機6001的設(shè)置界面上輸入正確的分機號碼與密碼,然后進行注冊,注冊消息的信令流抓包如圖5。
圖5 IAX終端成功注冊時信令流抓包
從圖5中抓到的包分析可以看出,成功注冊分以下5個步驟:(1)分機6001向IP02發(fā)送REGREQ消息進行注冊請求。(2)IP02接收到REGREQ消息后要求6 0 0 1進行認證,因此向6 0 0 1發(fā)送REGAUTH消息請求認證。(3)6001接收到IP02的REGAUTH消息后向IP02發(fā)送含有授權(quán)信息的REGREQ消息進行注冊認證。(4)因為該REGREQ消息攜帶的授權(quán)消息都正確,因此IP02向6001發(fā)送REGACK消息進行注冊確認。(5)6001給IP02返回確認消息ACK,此時注冊過程完成。
2.2.2 終端因輸入密碼錯誤而注冊失敗
圖6為6001由于輸入密碼錯誤而不能成功注冊時的信令流的抓包。
圖6 輸入密碼錯誤時注冊的信令流抓包
分析抓包可以看出,這種情況下注冊的過程與注冊成功情況下的注冊過程基本相同,但是由于輸入的密碼不正確,導(dǎo)致認證失敗,從而IP02向6001返回的消息由注冊成功情況下的注冊確認消息R E G A C K變成了此時的注冊拒絕消息REGREJ。從抓包分析還可以看出,雖然IP02拒絕了6001的注冊請求,但是6001仍會不斷的向IP02發(fā)送REGREQ消息進行注冊。
2.2.3 終端因分機未在IP02上進行配置而注冊失敗此次測試前首先把6001在IP02上配置刪除,然后6001再進行注冊。圖7為分機號碼未在IP02上配置而不能成功注冊時信令流程的抓包。
圖7 分機號碼未在IP02上配置時注冊的信令流抓包
抓包分析可以看出,6001首先向IP02發(fā)出REGREQ進行注冊;IP02接收到REGREQ消息后,給6001返回一個ACK消息,對6001的注冊請求進行確認;隨后IP02就驗證6001發(fā)送的REGREQ消息中的授權(quán)信息是否正確,由于分機號碼未配置,所以IP02拒絕了6001的注冊請求,向6001發(fā)出REGREJ消息拒絕此次注冊;當6001接收到IP02的REGREJ消息后向IP02返回ACK消息表示確認,至此此次注冊過程結(jié)束,以分機號碼未在IP02上配置而失敗。與終端輸入密碼錯誤相同,雖然此次注冊失敗,但是終端會不斷地向IP02發(fā)送REGREQ消息進行注冊。
此次測試同樣采用前面建立的局域網(wǎng)Vo IP網(wǎng)絡(luò),兩個IAX終端的分機號分別為6001和6002,所在主機IP地址分別為192.168.1.103和192.168.1.128。它們之間通過代理服務(wù)器建立呼叫和終止呼叫過程的信令流抓包如圖8。
分析圖8的抓包可以看出IAX協(xié)議終端通過IAX服務(wù)器呼叫建立呼叫以及終止的全過程,與前面介紹的流程基本相同,具體過程如下:
(1)主叫用戶6001向IP02發(fā)送NEW消息進行呼叫請求。
(2)IP02接收到6001的NEW消息后要求對6001進行認證,向其發(fā)出AUTHREQ消息進行認證,當600 1接收到AUTHREQ后向IP02發(fā)送AUTHREP消息作為對AUTHREQ的應(yīng)答。
圖8 呼叫建立和終止過程的信令流抓包
(3)IP02接收6001發(fā)送的AUTHREP消息后,IP02向6001發(fā)送ACCEPT消息表示通過認證,同時向被呼叫方6002發(fā)送NEW消息進行呼叫請求。當6002接收到NEW消息后向IP02發(fā)出Ringing振鈴消息, IP02將振鈴消息轉(zhuǎn)發(fā)給6001。6002處理完NEW消息并可以接通此次呼叫時則向IP02發(fā)出ANSWER消息對此次呼叫進行應(yīng)答,IP02再將此消息轉(zhuǎn)發(fā)給6002,通話過程建立。
(4)通話結(jié)束后6001發(fā)出HUNGUP消息請求掛機。
(5)6002接收到HUNGUP消息后發(fā)出ACK消息進行確認,此次通話結(jié)束。
作為新興的Vo IP協(xié)議,IAX還不成熟,仍處在探索期,需不斷地改進與完善。本文主要研究IAX協(xié)議的注冊及呼叫過程并對其進行測試和驗證,這對今后大規(guī)模部署基于IAX協(xié)議的Vo IP系統(tǒng)具有積極作用。
[1] 張登銀,孫精科.VoIP技術(shù)分析與系統(tǒng)設(shè)計[M].北京:人民郵電出版社,2002.
[2]卜 巍.VoIP的原理、標準和技術(shù)淺析[J].計算機與網(wǎng)絡(luò),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系統(tǒng)實驗研究[D]. 北京:北京交通大學(xué),2009.