作者:孫長浩(火炏)
弱網環境下的質量保障一直是公認的難題,實際生活中每個人都會遇到弱網環境,比如使用者在景區地鐵裡,高鐵上,電梯中,景區周邊等場景使用APP大概率都會遇到弱網場景。優酷作為視訊內容APP,對網路的要求特徵為持續時間長,頻寬平穩等,所以對弱網環境尤其敏感。在弱網環境下,使用者會遇到諸如卡頓、停止播放等體驗問題。我們通過分析埋點資料可以清晰的看到目前線上的錯誤碼中,網路(弱網)相關的錯誤碼型別佔比已經超過一半以上。因此,為了提高版本上線質量,有效的模擬線上網路環境,弱網環境下的測試是不可或缺的線下測試組成部分。
基於此,優酷弱網平臺從業務的實際痛點出發,針對弱網進行標準化的分級定義,對場景進行精確測量,對線上回溯資料進行精準回放,並對線下/線上弱網模型匹配訓練。通過平臺化的方式,提供統一的使用和接入方法,不斷積累和沉澱更明確的衡量指標以及合理性的標準判斷,給測試和開發人員提供更有效的弱網模擬模型。本文就將結合業務場景,展開聊聊優酷弱網測試平臺的控制原理、技術實現以及具體業務的使用情況。
弱網認知及原理
弱網認知
弱網沒有嚴格的指標進行定義,實際可以理解為使用者在實際使用個人業務時因訊號波動、網路擁堵等原因造成的業務使用體感差,從而進行的一種體感性描述。
根據使用者的實際場景,造成弱網的原因一般有兩種:
- 物理硬體導致:比如離路由器過遠,訊號強度低,也有周邊干擾大,導致誤位元速率高等情況均會導致使用者弱網;
- 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 篇移動技術實踐&乾貨給你思考!