致 從Skype看VOIP的技術優勢
所謂P2P(Peer to Peer),其最本質的含義即“對等”,該技術最早是用于網絡中對等節點之間的資源和信息共享的技術,通常人們所知道的是將P2P技術用在文件下載過程中,即網絡上的對等終端在下載共享文件的同時又作為一個“種子”為其他對等終端提供資源和信息。后來,Skype在網絡通話業務系統中靈活應用了該技術。由于沖擊了傳統通信領域,Skype在引起很多爭議的同時也使人耳目一新,可以說,Skype是發展和演進了的P2P應用。目前對于P2P技術還沒有規范的定義,結合其已有的應用,就更廣泛的意義而言, P2P技術是指網絡中的所有節點都動態參與到路由、信息處理和帶寬增強等工作中,而不是單純依靠服務器來完成這些工作。
Skype是P2P技術演進到混合模式后的典型應用,它結合了集中式和分布式的特點,在網絡的邊緣節點采用集中式的網絡結構,而在超級節點之間采用分布式的網絡結構,混合模式的P2P網絡模型如圖1所示。

從網絡模型來看,這種混合模式的P2P是經過多年的發展和演進而來的,嚴格講,這已經不是純粹的對等網絡結構了,只能稱做發展了的P2P。下面就介紹一下采用混合模式P2P網絡模型的Skype的通信原理。
Skype的通信原理
1. Skype網絡結構
與常規的電信業務網絡不同的是,Skype的網絡中除了注冊服務器,沒有其他任何集中的服務器,只是將用戶節點分為普通節點和超級節點。Skype的系統連接結構如圖2所示。

注冊服務器是Skype惟一需要維護的設備,它負責完成客戶端的注冊,存儲并管理用戶名和密碼信息,當用戶登錄系統時,對用戶進行身份認證。注冊服務器還需要檢驗并保證用戶名的全球惟一性。
普通節點即普通主機終端,只需要下載了Skype的應用,就具有提供語音呼叫和文本消息傳送的能力。
超級節點實際上是滿足某些要求的普通節點,這些要求包括:具有公網地址、具有足夠的CPU、存儲空間足夠大、具有足夠的網絡帶寬。也就是說,任何符合條件的主機終端都可以成為超級節點,當然前提是加載了Skype應用。
2. 通信流程
Skype的通信流程分為:啟動、注冊(認證)、查找用戶、呼叫和釋放的過程。其中注冊流程只是在用戶初次安裝了Skype的客戶端軟件后進行注冊,后期使用的過程中該步驟就變成認證過程。
(1)啟動流程
Skype的用戶終端啟動時,采用HTTP協議連接到注冊服務器,用戶初次安裝的啟動流程中攜帶“installed”的參數,使用時啟動流程則在消息中攜帶“getlatestversion”參數,具體流程分別見圖3和圖4。


(2)注冊(認證)流程
注冊(認證)流程可能是Skype所有流程中最復雜的一個,用戶啟動Skype后,首先需要連接到超級節點,通過超級節點向注冊服務器發送身份認證信息,注冊服務器驗證用戶名和密碼的合法性,然后向其他對等節點及其好友發送在線信息,同時還需要判斷該終端所在私網的NAT和防火墻類型。如果該終端先前默認的超級節點已不可用,則還要查找具有公網地址的Skype節點來作為該終端的超級節點,從而維持該終端與Skype網絡的連接。
一旦超級節點都不可用,Skype的客戶端采用了盡力而為的方式進行注冊,即先用UDP包試注冊,不成功超時則用TCP(80端口),再不成功則用TCP(443端口)。通常為防止其超級節點不可用,客戶端必須建立一個可選連接節點列表,并定期維護該列表。
對于該流程通常會產生下面幾點疑問:
- 初次登錄時如何連接到超級節點?
我們發現,用戶初次安裝了Skype客戶端軟件后,該客戶端的主機緩存中就已經初始化了一個包含至少7個IP地址和端口組的列表,這些地址和端口組所代表的便是初始的超級節點。
- 如何向好友發送在線信息?
由于Skype采用路由緩存機制,即用戶查找其好友的過程中會在中間的超級節點緩存其路由信息(緩存72小時),因此用戶登錄后,其狀態信息可以通過其超級節點通知到好友終端,并將好友的狀態返回給用戶。一旦緩存超時,需要通過其他超級節點查找用戶路由,這充分體現了Skype的用戶路由信息動態分布式存儲的特點。
- 如何判斷NAT和防火墻類型?
客戶端軟件采用各種STUN協議與超級節點之間交換信息,從而判斷終端所處私網的NAT和防火墻類型,客戶端軟件還采用定期刷新機制來保證任何時候都能穿越NAT和防火墻。
Skype采用了一種稱做全球索引(Global Index)的技術來查找用戶,該技術結合前面所述的分層網絡,超級節點之間采用全分布式的連接,每個超級節點具有最小時延前提下所有可用的用戶和資源的全部信息。具體來說,Skype采用了下面兩種機制來保證順利完成用戶的查找。
- 啟動后向所有列表中的用戶發送其上線信息,其他用戶響應各自的信息;
- 在中間節點緩存查找到的用戶信息
對于有公網地址的客戶端,其查找用戶的過程如下:點擊發送要查找的用戶信息->通過SN獲取四個節點地址->不成功->報告SN->獲取八個節點地址->……->成功(或失敗返回)。
對于那些位于私網內的受限客戶端,其查找用戶的過程則是首先客戶端將需要查找的用戶信息發送給其SN,然后由SN完成查找后返回給私網內的客戶端。
(4)呼叫建立和釋放
查找到希望連接的用戶后,可以將其加入好友列表,Skype用戶可以隨時與在線的好友進行呼叫。經過了稍微復雜的認證過程和用戶查找過程,呼叫建立和釋放的過程就變得簡單了。用戶位于公網和位于私網內部的情況會有所不同,兩種情況下的呼叫建立和釋放流程分別見圖5和圖6所示。


從上述流程圖可見,Skype的呼叫信令都采用TCP封裝,而媒體流則使用UDP封裝,當有任何一方用戶位于限制UDP包的防火墻內時,媒體流就會采用TCP封裝。另外當Skype用戶至少有一方位于私網內時,所有的信令和媒體消息都經過一個或多個中間節點轉發。此時無需擔心用戶通話的媒體流因為經過中間節點轉發而被竊聽,因為Skype采用了對消息進行端到端加密的機制。
Skype的技術優勢
Skype之所以引起了不小的轟動,是因為它的互聯網特性,即免費、開放和較好的業務質量。事實上,Skype最大的意義在于,它開創了將P2P技術引入到話音通信的先河。也就是說,采用了網絡中的所有節點都動態參與到路由、信息處理和帶寬增強等工作中的機制,而不是單純依靠服務器來完成這些工作,因此其管理成本大大降低,同時又保證了語音質量。
從具體技術的角度來看,Skype的優勢有下面幾點:
(1) 較強的NAT和防火墻穿越能力。首先識別NAT和防火墻類型,然后通過動態的選擇信令和媒體代理,從而輕松實現NAT和防火墻的穿越。
(2) 快速路由機制,Skype采用了全球索引(Global Index)技術提供快速路由,其用戶路由信息分布式存儲于網絡節點中。
(3) 結合互聯網特點的語音編解碼算法。Skype通過與Global IP Sound公司合作,引入語音質量增強軟件,專門針對互聯網的特點,從而降低了業務對帶寬的要求。
(4) 很低的運行成本。很顯然,Skype將很多工作下放給網絡節點去完成,大大地降低了中心服務器的負擔,進而減少了維護和管理的成本。
(5) 開放性。Skype采取開放的機制,鼓勵互聯網用戶自己開發插件,目前此類開發如雨后春筍,在互聯網上遍地開花。
其中第1條保證了通信無障礙,無論終端處于何種網絡條件,都不會影響用戶使用Skype提供的業務。第2條和第3條則保證了Skype較好的業務服務質量。第4條使得Skype可以輕松面對挑戰。而第5條則給了Skype更強大的生命力,使其更加靈活,具有更高的可擴展性。
Skype給電信運營帶來的思考
Skype的出現無疑給傳統電信業帶來一股強烈的沖擊波,它從2003年下半年出現以來便廣為流傳,截至目前,Skype全球注冊用戶數已達2.5億,每天增加的會員有15.5萬人,而到2005年3月14日為止,Skype在全球的通話量累計已經達到60億分鐘。Skype仍在迅速向各個國家滲透,最新的統計表明:使用Skype技術呼叫的分鐘數已經占到美國VoIP分鐘數的46.2%,這部分用戶基本是“免費”享用電話業務的。
Skype畢竟是一種互聯網服務,而不是真正的電信服務,它也存在一些問題,比如網絡的無管理性使得它只能通過這種免費的方式走向市場,企業用戶也會因為擔心它的安全隱患而不采用等。但是無論如何,Skype的理念很可能給傳統的電信市場帶來突破性的變革,也引起業界對于VoIP的新的思考,傳統電信運營商決不可忽視其挑戰。
首先,對于VoIP的態度問題,該積極應對還是消極回避?答案已經非常明顯——微軟公司的總裁曾說過這樣的話:即使沒有Skype,也會有另一個提供互聯網電話的企業出現。我國在上個世紀90年代末成功地開展了VoIP的電信運營,到現在市場基本穩定,普通用戶對IP電話已經不再陌生,然而幾年來VoIP的電信運營卻沒有繼續發展,幾乎有點停滯不前了。事實上,VoIP應該具有更廣闊的空間和更靈活的表現形式。
技術的進步往往是不可阻擋的,尤其是互聯網帶來的開放時代,給了新技術更廣闊的發展空間,你不發展,別人會發展,因此國內電信運營商應該積極地邁出這一步。
VoIP的發展可以采取開放的思路,Skype的成功也有一些可借鑒之處。首先,積極研究P2P技術的利弊:一旦將P2P技術引入可運營的VoIP系統,在降低運營成本、具有更高的網絡可靠性(不依賴于集中的服務器)的同時,是否會帶來不可預知的壞影響?另外,VoIP并不代表人們通常所理解的“低收費就一定提供低質量服務”,電信運營商可以結合IP網絡的特點,引入相應的技術,來保證可靠的服務質量。最后,VoIP完全可以開發并向用戶提供更豐富的業務形式。