1. 程式人生 > >騰訊:大型實時對戰手遊的毫秒級網路優化

騰訊:大型實時對戰手遊的毫秒級網路優化

作者簡介

張丹

張丹

騰訊遊戲 新終端運營中心總監

手遊技術專家,華為騰訊 NFV 產業聯合創新實驗室發起人,擁有12年無線網際網路和遊戲運營經驗,騰訊移動遊戲技術平臺以及騰訊手遊 SDK 的創始人,並全面負責騰訊移動遊戲的技術評估、優化、接入和運維工作。

前言

本文主要是針對手機遊戲進行一些整體解決方案的分享,手機遊戲這個業務的特點就是資料的包的大小比較小,但是頻率非常高,可能一秒鐘會有幾十甚至上百個包的傳送,對網路延時要求會更高,對於實時對戰手機遊戲來說體驗好就是一百毫秒內, 如果延遲超過兩百毫秒對於遊戲體驗傷害非常大。

本文分為五個部分:

  1. 運維的價值;
  2. 闡述一下手遊這個業務當中使用者體驗如何來衡量;
  3. 下載服務優化;
  4. 實時對戰網路手遊優化;
  5. 我對新時代運維的理念;

1、運維的價值

運維的價值

在傳統運維時代,運維的工作主要是安裝伺服器,釋出、變更、監控,故障處理等等這些工作,但是隨著越來越多的雲的廠商,亞馬遜、騰訊雲、阿里雲、以及其他平臺的崛起,越來越多的傳統運維工作已經被替代,新時代的運維何去何從?

我們覺得新時代的運維應該做到除了業務邏輯請把一切都交給我們。也就是說,讓開發和專案組集中精力去進行業務邏輯開發,而周邊環境,公共平臺,公共技術等,都由運維來提供統一化的高質量服務。

2、手遊使用者體驗

這個是我們對於手遊各個環節的使用者體驗的整體解決方案,我們將手遊的使用者體驗主要分為五個大的環節,包括下載、登入、遊戲體驗、支付、遊戲外的輿情。

手遊體驗


  • 首先是下載,下載包括應用市場的下載也包括遊戲內的自更新,從我們的下載的詳情頁的點選到下載完成到安裝完成到新使用者啟動到使用者註冊,這才是下載獲得使用者。
  • 登入
    第二個是登入,從遊戲啟動到遊戲檢查版本更新,再到登入SDK最後到選擇大區服務列表,最後到進入遊戲大廳,每個環節的失敗率是多少,流失率是多少,這都是我們關注的重點指標。
  • 遊戲體驗
    首先是進入遊戲大廳,在遊戲大廳我們會監控大廳各個模組是否能正常展示,公告是否能正常彈出,揹包商城道具工會等模組點選後是否正常載入。大廳的各環節檢查完之後接著就是進入玩家對戰的匹配環節,這個時候我們會關注,玩家匹配以及地圖載入的時長,耗時過長或匹配失敗都容易引起玩家流失。匹配成功之後就是最重要的玩家對局環節,對局中我們主要關注遊戲的延時,fps 幀率,耗電量,耗流量,斷線率,重連率等。對戰結束後就是結算環節,這個環節時間雖然不長,但是卻是玩家這局對戰成果的展示和對戰獎勵的獲得,我們會關注結算頁面是否正常,對戰獎勵是否正常到賬。
  • 支付
    除了遊戲的可玩性之外,我們也要重點關注遊戲的支付環節,包括從支付最開始的驗證使用者登入態,到拉取貨物列表,再到下單,付款,以及最後的發貨,每個環節的成功率和流失率都會進行一個分析。
  • 輿情
    在遊戲外,我們主要關注遊戲輿情的情況,包括官網論壇、百度貼吧、應用市場、公眾號、qq群的各種渠道的輿情分析,包括我們關注的一些關鍵字,通過對輿情的一個情感分析,包括正面情緒,負面情緒等,可以知道當前這個遊戲出現什麼問題,版本質量有沒有下降等。

然後所有的這些資料我們會經過資料清洗之後進行一個系統分析以及決策,出現問題的時候,會將解決方案通過遊戲內郵件或者訊息 push 工具及時知會到使用者,如果是遊戲故障會通過流程引擎進行自動的故障修復,如果是版本質量問題,會給出分析報告給專案組進行決策。

最後我們會再次採集使用者體驗資料,看看這次故障以及版本優化的一個效果,達到一個閉環。

在這五大環節裡面,其中和使用者體驗最敏感的就是下載和遊戲對局,這也是和行動網路最相關的兩個部分,接下來我重點分享下這兩塊我們的一個解決思路。

我們目前手遊使用者體驗整個體系中上報採用了“燈塔”服務,我們是緊密合作的。

3、下載服務優化

在下載的優化措施方面,下圖是我們下載服務的使用者流失圖,從點選下載到現在成功到安裝成功一直到點選啟動,然後右邊這個圖是我們的下載失敗的原因分析。

服務優化

剛才已經講過了,下載失敗最多的其實就是使用者主動選擇下載,其次就是選檔案失敗,裡面包括空間不足,也可能SD卡上鎖或者是SD卡的寫入問題,最後還有網路問題,這三塊是最大的。

最下面這個圖是我們提供的手游下載整體服務,這個服務我們重點關注幾個指標,包括我們的下載成功率、轉化率還有我們的成本和最優速度的選擇。我們主要提供以下幾個大的模組。

  • 下載週期管理
    首先是我們提供下載週期的管理,我們在應用市場或者在官網的下載,我們提供了一些遊戲的分發打包以及分析工具;遊戲內的版本更新提供了版本管理和迴流率分析,對於資源包更新我們提供了資源管理以及資源校驗糾錯等等解決方案。
  • 下載優化
    第二個大塊就是我們提供了協議優化模組,第一個是防劫持,劫持裡面有兩塊,一塊是域名劫持,一塊是資源劫持。這兩個劫持的解決方案等一會兒都會詳細介紹,另外一個是預下載。防劫持主要是解決了上面所對應的網路問題造成的失敗率,預下載主要是對上面的使用者主動取消下載造成的失敗率,預下載這部分我們主要是提供增量下載,還有就是 P2P 下載,以及遊戲中的邊玩邊下,來減少下載時長,降低使用者主動取消率。協議方面也做了優化,包括對終端硬體進行判斷,還有一些跨網排程,分片下載,多執行緒下載技術。
  • 其他增值服務
    同時我們還做了增值服務,我們對異常使用者的跟蹤,包括我們對實時資料的分析,這個分析我們可以達到秒級,另外和運營商合作,針對騰訊遊戲一些 VIP 使用者和指定使用者,進行下載提速。另外我們提供智慧限速的服務,因為我們的成本是按照峰值來計算的,我們會對峰值的時候對於部分使用者啟動智慧限速以降低我們的頻寬成本。

圖中藍色方框標註的這三個是在這些下載優化這塊收益最大的三個解決方案,包括資源防劫持和域名防劫持。

3.1 域名防劫持優化方案-智營解析服務

解析服務

針對我們域名劫持的情況,我們提供智營解析服務:
我們主要是通過自建一個 HttpDns 後臺,給業務提供正確的ip解析服務。

HttpDns 是使用 HTTP 協議代替傳統解析域名。使用 HTTP 協議向 HttpDns 伺服器的80埠進行請求,代替傳統的 DNS 協議向 DNS 伺服器的53埠,繞開了 Local Dns,從而避免了使用 Local Dns 造成的劫持和跨網。

我們 HttpDns 後臺服務使用的是 BGP IP,經過驗證,BGP 有5%左右的訪問失敗率,所以我們多線路智慧選路方案將劫持率(包括失敗率)降低到0.01%。

目前,我們智營解析服務,已經為每天數千萬使用者提供每天近十億的解析服務,劫持率有高峰期的1.5%下降到萬分之一,解析耗時整體下降了50%,投訴大幅下降95%以上。

這頁是我們智營解析和外面的一些域名解析方案的一個優勢吧,第一個就是我們精準可靠,我們提供的後臺目前覆蓋了 TOP17 的運營商,覆蓋了95%的使用者。

另外我們做了IP三地容災,實現智慧快取,這樣降低了更多的網路開銷,同時使用多路解析,從中選擇最正確的IP給客戶端,另外我們會精確識別IP,對IP進行一系列的測速進行糾正,將速度最好的IP返回給客戶端。另外我們提供非常多的介面,我們也支援多執行緒呼叫,提供同步和非同步介面。

我們的智慧解析服務適用也非常廣泛,包括純 IPV6 網路和 IPV4 網路,也支援 H5,也支援HTTPS 協議。

目前我們的資料提供20多個關鍵指標,包括解析量/劫持量/解決量/域名量/解析IP量/運營商統計/雲服務商統計/解析耗時/快取率等。我們還通過大資料計算對劫持的趨勢進行預測。

其次我們提供一個整體的劫持趨勢的一個分析,以及通過大資料進行劫持故障的發生概率預測。

最後我們還提供一個劫持原因分析,這些劫持原因主要包括解析為空/解析閘道器地址/解析到同網段地址(包括內網)/解析到錯誤地址/解析到舊地址/解析出非ip等。

以上是我們智營解析服務的優勢,目前智營解析服務已經為所有的騰訊手遊,以及部分騰訊雲移動app合作伙伴提供服務,如有需要,可與騰訊雲進行溝通使用這項服務。

3.2 資源防劫持優化方案-智營回源代理服務

接下來是我們資源防劫持的優化方案,資源劫持主要包括3種劫持:

  • 檔案劫持,也就是檔案不能下載。
  • 302劫持,某些運營商會對302跳轉請求進行。
  • 內容劫持,某些運營商會解析 HTTP 的內容,在其中加入廣告。代理服務

針對資源劫持我們主要是提供一個回源代理的解決方案,當我們判斷資源或者頁面無法正確下載之後,有可能這個資源被運營商劫持了,我們會這個請求轉到我們的IP回源代理伺服器,我們代理伺服器再去cdn節點進行資源的一個拉取。

如果其中發生了302跳轉到另外的下載頁面,我們的代理伺服器直接進行302跳轉,不把這個跳轉請求發給客戶端,避免運營商對302跳轉的一個遮蔽。

另外,由於種種原因,可能業務無法使用 HTTPS 協議,那麼我們的 sdk 和回源代理之間可以通過 HTTPS 協議加密互動,防止運營商在 HTTP 協議加入廣告內容,業務的客戶端和後臺還是使用 HTTP 協議。

經過這一系列資源防劫持的優化,我們的下載成功率提高了20%以上,其中資源劫持嚴重的業務下載成功率從之前的70%提高到97%。

以上智營解析和智營回源代理服務,解決了運營商劫持問題,也就是之前原因分析中的HTTP 錯誤等原因。

3.3 使用者主動取消下載優化方案-增量下載

接下來我一下針對使用者主動取消下載的一個優化方案。使用者主動取消下載,最大的一個原因就是下載包太大,流量消耗太高,我們主要是提供一個增量更新的服務。

增量更新服務,主要是在服務端將新版本與每個舊版本之間的二進位制差異進行一個打包,客戶端只用下載更新包,然後在客戶端sdk將更新包和舊版本合成的新版本遊戲包,這樣下載的資料包大小比新版本大幅降低達到50%以上,下載時長縮短45%,使用者主動取消的比例大大降低,成功率提升10%以上。

P2P下載是使用者之間端到端的一個下載,可以節省cdn頻寬,邊玩邊下就是在遊戲開啟閒時進行下載。將增量更新和P2P下載和邊玩邊下進行比較,增量更新帶來的收益是最大的。

以上就是我們在下載這個服務優化裡面我個人覺得收益最大的三個方面。

4、實時對戰網路優化

接下來我們實時對戰的網路優化。這是我們手遊的網路特點,我們手遊網絡和傳統的 PC 網路有些不一樣,一個是我們的無線接入網部分,一個骨幹網部分,還有內網部分。

在手機遊戲這個領域,我們的網路還面臨很大的不穩定性,比如網路從4G切換到 Wifi,在4G情況下,突然來了一個電話一個簡訊,這樣導致我們的網路終斷,或者訊號比較微弱或者無線網路負載過高的情況下導致網路非常不穩定,綜上所述,手機的網路特點是和傳統的PC遊戲對比,具有非常大的複雜性和不穩定性。

4.1 智營網優服務

針對這些原因,我們提供了一個整體解決方案,我們叫智營網優服務,包括兩個大功能,一個是網路優化,我們對骨幹網的加速,另外對接入網的優化。還有在客戶端我們也會進行一些智慧優化,包括對路由器的選擇或者是對我們本地的一些網絡卡或者是快取設定的一些智慧優化。

另外一個我們是網路診斷,網路診斷包括實時卡頓的診斷,也包括遊戲全域性的卡頓分析,我們會告訴使用者你在什麼時間點,發生了什麼卡頓,卡頓的原因是什麼解決原因是什麼。

我們也提供非常精準的測試服務,我們會在全國所有的省份所有的運營商部署一個測試節點,測試我們的使用者到骨幹網最邊緣節點的速度是多少,也對到路由器閘道器進行測試,以及到遊戲伺服器進行測試,得出每段網路的延時分別是多少。

另外我們也提供了通道擁塞分析以及同一 Wifi 下多個終端的干擾分析。我們所有的策略是通過雲端控制進行下發,而且我們接入非常簡單,只需要遊戲是對局之前呼叫我們進行網路優化,以及遊戲結束之後告訴我們這個遊戲已經結束,我們將這個優化停掉。

然後我們提供非常多的資料分析,幫助遊戲瞭解它遊戲對局中的各種使用者體驗詳細資料。

4.2 網路優化實戰-接入優化

首先我們看一下在實時對戰的手機遊戲,最核心的指標就是網路延時,不知道大家有沒有玩過王者榮耀,或類似的Moba遊戲,當網路延時超過了兩百毫秒基本上就會被人虐的很厲害,如果超過一百五十毫秒一些高玩玩家會感覺放技能別人慢。

我們現在提供網路延時的整體分析,網路延時包括三個部分。

  • 第一個部分是伺服器處理延時,當伺服器收到一個請求包處理完請求包返還給客戶端這段時間是多少。
  • 第二部分可能和手機的硬體比較相關,也就是手機側延時,我們對手機的 CPU 和記憶體進行監控,還有網絡卡的一些錯誤數和丟包數進行監控,看看這個延時是不是手機的效能或者網絡卡擁塞造成的。
  • 第三個就是我們的網路分段延時,首先我們測試收集到 Wifi 路由器之間的延時是多少,高負載的路由器情況下,手機到路由器延時就到了上百毫秒,遊戲肯定卡。

我們在全國每個省份運營商部署一個邊緣節點,測試從手機到邊緣節點的速度,同時測試手機到遊戲伺服器的速度,我們把網路延時這塊分成兩個部分,一個是接入網的延時一個是骨幹網的延時,到邊緣幾點的延時就是接入網延時,到遊戲伺服器的延時減去到邊緣節點的延時就是骨幹網延時。

這頁是我們對遊戲卡頓資料的分析,我們發現 Wifi 卡頓比4G卡頓更為嚴重,Wifi 的情況下,使用者可以感受到的卡頓情況比例已經接近了20%,五分之一的使用者在玩的時候都會感受到卡頓。而4G的情況下,7%的使用者會感受到卡頓。

我們來看一下卡頓原因,從我們上面說的網路延時分析來看,造成網路卡頓的原因。

  1. 訊號不好,最多的就是訊號不好,包括 Wifi 訊號小於兩格或者 Wifi 訊號小於一格;
  2. 路由器負載比較高,第二個可能的原因就是路由器負載比較高,路由器的延時已經超過了五十毫秒;
  3. Wifi 出口擁塞,第三個比較大的原因是出在整體 Wifi 出口,可能你的小區出口比較擁塞,延時比較高,佔了20%左右;

這三個原因,在我們這裡歸結的話都屬於一個接入網的原因造成的卡頓大概佔85%以上,所以玩家投訴的時候請大家不要責怪我們的後臺,責怪開發,為什麼使用者這麼卡,其實卡的原因是由於使用者的接入網路造成的,不是由於伺服器造成的。

4.2.1 破解訊號不好問題

4G情況下最大的原因也是由於訊號不好,訊號小於兩格一格的情況下,佔比超過的30%,另外基站負債高佔比30%左右,我們和運營商進行了多次溝通,部分運營商表示高峰期的時候有18%的基站處於高負荷的狀態。

剛才說到了為什麼訊號弱的時候會造成卡頓,訊號弱會對卡頓和延時有什麼影響,這是我們對空口丟包的分析,4G情況下,延時高主要的原因是因為誤碼重傳導致的,當基站收到手機發過來的資料包,如果誤位元速率較高,會要求手機重新發送一份。

在手機訊號正常的情況下,有10%的概率會誤碼重傳,在訊號比較弱的情況下,基本上100%會造成誤碼重傳。重傳超過一定的閾值以後,基站就會將這個包丟棄,這也就是為什麼訊號弱的情況下,我們會產生更多的丟包或者是延時比較高的問題。

在 Wifi 情況下,主要有以下兩個協議造成我們的丟包原因,其中一個是在 RTS 和 CTS 協議,主要是為了解決 Wif i隱藏終端的問題。第二個就是通道被佔或者衝突,Wifi 在 2.4G 的頻段,Wifi 有很多通道有相互干擾的情況。

如果是當兩個手機同時進行資料傳輸的情況下,或者周圍有微波爐,藍芽等裝置,就會造成通道的資料誤位元速率比較高。還有誤碼降速,訊號不穩定比訊號差更容易造成丟包,訊號在一格兩格之間來回跳,為什麼這樣更差?

因為在 Wifi 協議裡面,當你的誤位元速率到了一個比較高的程度的時候,Wifi 會和手機終端協商,我們要降低速率保證提高成功率,當你的訊號不斷的跳動,他們不斷協商這個過程,每次協商就會把之前資料傳輸的資料丟掉,新的資料傳播傳一份,再加上 RTS/CTS 等待和通道干擾,在路由器嚴重超負荷的情況下,有70%的概率會造成丟包。

4.2.2 破解路由器嚴重超負荷問題

路由器嚴重超負荷是指很多人在這個 Wifi 下看視訊或者說下載,70%會發生丟包。訊號不好的情況下,有50%的概率丟包。針對丟包這麼多原因,我們有什麼解決方案?

對於移動接入網的優化,我們主要是和運營商合作,啟動了一個 QoS 技術方案,我們發現其實在空協議裡面有一個指標是專門優化包量較小但延時要求很高的場景的,我們經過和中興華為一起推動這個事情的優化。

目前我們這個解決方案當遊戲啟動被讀的時候呼叫一個加速 SDK,然後判斷這個使用者是否具有 QoS 加速的能力和是否需要 QoS 加速,在把這個 QoS 加速請求發給運營商的能力開放平臺,運營商將請求發到基站,基站就會和手機之間建立一個 QCI=3 的專用承載,相當於一個貴賓通道,會保證你的連線的頻寬以及速率等,保證空口的成功率。

這是某個大型遊戲在某省使用了 QoS 的效果,使用了 QoS 之後,延時在五十毫秒以內的使用者從12%提升到25%左右,而且我們在一些極度擁塞場景下做了測試,大型的商場或者是地鐵站,甚至在演唱會現場,這個時候連朋友圈都發不了的情況下,但是玩我們的遊戲非常暢快,在極度擁塞的環境下,延時從260毫秒降低到130毫秒,丟包率從20%直接下降到0.1%。

對於移動接入網我們可以和運營商合作進行網路優化,但是對於 Wifi 來說,Wifi 我們應該怎麼優化。對於 Wifi 來說使用組合方案,首先對 Wifi 進行網路分析,看 Wifi 到底是什麼卡頓,是連續的卡頓還是隨機的卡頓。

4.2.3 破解WIFI出口擁塞問題

通過資料分析有相應的方案,首先對協議進行優化,因為遊戲都是一些資料量比較小的包,我們可能對遊戲包進行多路雙發,把一個數據包在一定的時間內重發一次。在這種情況切下,就算一個包丟掉了,後面還有一個冗餘包,這樣對遊戲的影響非常小,經過我們的測試這種優化可以降低30%80%的丟包率。

第二個就是包冗餘,這個資料包帶上前一個數據包的內容,即使前面一個數據包丟掉了,這個資料包也會對前面一個數據包進行處理,這樣降低丟包率。

訊號弱是一個比較大的原因,我們會檢測 Wifi 訊號,訊號弱的時候提醒使用者靠近訊號源,另外檢測一些 Wifi 通道,如果 Wifi 通道比較忙,提醒更換空負載的通道,如果 Wifi 負載比較高,我們會提醒一下對其他終端進行限速,或者重啟一下 Wifi。

我們現在也在積極推動 Wifi 廠商開發適合這種延時要求高但包比較小的專用的遊戲路由器解決這個丟包的問題,如果這些問題都不能解決,我們可能推薦使用者更換網路。

我們收集了周邊所有的 Wifi 質量,到底哪個 Wifi 穩定,哪個 Wifi 延時更低,根據你搜索出來的 Wifi 列表或者 GPS 定位,推薦使用周邊的高質量Wifi,如果周邊沒有比較好的 Wifi,提醒使用者使用4G來解決問題。

4.3 面對網路延遲優化實戰-骨幹網優化

接下來是骨幹網的解決方案,我們現在在全國佈置了很多臺伺服器,我們會每隔五秒測試每個伺服器之間的延時以及每個伺服器到我們遊戲伺服器之間的延時,從而智慧選擇一條最快的路徑給手機進行加速,當我們的骨幹網出現了擁塞或者出現故障的情況下,智慧選擇路由加速效果會非常好。

我們現在骨幹網加速的一例大概在12%左右,這個比例不大,因為現在確實運營商對於骨幹網的優化做的很不錯,骨幹網加速之後,體驗好的使用者大概提升了8%左右。

體驗好是我們使用者到遊戲之間的延時控制在一百毫秒以內,從這個數值來看,好像整體的比例不是很明顯,但是對於個別使用者來說,特別是對於那些延時大於兩百毫秒以上的使用者,如果這部分可以加速到一百毫秒以上,對於這些使用者太說他們的體驗感受非常明顯。

5、新時代運維的理念

運維的理念

目前我們為騰訊幾千萬的使用者提供這樣的服務,上文就是我們在手遊網絡優化這一塊做的一些解決方案。最後簡單闡述一下關於新時代運維的理念,就是我們要關注使用者的極致體驗,打造精品S級服務。

文章來自微信公眾號:高效運維