最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

網(wǎng)絡(luò)損傷工具大亂斗

2022-03-08 13:42 作者:聲網(wǎng)RTE開(kāi)發(fā)者社區(qū)  | 我要投稿

引言

從互聯(lián)網(wǎng)誕生開(kāi)始,網(wǎng)絡(luò)吞吐量的限制、數(shù)據(jù)分組的丟失、數(shù)據(jù)傳輸?shù)难舆t和延遲抖動(dòng)等人為或意外的狀況就緊緊的伴隨著互聯(lián)網(wǎng)的發(fā)展。而當(dāng)今的互聯(lián)網(wǎng)更是一個(gè)擁擠、繁忙和復(fù)雜的龐大系統(tǒng),不同的網(wǎng)絡(luò)服務(wù)和應(yīng)用以競(jìng)爭(zhēng)的方式共享相同的網(wǎng)絡(luò)基礎(chǔ)設(shè)施收發(fā)流量。

對(duì)于那些傳統(tǒng)應(yīng)用場(chǎng)景,比如 Web 瀏覽、文件傳輸或音視頻點(diǎn)播等服務(wù),因?yàn)檫@些場(chǎng)景下用戶對(duì)于延遲的容忍均在秒級(jí)甚至更大,而對(duì)網(wǎng)絡(luò)抖動(dòng)甚至無(wú)感知,所以使用傳統(tǒng)的基于 cubic 或 reno 的 TCP 協(xié)議就能夠較好的完成任務(wù),這些擁塞控制算法傾向于塞滿網(wǎng)絡(luò)直到丟包發(fā)生然后極速退避,這就導(dǎo)致網(wǎng)絡(luò)的擁堵程度總是處在劇烈的變化之中。

而以實(shí)時(shí)音視頻傳輸需求為代表的實(shí)時(shí)網(wǎng)絡(luò)場(chǎng)景更關(guān)注的是在可接受的音視頻質(zhì)量下更低的延遲,這就要求擁塞控制算法不能總將網(wǎng)絡(luò)塞滿而是要調(diào)整編碼策略、發(fā)送在較低延時(shí)下可獲得更佳主觀體驗(yàn)所需碼率的實(shí)時(shí)音視頻數(shù)據(jù),對(duì)于這點(diǎn)傳統(tǒng)的 TCP 無(wú)法滿足需求,雖然有基于 BBR 的 TCP 擁塞控制算法,但如果需要定制場(chǎng)景并與媒體層聯(lián)動(dòng)的時(shí)候就面臨修改協(xié)議棧代碼的問(wèn)題,這對(duì)于新功能的發(fā)布和版本的快速迭代并不友好,因此目前在實(shí)時(shí)網(wǎng)絡(luò)行業(yè)深耕的各家廠商基本都會(huì)使用到 UDP 協(xié)議 + 自研弱網(wǎng)對(duì)抗算法的搭配。

實(shí)時(shí)網(wǎng)絡(luò)產(chǎn)品依靠準(zhǔn)確的帶寬估計(jì)、高效的丟包對(duì)抗、合理的前向糾錯(cuò)等能力提高端到端通信質(zhì)量、降低端到端通信延遲。而擁有可靠且高效的評(píng)價(jià)產(chǎn)品對(duì)于提升弱網(wǎng)對(duì)抗能力就變的至關(guān)重要。


實(shí)際網(wǎng)絡(luò)的復(fù)雜性


實(shí)際網(wǎng)絡(luò)的復(fù)雜性遠(yuǎn)超如下所列的范圍:

  • 多數(shù)據(jù)流量帶寬競(jìng)爭(zhēng)

  • 不同的收發(fā)設(shè)備類(lèi)型(性能),不同的網(wǎng)卡硬件和驅(qū)動(dòng)程序

  • 不同的路由路徑

  • 不同的路徑由不同節(jié)點(diǎn)序列構(gòu)成

  • 不同節(jié)點(diǎn)的硬件性能和軟件算法差異

  • 地理隔離的物理距離

  • 如果數(shù)據(jù)經(jīng)過(guò)無(wú)線或移動(dòng)網(wǎng)絡(luò),那射頻信號(hào)的影響就開(kāi)始顯著

  • 信號(hào)強(qiáng)度、信噪比、物理遮擋

  • 無(wú)線協(xié)議類(lèi)型,底層協(xié)議的 FEC 或重傳機(jī)制

  • 多設(shè)備的競(jìng)爭(zhēng)、同頻干擾和隱藏節(jié)點(diǎn)


網(wǎng)絡(luò)損傷工具的功能和局限

實(shí)際可能的網(wǎng)絡(luò)鏈路,數(shù)據(jù)流經(jīng)歷了各種網(wǎng)絡(luò)節(jié)點(diǎn)和不同類(lèi)型的設(shè)備和協(xié)議,不同設(shè)備的轉(zhuǎn)發(fā)能力、轉(zhuǎn)發(fā)延遲都不盡相同:


為了構(gòu)建和建模實(shí)際網(wǎng)絡(luò),我們從實(shí)際網(wǎng)絡(luò)中抽象出了一組參數(shù),用以描述實(shí)際網(wǎng)絡(luò)的損傷程度。被抽象為黑盒的網(wǎng)絡(luò)鏈路:


用網(wǎng)絡(luò)損傷儀提供穩(wěn)定可控的弱網(wǎng)環(huán)境:


對(duì)網(wǎng)損工具的期望

從對(duì)實(shí)際網(wǎng)絡(luò)的探測(cè)和抽象來(lái)看,我們期望網(wǎng)損工具有以下功能:

  • 帶寬限制能力

  • 隊(duì)列深度

  • 突發(fā)流量

  • 丟包能力

  • 豐富的丟包模型

  • 固定延遲能力

  • 堆積突發(fā)能力

  • 堆積速率和突發(fā)速率的控制

  • 高頻高精度的仿真參數(shù)修改響應(yīng)能力

從使用的便利性來(lái)看,期望網(wǎng)損工具有以下特性:

  • 良好的擴(kuò)展性

  • 良好的可編程能力

  • 良好的交互體驗(yàn)

網(wǎng)損工具解決的問(wèn)題

對(duì)于設(shè)置指定的網(wǎng)絡(luò)損傷的參數(shù),網(wǎng)損儀能夠?qū)崿F(xiàn)不同網(wǎng)絡(luò)參數(shù)的準(zhǔn)確模擬,能夠在網(wǎng)絡(luò)鏈路中添加定時(shí)定量的可靠網(wǎng)絡(luò)損傷,能夠提高網(wǎng)絡(luò)狀態(tài)的可控性和可復(fù)現(xiàn)能力。


網(wǎng)損工具的局限性

對(duì)于設(shè)置什么樣的網(wǎng)絡(luò)損傷,使用什么樣的參數(shù),網(wǎng)損儀本身并不會(huì)給出答案。由于網(wǎng)絡(luò)本身的復(fù)雜性,真實(shí)網(wǎng)絡(luò)僅對(duì)觀測(cè)者提供有限的可見(jiàn)性,而目前整個(gè)行業(yè)對(duì)網(wǎng)絡(luò)損傷的探測(cè)方法和結(jié)果并不完備,所以目前市面上不同的網(wǎng)損工具支持的損傷功能和提供的損傷模型不盡相同,也不盡準(zhǔn)確。


幾款使用過(guò)的網(wǎng)絡(luò)損傷工具


硬件產(chǎn)品

  • S****



這是一款商業(yè)網(wǎng)絡(luò)損傷儀器,支持模塊化構(gòu)建網(wǎng)絡(luò)拓?fù)?,可以分別設(shè)置每個(gè)模塊的損傷參數(shù),軟件內(nèi)置常見(jiàn)的通信設(shè)備仿真組件。

該設(shè)備的特點(diǎn)是仿真參數(shù)精度高,拓?fù)錁?gòu)建靈活。同時(shí)也要求使用者對(duì)需要仿真的網(wǎng)絡(luò)拓?fù)浜推渲械木W(wǎng)絡(luò)節(jié)點(diǎn)有比較清晰的認(rèn)知,相當(dāng)于去仿真一個(gè)接近白盒的網(wǎng)絡(luò)鏈路。

自動(dòng)化方面支持 Restful API 接口調(diào)用。


  • H****


這也是一款商業(yè)網(wǎng)絡(luò)損傷儀,它將網(wǎng)絡(luò)抽象為兩個(gè)方向的鏈路分別添加指定損傷,可以通過(guò) filter 將指定流量導(dǎo)入不通的鏈路中進(jìn)行損傷,相比之下這種實(shí)現(xiàn)方式更加接近互聯(lián)網(wǎng)的思維方式。

在試用這款設(shè)備的時(shí)候該款產(chǎn)品仍處在開(kāi)發(fā)和高速迭代中,添加了不少對(duì)互聯(lián)網(wǎng)行業(yè)更友好的特性,比如:更多丟包模型的支持,更多種類(lèi)的 jitter 分布支持,Python 調(diào)用接口的開(kāi)發(fā)等。

使用下來(lái)這款產(chǎn)品在 UI 交互和系統(tǒng)穩(wěn)定性方面還有較大的提升空間。


軟件產(chǎn)品

  • QNET -?項(xiàng)目地址



這是騰訊 WeTest 開(kāi)發(fā)的一款網(wǎng)絡(luò)損傷工具,目前支持 iOS 和 Android 平臺(tái)。該工具通過(guò) VPN 的方法代理本機(jī)流量實(shí)現(xiàn)網(wǎng)絡(luò)損傷的注入,更適合 Web 或普通類(lèi)型 APP 開(kāi)發(fā)的弱網(wǎng)測(cè)試需求,對(duì)于實(shí)時(shí)音視頻這種流量較大的場(chǎng)景通過(guò) VPN 代理的方式會(huì)導(dǎo)致明顯的系統(tǒng)性能問(wèn)題,使得仿真準(zhǔn)確性下降。

該產(chǎn)品的特點(diǎn)是內(nèi)置了不少弱網(wǎng)場(chǎng)景的模型,比如:電梯、高鐵、地鐵場(chǎng)站場(chǎng)景等,也會(huì)更新基于騰訊服務(wù)器探測(cè)到的實(shí)時(shí)延遲和 Jitter 作為仿真數(shù)據(jù)來(lái)源。

自動(dòng)化方面 Andoid 平臺(tái)支持 adb 方式的接口調(diào)用,iOS 平臺(tái)目前還沒(méi)有使用過(guò)。


  • Clumsy?-?項(xiàng)目地址


這是一款小團(tuán)隊(duì)的開(kāi)源軟件,目前僅支持 Windows 平臺(tái)使用。


這款軟件的功能相對(duì)比較簡(jiǎn)單,甚至沒(méi)有找到 Jitter 的設(shè)置方法。自動(dòng)化調(diào)用方面也沒(méi)有對(duì)應(yīng)的接口支持。


但對(duì)于低成本的 Windows 單機(jī)弱網(wǎng)調(diào)試也算是填補(bǔ)了一個(gè)空白。


  • APPle Network Link Conditioner?-?項(xiàng)目地址


這款軟件是作為 APPle 開(kāi)發(fā)者工具存在的,分別支持 MacOS 和 iOS 設(shè)備。

功能方面也比較簡(jiǎn)單,除了帶寬限制、丟包和延遲外也沒(méi)有看到 Jitter 相關(guān)的設(shè)置,不過(guò)該工具支持一些簡(jiǎn)單的網(wǎng)絡(luò)類(lèi)型的預(yù)置,但實(shí)現(xiàn)比較簡(jiǎn)單。

該功能模塊在不同版本的 APPle 系統(tǒng)中維護(hù)的較好,可用性和穩(wěn)定性都比較有保證,UI 也比較簡(jiǎn)潔明了。

自動(dòng)化方面可以通過(guò) APPlescript 腳本控制,但控制精度較低,不適合高頻調(diào)用。

  • Linux Traffic Control -?相關(guān)文檔

大名鼎鼎的 TC 模塊作為 Linux 內(nèi)核的一部分存在,沒(méi)有官方的 UI 界面適配。但江湖上流傳著各種各樣的 WrAPPer 和第三方 UI。

因?yàn)?Linux 內(nèi)核開(kāi)源的特性使得 TC 擁有無(wú)盡的可能性,但缺點(diǎn)就是學(xué)習(xí)曲線比較陡峭,并且在不同內(nèi)核版本中的功能實(shí)現(xiàn)有不小的差異,比如:pfifo 雖然文檔中都聲明支持,但大多數(shù)版本并不支持;甚至有些版本的 jitter 分布不符合預(yù)期。

當(dāng) TC 結(jié)合 iptables 之后,能實(shí)現(xiàn)絕大多數(shù)網(wǎng)損儀擁有的靜態(tài)損傷功能;而對(duì)于動(dòng)態(tài)的損傷受限于 Linux 命令執(zhí)行的實(shí)效性調(diào)用的精度并不高。如果要提高執(zhí)行精度就需要去直接調(diào)動(dòng) C 接口或直接進(jìn)行編程實(shí)現(xiàn)。


需要解決的問(wèn)題


實(shí)際工作中網(wǎng)絡(luò)損傷環(huán)境的需求主要來(lái)自有兩個(gè)方面:

  1. 探測(cè)和確認(rèn)產(chǎn)品的弱網(wǎng)對(duì)抗能力邊界

  2. 提高產(chǎn)品在實(shí)際網(wǎng)絡(luò)中的弱網(wǎng)對(duì)抗能力

對(duì)于第一點(diǎn)需求,行業(yè)中一般的作法是將某一網(wǎng)絡(luò)指標(biāo)或幾個(gè)網(wǎng)絡(luò)指標(biāo)的組合參數(shù)拉滿,直到產(chǎn)品卡死或無(wú)法正常使用為止。例如可能的測(cè)試方法包括:帶寬限制從 1000Kbps 逐步降低到 100Kbps 或 50Kbps;丟包率從 5% 上升到 70% 或 80%;延遲(或延遲抖動(dòng))從 10ms 上升到 2000ms。這種測(cè)試方法確實(shí)是有意義的,不過(guò)從對(duì)多種網(wǎng)絡(luò)損傷設(shè)備的使用經(jīng)驗(yàn)來(lái)看,不同設(shè)備的帶寬限制功能默認(rèn)配置的隊(duì)列深度和允許的 Burst 數(shù)據(jù)量是不盡相同的,延遲抖動(dòng)的默認(rèn)分布和是否允許亂序的具體實(shí)現(xiàn)也有區(qū)別,所以即使是相同的帶寬限制或相同的延遲抖動(dòng),用不同的網(wǎng)損工具很能可能會(huì)測(cè)試出不同的結(jié)果;而對(duì)于丟包率和固定延遲的指標(biāo)來(lái)說(shuō)各個(gè)工具的默認(rèn)實(shí)現(xiàn)基本上是一致的,分別對(duì)應(yīng)隨機(jī)丟包和單位為毫秒的固定延遲。

對(duì)于第二點(diǎn)需求,問(wèn)題的難點(diǎn)是如何描述和建模真實(shí)網(wǎng)絡(luò),可以看到一部分近期涌現(xiàn)的網(wǎng)絡(luò)損傷軟件比如 QNET 已經(jīng)注意到這方面的功能了,開(kāi)始集成一些對(duì)真實(shí)網(wǎng)絡(luò)的探測(cè)數(shù)據(jù)和模型,但受限于產(chǎn)品本身的形態(tài)和平臺(tái)限制在進(jìn)行大規(guī)模部署和使用時(shí)還是有不少障礙。

針對(duì)以上提到的兩個(gè)問(wèn)題,聲網(wǎng)分別開(kāi)展了網(wǎng)絡(luò)損傷特征的研究和實(shí)際網(wǎng)絡(luò)探測(cè)和建模的持續(xù)推進(jìn),從目前網(wǎng)絡(luò)探測(cè)的數(shù)據(jù)來(lái)看,實(shí)際網(wǎng)絡(luò)的損傷有以下特征是傳統(tǒng)弱網(wǎng)測(cè)試用例無(wú)法覆蓋到的:

  1. 網(wǎng)絡(luò)帶寬的時(shí)變頻率遠(yuǎn)高于直觀,并且需要配合隊(duì)列深度和突發(fā)流量的支持。

  2. 長(zhǎng)時(shí)間持續(xù)的高隨機(jī)丟包并不常見(jiàn),大多數(shù)丟包與網(wǎng)絡(luò)的擁堵?tīng)顩r具有很強(qiáng)的相關(guān)性且并不隨機(jī)。

  3. 不存在持續(xù)的較低帶寬限制,除非運(yùn)營(yíng)商或共享網(wǎng)絡(luò)的人為設(shè)置。

  4. 基本不存在亂序或重復(fù)包的場(chǎng)景,除非在小區(qū)或 AP 切換的時(shí)候。

在對(duì)比了各種網(wǎng)絡(luò)損傷工具的優(yōu)劣勢(shì)之后,聲網(wǎng)最終選擇了 Linux Traffic Control 的自研方案,目前來(lái)看這種方案的開(kāi)放性和可能性是最高的,TC 命令 + iptables + 自研開(kāi)發(fā)的組合完全能夠覆蓋從弱網(wǎng)對(duì)抗邊界測(cè)試到實(shí)際網(wǎng)絡(luò)仿真的各種應(yīng)用場(chǎng)景,為聲網(wǎng)產(chǎn)品在更真實(shí)的網(wǎng)絡(luò)下驗(yàn)證弱網(wǎng)對(duì)抗算法提供有力的保障。


結(jié)語(yǔ)

對(duì)于互聯(lián)網(wǎng)公司,特別是有仿真 Lastmile 網(wǎng)絡(luò)需求的公司來(lái)說(shuō),目前市場(chǎng)上的硬件網(wǎng)損儀適配的還不是太友好,傳統(tǒng)的硬件網(wǎng)損儀從適配運(yùn)營(yíng)商和通信設(shè)備廠商的需求發(fā)展起來(lái),更偏重于保障測(cè)試的吞吐量和仿真的精度,對(duì)于網(wǎng)絡(luò)類(lèi)型和網(wǎng)絡(luò)場(chǎng)景的多樣性缺乏探索,當(dāng)前市場(chǎng)上也出現(xiàn)了一些軟件的網(wǎng)損解決方案,有些仿真軟件的開(kāi)發(fā)過(guò)程中會(huì)利用網(wǎng)絡(luò)探測(cè)結(jié)果內(nèi)置一些網(wǎng)絡(luò)場(chǎng)景和網(wǎng)絡(luò)類(lèi)型的模版,更貼合互聯(lián)網(wǎng)公司的使用場(chǎng)景。對(duì)于弱網(wǎng)對(duì)抗要求不高的產(chǎn)品來(lái)說(shuō),選擇這些軟件仿真弱網(wǎng)是高效且低成本的方案,而對(duì)弱網(wǎng)對(duì)抗有較高要求的實(shí)時(shí)網(wǎng)絡(luò)產(chǎn)品,在有能力做網(wǎng)絡(luò)探測(cè)和訂制網(wǎng)絡(luò)損傷場(chǎng)景的前提下,使用開(kāi)源的 Linux Traffic Control 是一種更加自主和具備更多可能性的選擇。


附表:網(wǎng)絡(luò)損傷工具功能對(duì)比:

<點(diǎn)擊圖片查看大圖>


Dev for Dev專(zhuān)欄介紹

Dev for Dev(Developer for Developer)是聲網(wǎng)Agora 與 RTC 開(kāi)發(fā)者社區(qū)共同發(fā)起的開(kāi)發(fā)者互動(dòng)創(chuàng)新實(shí)踐活動(dòng)。透過(guò)工程師視角的技術(shù)分享、交流碰撞、項(xiàng)目共建等多種形式,匯聚開(kāi)發(fā)者的力量,挖掘和傳遞最具價(jià)值的技術(shù)內(nèi)容和項(xiàng)目,全面釋放技術(shù)的創(chuàng)造力。


網(wǎng)絡(luò)損傷工具大亂斗的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
萍乡市| 革吉县| 壤塘县| 淮安市| 双流县| 麻城市| 武汉市| 旺苍县| 汝南县| 惠安县| 五台县| 科技| 佛坪县| 乐至县| 宜丰县| 额尔古纳市| 锡林浩特市| 舒城县| 社会| 龙门县| 乌拉特中旗| 永州市| 泉州市| 巴东县| 北川| 新乡县| 凉山| 鄱阳县| 富平县| 依兰县| 三穗县| 邛崃市| 时尚| 竹溪县| 资兴市| 皋兰县| 湖州市| 柯坪县| 安吉县| 中阳县| 奉新县|