基本概念
很多協議與語音通信相關,我們只是簡要地提及其中的一部分。在沒有任何使用於單純網路電話 (VoIP/IP PBX) 應用的其他硬體的加入情形下,此電話系統也能被使用。它需要其他的介面卡,才能去接合那些舊式的電話專用交換總機 (Private Branch eXchange, PBX) 或類似的電話,除非那些設備也是使用經由乙太網路界面的通信方法。
了解從哪裡發送訊息去抵達目的地,是任何通信設備的基本通信運作原理。該伺服器是作為一個通訊箱,這樣其他的終端用戶可以認知到它,知道在此處可以發送訊息到其他地方。從功能要點來看,所有發送語音流至伺服器的終端用戶設備遵循特定的協議,我們可以將它們都稱作“電話”。通常,那些在多用途的電腦上運作的語音通信被歸諸為“軟體電話”;而那些主要功能是語音通信的硬體設備則被視為“硬體電話”,但說是硬體電話實際上在電話裡面也是有部分的軟體在運轉的。
簡而言之,我們只需透過通信協議來鑑別這些電話。比如,那些運作會話起始協議 (Session Initiation Protocol, SIP) 的電話,我們稱之為“SIP電話”;那些運作Asterisk內部交換協議 (Inter-Asterisk eXchange, IAX) 的電話,我們就將它們稱作IAX電話,而不管它們究竟是“硬體”電話還是“軟體”電話。
SIP是網際網路工程任務小組 (Internet Engineer Task Force, IETF) 提出的一種協議,用於建立、修改和終止VOIP電話通話的IP電話信號協定。IAX協議最初是由一個開放原始碼的PBX server Asterisk發展出來的,我們通常所說的“IAX”,實際上是指“IAX2”,因為IAX協議的原始版本一般不太為人贊同。我們在此文件中將使用“SIP電話”或“IAX電話”來表述那些終端用戶設備或程式。
許多供應商提供SIP的硬體電話,也就因為這樣,SIP電話比PC更容易讓人去使用。不過,在一個擁有NAT的邊界控制路由後配置一台SIP伺服器會有一些問題存在。SIP使用UDP通訊埠5060去建構最初的連接,如果它在邊界控制路由後,那可以透過“傳輸埠轉送”來克服這一問題。RTP(即時傳輸協議)的語音流,通常是使用UDP通訊埠8000至30000來傳輸的。所以,通常您也只能使用“Full NAT”來向邊界控制路由外的網路曝光伺服器,而非僅開啟部分的通訊埠。不過在此系統設定中,我們使用UDP通訊埠10000至20000來當做系統預設值,以SIP連線追蹤(SIP connection tracking)的方式,隨機選擇任一個通訊埠開啟,運用交握的技術建立通訊溝通管道,由於是隨機開啟的通訊埠,故可避免“Full NAT”伺服器大量曝光被攻擊的風險。
建置在邊界控制路由之後的SIP主機,必須做一些調整與設定,而這些設定的項目,不一定只在此台主機上,而有可能也需要在別的地方做調整。
還有另外其他的方案是,針對IAX電話,當從邊界控制路由外的網路連接過來時,僅需要開啟UDP通訊埠4569。請將邊界控制路由事項列入您的考慮範圍。
替代的方案是,針對IAX電話,當從邊界控制路由外的網路連接過來時,僅需要開啟UDP通訊埠4569。請將邊界控制路由事項列入您的考慮範圍。
在深入到更多細節之前,我們用此基本佈局去建構一個IP PBX影音通訊。
下圖是非常簡單的架構︰SW是語音通信伺服器,若干“電話客戶端程式”連接至SW,所以如果系統完全配置好,它們可以“呼叫”彼此。
例如,如果A的分機號碼是7111,而B的是7112,那A處的用戶可以撥7112去聯繫B處的用戶。如果B沒有應答,您可以在SW上做一些配置,使A可以留言給B。
您也可能要聯繫另一台伺服器上的用戶。那可以考慮使用下面的配置。在下圖中,SW1和SW2是語音伺服器,A、B、C、D是電話客戶端,A和B連接至SW1,C和D連接至SW2。
每個伺服器可以單獨配置,您可在SW1這樣設︰
A的分機號碼: 7111
B的分機號碼: 7112
同樣地,在SW2,您可設定︰
C的分機號碼: 7111
D的分機號碼: 7112
一開始,SW1和SW2這兩個系統是各別獨立工作,所以SW1上的A可以撥7112聯繫到B,SW2上的C也可以撥7112聯繫到D。但我們會碰到SW1上的A要聯繫SW2上的D這樣的需求。此時,我們需要創建SW1和SW2之間的連接,這樣如下圖所示,SW1和SW2之間可以彼此進行電話呼叫。
如果您想要聯繫SW2,可以在SW1上先撥打“371”。這樣,對於A用戶來說,如果撥打7112,那可以聯繫到B,如果撥打3717112,那就可以聯繫到D了。在SW2也是如此,您可作相似的設定,即在撥打到另一台伺服器前先要撥打某些號碼。當然,SW1和SW2必須要免除某些驗証,從而允許來自彼此的呼叫進入。我們將透過Web 畫面介紹如何操作。此時我們只是關注“思考”如何去作計畫。
在上面的圖表中,如果SW1和SW2屬於不同的公司,它們可以有不同的撥打計畫。但如果它們屬於同一個公司,那必須要有個整體的統一的撥打計畫,這樣更易使用戶了解如何撥打。
在下面的圖表中我們引進了稍多一些的語音伺服器,使情形變得更複雜一些。SW1、SW2、SW3、SW4每個節點,都擁有各自的計畫去直接呼叫其他伺服器。圖表中的紅色連接箭頭表示該伺服器可以向其他伺服器送出呼叫。有時候,類似於SW1、SW2、SW3、SW4這樣處於不同公司不同人管理之下的情形,是沒有辦法避免的。
但在同一個公司內部,您大概需要考慮採用下圖中的層級架構。SW0決定著將到達的呼叫發送至哪個目標伺服器。如果這些呼叫未表明它們從何而來,其他所有伺服器都將呼叫發送給SW0。這樣做的缺陷是︰如果SW0癱瘓了,所有的電話呼叫都無法透過這些伺服器傳遞。
如果您手頭有數量眾多的用戶,那些情形無疑都是需要被考慮到的。語音通信與電子郵件不同,它幾乎是即時的應用,所以極易受制於CPU的處理能力或是網路的頻寬。設計一個撥打規劃來避免用戶需要撥打一長串號碼才能聯繫其他人的狀況,是稍微有點棘手的。
|