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