基于Asterisk的VoIP開發(fā)指南——(1)實現(xiàn)基本呼叫功能
2008/06/12
說明:
- 本文檔探討基于Asterisk如何實現(xiàn)VoIP的一些基本功能,包括基本呼叫功能的方案選取、主叫號碼透傳、如何編寫Asterisk
AGI程序、Radius認證計費模塊等。
- 本文檔VoIP軟終端使用X-Lite,其它終端均可以接入測試。
- 文章內(nèi)容僅供參考,轉(zhuǎn)載請注明出處。
1 VoIP系統(tǒng)相關(guān)協(xié)議和標(biāo)準(zhǔn)
由于I P電話技術(shù)標(biāo)準(zhǔn)的開發(fā)涉及多個領(lǐng)域,因此,VOIP系統(tǒng)要想實現(xiàn)這些IP電話之間的通信,則必須提供支持這些協(xié)議的實現(xiàn)。目前主要涉及的協(xié)議如圖1-1所示,其中除了HTTP是與WWW相關(guān)的協(xié)議外,其它的都是VOIP相關(guān)協(xié)議。
圖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é)議等。
- 信令控制協(xié)議,目前被廣泛接受的IP電話控制信令體系主要有ITU-T的H.323系列和IETF的會話初始化協(xié)議(SIP)。
- 網(wǎng)關(guān)控制協(xié)議,網(wǎng)關(guān)控制協(xié)議主要有媒體網(wǎng)關(guān)控制協(xié)議(MGCP)。該協(xié)議是為了解決目前IP電話負擔(dān)過重,不能滿足未來容量和業(yè)務(wù)擴展的要求而設(shè)計的。
- 媒體編碼,媒體編碼主要有兩類——視頻編碼和音頻編碼。視頻編碼主要有H.261和H.263。音頻編碼主要有G.
7xx系列。
- 實時傳輸協(xié),實時傳輸協(xié)議有包括了實時傳輸協(xié)議(RTP)、實時傳輸控制協(xié)議(RTCP)、實時流協(xié)議(RTSP)和資源預(yù)留協(xié)議(RSVP)。相關(guān)的協(xié)議標(biāo)準(zhǔn)可以參考相應(yīng)的網(wǎng)上資料,在這不細述。
2 Asterisk簡介
Asterisk是一個開源的軟件包,它可以運行PBX的所有功能,通常運行在Linux操作系統(tǒng)平臺上。它不僅包含了PBX的功能,同時還有其它一些附加特性。Asterisk可以用三種協(xié)議來實現(xiàn)VoIP,同時可以與目前電話使用的標(biāo)準(zhǔn)硬件進行交互通信。
Asterisk提供了附加的語音郵件服務(wù)、電話會議、交互語音應(yīng)答、呼叫排隊等基本電話服務(wù)。它還提供了多方呼叫、顯示呼叫者ID(顯示主叫號碼)等服務(wù)
Asterisk在實現(xiàn)VoIP時,不需要任何附加硬件,DDD 軟交換所采用的也是這種使用方式。但是,如果企業(yè)沒有與VoIP語音網(wǎng)關(guān)運營商建立合作關(guān)系,想要自己構(gòu)建這樣的一個平臺,那么要和數(shù)字電話設(shè)備與模擬電話設(shè)備進行交互通信,Asterisk需要一個PCI硬件的支持,這個硬件生產(chǎn)商中最著名的是Digium平臺提供的。
Asterisk 的結(jié)構(gòu)基本上是十分簡單,但是它不同于大多數(shù)的電話產(chǎn)品。基本上,Asterisk擔(dān)任的是一個中間件的功能,它連接了底層的電話技術(shù)和上層的電話應(yīng)用。Asterisk為布局混合的電話環(huán)境提供了一致性。Asterisk是開源PBX
(Private Branch eXchange)和IVR (Interactive Voice Response)系統(tǒng)。使用兼容的PCI硬件,Asterisk支持傳統(tǒng)的電話線路,包括:TDM(Time
Division Multiplexing), TI/El PRI/PRA&RBS (Robbed Bit Signal)模式、模擬電話線/模擬電話(POTS),ISDN(Integrated
Services Digital Network)和BRI(Basic Rate)與PRI(Primary Rate)。
Asterisk可以透明的橋接VoIP之間的一些協(xié)議,包括:會話初始協(xié)議(SIP-Session Initiation
Protocol), H.323(國際電信工業(yè)會的一種標(biāo)準(zhǔn))、IAX(Inter-Asterisk eXchange)媒體網(wǎng)關(guān)控制協(xié)(MGCP-Media
Gateway Control Protocol)等其它一些協(xié)議。Asterisk 具有很大的柔韌性,特殊的API接口都圍繞著PBX核心系統(tǒng)。這個核心處理著PBX內(nèi)部之間的相互聯(lián)系。每一部分都是清晰來自于協(xié)議、編碼或內(nèi)部電話使用的硬件接口的抽象。這些抽象的接口使Asterisk可以與任何的硬件和技術(shù)以及將來的硬件和軟件技術(shù)完美的結(jié)合。從圖2-5可以看出,Asterisk由內(nèi)部核心和外圍動態(tài)可加載模塊組成。內(nèi)部核心由以下六個部分組成:PBX交換核心模塊(PBX
Switching Core)、調(diào)度和I/O管理模塊(Scheduler and I/O Manager)、應(yīng)用調(diào)用模塊(Application
Launcher)、編解碼轉(zhuǎn)換模塊(Codec Translator)、動態(tài)模塊加載器模塊(Dynamic Module
Loader)和CDR生成模塊(CDR Core)。
圖3-1 VOIP通信系統(tǒng)功能模塊圖
Asterisk提供了很多的基本撥號語法及應(yīng)用的撥號函數(shù),它共有40多個配置文件,通過Asterisk特有的語法修改特有的配置文件,才能實現(xiàn)通話的基本功能,同時可以實現(xiàn)針對不同的用戶實現(xiàn)不同的通信功能。它的配置文件的源文件采用的是C語言編寫。但是基于Asterisk的Application
API編程接口,如AGI,對外部的應(yīng)用程序可以使用PHP,Python,Perl,Java等語言編寫。Asterisk運行操作系統(tǒng)平臺的Linux內(nèi)核要求大于等于2.
4. x的版本。
3 VoIP通信系統(tǒng)基本功能概述
如果是基于純軟件的實現(xiàn)方案,Asterisk是構(gòu)建VoIP項目的核心,系統(tǒng)中所有與用戶呼叫有關(guān)的功能和管理都通過它來實現(xiàn),包括VoIP各種協(xié)議的互通和配置,以及各種呼叫設(shè)備的配置文件。本文檔所討論的VoIP通信系統(tǒng)基本功能如圖3-2所示,一般的Asterisk的任務(wù)包括了兩方面,一是與呼叫有關(guān)的,包括基本呼叫處理、主叫號碼透傳、呼叫紀(jì)錄和日志生成等,二是與呼叫控制有關(guān),即終端用戶的認證計費功能。
圖3-1 VOIP通信系統(tǒng)功能模塊圖
4 基于Asterisk實現(xiàn)VOIP通信系統(tǒng)基本功能
PBX是專用交換機,俗話叫集團電話。廣泛地運用在企業(yè)辦公機構(gòu)中,極大地提高了企業(yè)的辦事效率。但傳統(tǒng)的PBX存在缺點有:
- 它對新興的CTI(計算機與電話集成)和VoIP支持不夠。
- 傳統(tǒng)的PBX都采用的是專用技術(shù),缺乏開放性和標(biāo)準(zhǔn)性,并且價格昂貴。解決它的缺點的措施是IP PBX技術(shù)。
4.1 VoIP通信系統(tǒng)方案選擇
方案1:模擬電話+語音網(wǎng)關(guān)+網(wǎng)守+PBX+模擬電話
語音網(wǎng)關(guān)型的應(yīng)用是將VoIP語音網(wǎng)關(guān)的FXO/FXS接口同總部或分支機構(gòu)的PBX(小交換機或集團電話)直接相連,當(dāng)需要打長途電話時,將話音轉(zhuǎn)到VoIP網(wǎng)關(guān)上,通過因特網(wǎng)傳輸。用戶在使用時只需在分機上先撥IP電話特服號(如可設(shè)為"8"),便可直接撥打IP電話。
在這個方案中,若要像普通電話那樣的數(shù)字號碼撥號,就得經(jīng)過網(wǎng)守的路由管理,但對于中小企業(yè)這種設(shè)備太昂貴。網(wǎng)守處于高層,提供對端點的呼叫管理功能,是IP電話網(wǎng)絡(luò)系統(tǒng)中的重要管理實體。網(wǎng)守的主要功能有:地址解析、接入控制、帶寬管理、區(qū)域管理等四項基本功能;此外,還能提供呼叫控制信令、呼叫管理等其他功能。要構(gòu)建一個穩(wěn)定可靠的、實用的VoIP網(wǎng),離不開GK的管理。
基于VoIP語音網(wǎng)關(guān)的復(fù)雜性與成本昂貴,本文檔不使用這種方案。
方案2:VoIP電話/IP電話+商業(yè)IP-PBX設(shè)備+PBX+模擬電話
IP-PBX是一種基于IP的電話交換系統(tǒng),它具有傳統(tǒng)PBX交換機的所有功能,它的目標(biāo)是取代企業(yè)內(nèi)部原先的PBX。這個系統(tǒng)可以完全將話音通信集成到公司的數(shù)據(jù)網(wǎng)絡(luò)中,從而建立能夠連接分布在全球各地辦公地點和員工的統(tǒng)一話音數(shù)據(jù)網(wǎng)絡(luò)。IP-PBX最顯著的特征是一個集成通信系統(tǒng),因此,通過互聯(lián)網(wǎng),僅需要單一設(shè)備即可為用戶提供語音、傳真、數(shù)據(jù)和視頻等多種通信方式,建立中、小型的呼叫中心。由于VoIP技術(shù)是將語音以數(shù)據(jù)包的形式在IP網(wǎng)絡(luò)中進行傳送,因此采用VoIP技術(shù)構(gòu)建的通信平臺,用戶具有可移動的特性,形象的說就是同一個用戶在A地用的是011的號碼,到了B地還是011的號碼,號碼隨著人走,VoIP還支持語音信箱、多方會議、視頻會議等傳統(tǒng)PBX沒有的功能。有助于移動辦公和異地協(xié)同辦公。
雖然說商業(yè)的VoIP設(shè)備或者軟件,如華為SoftCo 5816 IP語音交換機、貝爾阿爾卡特A5020,他們能夠更容易、方便提供豐富的IP-PBX業(yè)務(wù)類型,也提供了數(shù)字中繼接口與PSTN網(wǎng)絡(luò)方便連接,并且只需要手動配置參數(shù)就可以投入到使用,不需要大量地編程,但是這種方案需要的成本跟方案1差不多,比較昂貴,并且靈活性不夠,所以不使用。
方案3:IP電話/模擬電話+Linux PC機+開源IP-PBX+媒體網(wǎng)關(guān)+PBX+模擬電話
基于PC服務(wù)器+ Asterisk呼叫管理軟件的IP-PBX系統(tǒng),Asterisk作為IP電話網(wǎng)絡(luò)的控制中心(PC型PBX),該控制中心以軟件方式工作,安裝在一臺服務(wù)器內(nèi)。數(shù)字中繼網(wǎng)關(guān)與原有傳統(tǒng)PBX的E1中繼接口相聯(lián)(在這里媒體網(wǎng)關(guān)特指單獨的VoIP落地網(wǎng)關(guān)運營商的語音網(wǎng)關(guān)設(shè)備,本文檔讓Asterisk與之對接實現(xiàn)IP與PSTN的完美轉(zhuǎn)換),VoIP媒體網(wǎng)關(guān)提供的多路數(shù)字設(shè)置為中繼模式,一端連接PSTN專網(wǎng),一端對接Asterisk軟交換IP側(cè)。在控制中心的服務(wù)器上對IP電話號碼進行分配。通過適當(dāng)調(diào)整控制中心軟件的參數(shù)以及添加、修改某些模塊代碼,即可完成本文檔最終完成的IP電話系統(tǒng)的建設(shè)。如果使用專用、商業(yè)的IP-PBX系統(tǒng),可能會花費不菲,所以本文檔使用方案3。
本節(jié)的目標(biāo)就是基于開源IP-PBX Asterisk設(shè)計VoIP電話系統(tǒng)的基本呼叫功能模塊、認證計費功能模塊、AGI功能模塊等。
4.2 VOIP系統(tǒng)的基本組件
一般VOIP系統(tǒng)基本組件組成如圖4-1所示。
圖 4-1 VOIP系統(tǒng)的基本組成
IP- PBX主要功能組件如圖4-1所示,下面討論這些基本功能組件。
1. 呼叫控制器
IP電話系統(tǒng)的智能部分,它負責(zé)提供一切傳統(tǒng)PBX系統(tǒng)的中心-PBX交換機所能提供的服務(wù)。負責(zé)控制所有的呼叫建立和呼叫管理,能輕易提供大部分基本服務(wù)(如呼叫保持、呼叫轉(zhuǎn)移、呼叫等待等),以及配置電話的分機號碼(Extension
Number)、功能按鈕、通話管理和路由決策功能。此外,它還控制所有的PC虛擬電話功能,如語音郵件、統(tǒng)一消息、自動話務(wù)員、交互式語音響應(yīng)(IVR)和自動呼叫分配等。
2. 媒體網(wǎng)關(guān)
在IP-PBX系統(tǒng)中,媒體網(wǎng)關(guān)用來實現(xiàn)IP網(wǎng)絡(luò)和傳統(tǒng)電路交換網(wǎng)的通信,負責(zé)把呼叫轉(zhuǎn)接到PSTN網(wǎng),完成異種網(wǎng)絡(luò)的電話呼入和呼出。它除了具有接通被叫的功能外,還可以把來自PSTN的呼叫連接到IP電話系統(tǒng)。媒體網(wǎng)關(guān)在整個VoIP系統(tǒng)中起著非常關(guān)鍵的作用。它不僅使VoIP系統(tǒng)能夠連接PSTN用戶,而且能夠增加整個系統(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)交換機來代替。
4. 控制中心
包括資源管理系統(tǒng)、計費系統(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話機終端
包括終端部分軟件PC Phone,I P-Phone等。
8. 模擬終端普通電話,傳真機等傳統(tǒng)模擬設(shè)備。
本文檔IP-PBX系統(tǒng)的基本組件
1.VoIP軟終端X-Lite,對應(yīng)圖4-1的PC PHONE:PC用戶使用SIP軟終端(目前只使SIP協(xié)議作為輸入信令)訪問IP-PBX服務(wù)器軟交換后臺,對普通座機或手機發(fā)起呼叫,實現(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),因為實際使用中大部分的媒體網(wǎng)關(guān)設(shè)備都集成了信令網(wǎng)關(guān)功能:提供模擬語音信號和VoIP信令的轉(zhuǎn)換,即從IP網(wǎng)絡(luò)進入的VOIP數(shù)據(jù)包被轉(zhuǎn)換成模擬語音,通過與PBX相連的數(shù)字中繼線路進入到PBX(數(shù)字程控交換機)。
4.?dāng)?shù)字程控交換機(PBX):用于電話交換網(wǎng)的交換設(shè)備,它以計算機程序控制電話的接續(xù),從語音網(wǎng)關(guān)的E1數(shù)字中繼線路送出來的7號信令或1號信令或PRI信令以及模擬語音數(shù)據(jù)包進入到數(shù)字程控交換機。
4.3 VOIP系統(tǒng)的軟硬件平臺
第1節(jié)已經(jīng)簡單介紹過Asterisk,它是一個非常靈活的軟件,可以輕松的安裝在任何Linux平臺上。Asterisk的資源需求與其它的嵌入式、實時的應(yīng)用系統(tǒng)很類似,都是通過優(yōu)先級的方式來訪問CPU和總線,并規(guī)定系統(tǒng)上的任何函數(shù)都不能直接調(diào)用比Asterisk優(yōu)先的進程。對于非專業(yè)的系統(tǒng)而言,這也許不是很重要,如果目標(biāo)是商用系統(tǒng),這種優(yōu)先級方式帶來的性能上的缺陷會引起通話質(zhì)量的問題。比如,經(jīng)常出現(xiàn)回聲、噪音等等。這種情況在手機超出服務(wù)區(qū)外的時候常常出現(xiàn)。由于對于Linux的內(nèi)核代碼和優(yōu)化技巧不是很了解,選擇一個高的配置,而不是重新對內(nèi)核進行編程,是一個比較好的主意。
硬件平臺
表4-1可以對系統(tǒng)的硬件配置有一個大概的認識
表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)架里采用多個服務(wù)器集群 |
對于要安裝Asterisk的計算機,如果在預(yù)算有限的情況下,下面是一些建議:系統(tǒng)的穩(wěn)定性及質(zhì)量取決于所選擇主板的結(jié)構(gòu)設(shè)計,考慮使用服務(wù)器主板是一個很好的主意。比如服務(wù)器主板提供的PCI插槽有3.5V和5.0V,服務(wù)器主板可以給主板提供更穩(wěn)定的電壓和電流。而且,語音卡常常會造成每秒100個以上的中斷請求,所以對于主板來說,一定要仔細考察芯片組是否能供支持。
安裝PCI顯卡,而不是AGP顯卡,因為AGP通道會造成內(nèi)存的高占用率和CPU中斷占用。如果采用工控機/服務(wù)器構(gòu)架,根本沒有安裝顯卡,而是使用Console來管理系統(tǒng)。對于CPU而言,由于Asterisk使用CPU進行信號的模數(shù)轉(zhuǎn)換(也就是說CPU具有DSP的作用),所以浮點運算能力是非常重要的,同時CPU的L2Cache也應(yīng)該盡量的大。
1. 專有板卡的準(zhǔn)備
如果準(zhǔn)備連接Asterisk系統(tǒng)到任何電信設(shè)備上去,必須需要一個專有硬件的支持。板卡的主要功能是連接PSTN和LAN/WAN。為了橋接電路交換的電信網(wǎng)絡(luò)和包交換的數(shù)據(jù)網(wǎng)絡(luò),最流行和最經(jīng)濟的連接PSTN的方法是使用接口卡,接口卡有好幾種,這里僅僅討論常見的兩種情況。
(a)模擬接口卡
PSTN介入情況是普通的電話線或者模擬中繼電話線的時候,就需要這種卡。
最流行的Asterisk模擬接口卡也許是TDM400P(實際上這款卡和時分復(fù)用沒有任何關(guān)系,僅僅是這么叫好聽而已),由Digium公司制造。TDM400P是一個4口卡,可以插4塊子卡,既可以提供FXO口,也可以提供FXS口。這個卡是貴的,當(dāng)然最有名氣。
(b)數(shù)字接口卡
如果需要多于10條電路或者需要數(shù)字連接的時候,就要購買或者尋找T1或El卡了。但是要注意,El的接入的價格由信息產(chǎn)業(yè)部統(tǒng)一規(guī)定,在一些地區(qū)可以找到非常便宜的PSTN接入價格(落地價格),有關(guān)這方面的內(nèi)容在這不細述。
2. 硬件的需求
針對中小型公司,硬件的要求一般不是很高,普通的網(wǎng)絡(luò)設(shè)備就可以滿足要求。如果想采用很好的語音質(zhì)量,可以采用專門的語音網(wǎng)關(guān)來處理語音信息。因為,采用通信的硬件設(shè)備目前大多是PSTN電話終端,因此要求附加一個硬件來將PSTN電話轉(zhuǎn)化為“IP”電話。目前大多采用ATA設(shè)備來轉(zhuǎn)換PSTN的電話終端。當(dāng)然也可以使用IP電話,如X-Lite等。
對于本文檔的VoIP開發(fā)環(huán)境說明如下:
- 基于非專業(yè)系統(tǒng)的配置需求來進行硬件的配置,如Ubuntu 7.04。
- 不方便配備專有板卡,尋找某些地區(qū)的PSTN接入運營商,簡稱VoIP落地運營商或者VoIP落地網(wǎng)關(guān),他們能夠提供接口卡(數(shù)字接口卡、語音網(wǎng)關(guān)、媒體網(wǎng)關(guān))。
軟件平臺
1.操作系統(tǒng)
對于中小型公司而言,Linux可能是首選的操作系統(tǒng)。同時,Asterisk源碼便于在Linux中編譯和運行,相對比較安全。在對于中小型軟件研發(fā)而言,Linux可能成為開發(fā)中的首選的操作系統(tǒng)。
2.Asterisk軟件包
Asterisk的核心,主要由三個包組成:
- Asterisk主程序(Asterisk)
- Zapate電話驅(qū)動(zaptel)
- PRI庫(libpri)
其余的還有一些其它的軟件,如語音附加包等,都可以從開源的網(wǎng)站上下載。
4.4 Asterisk構(gòu)建VoIP整合應(yīng)用方案(基本呼叫功能的實現(xiàn))
Asterisk和VoIP的最初設(shè)計思想相同,其最終目的是減少長途通話的費用,實現(xiàn)通話的網(wǎng)絡(luò)化,使IP網(wǎng)絡(luò)成為一個可運載語音數(shù)據(jù)和其它數(shù)據(jù)的平臺,實現(xiàn)語音網(wǎng)絡(luò)和視頻網(wǎng)絡(luò)等完美地結(jié)合。
為了實現(xiàn)基本的呼叫功能,即摘機、掛機等功能,目前設(shè)計的拓撲結(jié)構(gòu)為:VoIP軟終端--->SIP代理服務(wù)器(SIP Proxy
Server、SIP Redirect Server)-->轉(zhuǎn)發(fā)到用戶代理服務(wù)器(UAS,Asterisk)--->與VoIP語音網(wǎng)關(guān)通信(Cisco
AS5300,華為8010等設(shè)備,一般有2、4、n個數(shù)字中繼接口)---->通過E1中繼線路對接數(shù)字程控交換機(華為C&c08、貝爾S1240數(shù)字程控交換機)。
VoIP系統(tǒng)第一部分——IP側(cè)的實現(xiàn)
VoIP系統(tǒng)有兩側(cè):IP側(cè)與PSTN側(cè),這部分主要是IP側(cè),發(fā)起呼叫請求的VoIP軟終端是任何一個能夠發(fā)起SIP請求的客戶端軟件或者硬件設(shè)備或者語音網(wǎng)關(guān)設(shè)備,網(wǎng)絡(luò)拓撲結(jié)構(gòu)圖如下所示,圖中每個結(jié)點在前幾個小節(jié)均有描述。
(點擊看大圖)
第二部分——VoIP網(wǎng)關(guān)、PSTN網(wǎng)絡(luò)層
這部分是本文檔所討論的開源軟交換平臺(Asterisk)通信的VoIP語音網(wǎng)關(guān),如圖4-3所示,經(jīng)過它出局的數(shù)字中繼是一個E1接口(又稱一個PCM),是一對引自數(shù)字程控交換機的同軸電纜線,在電纜線上數(shù)據(jù)傳輸速率是2.048
Mbps可以同時容納32時隙
*64Kbps的語音數(shù)據(jù)。

(點擊看大圖)
結(jié)合圖4-2與圖4-3,基本呼叫處理包含主叫摘機、撥號、通話、掛機、被叫掛機全過程。通常應(yīng)用呼叫的方式可能是PC到PC、PC到電話(PSTN/IP)、電話(PSTN/IP)到電話(PSTN/IP)等方式。對于基本的呼叫流程是任何PBX都具有的,設(shè)計流程大多都一樣。
- 在X-Lite客戶端輸入完被叫號碼后,點擊呼叫按鈕,用戶聽到VoIP會話應(yīng)用程序播放的撥號音,然后開始撥號。
- X-Lite收集用戶撥打的號碼,并按照標(biāo)準(zhǔn)的SIP代理服務(wù)器到VoIP用戶代理服務(wù)器Asterisk。
- Asterisk動態(tài)的調(diào)用呼叫模塊,進入到Asterisk內(nèi)部的呼叫Dialplan, 并按照呼叫Dialplan中配置的被叫號碼模板進行匹配。
- 當(dāng)成功匹配某個已配置的被叫號碼模板后,號碼將被映射至某語音網(wǎng)關(guān)(此語音網(wǎng)關(guān)直接連接目的電話或用戶小交換機PBX)。
- IP-PBX Asterisk的IP網(wǎng)絡(luò)利用H.323/SIP協(xié)議向語音網(wǎng)關(guān)發(fā)起呼叫,并為每路呼叫建立通道,用以發(fā)送和接收語音數(shù)據(jù)。
- 被叫語音網(wǎng)關(guān)接收IP側(cè)的H.323/SIP呼叫,通過PSTN信令將呼叫傳遞到給PBX處理,直到接通目的電話。
- 在呼叫連接過程中的H.323/SIP階段,IP側(cè)與PSTN側(cè)協(xié)商所使用的語音編解碼方式,并使用RTP協(xié)議傳遞語音數(shù)據(jù)。
- 呼叫中的任何一方掛機時,VoIP會話應(yīng)用程序X-Lite將結(jié)束會話。
4.5 基本呼叫功能環(huán)境搭建示例(SIP與H.323互通)
圖4-4 簡單拓撲圖
軟終端Xlite注冊到軟交換Asterisk上
圖4-5 軟終端設(shè)定
4.5.1 IP-PBX服務(wù)器Asterisk抓包分析

(點擊看大圖)
圖4-6 SIP_REGISTER_1

(點擊看大圖)
圖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
(點擊看大圖)
圖4-12 h323_SETUP_1
(點擊看大圖)
圖4-13 h323_SETUP_2
②ALERT/PROGRESS 表示被叫已經(jīng)正在響鈴…
(點擊看大圖)
圖4-14 h323_3_ALERT
這時候,Asterisk PBX將被叫手機正在響鈴的信號以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連接在此釋放
(點擊看大圖)
圖4-19 H323_RELEASE Asterisk向軟終端X-Lite發(fā)送BYE消息
圖4-20 SIP_BYE X-Lite收到BYE消息后以O(shè)K消息響應(yīng),整個會話就此終止
圖4-21 SIP_BYE_OK
4.5.2 結(jié)論
通過觀察上面這個流程圖可以容易的看出,語音網(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 |
貝高林的Blog
相關(guān)鏈接:
泰宁县|
迭部县|
利津县|
福泉市|
田林县|
德钦县|
望城县|
三亚市|
安图县|
敦化市|
竹山县|
古丈县|
河北省|
吐鲁番市|
泰和县|
贺兰县|
合水县|
额济纳旗|
全州县|
虹口区|
定陶县|
新蔡县|
竹山县|
马边|
渭源县|
台江县|
阿拉尔市|
四子王旗|
云龙县|
曲松县|
清原|
桂东县|
凤山市|
敖汉旗|
瑞丽市|
故城县|
阿鲁科尔沁旗|
观塘区|
桂林市|
榆社县|
延寿县|