Asterisk PBX
Asterisk PBX
Asterisk [1] ?是一個開放源代碼的軟件VoIP PBX系統,它是一個運行在Linux環境下的純軟件實施方案。Asterisk是一種功能非常齊全的應用程序,提供了許多電信功能,能夠把你的x86機 器變成你自己的交換機,還能夠當作一臺企業級的商用交換機。Asterisk讓人激動的事情是它在小企業預算可承受的范圍內提供了商業交換機的功能和可伸 縮性。你可以使用一臺老式的奔騰3計算機,讓你的機構看起來就同世界上的大企業一樣。Asterisk[1]?能夠支持傳統的線路,包括:TDM (Time Division Multiplexing)T1/ E1 PRI/ PRA & RBS (Robbed Bit Signal)modesAnalog phone lines/ phones (POTS)ISDN (Integrated Services Digital Network)Both BRI (Basic Rate)and PRI (Primary Rate)Asterisk 支持的協議包括:Session Initiation Protocol (SIP)H. 323 (ITU standard, contributed support)Inter- Asterisk eXchange (IAX)Media Gateway Control Protocol (MGCP)
Private Branch Exchange,用戶級交換機,即公司內部使用的電話業務網絡,系統內部分機用戶分享一定數量的外線。
編輯本段Asterisk能做什么?
Asterisk 如同使用拼裝玩具或樂高套件來搭建通信應用。正因為如此它被稱為“套件”或“開發平臺”。Asterisk 包含所有的用于構建 PBX 系統、IVR 系統、可以說現實中的任何通信方案的構件。諸如如下: 1、各類 VoIP 協議的驅動。 2、各類 PSTN 接口卡和設備的驅動。 3、呼入路由和策略。 4、呼出生成和路由。 5、媒介管理功能(錄音、播放、彩鈴生成,等等)。 6、賬號和賬單的通話詳單。 7、媒介轉換(從一種媒介轉換成另一種)。 8、協議轉換(從一種協議轉換成另一種)。 9、用于存取關系式數據庫的信息的數據庫集成。 10、使用標準互聯網協議存取數據的網絡服務集成。 11、存取公司目錄系統的 LDAP 集成。 12、單方和多方呼叫橋接。 13、呼叫記錄和偵測功能。 14、集成用于呼叫處理的 "Dialplan" 腳本語言。 15、基于 Asterisk 網關接口(AGI - Asterisk Gateway Interface) 的處理外部呼叫管理的程序或腳本的編程。 16、基于 Asterisk 管理接口(AMI - Asterisk Manager Interface )的時間提醒和 CTI 集成。 17、第三方的各種語音和方言的語音合成(或者稱“文本語音轉換”)第三方的各種語音識別。 綜合這些因素使得系統集成商或開發者能夠快速生成一個語音使能系統。 開放的 Asterisk 的含義也意味著它無需墨守成規。 Asterisk 系統集成者小可建造 IP PBX,大可構架大型媒體運營系統。編輯本段Asterisk核心應用
Asterisk 作為程控交換機 PBX Asterisk 可以被配置為一個 IP 或混合的 PBX 的核心:交換呼叫、管理路由、使能特性,以及通過 IP、模擬線路(POTS)、以及數字(T1/E1)的聯系同外部呼叫鏈接在一起。 Asterisk 運行于眾多的操作系統之上,諸如 Linux、Mac OS X、OpenBSD、FreeBSD 和 Sun Solaris。提供了一個 PBX 所能提供的所有功能甚至包括那些高級 PBX (也是昂貴的)的功能。Asterisk 的構架是基于如下他點來設計:最大程度的靈活性、支持眾多的 VoIP 協議、使用廉價的硬件便可融合到幾乎所有的電話設備等。 Asterisk 作為網關 Gateway 也可以被構建為一個媒介網關的中心,充當將傳統的 PSTN 橋接到蓬勃發展的 IP 電話世界。Asterisk 的模塊式的構、架構件使得媒介解碼和一個寬范的通信協議可以轉換。Asterik 擔負一個:功能/媒介服務器。 還需一個 IVR?Asterisk 已經為你準備到位。會議橋接呢?是的,也有。自動話務臺呢?Asterisk 也準備到位。那么可以更換年久失修的電話系統嗎?當然可以。統一消息轉發?也沒問題。網頁配置一個電話接口?沒問題。 Asterisk 用于呼叫中心 Asterisk 在全球范圍范圍內被呼叫中心采納是基于其靈活性。呼叫中心和聯系中心的開發者基于 Asterisk 構建了整套 ACD 系統。它也同時給現有的呼叫中心注入新鮮血液諸如:遠程 IP 代理人功能、基于能力的高級路由、預測和海量呼叫等等。 Asterisk用于公共網絡 互聯網電話服務提供商(ITPS),區域電信業者(CLECS)以及甚至包括一線在職業者意識到使用 Asterisk 的開源通信的力量。基于 Asterisk 構建了功能服務器(Feature servers)、托管服務簇(hosted services clusters)、語音信箱系統(voicemail systems)、預付費呼叫解決方案(pre-paid calling solutions)等,這一切大大的降低費用并展現強大的靈活性。 Asterisk 隨處可見 Asterisk 已經成為成千上萬的通信解決方案的基石。想要通信,Asterisk 便是答案。 支持的平臺 - Supported platforms Asterisk® 源于 x/86 的 GNU/Linux 因而可被運行于 GNU/Linux for PPC 一類系統上諸如:OpenBSD、 FreeBSD、 和 Mac OS X。其它的平臺和標準的 UNIX 類的操作系統理應不會太難地能夠被時間和技能充足人們移植上去。 Asterisk® 也有 Debian 穩定版。由 Debian VoIP Team 來維護。 支持的硬件 - Supported hardware Asterisk® 用于 VoIP 不需額外的硬件。基于互聯數字和模擬電話設備, Asterisk® 支持系列的硬件設備,這些硬件中的大多數由 Digium®,它也是 Asterisk 發明者,制造的。 支持的協議 - Supported protocols Asterisk® 支持一個寬泛的用來處理在傳統電話設備傳輸語音的協議,它包括 H.323、Session Initiation Protocol (SIP)、Media Gateway Control Protocol (MGCP)、and Skinny Client Control Protocol (SCCP)。 使用 Inter-Asterisk eXchange (IAX?) VoIP 協議,Asterisk® 無縫地將語音和數據在異類網絡融合在一起。語音打包的使用使得 Asterisk® 可以在語音鏈路上發送諸如 URL 信息和行間圖像,使得信息能夠高級集成。 Asterisk® 通過四個 APIs 提供一個中心交換核心,這些 API 包括:電話應用模塊載入、硬件接口、文件形式處理、和解碼。這使得所有被支持的接口之間能夠透明地切換;使得五花八門的電話系統得以被集成成一個統一的交換系統。編輯本段特點 - Feature
基于 Asterisk 的電話解決方案提供豐富和靈活的特性。Asterisk® 提供傳統的 PBX 基本功用和先進的特性,它將傳統的標準電話系統和 VoIP 有機地結合在一起。編輯本段與硬件VOIP 比較
Asterisk具有硬件VOIP 的常用功能。 Asterisk能夠支持多媒體,具有可編程功能。 Asterisk有友好的管理界面。 Asterisk需要的帶寬,一般為:32KB/ 線路。也就是說每支持一條線路,只需要增32KB 的帶寬,但是需要網絡質量良好。 Asterisk可支持成千的 客戶端。(需要板卡與帶寬支持)編輯本段Asterisk開源軟件的變化趨勢及向嵌入式遷徙
Asterisk開源項目經過十多年的發展,已經不再單獨局限于IP-PBX的應用。實際上,按照,Digium在其asterisk論壇上給出的說法,Asterisk軟件已經是一個平臺,不僅可以用于IP-PBX的開發,也可以用于中繼網關(TG),模擬電話適配器(ATA - Analog Telephone Adapter),甚至 IP Phone 產品的開發。 同時,Asterisk開源項目已經逐步發展稱為一個 “統一通信” (UC)的解決方案。Asterisk開源項目應用的另一個變化是在嵌入式領域的發展。雖然最初Asterisk是基于X86主機加PCI擴展板卡運行的。但目前,一些基于MIPS或ARM的CPU也已經都可以運行Asterisk。其中比較著名的有OpenWRT,在OpenWRT的最新版本中已經包含了對Asterisk 1.6/1.8 版本的支持,簡單的編譯后既可在MIPS或ARM的硬件平臺上運行(參考Asterisk On MIPS論壇)。
近年來,通信行業的開源項目不斷涌現,打破了傳統電信設備制造商對電信技術的壟斷,為下一代網絡(NGN)的發展注入了無限活力。??Asterisk是一個由Digium公司發起的開放源代碼軟件,以通用公共許可證(GNU GPL)的授權方式發行。Asterisk運行在Linux上,以軟件的方式實現了(專用分組交換機,PBX)的大部分功能,是一個較全面的通信平臺,既支持傳統的模擬電話設備和數字電話設備,也支持新興的基于網絡的VoIP語音系統。Asterisk在小企業預算可承受的范圍內提供了商業交換機的功能和可伸縮性。?
?
1 基于Asterisk技術的電話會議系統研究?
?
1.1 Asterisk特點?
?
Asterisk是一款完全用軟件實現,可以運行在Linux,BSD,MacOS X等操作系統上的IP分組交換機產品,是世界上最著名的開源VoIP服務器軟件之一,為各國的VoIP愛好者所癡迷。實際上,Asterisk已經成為開源項目中語音交換和PBX的標準,而且基于Asterisk的VoIP解決方案也已成為許多中小企業的首選方案。Asterisk可以使用目前流行的編解碼器和協議將VoIP電話系統與傳統的公共交換電話系統集成起來,以較低的通話費用,提供較高的語音質量。?
?
Asterisk可以連接數目眾多的接口類型,包括模擬接口、數字線路,也可以透明地橋接VoIP之間的一些協議,包括SIP,H.323,IAX,MGCP等協議。?
?
1.2 Asterisk體系結構?
?
Asterisk體系結構簡單,與傳統電話技術的不同之處在于本質上扮演著一個中間件的角色,連接底層不同的電話技術到上層應用,創建了一個部署異構電話技術互通的持久性通信環境。?
?
Asterisk是基于模塊化設計的,多種模塊都可以在運行中通過動態模塊加載并初始化,用戶可以根據實際需要動態增加相應的模塊。As-terisk提供了四種基本的API函數集,以便于不同組件的交互,如信道API、Codec轉換器API、文件格式API及應用程序API。對于應用程序API允許第三方廠商開發基于Asterisk的應用程序,本文正是通過這些接口,完成在電話呼叫階段與Asterisk的交互,實現電話會議系統。?
?
1.3 系統開發環境?
?
在開發系統時,由于Asterisk源碼便于在Linux中編譯和運行,相對比較安全,對中小型軟件的研發中,Linux可成為開發的首選操作系統。因此本系統選擇Redhat Linux 9.0服務器版,在此基礎上安裝Asterisk軟件包,該設計系統使用Asterisk開源平臺。Asterisk的核心主要由三個包組成:Asterisk主程序(Asterisk)、Zapate電話驅動(Zaptel)和PRI庫(libpri),還有一些其他軟件,如語音附加包等。要實現電話會議,只需在Asterisk上對zaptel.conf,zapata.conf,sip.conf,extensions.conf和meetme.conf進行配置,就可以通過固定模擬電話、SIP電話完成常規呼叫和電話會議等功能。開發語言采用PHP/MySQL/Apache。?
?
2 基于Asterisk技術的電話會議系統設計?
?
2.1 設計方案?
?
該系統是基于Web的電話會議業務,用戶可以通過軟終端、普通話機、SIP硬終端、手機等參加Web會議。會議管理員通過Web頁面預約會議,并對會議進行實時管理,會議信息通過Web頁面顯示。?
?
Web電話會議系統的功能包括預約會議、創建會議、呼叫成員、會議結束后處理一些計費等一些基本的步驟。當許多用戶并發開會時,如何保證用戶間的獨立性;大部分API都是異步調用,如何同步整個邏輯流程;這些都是在此設計中重點考慮的問題。?
?
(1)業務邏輯與Web服務器的通信。后臺業務需要接收并處理Web頁面發來的請求,同時向頁面反饋處理結果。后臺要響應所有頁面Sess-ion發來的請求,因此這個問題可以分解為兩個問題,一個是通信機制;另一個是頁面Session與后臺會議的對應關系。這個問題涉及到Web電話會議系統的架構,Web Conference業務是基于Web的業務,通過Asterisk軟件平臺提供的API/AGI實現。?
?
(2)業務邏輯對呼叫會話的管理。在開會過程中每個會議都要對應一個會議呼叫會話(CCSession),通過這些呼叫會話向AGI網關發API調用請求,接收AGI網關的響應,區分響應該交給哪個業務處理,是對什么請求的響應。?
?
(3)業務邏輯對會議的管理。后臺要并發處理多個會議,必須把這些會議組織起來。向上要提供會議狀態,向下能夠區分接收的API響應屬于哪個會議或成員。?
?
2.2 設計思路?
?
經過分析可以得出,Web電話會議系統的設計思路是:通過用戶登錄到Web服務器啟動業務,頁面通過PHPAGI調用Asterisk Manager API Action實現與Asterisk平臺的交互。Asterisk調用AGI來訪問數據庫讀取相應數據,并通過撥號方案、Meetme達到會議呼叫、會議管控與會議計費等功能,如圖1所示。?
?
2.3 設計開發舉例 ?
?
(1)Extensions.conf:Asterisk的核心配置文件,該配置文件形成PBX的呼叫方案。 ?
?
電話打進處理: ?
?
其中:agi conf_admin.php是根據用戶輸入信息讀取會議資料屬性;011862556787948是被允許訪問的中國號碼。 ?
?
Web觸發電話呼入處理: ?
?
(2)Meetme.conf:用于配置MeetMe會議系統。在配置文件中,這里可以定義會議室和進入會議的密碼來建立一個電話會議。 ?
?
(3)Zaptel.conf:用于配置連接傳統模擬電話硬件接口,建立一個FXS和FXO通道。 ?
?
(4)Zapata.conf:用于為系統中安裝的電話硬件配置Asterisk接口。通過Zaptel.conf和Zapata.conf對FXS/FXO接口通道進行配置,可以將模擬話機經過FXS接口,PSTN經過FXO或E1/T1接入到Asterisk服務器,也可以通過SIP協議,經過軟交換實現VoIP的落地。 ?
?
(5)Sip.conf:用于配置SIP協議。該文件的開始是一個[general]section,包含通道設置,所有用戶和對端的默認選項。可以對系統注冊的每個用戶設置用戶名、連接類型、認證密碼和指令地點(用于控制電話的權限,以及如何處理此號碼的呼入呼叫)。 ?
?
通過以上配置文件的設置,即可實現電話會議系統的功能。 ?
?
另外,Asterisk有開源數據庫MySQL和開源編程語言PHP,Perl接口,所有經過Asterisk服務器的呼叫詳細記錄(CallDetailRecord)都被記錄在數據庫中,如雙方的號碼、ID、通話時間等。根據產生的呼叫詳細記錄信息,可以監控通信流量,進行流量統計和通話計費,而且Asterisk的數據庫能和企業的現有數據庫整合到一起。用戶還可以通過PHP語言開發的Web程序對MySQL進行維護。 ?
?
3 結語 ?
?
這里提出的基于SIP協議的IP電話系統設計具有投資小,成本低,方便實用,可靠性強,安全性好等優點。該系統建立在通用的計算機網絡上,可在局域網或Internet上使用,對用戶無特殊要求,另外還可擴展成融文本、視頻會議于一體的網絡交互式多媒體系統;由于終端較多地借助了PC資源,所以系統具備了較高的智能性;系統設計規范,管理模塊集中化,不僅降低了成本,而且更便于系統的操作和維護。由于該系統秉承了TCP/UDP協議族的簡單性,絕大多數功能都能通過軟件實現,且可進行簡單的改進,因此可以滿足不同的應用和需要。 ?
?
隨著IP技術的發展,傳統電信網絡將逐步向IP網絡發展。NGN是融合多業務的IP網,是電信網絡的發展方向。Asterisk與Linux等開源項目結合,可以在原有網絡基礎上為企業提供IP語音解決方案,具有廣闊的應用前景。Asterisk以其獨特的優勢獲得越來越多企業的青睞。開源項目在通信行業的不斷發展,會給通信業注入無限的活力。
1、DAHDI是什么??
????DAHDI表示Digium Asterisk Hardware Device Interface,Zaptel是"Zapata Telephony"的縮寫。??
2、DAHDI的由來?
????????Kevin Fleming是這樣介紹DAHDI的來由的:“大約兩年前(2006年),ZapTel商標的持有人找上我們,說ZapTel是他們的注冊商標。從那時候起我們就在內部討論,要把Zaptel改成DAHDI。DAHDI 2.0.0是第一個正式版本,覆蓋了Zaptel 1.4 的幾乎所有功能,除了某些過時的驅動版本和硬件之外。”?
????Asterisk 1.6將只支持DAHDI,而Asterisk 1.4將保留對Zaptel的支持。Asterisk 1.2不受影響。?
3、DAHDI與Zaptel對比?
????模塊名稱的改變:?
app_zapbarge.so -> app_dahdibarge.so?
app_zapras.so -> app_dahdiras.so?
app_zapscan.so -> app_dahdiscan.so?
codec_zap.so -> codec_dahdi.so ?
?
????????以下列出兩者所對應的主要配置文件表: ?
| Zaptel 文件名 | DAHDI 文件名 | 說明 |
| /etc/zaptel.conf | /etc/dahdi/system.conf | 主要的配置文件 |
| /etc/sysconfig/zaptel | /etc/dahdi/modules, /etc/dahdi/init.conf | 開機啟動參數設置 |
| /etc/init.d/zaptel | /etc/init.d/dahdi | 開機自動載入 |
| /etc/asterisk/zapata.conf | /etc/asterisk/chan_dahdi.conf | Asterisk 配置文件 |
????主要指令和工具名稱對照表: ?
| Zaptel | DAHDI | 說明 |
| ztcfg -vv | dahdi_cfg -vv | 分析system.conf,配置語音卡參數 |
| zttool | dahdi_tool | 語音卡檢測、測試 |
| genzaptelconf | dahdi_genconf | 生成Asterisk配置文件/etc/dahdi/system.conf |
| ztmonitor?? | dahdi_monitor | 監控錄音某個通道 |
| ztscan | dahdi_scan | 掃描通道狀態 |
| ztspeed | dahdi_speed | 測試CPU占用率 |
| zttest | dahdi_test | 中斷穩定性測試 |
| ztloop | dahdi_loop | 自環測試E1數字中繼語音卡 |
?
????????dahdi_hardware,顯示檢測到的DAHDI 硬件列表。??
關于Asterisk擴展性的問題一直有很多爭議。下面是OpenSER團隊做的當Asterisk作為SIP?Back to Back User Agent (B2BUA)設備的性能表現。主要目的是:?
?????????????? 1、Asterisk作為 B2BUA使用的時候最大并發能到多少??
????????????????2、每個呼叫占用多少資源???
測試計劃?
????????我們精心設計了一個VoIP話務批發的條件下的網絡環境,Asterisk V1.4.11 當作B2BUA,安裝在一個雙路雙核2.33GHz CPU的服務器上。我們測試了兩次。一次是不做任何編碼轉換的,一次是使用了G.711 到 G.729 的轉換。?
測試結果?
無編碼轉換: 1500個并發呼叫,平均每個口 $2 成本。??
G.711 到 G.729轉換:400 個并發呼叫,平均每個口成本 $17.50???
?
一、沒有轉碼?
????????下面的圖是同時呼叫Asterisk B2BUA的服務器CPU和內存利用率。從B2BUA呼入呼出的所有RTP包通過使用G.711編解碼器。內存利用率是最小的,CPU利用率隨著同時通話的數量呈線性增長。在1560個并發呼叫的時候,CPU利用率達到92%。在2007年初,這個服務器的零售價是3000美元。3000美元的硬件成本除以1500個并發呼叫等于每個B2BUA端口2元。?
??
二、G.711到G.729的轉碼?
????????下面的圖是測試服務器作為Asterisk B2BUA并發呼叫時候的CPU和內存利用率。呼叫B2BUA使用G.711編解碼器,然后利用Asterisk轉碼到G.729。內存利用率是最小的,CPU利用率隨著同時通話的數量呈線性增長。在414個并發呼叫,CPU利用率達到93%。這臺服務器價值3000美元。Digium公司提供G.729編解碼器的許可證版稅是每端口10美元。系統總成本是3,000元服務器硬件加4,000元G.729編解碼器專利費(10元每端口乘以400端口)總共是7,000元。每B2BUA端口的成本是$ 7,000除以400個并發呼叫,每端口17.50美元。?
??
?
測試場景?
????????下圖說明了測試網絡和呼叫情景。Asterisk B2BUA服務器是戴爾Precision 490,兩個Intel Xeon 5140雙核CPU,2.33GHz和4 GB RAM。?
??
?
1、SIPP客戶端的SIP INVITE發送到Asterisk B2BUA。?
2、Asterisk的發送OSP AuthorizationRequest OSP服務器。OSP服務器返回一個OSP AuthorizationResponse隨機順序有五個可能的目的地。??
3、Asterisk的發送SIP邀請到目的地。只有SIPP服務器可以完成呼叫。其他目的地的模擬呼叫失敗。平均而言,Asterisk的嘗試調用前兩SIPP服務器完成調用失敗目的地。?
4、通話結束時,Asterisk向OSP服務器發送一個呼叫詳細記錄(CDR)。?
下載詳細測試文檔點這里:??Asterisk_Performance_as_a_SIP_B2BUA.pdf?(187 K) 下載次數:19?,對需要測試性能的朋友很有幫助的。
elastix是基于asterisk的,它的發行包里也包含有asterisk。 通信能力是asterisk提供的,elastix只是提供了一些外層封裝的應用工具及管理工具,方便使用的那種;你可以理解為asterisk是操作系統,elastix是安裝在操作系統之上的辦公軟件。
總結
以上是生活随笔為你收集整理的Asterisk PBX的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 魅魔php影视系统,魅魔PHP影视系统
- 下一篇: “一对一直播源码开发”运筹帷幄之中,决胜