摘要:首先分析了VoIP系統的組成,介紹了一些開放源代碼的網守項目,也就是VoIP系統的核心--軟交換部分,然后以Asterisk為例,介紹了其安裝與配置,分析了VoIP協議、編碼及終端選用的一些原則,最后以一個小的成本分析為例,分析了VoIP系統的特點及在企業應用中極低的使用成本。
關鍵詞:網絡電話;網絡私有交換機;Asterisk;下一代網絡
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)36-2862-03
A Low-cost VoIP Solution Based on Open Source Software
HU Yao-dong, LI Wan-gao
(Network Management Center, Henan Institute of Engineering,Zhengzhou 451191,China)
Abstract: First,This paper analyzes the constitution of VoIP system, introduce some open source code items of network Gatekeeper,is also the cores of the system of VoIP- soft commutation part, then to take Asterisk as an example,introduce it installs and sets, analyzing the VoIP agreement,coding and the terminal choose some principles for uses,Last is to take a small cost analysis as an example,analyzing the characteristics of the system of VoIP,and very low usage cost in business enterprise apply.
Key words:VoIP;IPPBX;asterisk;NGN
1 引言
通信行業的開源項目不斷涌現打破了傳統電信設備制造商對電信技術的壟斷,也為下一代網絡(NGN)的發展注入了無限的活力。VoIP(Voice over IP)技術,整合數據和語音兩個系統,可以發揮網絡的潛力,極大節約在語音方面的花費,一些跨國、跨地區的公司早已經應用,遍布各地的話吧絕大部分是VoIP應用,如何在已有IP網絡的基礎上低成本地實現VoIP應用?是本文探討的基本目的。
2 VoIP系統的組成
VoIP的基本原理是:通過語音的壓縮算法對語音數據編碼進行壓縮處理,然后把這些語音數據按TCP/IP標準進行打包,經過IP網絡把數據包送至接收地,再把這些語音數據包串起來,經過解壓縮處理后,恢復成原來的語音信號,從而達到由IP網絡傳達語音的目的。從基本原理上我們可以看出,VoIP系統是建立在IP網絡的基礎之上的,IP網絡可以是各種類型的,有線的、無線的,V4的或者V6的,VoIP的基本組成由VoIP終端和網守(Gatekeeper)兩大部分。
VoIP終端,VoIP終端指的是將模擬的語音信號轉換為數字信號并進行壓縮,可以是下列形式之一,單獨的網絡電話機;計算機系統和一個應用軟件;傳統電話機和語音網關(Gateway)。
網守(Gatekeeper):網守指的是指引終端來的IP數據包到接收地,并完成相應的認證計費等工作,類似于傳統電話網絡中的程控交換機。
如果需要VoIP終端和傳統的電話系統互通,還需要網守和傳統的電話程控交換機互通,這種情況通常叫落地或落地網關,從嚴格意義上來說,這已經不屬于VoIP系統的范疇了。
3 網守的選用和配置
網守,又叫軟交換(Soft Switch ),完成此功能的設備通常情況下稱作IPPBX(IP Private Branch eXchange,網絡私有交換機),其實質就是一臺運行網守軟件的聯網計算機。除了私有的PBX應用方案,開放源代碼的PBX應用方案也是數量眾多,常見的有以下幾種:
Asterisk:Linux系統下開源的IPPBX,功能強大穩定,主要用c語言開發。http://www.asterisk.org/
Vocal:Linux系統下開源的SIP服務器端。可以作為IPPBX,也可以作為運營系統。很多VoIP虛擬運營商都用這個作為自己的運營系統。http://www.vovida.org/
YATE:跨平臺(Linux,Windows)的開源SIP服務器端。http://yate.1.ro/pmwiki/
SER:Linux平臺下重量級的SIP服務器斷。功能比較豐富,也是很多VoIP虛擬運營商的系統選擇。http://www.iptel.org/ser/
SIPX:Linux平臺下的SIP服務器。http://www.sipfoundry.org
下面以Asterisk為例,介紹PBX系統的安裝和配置,Digium公司發起的Asterisk是首批開源VoIP項目之一,也是最早的VoIP PBX之一。Asterisk是一個完整的PBX軟件,它運行在Linux,BSD,Window(仿真)和OS X操作系統上,提供了超越你想象的PBX特性,Asterisk支持幾乎所有的VOIP方面的協議和標準電話設備。Asterisk是一個非常成熟的平臺,采用GPL許可證,它支持大企業都希望的VoIP解決方案提供的各種功能,包括語音郵件、呼叫轉移、會議功能,甚至交互語音應答(IVR)等。它還有呼叫詳細記錄,以及適合用于虛擬教室或者虛擬會議室等場合的高級特性。
Asterisk可以運行在很多平臺上,多數情況下建議在Linux系統下運行,比如Fedora或CentOS上,Asterisk主要使用三個包:Asterisk主程序(Asterisk),Zapata電話驅動(zaptel),和PRI庫libpri。如果搭建一個純VoIP網絡,那么只需要Asterisk包;如果使用ztdummy驅動(電話會議使用)作為時間接口,或者使用ISDN PRI接口,則建議三個包都安裝。另一個建議安裝的包就是asterisk-sounds,當Asterisk接收到分別來自各地的呼叫時,asterisk-sounds包給出一個適當的聲音提示。所有這些包都可以通過http://www.asterisk.org/downloads網站下載。
為編譯上面所下載的包,需要安裝GCC編譯器(3.X版本或者更高)以及附屬包。在目前發行的Linux版本上,已經很好的支持了。通常建議先安裝zaptel包,再安裝libpri包,最后安裝Asterisk包和asterisk-sounds包。一般情況下需要解壓縮,編譯,安裝等過程。如果熟悉Linux系統,通常情況下這個過程是比較簡單的。如果需要有針對性的編譯或更高的執行效率,開放源代碼的程序給我們提供了眾多的選項,可以按需定制。
安裝完成后,根據需要加載相應的模塊,最后可以加載Asterisk,加載Asterisk有很多方法,最簡單的方法就是通過Linux命令行接口直接運行二進制可執行文件。如果在系統啟動的時候使用init.d腳本,同樣可以很容易啟動和重新啟動Asterisk,然而,最好的方法是通過safe_asterisk腳本。
Asterisk系統的配置,主要由一些配置文件決定,這些配置文件大部分在/etc/asterisk這個目錄下,但zaptel.conf文件在/etc目錄里。幾個主要的配置文件是zaptel.conf、zapata.conf、extensions.conf、sip.conf、iax.conf等,通過修改這些配置文件,可以方便地定制我們需要的功能。
如果對Linux不太熟悉的話,我們可以使用別人封裝好的安裝包,AsteriskNOW(http://www.asterisknow.org/) TrixBox(http://www.trixbox.org/)和Elastix(http://www.elastix.org/)就是很好的例子,這幾個都是基于CentOS操作系統和Asterisk軟件封裝的安裝包,在其網站下載光盤鏡像文件,刻錄光盤,經過幾個簡單的提示操作,就可完成軟件的安裝。而且提供了方便的web管理界面,配置、管理變得比較簡單了。
如果需要和傳統的電話網互通的話,Asterisk也提供了很好的支持,除了直接找落地運營商外,也可以通過和Asterisk兼容的模擬或數字卡,可以在一定程度上滿足網絡電話和傳統電話的互通。
4 協議、編碼和VoIP終端的選用
目前流行的VoIP協議有以下幾種:
H.323:這個國際電聯(ITU)的協議最初設計是用來為視頻會議提供IP傳輸機制。它成為了基于IP傳輸的視頻會議設備的標準,作為一個VoIP協議,它非常出名。
SIP:會話初始化協議(SIP)暴風驟雨般地占據了VoIP世界,做為在網絡終端的VoIP協議的特別選擇,最初僅認為是一個有趣的想法的SIP現在看起來已經取代了H.323的主體地位。SIP的前提是連接的每個終端是一個對等的實體(Peer),然后他們間進行協議協商。SIP引人注目的是它是一個相對簡單的協議,與它語法類似的協議有HTTP、SMTP等。
IAX:IAX(Inter Astersik eXchange)協議是Digium公司開發用來與其他Asterisk服務器通信的。IAX是一個傳輸協議(非常像SIP),它使用一個單獨的UDP端口(4569)來傳輸通道信號和實時傳輸協議(RTP)流。IAX還具備將多個會話在一個數據流中進行中繼的能力,這在向遠端的設備發送大量通道信號的時候具有極大的帶寬優勢。
MGCP:多媒體網關控制協議(MGCP)來自于IETF。在RFC3435中被定義,它被設計成使終端設備盡可能的簡單,所有呼叫的邏輯和處理都有多媒體網關和呼叫代理處理。與SIP不同,MGCP采用集中模式。MGCP電話不能直接撥打其他MGCP電話,只能通過某種形式的控制器進行。
Skinny/SCCP:Skinny Client Control Protocol(SCCP)專用于思科VoIP設備。它是思科Call Manager PBX中終端的默認協議。
UNISTIM:作為Nortel專有的VoIP協議。
雖然Asterisk對以上介紹的每個協議都可以支持,但在一個特定的環境下對VoIP協議的選擇,仍然是一個比較麻煩的過程,在局域網內部使用,通常建議使用SIP協議,如果涉及到某些終端需要使用NAT訪問網守的話,經常會出現網絡電話沒有聲音的現象,這是由SIP協議本身的限制決定的,雖然有解決辦法,但總歸有些不方便,如果存在網絡電話需要使用NAT訪問網守的情況,建議使用IAX或H.323協議。也可以根據實際情況,混合使用上述協議,Asterisk對此也提供了良好的支持,通常建議大部分用戶使用SIP協議,需要使用NAT的用戶使用IAX協議,可以實現良好的互通。
編碼和解碼通常理解為多種用來數字化(或壓縮)模擬音頻信息的數學模型。不同編碼規則的目的是在效率和質量中取得平衡。G.711、G.726、G.723.1、G729A、GSM、iLBC、Speex等編碼均可以采用,在目前的寬帶接入(大于64kbps)環境下,選擇哪種編碼對音質基本沒有影響。
雖然絕大多數網絡電話機都被Astersik支持,但為了減少一些不必要的問題,建議采用支持SIP或IAX協議的網絡電話機,最好有兩個網絡接口的,能方便接入設備;如果是在計算機上使用的話,也有眾多的VoIP軟件可以選擇,通常建議使用Zoiper(支持SIP和IAX)和X-Lite(僅支持SIP),這兩款軟件都可以在Windows, Mac OS 和 Linux上運行;網關加傳統電話的模式中網關盡量選用支持SIP或IAX協議的,可減少很多不可預測的問題。
5 成本分析
經過上面的分析,我們會發現,在已有局域網的環境下,我們使用VoIP電話僅僅是一些軟件的事情,如果真的像原來內部電話一樣使用,滿足部分對計算機系統不熟悉的人的需求,購買一些數字電話機就可以滿足傳統習慣的使用方式了,而且提供了超越傳統電話很多的功能。目前市場中支持SIP協議的網絡電話機的價格基本在300元左右,可以很方便的購買到。
我們分析一下常用的Cisco公司的VoIP系統的組成:網守軟件Cisco Callmanager,網絡電話機Cisco 7960/40/10等,Cisco AS5300網關等組成,使用的Cisco公司自己的私有VoIP協議Skinny/SCCP,在全Cisco環境下,使用是比較方便的。在一些對VoIP用戶需求數量不大的情況下,Cisco公司在其部分路由器中集成了VoIP功能,通過安裝對應的語音模塊,實現簡單的VoIP功能。
我們以具有200部傳統電話的部分為例,分析一下使用傳統電話和VoIP電話的成本的差異。
傳統電話的使用費用,按一個月每部電話的月租加使用費200元計算,200部電話的月使用費大約在四萬元左右。按統計學一般規則,內部的交流應該占到80%,也就是說內部交流的月使用費在三萬兩千元左右。
使用VoIP電話的成本,內部通話的成本基本為零。
設備成本,在Cisco公司提供的VoIP方案中,使用了其自己的私有協議(通過更新Fireware也可以支持其他協議),和其他廠商的互通中存在一些問題,我們僅以其網絡電話機7960/40為例,其價格大約在3000元左右,且其使用了自己的POE供電標準,基本被市場淘汰。目前市場中常見的網絡電話機絕大多數支持常見的多種VoIP協議,價格在300元左右。
6 結論
隨著通信行業開源項目的發展,企業可以用較低的投入在IP網絡上提供VoIP增值服務,例如電話會議、語音信箱、交互式語音應答、呼叫隊列、振鈴組等超越傳統電信服務的內容。從而提高企業的綜合業務能力,VoIP以極低的使用成本,迅速得到了普及,對于傳統的電信運營商,也在試圖通過一些辦法(如集團內部通話不計費等)延長傳統電話的使用。另外VoIP電話自身的一些硬傷(如在斷電的情況下不能提供服務等)也影響了普及的速度,所以目前VoIP電話仍然不能完全取代傳統的電話。但是,隨著通信技術的發展,隨著NGN網絡的推進,隨著無線網絡的推進,三網合一,全IP網絡的時代終要到來,語音免費的時代也終將到來。
參考文獻:
[1] Jim Van Meggelen. Leif Madsen. Jared Smith. Asterisk:The Future of Telephony(Second Edition)[M]. O'Reilly Media,Inc.,1005 Gravenstein Highway North, August 2007.
[2] Asterisk Development Team, Asterisk Reference Information Version1.6.0[DB/OL], http://www.asterisk.org , October 1,2008
[3] Gomillion. B Dempster. Building Telephony Systems with Asterisk[M]. Packt Publishing,September 30,2005.
[4] Paul Mahler. VoIP Telephony with Asterisk[M]. Signate, July 2004.