常海濱
(陜西學前師范學院陜西西安710100)
嵌入式系統(tǒng)中SIP協(xié)議在V0IP的應用及實現(xiàn)
常海濱
(陜西學前師范學院陜西西安710100)
VOIP(Voice over IP)技術可以將傳統(tǒng)電信語音信號在IP網(wǎng)上傳輸,通過互聯(lián)網(wǎng)連接不同地理位置的網(wǎng)關,實現(xiàn)傳統(tǒng)語音通話網(wǎng)絡與IP網(wǎng)絡的資源共享。為了實現(xiàn)傳統(tǒng)語音通信網(wǎng)絡與IP網(wǎng)的互聯(lián),各網(wǎng)關之間需要使用SIP協(xié)議完成傳統(tǒng)語音通信中需要的信令傳遞。針對VOIP技術中對SIP協(xié)議應用的需求,文中研究了SIP協(xié)議的框架和編程實現(xiàn)方案。通過搭建基于SIP協(xié)議的VOIP通信系統(tǒng),并重點實現(xiàn)使用SIP協(xié)議進行用戶代理的建立和斷開功能,從而介紹了在VOIP通信系統(tǒng)中SIP協(xié)議的基本原理和實現(xiàn)方法。文中介紹了一個基于ARM嵌入式系統(tǒng)的SIP語音網(wǎng)關信令處理部分的設計與實現(xiàn)。本系統(tǒng)運行在1inux2.6版本的嵌入式操作系統(tǒng)中。在S3C2440核心處理器的開發(fā)板中,編譯并移植整個SIP協(xié)議庫。編寫SIP協(xié)議應用軟件,完成傳統(tǒng)語音通信網(wǎng)絡在IP網(wǎng)絡傳輸中所需要的控制過程。經(jīng)過測試,本文所設計的SIP用戶代理(SIP UA)實現(xiàn)了建立會話、維護會話和終止會話等信令控制功能。
VOIP;SIP;ARM;嵌入式1inux;語音網(wǎng)關
隨著互聯(lián)網(wǎng)的普及,一種可以通過IP網(wǎng)絡傳輸語音、視頻等業(yè)務的VoIP技術迅速發(fā)展,而且廣泛應用于傳統(tǒng)電信網(wǎng)絡與IP網(wǎng)絡結合的各種場合。VOIP是建立在IP技術基礎上的分組化、數(shù)字化傳輸技術,其基本原理是通過語音壓縮算法對話音進行壓縮編碼處理。然后把這些語音數(shù)據(jù)按IP等相關協(xié)議進行打包,經(jīng)IP網(wǎng)絡把數(shù)據(jù)包傳輸?shù)侥康牡兀侔堰@些語音數(shù)據(jù)包串起來,經(jīng)過解碼解壓處理恢復成原來的語音信號,從而達到由IP網(wǎng)絡傳送話音的目的。
各個網(wǎng)關之間互聯(lián)形成一個voip通信系統(tǒng),這不僅要求有著高可靠性的語音傳輸能力,還需要有自己的控制信令,實現(xiàn)各個終端的鏈接。本文在一個基于ARM9的嵌入式系統(tǒng)中,通過移植嵌入式1inux操作系統(tǒng)完成對網(wǎng)絡功能的支持,并通過使用SIP協(xié)議來完成對網(wǎng)絡的控制。SIP(Session Initiation Protoco1,會話初始協(xié)議)是IETF提出來的用來建立、維護和終止多媒體會話的應用層協(xié)議,主要完成用戶定位,用戶支持媒體類型協(xié)商,呼叫建立和呼叫維護等功能。它繼承了互聯(lián)網(wǎng)協(xié)議的設計理念,與H.323協(xié)議相比,具有簡單靈活,便于擴展的特點??刂菩盘柕耐絺鬏敿夹g主要是信令的解析,一般用SIP會話初始協(xié)議實現(xiàn)而且SIP協(xié)議還可以封裝SDP會話描述協(xié)議實現(xiàn)媒體流的協(xié)商,尤其適用于多媒體信號的傳輸[1_2]。
SIP會話的建立方式主要有無網(wǎng)絡服務器模式和代理服務器模式兩類。下面主要介紹無網(wǎng)絡服務器模式的呼叫流程[3]。
1)無網(wǎng)絡服務器模式
在無網(wǎng)絡服務器模式下,UAC向UAS直接呼叫,雙方都知道最放的IP地址和端口,并存于本機內。假設A想給B打電話,呼叫流程如圖1所示,具體描述如下:
A向B發(fā)送INVITE呼叫請求,A必須知道B的具體URL,例如:B@192.168.0.114:5060
B的UAS在收到來自A的INVITE請求后振鈴,通知B有呼叫請求,并發(fā)送180 Ringing響應信息給A。
B接聽電話的同時向A發(fā)送200 OK響應,表明B已經(jīng)接聽呼叫,并準備好建立語音通話。
A收到B的200 OK響應后,發(fā)送ACK確認,表明已經(jīng)準備好語音通話。至此,呼叫雙方的通道建立,A和B開始通話。
B想終止會話,他的UAS向A發(fā)送BYE請求。
A收到B的BYE請求后,回復200 OK響應向B確認,通話結束。
圖1 無網(wǎng)絡服務器模式呼叫流程
2)代理服務器模式
代理服務器模式是基于無服務器模式基礎上的,讓主機與從機都存儲服務器的IP和端口,組成兩對無服務器模式機制?,F(xiàn)在假設A和B分別在兩個不同的局域網(wǎng)中,并且都已向所在域的位置服務器注冊。A的URL為A@at1anta.com,該域的SIP代理服務器為proxy.at1anta.com。B的URL為B@newyork. com,該域的SIP代理服務器為proxy.newyork.com。A呼叫B的呼叫流程如圖2所示。
嵌入式平臺的資源一般比較有限,不是協(xié)議棧中的每個功能都支持。為了在嵌入式平臺上使用各開源協(xié)議棧,首先要進行協(xié)議棧的移植。移植的主要工作是對協(xié)議棧進行交叉編譯和裁剪。各協(xié)議棧的版本為:1ibosip2_2.2.2、ortp_0.7.0、1ibeXosip2_1.9.1_pre16。下面是各個協(xié)議棧的交叉編譯過程[4_5]:
交叉編譯osip2:
./configure__host=arm_1inux__target=arm_1inux__ disab1e_static
make
make insta11
交叉編譯eXosip:
./configure__host=arm_1inux__target=arm_1inux__ disab1e_static
__disab1e_g1ib__with_osip=/usr/1oca1__diab1e_josua
make
make insta11
下面介紹各個參數(shù)的作用:
__with_osip=/usr/1oca1來指定osip2所在的位置。因為eXosip是osip2的擴展協(xié)議棧,所以eXosip的交叉編譯必須在osip2的基礎上進行,而且osip2的交叉編譯必須在eXosip的交叉編譯之前。
__diab1e_josua參數(shù)裁剪掉了eXosip中SIP用戶代理josua的部分。
這是因為josua的交叉編譯要求嚴格,版本不匹配等細節(jié)都會導致編譯失敗,且josua是一個完整的SIP用戶代理例子占用空間大而且對開發(fā)而言不是必須的。
交叉編譯完成后,在默認目錄/usr/1oca1下面有各協(xié)議棧的庫文件,頭文件等。最后將相應的庫文件掛載到開發(fā)平臺上即可使用。
圖2 代理服務器模式呼叫流程
SIP信令模塊分為SIP用戶代理客戶端和SIP用戶代理服務器端。SIP用戶代理客戶端的主要功能是:發(fā)起呼叫,媒體流協(xié)商,終止會話和主叫用戶接口。SIP用戶代理服務器端的主要功能是:接聽呼叫,終止會話,媒體流協(xié)商,呼叫錯誤處理。
SIP用戶代理客戶端的流程如圖3所示[6]。
SIP用戶代理客戶端的主要代碼如下:
eXosip_ca11_bui1d_initia1_invite(&invite,dest_ca11,source_ca11,NULL,″This is a ca11 invite″)j
osip_message_set_body(invite,tmp,str1en(tmp))j
osip_message_set_content_type(invite,″app1ication/spy″)j
eXosip_ca11_send_initia1_invite(invite)j
SIP用戶代理服務器端的流程如圖4所示。
SIP用戶代理服務器端的主要代碼如下:
je=eXosip_event_wait(0,200)j
圖3 SIP用戶代理客戶端流程
圖4 SIP用服務器端程序流程
SIP信令模塊測試,主要針對語音中繼網(wǎng)關的基本呼叫流程和媒體流協(xié)商進行測試,重點集中在驗證SIP信令過程的有效控制,即事務狀態(tài)機對SIP信令過程的解析和驗證。測試內容和數(shù)據(jù)如下:
SIP用戶網(wǎng)關的呼叫流程
由A向B發(fā)起呼叫(192.168.0.115呼叫192.168.0.114),呼叫建立過程通過Wireshark抓包監(jiān)測。通過Wireshark實際抓包得到的SIP信令過程如圖5所示。
圖5 SIP信令流程
由圖5可見,兩個嵌入式網(wǎng)絡終端可以根據(jù)對方的IP地址和端口完成回話的建立。SIP呼叫建立過程的信令過程完整,符合預期效果。后續(xù)可以展開對嵌入式語音網(wǎng)關的后續(xù)工作,如底層外部接口驅動和語音通信的改進等下一步工作。
[1]肖勇軍,李海標,楊文,等.基于SIP的嵌入式語音網(wǎng)關設計與實現(xiàn)[J].計算機系統(tǒng)應用,2009(8):120_123.
[2]洪斌,王利霞,孫紅嶺,等.基于ARM和DSP的VoIP網(wǎng)關設計與實現(xiàn)[J].通信技術,2008,41(8):173_178.
[3]王古.基于軟交換技術的RoIP網(wǎng)關設計與實現(xiàn)[J].現(xiàn)代電子技術,2010,320(9):72_74.
[4]李振軍,曾凌云.嵌入式SIP終端的研究與實現(xiàn)[J].制造業(yè)自動化,2011,33(4):141_144.
[5]王慶磊.基于SIP的嵌入式音頻傳輸系統(tǒng)的研究[D].江蘇:江南大學,2009.
[6]李洵.基于ARM9的嵌入式SIP終端研究與實現(xiàn)[D].河南:鄭州大學,2007.
[7]黃建林,劉國勇,張慶輝,等.一種嵌入式配電網(wǎng)防誤方案研究[J].供用電,2015(4):68_71.
[8]范明天,張毅威,張祖平,等.歐洲的智能電網(wǎng)技術標準化工作[J].供用電,2015(3):34_40.
Deslgn and lmPlementatlon of SIP on embedded system of V0IP
CHANG Hai_bing
(Shanxi Xueqian Normal University,Xi'an 710100,China)
VOIP(Voice over IP)techno1ogy can transmit te1ecom signa1s of voice over the Internet in IP,to rea1ize the Internet connection through re1ay gateway in different geographic 1ocations.By this way,traditiona1 te1ecom voice communication network and the IP network can share their resource.In order to achieve traditiona1 te1ecom voice communication network and the IP network,interconnecting gateways with each other via the protoco1 of SIP is essentia1.Most of the subjects studied in this paper focus on how the protoco1 of SIP works in VOIP and how this app1ied.By bui1ding a communication system of VOIP with SIP which wi11 bui1d up and de1ete a session,the princip1e and the imp1ementation is discribed.This artic1e describes a system based on ARM embedded voice gateway SIP protoco1 part of the design and imp1ementation of software.This system runs in an embedded OS of Linux.Based on embedded deve1opment with S3C2440 core,we comp1ete configuration of the SIP,compi1ing the 1ibrary of SIP and writing the app software of SIP.In this way to make the gateways can signa1ing to each other.After testing,the paper designed SIP user agent(SIP UA)to achieve the estab1ishment of a session,maintain and terminate a session the session contro1 functions such as signa1ing,in the session is estab1ished to carry out two_way audio streaming data communication.
VOIPj SIPj ARMj embedded Linuxj voice gateway
TN916
A
1674_6236(2016)10_0094_03
2015_06_02稿件編號:201506033
常海濱(1981—),男,陜西西安人,碩士,講師。研究方向:信號與信息處理、信息系統(tǒng)設計。