朱劍鋒
(瓊州學院 電子信息工程學院,海南 三亞572022)
SIP(Session Initiation Protocol)會話初始協議是IETF(國際互聯網標準制定組織)制訂的、用于多方多媒體通信,是一個基于文本的應用層控制協議,用于建立、修改和終止IP網上的多媒體通話。SIP協議借鑒了HTTP、SMTP等協議,支持代理、重定向及登記定位用戶等功能,支持用戶移動。SIP通過與RTP/RTCP、SDP、RTSP等協議配合,支持語音、視頻、數據、E-mail、IM即時通訊等多媒體通信。
根據開發的SIP軟交換系統,對注冊服務的用戶終端認證及注冊過程,分析注冊服務的 4個流程 (REGISTER、401 Unauthorixed、REGISTER 、200 OK),借助SIP軟電話(eyeBeam1.5)和網絡分析工具(Wireshark)對注冊服務進行跟蹤測試,開展注冊服務及注冊參數優化等的研究工作。
SIP軟交換系統的注冊服務是處理SIP用戶終端的注冊請求,根據終端認證服務確定該用戶的身份,將一個注冊地址綁定多個可以聯系的真實地址,完成用戶地址的注冊。注冊服務的目的是使用戶終端能夠使用軟交換系統提供的服務,或使之失效。在注冊請求信息中,用戶終端提供包含在Contact域中的一個或幾個地址給注冊服務。SIP軟交換系統利用用戶注冊信息進行IP電話的尋址。SIP用戶終端提交的注冊信息中標明自己目前的地址信息:注冊地址(分機號碼)及真實地址(URL)等。當一個SIP用戶終端呼叫另一個SIP用戶終端時,并不知道對方當前的真實地址,而只知道對方的注冊地址(分機號碼),注冊服務根據呼叫方請求信息的被叫方注冊地址,查找到被叫方的當前真實地址,然后,SIP軟交換系統將呼叫方請求信息轉發給被叫方。
SIP軟交換系統的注冊流程是一個更新注冊表的過程。注冊服務使用2個表:一個是分機表(t_extension),一個是注冊表(t_register_info)。分機表是用以確定SIP用戶終端的身份,即為注冊服務提供終端認證服務;注冊表表示SIP用戶終端注冊成功與否,及該注冊何時失效、即下一次注冊的時間間隔。
由管理員通過Web管理界面來填寫要開通的SIP用戶終端信息,也就是在分機表(如表1)中添加一條記錄:number是SIP用戶終端的分機號碼;password是SIP用戶終端分機號的密碼;destination_group_id是SIP用戶終端分機號的組ID。如果分機表表中已存在此分機號碼,則提示已存在,如果不存在此分機號碼,則向數據庫中的分機表中寫入一條新記錄。

表1 t_extension表
由管理員通過Web管理界面開通SIP用戶終端分機號碼后,SIP用戶終端向數據庫中的注冊表注冊此分機號,如果密碼正確,也在注冊表(如表2)中添加一條記錄:extension_number是SIP用戶終端的分機號碼,是t_extension表number的外鍵;url是SIP用戶終端的SIP地址,含IP地址;reg_date_expiration是SIP用戶終端的注冊時間;reg_effective_time是SIP用戶終端的注冊更新時間。

表2 t_register_info表
SIP用戶終端注冊時,如果在分機表中不存在的此號,是不能注冊的,此時注冊服務為proxy服務器并轉發這個注冊請求到指定的注冊服務器。所以要先在Web管理界面申請分機號碼,再通過SIP用戶終端(如eyeBeam等)向SIP軟交換系統提交注冊請求,才能完成注冊。注冊流程如圖1所示:

圖1 注冊流程
1 Register:SIP用戶終端向SIP軟交換系統的注冊服務發出注冊請求,消息體的Contact中列出地址表(URL),表示該用戶的聯系方式;
2 401 Unauthorized:SIP軟交換系統的注冊服務向用戶終端返回一個需要認證的信息;
3 Register:SIP用戶終端填寫含有分機號碼和密碼的加密的注冊信息,再次提交;
4 200 OK:表示SIP軟交換系統根據數據庫的分機表來檢驗SIP用戶終端的身份(參考RFC1866,RFC2069)并通過對用戶終端的信任,并在在數據庫的注冊表中成功注冊了用戶終端。
注冊成功時數據庫的注冊表如圖2所示,SIP用戶終端的分機號碼為201,與之綁定的URL為sip:201@192.168.6.5,注冊間隔時間為3600秒。用戶終端注冊成功之后,便可以呼叫已注冊的任何分機號碼。

圖2 注冊分機號碼201
注冊請求Register頭域Contact的Expires參數為注冊間隔時間,值為從0到2**32-1,非法的值視同3600,單位為秒。SIP用戶終端注冊后,一經注冊間隔時間,就再次發送注冊請求來來刷新綁定信息,但是不能刷新其它SIP用戶終端的綁定信息。如果Expires參數設為0時,使當前注冊SIP用戶終端失效;Expires參數設為0并且Contact的值為“*”時,則刪除所有的注冊項。如果SIP用戶終端接收到一個423(間隔太簡略)應答,它可能需要更改注冊請求中的注冊間隔時間,使得這些注冊間隔時間必須大于等于423應答頭中的Min-Expires頭域中的值,并且重新嘗試發送注冊請求。
SIP軟交換系統的注冊服務處理流程(認證后),如圖3所示。

圖3 注冊服務的處理流程
使用SIP軟電話eyeBeam1.5和網絡分析工具Wireshark來測試注冊服務。
SIP軟交換系統注冊服務器:IP地址為192.168.6.177;
SIP用戶終端:IP地址為192.168.6.5;用戶名為201;密碼為201;注冊間隔為3600。
測試時,如果SIP用戶終端的注冊間隔太小,發現由于頻繁注冊而造成網絡負荷擁堵;如果注冊間隔太長,注冊服務喪失對SIP終端的可控性;建議注冊周期為3600秒。如果SIP用戶終端分機號或密碼不正確,注冊服務向終端用戶發送403 forbidden信息,通知SIP終端注冊不成功。
通過分析SIP軟交換系統注冊服務的4個流程(REGISTER、401 Unauthorixed、REGISTER、200 OK),采用SIP分機信息與注冊信息相結合,實現了SIP用戶終端認證與注冊服務。再通過修正注冊信息的參數來檢證注冊服務,并進一步的給出了注冊參數的優化配置。采用基于文本通信方式的SIP協議,如果與聲音合成與聲音識別、圖像處理等功能組合起來,可以提供各種解決方案,將成為多媒體通信業的主流協議。但是,SIP作為一種不能加密的協議,其安全性也十分復雜,這是不容忽略的問題。
[1]彭煥峰.SIP注冊服務器的研究與設計[J].電腦知識與技術,2010,6(23):9024-9026.
[2]黃永峰,等.下一代網絡核心控制協議:SIP及其應用[M].人民郵電出版社,2009.
[3]Rosenberg J,Schulzrinne H,Camanilo G.SIP:Session Initiation Protocol[Z].IETF RFC3261,2002.
[4]Franks J.HTTP Authentication:Basic and Digest Access Authentication[Z].IETF RFC2617,1999.
[5]陳志賢,王紹棣.SIP協議中認證注冊機制的研究[J].南京郵電學院學報,2003,3(3):82-85.