博客 / 詳情

返回

優酷弱網平台落地實踐

作者:孫長浩(火炏)

弱網環境下的質量保障一直是公認的難題,實際生活中每個人都會遇到弱網環境,比如用户在景區地鐵裏,高鐵上,電梯中,景區周邊等場景使用APP大概率都會遇到弱網場景。優酷作為視頻內容APP,對網絡的要求特徵為持續時間長,帶寬平穩等,所以對弱網環境尤其敏感。在弱網環境下,用户會遇到諸如卡頓、停止播放等體驗問題。我們通過分析埋點數據可以清晰的看到目前線上的錯誤碼中,網絡(弱網)相關的錯誤碼類型佔比已經超過一半以上。因此,為了提高版本上線質量,有效的模擬線上網絡環境,弱網環境下的測試是不可或缺的線下測試組成部分。

基於此,優酷弱網平台從業務的實際痛點出發,針對弱網進行標準化的分級定義,對場景進行精確測量,對線上回溯數據進行精準回放,並對線下/線上弱網模型匹配訓練。通過平台化的方式,提供統一的使用和接入方法,不斷積累和沉澱更明確的衡量指標以及合理性的標準判斷,給測試和開發人員提供更有效的弱網仿真模型。本文就將結合業務場景,展開聊聊優酷弱網測試平台的控制原理、技術實現以及具體業務的使用情況。

弱網認知及原理

弱網認知

弱網沒有嚴格的指標進行定義,實際可以理解為用户在實際使用個人業務時因信號波動、網絡擁堵等原因造成的業務使用體感差,從而進行的一種體感性描述。

根據用户的實際場景,造成弱網的原因一般有兩種:

  1. 物理硬件導致:比如離路由器過遠,信號強度低,也有周邊干擾大,導致誤碼率高等情況均會導致用户弱網;
  2. IP網絡傳輸性能弱:比如網絡節點性能過載,運營商網絡限制,跨網傳輸等等。

可參考下圖進行理解

通過上圖兩種場景可以看到整體網絡構造比較複雜,存在模擬難、無法量化的問題,無法制定統一標準。因此,我們嘗試通過其他方式來進行量化。通過參考 RFC2544 文檔,我們得知衡量網絡性能好壞的方法可以通過吞吐量、丟包率、延時、背靠背四個維度進行衡量,定義標準。因背靠背主要測試轉發能力,因此大多數採用前三項進行衡量。

弱網控制原理

由下圖TCP/IP協議傳輸過程,弱網控制主要有兩種場景:硬件控制和軟件控制。

一、硬件控制

主要是通過信號衰減器和噪聲發生器進行控制,通過進行信號的衰減以及噪聲的大小控制網絡中誤碼率的增高,從而影響應用層接收信號的延時,帶寬和誤碼,目前做wifi性能測試項目主要是使用這個方法,但此種方式目前僅可以定性控制,做不到定量的控制。

二、軟件控制

目前主流只通過Linux操作系統中的流量控制器TC(Traffic Control)用於Linux內核的流量控制,主要是通過在輸出端口處建立一個隊列來實現流量控制。

接收包從輸入接口進來後,經過流量限制丟棄不符合規定的數據包,由輸入多路分配器進行判斷選擇:如果接收包的目的主機是本主機,那麼將該包送給上層處理,否則需要進行轉發,將接收包交到轉發塊(Forwarding Block)處理。轉發塊同時也接收本主機上層(TCP、UDP等)產生的包,通過查看路由表,決定所處理包的下一跳。然後,對包進行排列以便將它們送到輸出接口。一般只能限制網卡發送的數據包,不能限制網卡接收的數據包,所以可以通過改變發送次序靠控制傳輸速率。Linux流量控制主要是在輸出接口排列時進行處理和實現,如下圖所示:

目前大部分路由器以及樹莓派都是使用這個方式。另有一些第三方設備廠商提供的設備,大多也是基於此種模式做的,只是在上層進行了更多的一些封裝。此種方式可以做到定量的控制,而做不到定性的控制,因此優酷弱網平台從用户實際場景出發,分別支持量化的軟件控制和定性的硬件弱網控制。

優酷弱網平台技術實現

平台網絡拓撲

為了可以讓每個用户很方便的使用弱網平台,經多次評估及討論最終採用網絡代理的方式,進行網絡流量的攔截和控制,這樣的好處是有較強的通用性,無論是Android 還是iOS以及windows系統均自帶網絡代理功能,因此用户側直接在各端設置網絡代理並免安裝應用即可直接使用,具體的網絡拓撲圖如下:

平台分層功能架構圖

優酷弱網平台開發採取分層實現模式,總體分三層:

  • 底層物理層採用真機及屏蔽箱模式,可以直接對屏蔽箱的真機進行弱網信號控制;
  • WIFI弱網控制層,通過TC服務器的方式進行控制;
  • 用户前端頁面提供設備及場景管理,狀態展示等功能。

平台功能及業務應用

平台可支持弱網測試範圍

從app的角度看,弱網測試的範圍是非常廣的,同時對於app的優化也非常重要,下圖是對弱網常用的測試項的一些功能梳理,目前平台針對這些弱網的測試都是可以支持的。

弱網分級標準化定義

大多數開發者對於弱網定義僅限於差、好、壞等這樣的方式來進行描述,這樣的描述僅僅是一種定性方式,鑑於很多開發解決問題,也僅僅分析到此,一句網絡問題,後面問題就不了了之,優酷弱網平台通過對於弱網參數的分級量化定義,很輕鬆的就能進行一些性能對比,讓開發有針對性優化。

分級量化弱網如下圖:

下圖是不同分級的量化弱網數據的對比,很容易就能找到產品的差異點:

通過上圖,可只低網速場景和高丟包場景,優酷app還有可以提供產品體驗優化的地方。

優酷弱網體驗持續優化

優酷業務主要是音視頻播放,對網絡穩定性的要求非常高,因此在弱網優化這一塊,也積累的一些經驗,主要從網絡數據採集出發,針對用户實際的網絡狀況進行採集。在弱網策略層,對採集到的網絡數據進行弱網狀態的進入及退出進行策略判斷,當用户進行弱網狀態時,通過線下數據的策略匹配,對線上用户實際的場景進行匹配,最終達到網路優化的效果,具體可參考如下圖:

一、用户弱網場景定義

優酷弱網場景:用户在看優酷視頻時,在什麼樣的時間和地方遇到了導致用户播放出現加載時間過長或者無法起播的問題,該場景有規律性和確定性。

基於上述優酷弱網場景,我們進行弱網的一些特性測量,並基於測量數據,我們在實驗室進行用户真實的場景模擬,下圖是對用户場景的一部分實測模擬。

下圖是對用户場景的波形回放及實際測試效果:

二、弱網持續優化過程

通過在弱網實驗室進行重現用户是播放loading或者無法起播現象,比如同樣檢測到用户在地鐵會播放會loading。可以根據用户的場景檢測,進行地鐵前提前大buffer緩存,或者提前提示用户緩存等各種方式,一旦用户有弱網場景會進行策略命中及優化,主要流程圖如下:

通過用户在弱網具體場景的優化和策略匹配,用户在弱網場景播放上的體驗有了持續提高。

真機弱網

4G信號和WIFI信號,不同的信號源有天然的區別,因此在4G網絡情況下進行弱網測試,所需要的環境更為複雜,需要專門的屏蔽室,所需要的成本更高,優酷弱網平台採用屏蔽櫃+真機平台+衰減器方式提供真實的弱網場景,用户在真機平台上可以一鍵用户真實的進行弱網模擬。

下圖為:支持信號衰減的屏蔽櫃

下圖為:信號衰減場景

下圖為:在不同信號衰減情況下,下載速率的一些關係圖:

全國網絡的單點接入能力

在我們實際業務中,由於運營商網絡,CDN擁堵等各種原因,常常發生單點的網絡問題,優酷弱網平台通過直接代理到全國各地市的方式,可以快速定位單點問題,並高效解決。

各弱網方案對比

總結及展望

優酷弱網仿真平台,通過代理的方式、平台化的服務,極大突破弱網測試所需的環境限制,目前已做到了弱網隨時可測,然而5G網絡、IPV6網絡、IOT設備的大量部署,我們面臨的網絡環境更加複雜,同時網絡拓撲也越來越複雜,如何能在實驗室對這些網絡的仿真依舊是一個難題。另外線上網絡的問題,如何進行自動化的定位和恢復也是一個需要持續研究的內容,弱網平台以後將在這些方向進行發力。希望未來更多的對網絡有興趣的同學,一起成長為網絡方面的專家。

關注【阿里巴巴移動技術】微信公眾號,每週 3 篇移動技術實踐&乾貨給你思考!

user avatar jie__5fc0bd46efc4e 頭像 glumes 頭像
2 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.