在服務器的配置文件「AnyChatCoreServer.ini」中網絡配置部分,「RoutingPolicy」字段表示了P2P數據路由傳輸策略的配置信息,可取值分別表示: 服務器
1 服務器轉發模式, 全部數據傳輸均由服務器轉發(禁止P2P);網絡
2 P2P直傳模式,NAT穿透成功的用戶之間互傳,穿透失敗的用戶由服務器轉發,該策略適用於局域網使用;(默認)測試
3 P2P路由模式,P2P網格傳輸,由服務器以房間爲單位,根據當前房間各用戶NAT穿透狀況、網絡帶寬等狀況,動態生成一份網格路由表,流媒體數據按路由表傳輸,該策略適用於互聯網使用。(目前還處於測試階段)優化
1、服務器轉發模式spa
該模式下全部數據均由服務器轉發,客戶端之間不進行P2P網絡鏈接和數據傳輸,適用於局域網帶寬充足、要求低延遲的應用場景,該模式下對服務器的帶寬要求較高,但延遲較小。視頻
2、P2P直傳模式 xml
該模式下,客戶端之間會互相嘗試P2P鏈接,若是P2P鏈接成功,則數據走P2P通道傳輸,若是P2P鏈接失敗,則數據走服務器轉發,該模式相對於「服務器轉發模式」,將節約一部分服務器端的網絡帶寬,並且延遲也相對較低,適合於互聯網上同一個房間在線人數很少(少於10用戶)的應用場景,由於若是在線人數過多,將會形成用戶端的網絡擁塞。舉一個極限狀況下的例子:若是一個房間10個用戶,並且用戶之間P2P所有是能夠連通的,則其中一人的數據須要複製9份,分別傳給其它9個用戶,這種狀況下對服務器幾乎無網絡帶寬壓力,而用戶端的網絡帶寬佔用卻很高。blog
3、P2P路由模式 路由
P2P路由模式是一種適用於大規模即時通信應用(如同一個房間上百人的視頻聊天室、網絡視頻在線互動直播等)的數據傳輸模式,目前在網絡電視、在線直播等非實時性領域應用較多,其基本原理是數據從A用戶傳遞出來,傳到B用戶,而後B用戶再傳給C用戶,而不須要A用戶直接傳給C用戶。使用該模式將極大的優化網絡帶寬壓力,讓數據走P2P傳輸,較少的佔用服務器帶寬的同時,又不會阻塞用戶端的網絡通道,但其反作用即是延遲的成倍增長。目前網絡電視直播即是採用P2P路由模式,可是在播放前均會緩衝30s-60s的數據,而後纔開始播放,目前國內不多有產品能實現即時通信領域應用P2P路由模式,AnyChat便首開先河,在國內率先推出及時通訊領域的P2P路由模式應用,將延遲控制在1-3s,該項技術的成功應用,將使得AnyChat的核心競爭力更加加強。直播
在P2P路由模式下,有兩項重要的配置參數「RoutingTTL」和「RoutingMTN」,客戶可根據應用進行調節,這兩項配置參數的詳細說明以下:
RoutingTTL: 流媒體數據通過網格傳輸時的最大生存期,每通過一箇中間用戶轉發,生成期減一,爲0將再也不繼續轉發,該配置項當RoutingPolicy=3時有效,設置較大時,會較大的減輕服務器帶寬壓力,但會帶來末端用戶接收數據延遲時間增長的後果。
RoutingMTN: 流媒體數據通過網格傳輸時,中間節點最大包轉發路數(通俗的講,就是任意節點最多可服務的後續節點個數,如當設置爲4時,表示任意用戶可向其它4個用戶轉發數據),該配置項當RoutingPolicy=3時有效,設置較大時,會較大的減輕服務器帶寬壓力,但會佔用用戶較多的出口帶寬(由於須要向其它用戶轉發數據),當用戶自己網絡情況較差時,會影響後續用戶的接收效果。