美圖欣賞 | 設為首頁 | 加入收藏 | 網站地圖

當前位置:電腦中國 > 網絡 > 路由交換 >

打個聯機游戲,為什么你的網絡老出岔子?

2019-12-31 14:49|來源:未知 |作者:dnzg |點擊:

那些喜愛對戰、共斗的玩家,經過這么多年的磨練,想必早已對稀奇古怪的網絡問題見怪不怪。

 

考慮到國內復雜的網絡環境,以及運營商本身服務端的設置,如果用戶不進行對應調整,聯機游戲和線上游戲的體驗往往不怎么順暢。但圍繞防火墻、帶寬、網絡提供商、地理位置等元素,每一種麻煩似乎都有個殊性。

 

比如《怪物獵人 世界》剛剛發售時,掉線的情況屢見不鮮,又比如讓《最終幻想14》玩家深感鉆心之痛的錯誤代碼 —— “90002”和“2002”。讓人困惑的是,它們是否有共通的成分?有沒有一套一勞永逸的解決“公式”?若是從網絡工程師的角度出發,專業人士又會如何審視這些問題?

 

 

 

物理的極限

 

“首先,所有玩家在聯機的時候都存在一個物理延時問題,這個是所有人避免不了的,大家都距離很遠,不管玩家和玩家之間,還是玩家和服務器之間都會存在這種問題。比如你玩美服的時候,相當于圍著地球繞了半圈,從中國到美國,裸光纖都是 10000 公里以上,你就是乘著光速跑也要 100ms+。”

 

在向奇游聯機寶的工程師請教時,對方拋出了最為基礎的前提:傳輸延遲。

 

100ms 換算過來是 0.1 秒,盡管看起來很短,但對于某些強對抗的游戲而言,玩家已經能感受到明顯的區別了。表現為 FPS 游戲里的命中檢定失敗,或是動作游戲里該躲的技能躲不開。如果傳輸的時間超過 200ms,往往還會伴隨著無法訪問網絡的情況。

中國聯通的網絡路徑圖

若是路徑和介質固定,再排除環境干擾,那么傳輸延遲基本是恒定的?梢砸罁、電信號的傳輸速度,以及有線的光纖銅纜,無線的各種制式算出具體數值。但距離越長,意味著兩臺計算機間可能會出現更多的節點和硬件,其中還涉及到數字信號和電信號的轉換。要是簡單的來分類,可以說產生了“處理延遲”。

 

事實上,玩國服游戲也覺得“卡”,很大程度上都是“處理延遲”的鍋。在工程師們的眼中,跨運營商聯機時的復雜網絡路徑是個大問題:

 

“游戲數據包從用戶側到服務器會經過很多的中間設備,這些中間設備可能在不同的運營商,如路由器、網關、交換機等等,可以理解為快遞的中轉站。不同運營商到同一個服務器的路由路徑很可能是不一樣的,比如,電信用戶玩上海的服務器,從用戶直連上海,但是移動的用戶玩相同的服務器,可能需要繞道廣州再到上海,延時就增加了。”  

 

對于消費者來說,網絡路徑中設備的轉發能力是個未知數。如果運營商在硬件上偷工減料,那么封裝、解碼的時間肯定更長。簡單的拿路由器來舉例,網絡高峰期擁堵的時候,來不及轉發的數據包就在緩沖隊列里待著。其中有很多貓膩,按照規則,可以讓 IP 優先級高的先走,映射到服務里就是賣 VIP 用戶。

紅色為低延遲隊列,VIP 先走

至于飽受詬病的外服聯機,工程師表示,在距離更遠、路徑更復雜,以及上述這些前提條件都存在的情況下,數據包會七繞八繞的來到國際端線:

 

“第一個問題就是連不上游戲,很大可能是大量丟包或者流量被阻斷了,阻斷的原因就太多了,各種問題。在連接國際端線時,常見的部分流量被認為是翻墻流量,直接阻斷,另外到部分國外 IP 或者地區的流量太大,會被限速,因為國際帶寬是有限的,不可能讓所有人都敞開用……舉個例子就是白天你訪問 R 星平臺下《大鏢客2》,白天下載速度很快,能跑到 10~20m,晚上下載就變成龜速。”

 

而在所知的范圍內,北京(華北區)和上海(華東區)的國際出口,沒法直接訪問東南亞和澳洲的部分地區,就要繞道廣州(華南區)和香港。

 

難纏的聯機方式

 

 

上述這些棘手的情況,基本都來自外部環境,但其實在很多情況下,聯機不暢源于用戶本身的網絡設置。換句話說,某種程度上是可以自行解決的。

 

比如《怪物獵人 世界》的聯機方式主要基于 P2P,依靠參與游戲的玩家電腦自行解決網絡同步。這里面牽扯到一個 Lockstep 的概念,可以想象成走軍步,網絡快的玩家要等網絡慢的,所以有時候房主卡大家都要遭殃。而在這類方法中,“NAT 類型不開放”往往是彈出"5038f-MW1"等掉線代碼的誘因。

 

 

 

 

P2P 的一個形象比喻

主機游戲玩家肯定對 NAT 不陌生,Xbox One 的 NAT 類型被分為開放、中等、嚴格和不可用四等,PS4 有 1、2、3 等,而 Switch 上也有 A、B、C、D 等,總之等級越靠后疑難雜癥就越多。

 

NAT 的本意是“網絡地址轉換”,由于公網的 IP 數量不夠用,運營商可以啟用 NAT,將你的 IP 地址“轉一下”,變成和很多人共享一個公網 IP。

 

光說概念可能不好理解,舉個不算恰當的例子:

 

  • NAT 類型開放(1 和 A):相當于有個送餐小哥給你送外賣,最后能順著 IP 地址找到本人。

     

  • NAT 類型不開放:送餐小哥只能找到你公司的前臺,外賣(數據包)得轉發一道才能到你手中。

     

更細致的來看,假設你的 NAT 類型是“中等”,那證明前臺小姐姐還愿意提著外賣來找你。如果是“不可用”,你的外賣可能就沒人管了?傊 P2P 的聯機環境下,“不開放”會造成很大的影響。

 

NAT 服務器就像是夾在中間的一把鎖

提高 NAT 類型等級的方法大同小異,要么找運營商協商(花錢)搞個公網 IP,要么用主機直接拔號上網,一定要用路由器的話,也要設置 DMZ,把端口開放給外部網絡,核心思想是“少一面墻是一面墻”。

 

當然,游戲聯機的方式并不全都基于 P2P,也有不少廠商用到了 C/S,即服務端與客戶端直接通信,不涉及到 NAT 類型的問題,具體的案例有《守望先鋒》《泰坦天降》和《光環》等等。

 

左邊的連接方式是 P2P,右邊為 C/S

但在這種較為傳統的模式下,也會有一些特殊的問題。聯機寶的工程師認為,同樣是 C/S,有些游戲的服務器設置適合中國玩家,有些就不太適合了。通常表現為游戲中部分域名或者 IP 不通,導致登錄問題,或者路由不是最優,導致丟包太多:

 

“比如《使命召喚 現代戰爭》,登錄服務器在歐洲,游戲服務器在日本、韓國、新加坡、美國等各洲,試想一下,從你家到這些地方的網絡都要延時穩定,不丟包才能夠有比較好游戲體驗。但是實際上國內到這些地區的網絡延時基本上都 100ms 以上,到歐洲和美國都 200ms 以上,而且還大量丟包,所以根本沒辦法玩。”

 

值得一提的是,還有一些開發商會對聯機方式進行優化。以《荒野大鏢客2》為例,如果玩家可以用 P2P 直接打通,那就使用 P2P 進行通信。如果不行,會轉到 R 星的中繼服務器。但國內用戶通常是兩頭都不占,不僅 NAT 類型不開放,連接服務器又受到物理極限的重重阻礙,往往只能望洋興嘆。

 

加速器干了什么

對于大多數人而言,改善聯機體驗的省心辦法,無非就是開個游戲加速器。

 

有人會對它們的原理感到好奇,這背后其實是一個比較綜合性的問題,牽扯到為客戶端選擇合適的端口,減少網絡路徑的復雜性,或是直接架設區域服務器,最大限度的降低訪問延遲。

 

經營加速器業務的機構,通常會架設多個節點服務器,租借多線機房來提高用戶的連接效率。玩家啟動客戶端時,用 SOCKS5 協議來和代理服務器打交道,代理服務器再和真正的游戲服務器打交道。要么就是部署自動切換運營商的多線 VPN 服務器作為加速節點,給玩家分配一個虛擬的 IP 地址。

比如聯機寶的節點接入了三大運營商,中轉后走專線直接連到游戲服務器,此外國際出口用的也是專線。正如之前提到的,這么做可以簡化網絡路徑,好比數據包沒有必要從成都繞到廣州,又到黑龍江,折騰一大圈最后到北京,而是從成都到北京的直達線路。

 

謂的專線你可以理解成,本來一條道路上有視頻、語音、文檔等牌子的“汽車”在跑,而專線只允許“游戲牌汽車”通過。而且加速器一般會租用國際企業帶寬,騰出來給玩家用,再加上加速網絡中可以做到 NAT 開放,因此能夠解決 NAT 穿透中的不開放問題,所以掉線和延遲的情況都會得到較大改善。

亞馬遜云的專線服務:左邊正常接入需要走復雜的網絡路徑,右邊專線就是直達

不過,雖然原理是這個原理,用戶的問題總是千奇百怪。

 

根據工程師透露,原則上他們是通過游戲測試對數據包進行分析,確認數據包的收發路徑(去程和回程的路徑),看看問題類型到底是丟包還是阻斷,總之講究一個對癥下藥:

 

“比如我們檢測到一個用戶丟包,會優先排查用戶的本地網絡是否存在問題,然后再排查用戶到我們節點的網絡問題,最后一步是排查我們節點到服務器的網絡……舉個例子,發現用戶到我們節點連接不穩定,會給用戶更換節點,然后保障網絡順暢。”

 

但在這個過程中,經常會遇到比較無厘頭的事情。有的暴躁老哥把對應 WAN 口的網線插到 LAN 口,最后讓他拍了個視頻,開遠程才發現是網線接錯了。還有《怪物獵人 世界》的玩家,沒法聯機的真正原因是“下載包缺失了部分文件”,得重新下載游戲?傊売蔁o論是不是加速器引起的,事情總得管到底。

 

總的來說,若是純粹在國內聯機,掉線、延遲與兩臺電腦間的直線距離關系不大,畢竟現在用光導纖維傳輸很普及。問題在于,國內數得上名字的網絡運營商就接近 10 家,它們之間的網絡是有壁壘的,這會加大數據交互的處理成本,也是中小運營商和校園網體驗不好的原因之一! 

 

另外無論是連國內、還是要走國際端線,都有可能遇上網絡擁塞的情況。特定情況下,這與運營商超賣帶寬的行為有關,導致的結果,可以類比成那些 MMORPG 的排隊盛況,歸根究底,可能還是運營商的硬件沒那么給力。

 

你會發現很多技術工作都是圍繞著處理延遲展開的。無論是優化“本沒必要那么復雜”的網絡路徑,解決跨運營商問題,還是改善 NAT 類型,共通之處都是在現有硬件下,對游戲聯機的環境做簡化。但具體到細節,就未必有一勞永逸的解決方法了。

(責任編輯:dnzg)
安卓手机安全赚钱软件哪个好用