最近有個非常熱門的話題, PChome 大力推廣Skype, Skype 屬於P2P, 但是非標準, 在此小弟主要想介紹一個支援SIP 協定的網路電話閘道器SIPURA SPA-2000, 同時順便介紹一些免費的SIP 軟體電話, 以便提供您選擇上的參考
在進入硬體介紹之前, 小弟建議您不妨先從軟體SIP Phone 入門, 既不用錢, 又可以先累積經驗, 首先推薦給您一個全美最大的一個免費ITSP 社群FreeWorldDialup, 簡稱FWD
www.freeworlddialup.com
要使用網路電話, 您最好能夠擁有一個號碼, 換句話說, 也就是加入一個社團, 而且是愈大愈好, 嚴格來說, 如果您不介意使用難以記憶的IP 以及Port number 的話, 對於固定點對點並非絕對必要, 但是對於位居防火牆之後, 則您會需要一個Operator, 如同各種Messenger 一樣, 加入社團可以方便您呼朋引伴, 如果又是免費的, 則何樂而不為? 要證明FWD 具有相當規模, 可以由許多免費的USA & UK Access Number (後續會提到), 以及它也獲得許多ITSP 的連接而得到證明, 其實有些ITSP 也提供免費註冊, 只不過免費用戶只能網內互打, 不能使用該ITSP 的網路打到PSTN, 後續也將說明為何FWD 的服務勝過其他免費的ITSP, 您所需要的支援, 大致都可以從FWD 的FAQ & Forum 得到解答
SIP 協定類似HTTP, 因此很平易近人, 軟體上相較於H.323 也比較容易撰寫, 所以近一年來可以說是百花齊放, 在此您可以找到各種舞台上的Software SIP Phone
http://www.freeworlddialup.com/suppo...ware_downloads
包含Windows/CE, MAC, Linux, 小弟要特別推薦的是Xten's X-Lite 和SJLabs SJPhone, 前者就像是一個可接三條外線的交換機, 而後者除了支援SIP, 還支援H.323, 可說是跨平台的最佳選擇, 小弟測試過SJPhone 連接NetMeeting 毫無問題, 但是如果您不需要H.323, 小弟建議您從Xten's X-Lite 入門, 不要小看這樣一個免費軟體, 雖然是免費的, 但是它的功能比起它的老大哥X-Pro 可說毫不遜色, 如果您不熟悉其中的設定, 建議只要下載適合於FWD 的專用版本, 如果您有興趣深入研究的話, 不妨改到原廠網站下載通用版本, 然後到這裡找尋設定方法, 以便針對個別的ITSP 制定不同的Profile
http://www.freeworlddialup.com/content/view/full/274/
或者下載專為FWD 設計的Netcheck.exe, 可以幫助您更快速找到符合您的環境設定, 通常使用網路電話最不容易搞定的就是NAT/Firewall, 比方說, 如果要支援Windows/MSN Messenger, 您必須要有支援UPnP 的NAT, 然而對於SIP 來說, 情況單純許多, 只要根據不同的軟硬體允許某些UDP Packet 通過即可, 最差的情形是透過Outbound Proxy Server, 代價是可能會犧牲通話品質, 您可以到各原廠網站下載使用手冊, 以便瞭解防火牆所需開啟的通訊埠, 舉例來說, X-Pro 手冊Page 36 提到
Table 4 - Required Ports
Port Type and Number Service
UDP 3478 STUN
UDP 5060 SIP
UDP 8000 RTP
UDP 8001 RTCP
X-Lite/X-Pro 比SJPhone 複雜之處在於提供了3/6 條外線, 每條外線開啟一對RTP & RTCP, 預設是8000 & 8001, 要能同時接聽三線電話, 則必須開放連續6 個Inbound UDP port, 8000-8005, 對於第二個X-Lite, 則必須開放5061, 8006-8011, 依此類推, 在此所謂 "同時", 指的是一線接聽, 兩線保留, X-Pro 除了擁有六條外線之外, 還支援三方通話, G.729a 等, X-Lite/X-Pro 支援十個帳號, 坦白說, 雖然不算創舉, 但也是一大突破, 想想看, 要同時執行兩個MSN Messenger 還得去尋找破解, X-Lite/X-Pro 在觀念上確實值得效法, 就好比您只有一支手機, 但卻有兩個以上的號碼, 因此可以變化出許多用法, 這些X-Lite/X-Pro 做到了, 因此才會成為Soft SIP Phone 首選, 希望Draytek & SIPURA 也能考慮把此項功能加進去
Netcheck.exe 可以幫助您瞭解NAT/Firewall 的型態, 基本上它的功能就是連接FWD 的STUN Server, 您也可以在X-Lite/X-Pro 設定STUN, 然後觀察Diagnostic Log, 目前較常遇到的就屬於Port Restricted Cone NAT, 如果您的社區防火牆是屬於此類, 而且UDP 5060 & 8000 都Open, 那麼您就不必勞動到管理員, 少數屬於Symmetric NAT, Draytek 的Vigor 就是此類, 如果開放UDP 1024-65535 之後, 就成為Port Restricted Cone NAT, 這個設定在Router Web Configurator > Advanced Setup > NAT Setup > Open Ports Setup 之下, 有Vigor 的網友請留意, 至於您打算採用何種設定, 請參考
http://www.freeworlddialup.com/support/faq/networking
http://www.voip-info.org/wiki-STUN
對於剛入門的網友, 小弟建議設定由STUN 偵測NAT 型態, 採用STUN 的缺點是每一次撥號都需要花費5~10 秒在NAT 的偵測, 而且在極少數情況下, 可能因為連線不穩定而誤判NAT 的型態, 結果就是只能發話不能收話, 如果STUN 無法正確判斷NAT 型態, 您可以改用Outbound Proxy, 由於FWD 提供Outbound Proxy, 這也是小弟推薦的主要原因(iptel.org 也有提供), 通常只有付費取得的帳號才會提供Outbound Proxy, 使用Outbound Proxy 有一個先決條件, 連線到Outbound Proxy 要夠快, 這是因為不論發話或收話, 只要有一方使用Outbound Proxy, 則雙方的連線就必須完全經過Outbound Proxy, 如果任何一方連線到Outbound Proxy 不夠快, 就會造成語音品質不佳, 這點尤其有任何一方在彼岸則更為明顯, 因此本文重點會放在如何達成Peer to Peer, 而非Centralized, 以下是FWD 的各種設定方法
http://www.freeworlddialup.com/content/view/full/274/
小弟並未仔細研究專為FWD 設定好的版本(X-Lite/SJPhone), 以小弟觀察SJPhone 的FWD 版的心得, 可能就是使用Outbound Proxy, 所以建議您在熟悉操作方法之後, 不妨到原廠網站下載通用版本, 除了使用專用的SIP Phone 之外, 如果您的OS 是Win2000/XP, 您還可以使用Windows Messenger 4.6/4.7/5.0, MSN Messenger 不同於Windows Messenger, 目前MSN Messenger 4.6 以後的版本不支援其他通訊協定(SIP), 因此不能設定FWD 帳號, 而使用Windows Messenger 的好處是, 如果您平常就有使用Messenger 的習慣, 那麼就不需要多安裝一套X-Lite or SJPhone, Windows Messenger 設定FWD 帳號方法如下
http://www.pulver.com/fwd/quick/index.html
http://www.iptel.org/~jiri/etc/ms/msn.jpg
其中有一個小小錯誤, 如果您在NAT/Firewall 之後, 則建議採用Domain name, 如fwdnat.pulver.com:5082, 而不是IP 的形式
採用專屬SIP Phone 而不用Windows Messenger 的優點是, 可以自行指定Codec 的順序, 這對於頻寬有限的網友來說就很有用, 通常免費的SIP Phone 只支援G.711u/a & GSM 等Codec, G.711u 所需頻寬最高, 因此GSM 可能是較佳的選擇, 然而Windows Messenger 5.0 支援G.711u/a, G.723, 而且不確定順序為何, 通常應該是G.711u 優先, 由於細節過於複雜, 請自行研究
http://www.voip-info.org/wiki-Codecs
當一切都安裝妥當, 接下來就是測試, 以確定是否仍然受到防火牆的阻礙, FWD 提供兩個測試號碼612 & 613, X-Lite 的用法很直接, 在此只介紹如何使用Windows Messenger 撥號
執行 > 啟動語音交談 > 其他 > 輸入電子郵件地址 > FWD no. (選擇SIP 通訊服務, 則會自動加上 @fwd.pulver.com)
612 (對時)
613 (Echo Test)
或
[email protected]
[email protected]
您可以將以上地址加入聯絡人之中, 然而無法反映出聯絡人是否上線, 這是受限於NAT 的關係, 無論對方是否上線, 都可以利用上面的方法撥號(開始語音交談), 對方無法接受就代表未登入FWD, 如果無法聽見612/613 的語音, 則很可能還是NAT 的問題, 改用Outbound Proxy 應該就可以解決
至此您也許已經可以開始啟用X-Lite or SJPhone, 甚至Windows Messenger, 然而效果要好, 您必須能夠解決NAT 的限制, 或者使用STUN, 而盡量避免使用Outbound Proxy, 要瞭解其中的細節, 您最好學會觀察Diagnostic Log, 小弟在此推薦X-Lite 的log, 可以幫助您瞭解整個協議的過程, 如果您的NAT 也有log,
您不妨對照NAT Active Session, 它提供了本地IP:Port <> NAT Pseudo Port <> 遠端IP:Port, 對於有心想瞭解SIP 是一大幫助, 小弟請大家觀察X-Lite 的log, 其中最重要的一項是Send 之下的 Contact,
Contact: "FWD-no" <sip:[email protected]:rport>
Contact 在Peer to Peer 之下是非常重要的項目, 它傳遞了您的IP 以及所開放的RTP Port, 設定錯誤所導致的結果, 常見的有,
1. 使用虛擬IP
2. rport 不同於NAT Pseudo Port
使用虛擬IP 還是可以向SIP Proxy 註冊, 但是會得到警告訊息, 這點只能由log 看出來, 當與遠端建立連線, 結果無法收話, 因為遠端無法傳遞到你的虛擬IP
其次, 上一節提到NAT Active Session, 本地IP:Port <> NAT Pseudo Port <> 遠端IP:Port, 如果您的Vigor 並未開放本地IP:Port, 您就會發現與NAT Pseudo Port 不同, 所以當您告訴遠端連入WAN IP:Port, 事實上應該連入的是NAT Pseudo Port
以上所要處理的其實就是SIP Header 中的Via, 當你用虛擬IP 向SIP Proxy 註冊時, SIP Proxy 會回傳NAT 所使用的rport 和WAN IP (received), 所以只要軟體能夠解讀Via 內容, 就能將正確的Contact 回傳給受話的另一方, 如果您所使用的軟體沒有辦法解讀Via 內容, 那麼您也可以使用STUN, STUN Server 就是在輔助Client 判讀WAN IP:rport, 如果不靠STUN, 其實X-Lite 使用了一個賤招來判別WAN IP, 方法就是連接ip.xten.net:80, 這個方法並不恰當, 也難怪X-Lite 被誤認有回傳使用者資訊之嫌
由於小弟並非VoIP 的專業人士, 只不過有感於市面上雖然免費軟體不少, 然而很少能夠教導大家如何達到Peer to Peer 的精髓, FWD 的資源其實有限, 如果大家只會使用FWD 的Outbound Proxy, 最後很可能抱怨連連, 以上還只是對於Soft SIP Phone 的介紹, 重點在於下一節即將介紹, 便宜又大碗, 真正有希望讓VoIP 普及的SIPURA SPA-2000 (不是Skype!), 雖然已經構思許久, 為免傳達錯誤的訊息, 因此遲遲未發表, 此外, 小弟直到上週末才真正搞定X-Lite & SPA-2000 在NAT 的相關設定, 終於可以把三個月來的心得集結在一起, 用詞造句不夠專業, 謬誤也在所難免, 敬請不吝指正
對於VoIP 硬體您可以參考小弟的另一篇討論 - 請推薦網路電話閘道器(Internet Telephony Gateway, ITG)
http://www.pczone.com.tw/showthread.php?t=85722
如果您在彼岸有分公司, 請不妨參考
http://www.pczone.com.tw/showthread.php?t=126832
補充: (2009-03-15)
新朋友如果從頭看起的話, 提醒您, FreeWorldDialup 已經開始收費, 所以對於免費的ITSP 小弟改推薦 Gizmo5/SIPphone, 背後支持Gizmo5 的就是SIPphone, SIPphone 具備完善的Network Number, 包含會議室, 衷心推薦給您
書籤