基于A(yíng)sterisk的VoIP開(kāi)發(fā)指南——(1)實(shí)現基本呼叫功能
2008/06/12
說(shuō)明:圖1-1 所有基于IP協(xié)議的協(xié)議族
由圖1 -1可以看出,與VOIP相關(guān)的協(xié)議共分五層,每一層又由許多協(xié)議組成。目前有關(guān)IP電話(huà)制定的標準體現在應用層。而應用層又可分為信令控制協(xié)議、網(wǎng)關(guān)控制協(xié)議、媒體編碼和傳輸協(xié)議和QOS協(xié)議等。
圖3-1 VOIP通信系統功能模塊圖
Asterisk提供了很多的基本撥號語(yǔ)法及應用的撥號函數,它共有40多個(gè)配置文件,通過(guò)Asterisk特有的語(yǔ)法修改特有的配置文件,才能實(shí)現通話(huà)的基本功能,同時(shí)可以實(shí)現針對不同的用戶(hù)實(shí)現不同的通信功能。它的配置文件的源文件采用的是C語(yǔ)言編寫(xiě)。但是基于A(yíng)sterisk的Application
API編程接口,如AGI,對外部的應用程序可以使用PHP,Python,Perl,Java等語(yǔ)言編寫(xiě)。Asterisk運行操作系統平臺的Linux內核要求大于等于2.
4. x的版本。
3 VoIP通信系統基本功能概述
如果是基于純軟件的實(shí)現方案,Asterisk是構建VoIP項目的核心,系統中所有與用戶(hù)呼叫有關(guān)的功能和管理都通過(guò)它來(lái)實(shí)現,包括VoIP各種協(xié)議的互通和配置,以及各種呼叫設備的配置文件。本文檔所討論的VoIP通信系統基本功能如圖3-2所示,一般的Asterisk的任務(wù)包括了兩方面,一是與呼叫有關(guān)的,包括基本呼叫處理、主叫號碼透傳、呼叫紀錄和日志生成等,二是與呼叫控制有關(guān),即終端用戶(hù)的認證計費功能。
圖3-1 VOIP通信系統功能模塊圖
4 基于A(yíng)sterisk實(shí)現VOIP通信系統基本功能
PBX是專(zhuān)用交換機,俗話(huà)叫集團電話(huà)。廣泛地運用在企業(yè)辦公機構中,極大地提高了企業(yè)的辦事效率。但傳統的PBX存在缺點(diǎn)有:
圖 4-1 VOIP系統的基本組成
IP- PBX主要功能組件如圖4-1所示,下面討論這些基本功能組件。
1. 呼叫控制器
IP電話(huà)系統的智能部分,它負責提供一切傳統PBX系統的中心-PBX交換機所能提供的服務(wù)。負責控制所有的呼叫建立和呼叫管理,能輕易提供大部分基本服務(wù)(如呼叫保持、呼叫轉移、呼叫等待等),以及配置電話(huà)的分機號碼(Extension
Number)、功能按鈕、通話(huà)管理和路由決策功能。此外,它還控制所有的PC虛擬電話(huà)功能,如語(yǔ)音郵件、統一消息、自動(dòng)話(huà)務(wù)員、交互式語(yǔ)音響應(IVR)和自動(dòng)呼叫分配等。
2. 媒體網(wǎng)關(guān)
在IP-PBX系統中,媒體網(wǎng)關(guān)用來(lái)實(shí)現IP網(wǎng)絡(luò )和傳統電路交換網(wǎng)的通信,負責把呼叫轉接到PSTN網(wǎng),完成異種網(wǎng)絡(luò )的電話(huà)呼入和呼出。它除了具有接通被叫的功能外,還可以把來(lái)自PSTN的呼叫連接到IP電話(huà)系統。媒體網(wǎng)關(guān)在整個(gè)VoIP系統中起著(zhù)非常關(guān)鍵的作用。它不僅使VoIP系統能夠連接PSTN用戶(hù),而且能夠增加整個(gè)系統的可靠性,使系統具有處理緊急呼叫的能力。媒體網(wǎng)關(guān)還需要完成語(yǔ)音編碼轉換,通信協(xié)議轉換以及LAN/WAN-PSTN之間的呼叫建立拆除等功能。
3. 局域網(wǎng)接入模塊
提供IP-PBX系統各組件之間的連接。在局域網(wǎng)的環(huán)境中,該模塊可以使用局域網(wǎng)交換機來(lái)代替。
4. 控制中心
包括資源管理系統、計費系統、網(wǎng)管系統、語(yǔ)音信箱等。
5. 信令網(wǎng)關(guān)
提供和其它信令網(wǎng)絡(luò )的互通功能,可以支持H.323,IAX,SIP,MGCP等的全部或者部分功能。
6. 應用服務(wù)器
為IP-PBX系統提供增值應用。
7. I P話(huà)機終端
包括終端部分軟件PC Phone,I P-Phone等。
8. 模擬終端普通電話(huà),傳真機等傳統模擬設備。
本文檔IP-PBX系統的基本組件
1.VoIP軟終端X-Lite,對應圖4-1的PC PHONE:PC用戶(hù)使用SIP軟終端(目前只使SIP協(xié)議作為輸入信令)訪(fǎng)問(wèn)IP-PBX服務(wù)器軟交換后臺,對普通座機或手機發(fā)起呼叫,實(shí)現PC2Phone的通訊。
2.IP-PBX(VoIP 軟交換),對應圖4-1的呼叫控制器:基于開(kāi)源軟交換平臺Asterisk,接受VoIP軟終端(或其它能發(fā)起SIP/H323請求的硬件終端)發(fā)起的呼叫信令、解析被叫號碼、構建VoIP語(yǔ)音數據包發(fā)送到IP網(wǎng)絡(luò )中。
3.語(yǔ)音網(wǎng)關(guān),對應圖4-1的媒體網(wǎng)關(guān)、信令網(wǎng)關(guān),因為實(shí)際使用中大部分的媒體網(wǎng)關(guān)設備都集成了信令網(wǎng)關(guān)功能:提供模擬語(yǔ)音信號和VoIP信令的轉換,即從IP網(wǎng)絡(luò )進(jìn)入的VOIP數據包被轉換成模擬語(yǔ)音,通過(guò)與PBX相連的數字中繼線(xiàn)路進(jìn)入到PBX(數字程控交換機)。
4.數字程控交換機(PBX):用于電話(huà)交換網(wǎng)的交換設備,它以計算機程序控制電話(huà)的接續,從語(yǔ)音網(wǎng)關(guān)的E1數字中繼線(xiàn)路送出來(lái)的7號信令或1號信令或PRI信令以及模擬語(yǔ)音數據包進(jìn)入到數字程控交換機。
4.3 VOIP系統的軟硬件平臺
第1節已經(jīng)簡(jiǎn)單介紹過(guò)Asterisk,它是一個(gè)非常靈活的軟件,可以輕松的安裝在任何Linux平臺上。Asterisk的資源需求與其它的嵌入式、實(shí)時(shí)的應用系統很類(lèi)似,都是通過(guò)優(yōu)先級的方式來(lái)訪(fǎng)問(wèn)CPU和總線(xiàn),并規定系統上的任何函數都不能直接調用比Asterisk優(yōu)先的進(jìn)程。對于非專(zhuān)業(yè)的系統而言,這也許不是很重要,如果目標是商用系統,這種優(yōu)先級方式帶來(lái)的性能上的缺陷會(huì )引起通話(huà)質(zhì)量的問(wèn)題。比如,經(jīng)常出現回聲、噪音等等。這種情況在手機超出服務(wù)區外的時(shí)候常常出現。由于對于Linux的內核代碼和優(yōu)化技巧不是很了解,選擇一個(gè)高的配置,而不是重新對內核進(jìn)行編程,是一個(gè)比較好的主意。
硬件平臺
表4-1可以對系統的硬件配置有一個(gè)大概的認識
表4-1 VOIP 系統的硬件配置
系統 | 并發(fā)通話(huà)數量 | 最小要求 |
非專(zhuān)業(yè)系統 | <5 | 400M CPU 256M內存 |
SOHO系統 | 5-10 | 1G CPU 512M內存 |
小型商用系統 | 10-15 | 3G CPU 1G 內存 |
中等商用系統 | >15 | 雙處理器,在分布式構架里采用多個(gè)服務(wù)器集群 |
對于要安裝Asterisk的計算機,如果在預算有限的情況下,下面是一些建議:系統的穩定性及質(zhì)量取決于所選擇主板的結構設計,考慮使用服務(wù)器主板是一個(gè)很好的主意。比如服務(wù)器主板提供的PCI插槽有3.5V和5.0V,服務(wù)器主板可以給主板提供更穩定的電壓和電流。而且,語(yǔ)音卡常常會(huì )造成每秒100個(gè)以上的中斷請求,所以對于主板來(lái)說(shuō),一定要仔細考察芯片組是否能供支持。
安裝PCI顯卡,而不是AGP顯卡,因為AGP通道會(huì )造成內存的高占用率和CPU中斷占用。如果采用工控機/服務(wù)器構架,根本沒(méi)有安裝顯卡,而是使用Console來(lái)管理系統。對于CPU而言,由于A(yíng)sterisk使用CPU進(jìn)行信號的模數轉換(也就是說(shuō)CPU具有DSP的作用),所以浮點(diǎn)運算能力是非常重要的,同時(shí)CPU的L2Cache也應該盡量的大。
1. 專(zhuān)有板卡的準備
如果準備連接Asterisk系統到任何電信設備上去,必須需要一個(gè)專(zhuān)有硬件的支持。板卡的主要功能是連接PSTN和LAN/WAN。為了橋接電路交換的電信網(wǎng)絡(luò )和包交換的數據網(wǎng)絡(luò ),最流行和最經(jīng)濟的連接PSTN的方法是使用接口卡,接口卡有好幾種,這里僅僅討論常見(jiàn)的兩種情況。
(a)模擬接口卡
PSTN介入情況是普通的電話(huà)線(xiàn)或者模擬中繼電話(huà)線(xiàn)的時(shí)候,就需要這種卡。
最流行的Asterisk模擬接口卡也許是TDM400P(實(shí)際上這款卡和時(shí)分復用沒(méi)有任何關(guān)系,僅僅是這么叫好聽(tīng)而已),由Digium公司制造。TDM400P是一個(gè)4口卡,可以插4塊子卡,既可以提供FXO口,也可以提供FXS口。這個(gè)卡是貴的,當然最有名氣。
(b)數字接口卡
如果需要多于10條電路或者需要數字連接的時(shí)候,就要購買(mǎi)或者尋找T1或El卡了。但是要注意,El的接入的價(jià)格由信息產(chǎn)業(yè)部統一規定,在一些地區可以找到非常便宜的PSTN接入價(jià)格(落地價(jià)格),有關(guān)這方面的內容在這不細述。
2. 硬件的需求
針對中小型公司,硬件的要求一般不是很高,普通的網(wǎng)絡(luò )設備就可以滿(mǎn)足要求。如果想采用很好的語(yǔ)音質(zhì)量,可以采用專(zhuān)門(mén)的語(yǔ)音網(wǎng)關(guān)來(lái)處理語(yǔ)音信息。因為,采用通信的硬件設備目前大多是PSTN電話(huà)終端,因此要求附加一個(gè)硬件來(lái)將PSTN電話(huà)轉化為“IP”電話(huà)。目前大多采用ATA設備來(lái)轉換PSTN的電話(huà)終端。當然也可以使用IP電話(huà),如X-Lite等。
對于本文檔的VoIP開(kāi)發(fā)環(huán)境說(shuō)明如下:
(點(diǎn)擊看大圖)
第二部分——VoIP網(wǎng)關(guān)、PSTN網(wǎng)絡(luò )層
這部分是本文檔所討論的開(kāi)源軟交換平臺(Asterisk)通信的VoIP語(yǔ)音網(wǎng)關(guān),如圖4-3所示,經(jīng)過(guò)它出局的數字中繼是一個(gè)E1接口(又稱(chēng)一個(gè)PCM),是一對引自數字程控交換機的同軸電纜線(xiàn),在電纜線(xiàn)上數據傳輸速率是2.048
Mbps可以同時(shí)容納32時(shí)隙
*64Kbps的語(yǔ)音數據。
圖4-4 簡(jiǎn)單拓撲圖
軟終端Xlite注冊到軟交換Asterisk上
圖4-5 軟終端設定
4.5.1 IP-PBX服務(wù)器Asterisk抓包分析
圖4-7 SIP_REGISTER_2
X-Lite(UA) ------> asterisk PBX(讀取SIP INVITE消息)
圖4-8 IP_INVITE_1
Asterisk PBX 針對上面的分析情況,響應X-Lite會(huì )話(huà)繼續下去:
Transmitting to X-Lite(202.108.12.6)
圖4-9 SIP_INVITE_2
圖4-10 SIP_TRYING
執行撥號方案
圖4-11 dialplan
Asterisk然后開(kāi)始與華為8010語(yǔ)音網(wǎng)關(guān)建立H323通信
① Call set up.
H.225/Q.931 Call Setup
(點(diǎn)擊看大圖)
圖4-13 h323_SETUP_2
②A(yíng)LERT/PROGRESS 表示被叫已經(jīng)正在響鈴…
圖4-14 h323_3_ALERT
這時(shí)候,Asterisk PBX將被叫手機正在響鈴的信號以SIP消息 的形式發(fā)送到客戶(hù)端X-Lite,這是一種sip_indicate類(lèi)型的SIP消
息。
圖4-15 SIP_Ringing
Asterisk響應會(huì )話(huà)繼續的SIP消息
圖4-16 SIP_183_SESSION_PROGRESS
Asterisk與華為8010語(yǔ)音網(wǎng)關(guān)的H323連接已經(jīng)成功建立
③Connect
表示軟交換Asterisk與華為8010語(yǔ)音網(wǎng)關(guān)的H323連接已經(jīng)成功建立
圖4-17 H323_ESTABLISHED
Asterisk與X-Lite之間發(fā)送OK與ACK響應消息,表示SIP軟終端已經(jīng)跟H323語(yǔ)音網(wǎng)關(guān)建立了連接,并且被叫已經(jīng)接聽(tīng),開(kāi)始成功通話(huà)
圖4-18 SIP_200ok_ack 被叫先掛斷,Asterisk與華為8010語(yǔ)音網(wǎng)關(guān)的H323連接在此釋放
④Release Complete
表示軟交換Asterisk與華為8010語(yǔ)音網(wǎng)關(guān)的H323連接在此釋放
(點(diǎn)擊看大圖)
圖4-19 H323_RELEASE Asterisk向軟終端X-Lite發(fā)送BYE消息
圖4-21 SIP_BYE_OK
4.5.2 結論
通過(guò)觀(guān)察上面這個(gè)流程圖可以容易的看出,語(yǔ)音網(wǎng)關(guān)在收到INVITE消息后立即發(fā)送SETUP消息,反之亦然.
所以可以得到如下的H.323和SIP的消息對應關(guān)系:
H.323 消息 | SIP 消息 |
Setup | Invite |
Call Proceeding | 100 Trying |
Alerting | 180 Ringing |
Connect | 200 OK |
Release Complete | BYE |
基于A(yíng)sterisk的VoIP開(kāi)發(fā)指南—Asterisk模塊編寫(xiě)指南 2008-06-12 |
基于A(yíng)sterisk的VoIP開(kāi)發(fā)—Asterisk AGI程序編寫(xiě)指南 2008-06-12 |
無(wú)線(xiàn)IPPBX系統的設計與實(shí)現 2008-06-12 |
淺論美國寬帶電話(huà)(VOIP)監管的新動(dòng)向 2008-06-11 |
網(wǎng)絡(luò )電話(huà)(VoIP)成功應用美軍軍事系統 2008-06-06 |