哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文手把手教你Android中的 eBPF 流量監(jiān)控

如意 ? 來(lái)源:CSDN ? 作者:Peter盼 ? 2020-06-20 10:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

eBPF 網(wǎng)絡(luò)流量工具結(jié)合使用內(nèi)核與用戶(hù)空間實(shí)現(xiàn)來(lái)監(jiān)控設(shè)備自上次啟動(dòng)以來(lái)的網(wǎng)絡(luò)使用情況。它提供了額外的功能(如套接字標(biāo)記、分離前臺(tái)/后臺(tái)流量,以及按 UID 劃分的防火墻),以根據(jù)手機(jī)狀態(tài)阻止應(yīng)用訪(fǎng)問(wèn)網(wǎng)絡(luò)。從該工具收集的統(tǒng)計(jì)數(shù)據(jù)存儲(chǔ)在稱(chēng)為 eBPF maps 的內(nèi)核數(shù)據(jù)結(jié)構(gòu)中,并且相應(yīng)結(jié)果由 NetworkStatsService 等服務(wù)用來(lái)提供自設(shè)備上次啟動(dòng)以來(lái)的持久流量統(tǒng)計(jì)數(shù)據(jù)。

示例和來(lái)源

用戶(hù)空間更改主要在 system/netd 和 framework/base 項(xiàng)目中。開(kāi)發(fā)工作在 AOSP 中完成,因此 AOSP 代碼將始終保持最新?tīng)顟B(tài)。源代碼主要位于 system/netd/server/TrafficController*、system/netd/bpfloader 和 system/netd/libbpf/ 中。此外,一些必要的框架變更也在 framework/base/ 和 system/core 中。

實(shí)現(xiàn)

Android 9 開(kāi)始,內(nèi)核版本為 4.9 或更高且最初搭載了 Android P 版本的 Android 設(shè)備必須使用基于 eBPF 的網(wǎng)絡(luò)流量監(jiān)控記帳模塊,而不是 xt_qtaguid。新的基礎(chǔ)架構(gòu)更靈活且更易于維護(hù),并且不需要任何外部?jī)?nèi)核代碼。

舊版流量監(jiān)控和 eBPF 流量監(jiān)控之間的主要設(shè)計(jì)差異如圖 1 所示。

一文手把手教你Android中的 eBPF 流量監(jiān)控

圖 1.舊版流量監(jiān)控(左)和 eBPF 流量監(jiān)控(右)的設(shè)計(jì)差異

新的 trafficController 設(shè)計(jì)基于 cgroup 級(jí)的 eBPF 過(guò)濾器以及內(nèi)核中的 xt_bpf netfilter 模塊。這些 eBPF 過(guò)濾器在收發(fā)數(shù)據(jù)包時(shí)應(yīng)用,數(shù)據(jù)包需要通過(guò)這些過(guò)濾器。cgroup eBPF 過(guò)濾器位于傳輸層,負(fù)責(zé)根據(jù)套接字 UID 以及用戶(hù)空間設(shè)置對(duì)正確的 UID 計(jì)算流量。xt_bpf netfilter 掛接在 bw_raw_PREROUTING 和 bw_mangle_POSTROUTING 鏈上,負(fù)責(zé)對(duì)正確的接口計(jì)算流量。

在啟動(dòng)時(shí),用戶(hù)空間進(jìn)程 trafficController 會(huì)創(chuàng)建用于收集數(shù)據(jù)的 eBPF 映射,并將所有映射作為虛擬文件固定在 sys/fs/bpf。然后,特權(quán)進(jìn)程 bpfloader 將預(yù)編譯的 eBPF 程序加載到內(nèi)核中,并將其附加到正確的 cgroup。所有流量都對(duì)應(yīng)于同一個(gè)根 cgroup,因此默認(rèn)情況下,所有進(jìn)程都應(yīng)包含在該 cgroup 中。

在運(yùn)行時(shí),trafficController 可以通過(guò)將數(shù)據(jù)寫(xiě)入 traffic_cookie_tag_map 和 traffic_uid_counterSet_map 來(lái)標(biāo)記/取消標(biāo)記套接字。NetworkStatsService 可以從 traffic_tag_stats_map、traffic_uid_stats_map 和 traffic_iface_stats_map 中讀取流量統(tǒng)計(jì)數(shù)據(jù)。除了流量統(tǒng)計(jì)數(shù)據(jù)收集功能之外,trafficController 和 cgroup eBPF 過(guò)濾器還負(fù)責(zé)根據(jù)手機(jī)設(shè)置屏蔽來(lái)自某些 UID 的流量?;?UID 的網(wǎng)絡(luò)流量屏蔽功能取代了內(nèi)核中的 xt_owner 模塊,并且可以通過(guò)將數(shù)據(jù)寫(xiě)入 traffic_powersave_uid_map、traffic_standby_uid_map 和 traffic_dozable_uid_map 來(lái)配置詳細(xì)模式。

新實(shí)現(xiàn)遵循舊版 xt_qtaguid 模塊實(shí)現(xiàn),因此 TrafficController 和 NetworkStatsService 將使用舊版實(shí)現(xiàn)或新實(shí)現(xiàn)運(yùn)行。如果應(yīng)用使用公共 API,那么無(wú)論在后臺(tái)使用 xt_qtaguid 還是 eBPF 工具,應(yīng)該沒(méi)有任何區(qū)別。

如果設(shè)備內(nèi)核基于 Android 通用內(nèi)核 4.9(SHA39c856663dcc81739e52b02b77d6af259eb838f6 或更高版本),則無(wú)需修改 HAL、驅(qū)動(dòng)程序或內(nèi)核代碼,即可實(shí)現(xiàn)新的 eBPF 工具。

要求

內(nèi)核配置必須開(kāi)啟以下配置:

驗(yàn)證是否已開(kāi)啟正確配置時(shí),VTS 內(nèi)核配置測(cè)試非常有用。

CONFIG_CGROUP_BPF=y

CONFIG_BPF=y

CONFIG_BPF_SYSCALL=y

CONFIG_NETFILTER_XT_MATCH_BPF=y

CONFIG_INET_UDP_DIAG=y

設(shè)備 MEM_LOCK 資源限制必須設(shè)為 8 MB 或更多。

舊版 xt_qtaguid 棄用過(guò)程

新的 eBPF 工具正在逐步取代 xt_qtaguid 模塊以及它所基于的 xt_owner 模塊。我們將開(kāi)始從 Android 內(nèi)核中移除 xt_qtaguid 模塊,并停用不必要的配置。

在 Android 9 版本中,xt_qtaguid 模塊在所有設(shè)備上都處于開(kāi)啟狀態(tài),但直接讀取 xt_qtaguid 模塊 proc 文件的所有公共 API 都移到了 NetworkManagement 服務(wù)中。根據(jù)設(shè)備內(nèi)核版本和初始 API 級(jí)別,NetworkManagement 服務(wù)能夠知道 eBPF 工具是否處于開(kāi)啟狀態(tài),并選擇正確的模塊來(lái)獲取每個(gè)應(yīng)用的網(wǎng)絡(luò)使用情況統(tǒng)計(jì)數(shù)據(jù)。sepolicy 會(huì)阻止 SDK 級(jí)別為 28 及以上的應(yīng)用訪(fǎng)問(wèn) xt_qtaguid proc 文件。

在 Android 9 之后的下一個(gè)版本中,我們將完全阻止應(yīng)用訪(fǎng)問(wèn)這些 xt_qtaguid proc 文件,并開(kāi)始從新的 Android 通用內(nèi)核中移除 xt_qtaguid 模塊。移除該模塊后,我們將更新相應(yīng)內(nèi)核版本的 Android 基礎(chǔ)配置,以明確關(guān)閉 xt_qtaguid 模塊。當(dāng) Android 版本的最低內(nèi)核版本要求為 4.9 或更高時(shí),我們將徹底棄用 xt_qtaguid 模塊。

在 Android 9 版本中,只有搭載 Android 9 版本的設(shè)備才需要具備新的 eBPF 功能。如果設(shè)備搭載的內(nèi)核可以支持 eBPF 工具,我們建議在升級(jí)到 Android 9 版本時(shí),將設(shè)備更新為采用新的 eBPF 功能。沒(méi)有強(qiáng)制執(zhí)行該更新的 CTS 測(cè)試。

驗(yàn)證

您應(yīng)該定期從 Android 通用內(nèi)核和 Android AOSP 主分支獲取補(bǔ)丁程序。請(qǐng)確保您的實(shí)現(xiàn)通過(guò)適用的 VTS 和 CTS 測(cè)試,即 netd_unit_test 和 libbpf_test。

測(cè)試

提供了內(nèi)核 net_tests,用來(lái)確保您開(kāi)啟了必需的功能,并向后移植了必需的內(nèi)核補(bǔ)丁程序。這些測(cè)試已集成到 Android 9 版本 VTS 測(cè)試中。system/netd/ 中有一些單元測(cè)試(netd_unit_test 和 libbpf_test)。netd_integration_test 中有一些驗(yàn)證新工具整體行為的測(cè)試。

CTS 和 CTS 驗(yàn)證程序

由于這兩個(gè)流量監(jiān)控模塊在 Android 9 版本中都得到支持,因此沒(méi)有強(qiáng)制在所有設(shè)備上實(shí)現(xiàn)新模塊的 CTS 測(cè)試。不過(guò),對(duì)于內(nèi)核版本高于 4.9 且最初搭載了 Android 9 版本(即,初始 API 級(jí)別大于等于 28)的設(shè)備,提供了基于 GSI 的 CTS 測(cè)試,用于驗(yàn)證是否正確配置了新模塊。舊的 CTS 測(cè)試(如TrafficStatsTest、NetworkUsageStatsTest 和 CtsNativeNetTestCases)可用于驗(yàn)證新模塊的行為是否與舊的 UID 模塊一致。

手動(dòng)測(cè)試

system/netd/中有一些單元測(cè)試(netd_unit_test、netd_integration_test 和 libbpf_test)。此外,還提供了 dumpsys 支持,以便手動(dòng)檢查狀態(tài)。dumpsys netd 命令可顯示 trafficController 模塊的基本狀態(tài)以及是否正確開(kāi)啟了 eBPF。如果 eBPF 處于開(kāi)啟狀態(tài),dumpsys netd trafficcontroller 命令會(huì)顯示每個(gè) eBPF 映射的詳細(xì)內(nèi)容,包括帶標(biāo)記的套接字信息、每個(gè)標(biāo)記的統(tǒng)計(jì)數(shù)據(jù)、UID 和 iface,以及所有者 UID 匹配項(xiàng)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    4035

    瀏覽量

    134480
  • 流量監(jiān)控
    +關(guān)注

    關(guān)注

    0

    文章

    19

    瀏覽量

    7557
  • BPF
    BPF
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    4750
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    射頻頭壞了只能扔?手把手教你維修排查T(mén)NC插頭,干貨值得收藏!

    射頻接頭壞了只能剪掉重做?未必!本文由電蜂優(yōu)選(elecbee)專(zhuān)家親授,深度拆解 TNC 插頭的維修排查全流程。從中心針偏移糾偏、氧化層化學(xué)清理到組裝式接頭的無(wú)損重組,手把手教你如何通過(guò) VNA
    的頭像 發(fā)表于 04-14 17:12 ?104次閱讀
    射頻頭壞了只能扔?<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>維修排查T(mén)NC插頭,干貨值得收藏!

    手把手教你學(xué)51單片機(jī)-C語(yǔ)言版

    更多信息),手把手地帶領(lǐng)大家來(lái)學(xué)習(xí)單片機(jī)技術(shù),給單片機(jī)初學(xué)者帶來(lái)福音,讓大家一步一個(gè)腳印的掌握單片機(jī)技術(shù)。 《手把手教你學(xué)51單片機(jī)-C語(yǔ)言版》(第3版)這本書(shū)除了講解簡(jiǎn)單的實(shí)驗(yàn)和編
    發(fā)表于 03-05 11:47

    從0到1,10+年資深LabVIEW專(zhuān)家,手把手教你攻克機(jī)器視覺(jué)+深度學(xué)習(xí)(5000分鐘實(shí)戰(zhàn)課)

    “告別檢測(cè)系統(tǒng)能力缺陷!10+年LabVIEW視覺(jué)資深專(zhuān)家手把手教你:5000+分鐘高清教程(含工具、算法原理、實(shí)戰(zhàn)操作、項(xiàng)目?jī)?yōu)化全流程講解)”——從傳統(tǒng)視覺(jué)算法→深度學(xué)習(xí)建?!I(yè)級(jí)部署"
    的頭像 發(fā)表于 12-02 08:07 ?752次閱讀
    從0到1,10+年資深LabVIEW專(zhuān)家,<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>攻克機(jī)器視覺(jué)+深度學(xué)習(xí)(5000分鐘實(shí)戰(zhàn)課)

    迅為Hi3403開(kāi)發(fā)板極速啟航 | 手把手帶你玩轉(zhuǎn)核心例程,輕松上手AI視覺(jué)!

    迅為Hi3403開(kāi)發(fā)板極速啟航 | 手把手帶你玩轉(zhuǎn)核心例程,輕松上手AI視覺(jué)!
    的頭像 發(fā)表于 11-19 13:56 ?1848次閱讀
    迅為Hi3403開(kāi)發(fā)板極速啟航 | <b class='flag-5'>手把手</b>帶你玩轉(zhuǎn)核心例程,輕松上手AI視覺(jué)!

    【迅為RK3568開(kāi)發(fā)板NPU實(shí)戰(zhàn)】別再閑置你的NPU!手把手教你玩轉(zhuǎn)RKNN-Toolkit2 的使用

    【迅為RK3568開(kāi)發(fā)板NPU實(shí)戰(zhàn)】別再閑置你的NPU!手把手教你玩轉(zhuǎn)RKNN-Toolkit2 的使用
    的頭像 發(fā)表于 11-11 14:21 ?1518次閱讀
    【迅為RK3568開(kāi)發(fā)板NPU實(shí)戰(zhàn)】別再閑置你的NPU!<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>玩轉(zhuǎn)RKNN-Toolkit2 的使用

    【RK3568 NPU實(shí)戰(zhàn)】別再閑置你的NPU!手把手帶你用迅為資料跑通Android AI檢測(cè)Demo,附完整流程與效果

    【RK3568 NPU實(shí)戰(zhàn)】別再閑置你的NPU!手把手帶你用迅為資料跑通Android AI檢測(cè)Demo,附完整流程與效果
    的頭像 發(fā)表于 11-10 15:58 ?1247次閱讀
    【RK3568 NPU實(shí)戰(zhàn)】別再閑置你的NPU!<b class='flag-5'>手把手</b>帶你用迅為資料跑通<b class='flag-5'>Android</b> AI檢測(cè)Demo,附完整流程與效果

    手把手教你AT指令A(yù)PN設(shè)置:專(zhuān)網(wǎng)連接零門(mén)檻!

    無(wú)論你的技術(shù)背景如何,本教程都將以手把手的方式,拆解AT指令A(yù)PN設(shè)置的全流程。專(zhuān)網(wǎng)連接不再是門(mén)檻,即刻開(kāi)啟自主配置之旅! APN是設(shè)備連接到運(yùn)營(yíng)商網(wǎng)絡(luò)的“身份證” ——當(dāng)設(shè)備插入SIM卡并注冊(cè)到
    的頭像 發(fā)表于 09-04 14:40 ?1376次閱讀
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>AT指令A(yù)PN設(shè)置:專(zhuān)網(wǎng)連接零門(mén)檻!

    RT-Thread Nano硬核移植指南:手把手實(shí)現(xiàn)VGLite圖形驅(qū)動(dòng)適配 | 技術(shù)集結(jié)

    VGLite是NXP提供的輕量級(jí)2D圖形API,本文將手把手帶你實(shí)現(xiàn)VGLite圖形驅(qū)動(dòng)適配RT-Thread。文章分為上、下兩篇,將手把手教您移植。上篇對(duì)RT-ThreadNano內(nèi)核與Finsh組件進(jìn)行移植,下篇?jiǎng)t教您改寫(xiě)SDK
    的頭像 發(fā)表于 07-17 14:40 ?3626次閱讀
    RT-Thread Nano硬核移植指南:<b class='flag-5'>手把手</b>實(shí)現(xiàn)VGLite圖形驅(qū)動(dòng)適配 | 技術(shù)集結(jié)

    【教程】零基礎(chǔ)!手把手教你使用STM32F4進(jìn)行E22-400T22S編程通信

    零基礎(chǔ)搭建本次實(shí)驗(yàn)將會(huì)使用到的軟件是Keil和STM32CubeMX,沒(méi)有這兩個(gè)軟件沒(méi)有請(qǐng)?jiān)诰W(wǎng)上自行下載。本章節(jié)零基礎(chǔ)手把手教會(huì)你搭建最快捷、最簡(jiǎn)單的STM32代碼
    的頭像 發(fā)表于 07-03 19:32 ?1812次閱讀
    【教程】零基礎(chǔ)!<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>使用STM32F4進(jìn)行E22-400T22S編程通信

    【精選直播】手把手教你做PC第十二課:WIFI 驅(qū)動(dòng)框架適配

    手把手教你做PC》系列直播課再度開(kāi)播!《KaihongOS筆記本電腦開(kāi)發(fā)實(shí)戰(zhàn)第十二課:WIFI驅(qū)動(dòng)框架適配》將于07月02日19:00開(kāi)播↑掃碼入群,領(lǐng)課程講義資料包↑深開(kāi)鴻資深工程師親臨直播間
    的頭像 發(fā)表于 07-01 08:08 ?704次閱讀
    【精選直播】<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>做PC第十二課:WIFI 驅(qū)動(dòng)框架適配

    【精選直播】手把手教你做星閃無(wú)人機(jī)第十課:KaihongOS Lite系統(tǒng)專(zhuān)題

    手把手教你做星閃無(wú)人機(jī)》系列直播課再度開(kāi)播!《KaihongOS星閃無(wú)人機(jī)開(kāi)發(fā)實(shí)戰(zhàn)⑩:KaihongOSLite系統(tǒng)專(zhuān)題》↑掃碼入群,領(lǐng)課程講義資料包↑深開(kāi)鴻資深工程師親臨直播間依托筆電實(shí)戰(zhàn)產(chǎn)品
    的頭像 發(fā)表于 06-10 08:06 ?635次閱讀
    【精選直播】<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>做星閃無(wú)人機(jī)第十課:KaihongOS Lite系統(tǒng)專(zhuān)題

    手把手教你如何調(diào)優(yōu)Linux網(wǎng)絡(luò)參數(shù)

    在高并發(fā)網(wǎng)絡(luò)服務(wù)場(chǎng)景,Linux內(nèi)核的默認(rèn)網(wǎng)絡(luò)參數(shù)往往無(wú)法滿(mǎn)足需求,導(dǎo)致性能瓶頸、連接超時(shí)甚至服務(wù)崩潰。本文基于真實(shí)案例分析,從參數(shù)解讀、問(wèn)題診斷到優(yōu)化實(shí)踐,手把手教你如何調(diào)優(yōu)Linux網(wǎng)絡(luò)參數(shù),支撐百萬(wàn)級(jí)并發(fā)連接。
    的頭像 發(fā)表于 05-29 09:21 ?1186次閱讀

    【精選直播】手把手教你做星閃無(wú)人機(jī)第九課:無(wú)線(xiàn)通信編程之 SLE 專(zhuān)題

    手把手教你做星閃無(wú)人機(jī)》系列直播課再度開(kāi)播!《KaihongOS星閃無(wú)人機(jī)開(kāi)發(fā)實(shí)戰(zhàn)⑨:無(wú)線(xiàn)通信編程之SLE專(zhuān)題》↑掃碼入群,領(lǐng)課程講義資料包↑深開(kāi)鴻資深工程師親臨直播間依托筆電實(shí)戰(zhàn)產(chǎn)品案例細(xì)致剖析
    的頭像 發(fā)表于 05-27 08:05 ?580次閱讀
    【精選直播】<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>做星閃無(wú)人機(jī)第九課:無(wú)線(xiàn)通信編程之 SLE 專(zhuān)題

    明晚七點(diǎn)!手把手教你做PC第九課:全功能TypeC驅(qū)動(dòng)框架適配

    手把手教你做PC》系列直播課再度開(kāi)播!《KaihongOS筆記本電腦開(kāi)發(fā)實(shí)戰(zhàn)第九課:全功能TypeC驅(qū)動(dòng)框架適配》將于5月21日19:00開(kāi)播↑掃碼入群,領(lǐng)課程講義資料包↑深開(kāi)鴻資深工程師親臨直播
    的頭像 發(fā)表于 05-20 08:07 ?702次閱讀
    明晚七點(diǎn)!<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>做PC第九課:全功能TypeC驅(qū)動(dòng)框架適配

    正點(diǎn)原子Linux系列全新視頻教程來(lái)啦!手把手教你MP257開(kāi)發(fā)板,讓您輕松入門(mén)!

    正點(diǎn)原子Linux系列全新視頻教程來(lái)啦!手把手教你MP257開(kāi)發(fā)板,讓您輕松入門(mén)! 、視頻觀(guān)看 正點(diǎn)原子手把手教你學(xué)STM32MP257
    發(fā)表于 05-16 10:42
    邵阳市| 平原县| 全南县| 义马市| 明溪县| 高碑店市| 昌黎县| 固原市| 毕节市| 阳西县| 郎溪县| 北票市| 吐鲁番市| 简阳市| 阜阳市| 巴楚县| 兴业县| 苏尼特右旗| 呼和浩特市| 安康市| 垦利县| 西乌| 修武县| 景宁| 余江县| 宜君县| 浦城县| 丹棱县| 盐山县| 崇义县| 白水县| 开鲁县| 广昌县| 余庆县| 白沙| 临泉县| 汝城县| 正宁县| 忻州市| 安丘市| 桂林市|