在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

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

如意 ? 來源:CSDN ? 作者:Peter盼 ? 2020-06-20 10:34 ? 次閱讀

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

示例和來源

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

實(shí)現(xiàn)

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

在啟動(dòng)時(shí),用戶空間進(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 可以通過將數(shù)據(jù)寫入 traffic_cookie_tag_map 和 traffic_uid_counterSet_map 來標(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 過濾器還負(fù)責(zé)根據(jù)手機(jī)設(shè)置屏蔽來自某些 UID 的流量。基于 UID 的網(wǎng)絡(luò)流量屏蔽功能取代了內(nèi)核中的 xt_owner 模塊,并且可以通過將數(shù)據(jù)寫入 traffic_powersave_uid_map、traffic_standby_uid_map 和 traffic_dozable_uid_map 來配置詳細(xì)模式。

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

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

要求

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

驗(yàn)證是否已開啟正確配置時(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 棄用過程

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

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

在 Android 9 之后的下一個(gè)版本中,我們將完全阻止應(yīng)用訪問這些 xt_qtaguid proc 文件,并開始從新的 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 功能。沒有強(qiáng)制執(zhí)行該更新的 CTS 測(cè)試。

驗(yàn)證

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

測(cè)試

提供了內(nèi)核 net_tests,用來確保您開啟了必需的功能,并向后移植了必需的內(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 版本中都得到支持,因此沒有強(qiáng)制在所有設(shè)備上實(shí)現(xiàn)新模塊的 CTS 測(cè)試。不過,對(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)以及是否正確開啟了 eBPF。如果 eBPF 處于開啟狀態(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)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3968

    瀏覽量

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

    關(guān)注

    0

    文章

    19

    瀏覽量

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

    關(guān)注

    0

    文章

    26

    瀏覽量

    4290
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎ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ù)往往無法滿足需求,導(dǎo)致性能瓶頸、連接超時(shí)甚至服務(wù)崩潰。本文基于真實(shí)案例分析,從參數(shù)解讀、問題診斷到優(yōu)化實(shí)踐,手把手教你如何調(diào)優(yōu)Linux網(wǎng)絡(luò)參數(shù),支撐百萬級(jí)并發(fā)連接。
    的頭像 發(fā)表于 05-29 09:21 ?146次閱讀

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

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

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

    正點(diǎn)原子Linux系列全新視頻教程來啦!手把手教你MP257開發(fā)板,讓您輕松入門! 、視頻觀看 正點(diǎn)原子手把手教你學(xué)STM32MP257
    發(fā)表于 05-16 10:42

    GPU顯卡維修避坑指南:手把手教你識(shí)別行業(yè)套路!

    的今天,高端顯卡維修已成“暴利暗流”。虛高報(bào)價(jià)、偷換配件、技術(shù)陷阱……用戶稍有不慎,輕則損失數(shù)萬,重則設(shè)備報(bào)廢。今天小助手將揭露行業(yè)亂象,手把手教你識(shí)別套路,并推薦
    的頭像 發(fā)表于 04-02 20:31 ?736次閱讀
    GPU顯卡維修避坑指南:<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>識(shí)別行業(yè)套路!

    KiCad直播活動(dòng)(三):在 Windows上編譯KiCad 手把手教您編譯/構(gòu)建 KiCad 源碼

    Developer Ethan 同學(xué),手把手教您編譯/構(gòu)建 KiCad 源碼: 開發(fā)工具安裝 環(huán)境變量配置 使用 VS2022 構(gòu)建 KiCad 參與直播的小伙伴還有機(jī)會(huì)獲得 KiCon Badge
    的頭像 發(fā)表于 03-24 11:14 ?708次閱讀
    KiCad直播活動(dòng)(三):在 Windows上編譯KiCad <b class='flag-5'>手把手</b>教您編譯/構(gòu)建 KiCad 源碼

    《零基礎(chǔ)開發(fā)AI Agent——手把手教你用扣子做智能體》

    《零基礎(chǔ)開發(fā)AI Agent——手把手教你用扣子做智能體》是本為普通人量身打造的AI開發(fā)指南。它不僅深入淺出地講解了Agent的概念和發(fā)展,還通過詳細(xì)的工具介紹和實(shí)戰(zhàn)案例,幫助讀者快速掌握
    發(fā)表于 03-18 12:03

    手把手教你做星閃無人機(jī)—KaihongOS星閃無人機(jī)開發(fā)實(shí)戰(zhàn)》系列課程課件匯總

    為助力開發(fā)者迅速掌握『KaihongOS輕量系統(tǒng)開發(fā)技術(shù)』與『星閃無線通信技術(shù)』,實(shí)現(xiàn)快速上手與深度體驗(yàn),“開鴻Developer社區(qū)”攜手“電子發(fā)燒友”再次聯(lián)合推出《手把手教你做星閃無人機(jī)
    發(fā)表于 03-18 10:33

    手把手教你做PC-KaihongOS筆記本電腦開發(fā)實(shí)戰(zhàn)》課件匯總

    ”攜手“電子發(fā)燒友”聯(lián)合推出了 《KaihongOS手把手系列直播課程》,該系列課程以實(shí)際產(chǎn)品為案例,詳細(xì)講解每個(gè)產(chǎn)品的開發(fā)全流程。 此次首發(fā)內(nèi)容是《手把手教你做PC-KaihongOS筆記本電腦開發(fā)
    發(fā)表于 03-18 10:25

    【第四章 定時(shí)任務(wù)】手把手教你玩轉(zhuǎn)新版正點(diǎn)原子云

    【第四章 定時(shí)任務(wù)】手把手教你玩轉(zhuǎn)新版正點(diǎn)原子云 承接上篇,除了報(bào)警聯(lián)動(dòng)這個(gè)功能,原子云還有個(gè)特色功能也是各開發(fā)者喜歡用的,定時(shí)任務(wù)功能。 【正點(diǎn)原子】云平臺(tái):原子云(點(diǎn)擊登錄原子云) 前言
    發(fā)表于 03-13 10:19

    【第章 透?jìng)鞑呗浴?b class='flag-5'>手把手教你玩轉(zhuǎn)新版正點(diǎn)原子云

    【第章 透?jìng)鞑呗浴?b class='flag-5'>手把手教你玩轉(zhuǎn)新版正點(diǎn)原子云 1. 本次實(shí)驗(yàn)使用正點(diǎn)原子D40 Mini 4G Cat1 DTU數(shù)傳模塊 1.1 D40數(shù)傳模塊資料 具體使用和資料下載可到:D40 Mini
    發(fā)表于 03-05 16:52

    開發(fā)者集結(jié)!《手把手教你做星閃無人機(jī)》第二課開講啦!

    開發(fā)者集結(jié)!《手把手教你做星閃無人機(jī)》第二課開講啦!
    的頭像 發(fā)表于 02-17 19:40 ?312次閱讀
    開發(fā)者集結(jié)!《<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>做星閃無人機(jī)》第二課開講啦!

    手把手教你做星閃無人機(jī)》即將開播,鎖定15日晚七點(diǎn)!

    ”再次聯(lián)合推出《手把手教你做星閃無人機(jī)—KaihongOS星閃無人機(jī)開發(fā)實(shí)戰(zhàn)》系列課程,該課程與《手把手教你做PC—KaihongOS筆記本電腦開發(fā)實(shí)戰(zhàn)》同步并行,
    的頭像 發(fā)表于 01-13 19:42 ?459次閱讀
    《<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>做星閃無人機(jī)》即將開播,鎖定15日晚七點(diǎn)!

    手把手教你做PC》課程即將啟動(dòng)!深開鴻引領(lǐng)探索KaihongOS筆記本電腦開發(fā)實(shí)戰(zhàn)

    ”攜手“電子發(fā)燒友”聯(lián)合推出了《KaihongOS手把手系列直播課程》,該系列課程以實(shí)際產(chǎn)品為案例,詳細(xì)講解每個(gè)產(chǎn)品的開發(fā)全流程。此次首發(fā)內(nèi)容是《手把手教你做PC-
    的頭像 發(fā)表于 01-06 20:46 ?509次閱讀
    《<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>做PC》課程即將啟動(dòng)!深開鴻引領(lǐng)探索KaihongOS筆記本電腦開發(fā)實(shí)戰(zhàn)

    Air780E模組LuatOS開發(fā)實(shí)戰(zhàn) —— 手把手教你搞定數(shù)據(jù)打包解包

    本文要說的是低功耗4G模組Air780E的LuatOS開發(fā)實(shí)戰(zhàn),我將手把手教你搞定數(shù)據(jù)打包解包。
    的頭像 發(fā)表于 12-03 11:17 ?580次閱讀
    Air780E模組LuatOS開發(fā)實(shí)戰(zhàn) —— <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>搞定數(shù)據(jù)打包解包

    手把手教你通過宏集物聯(lián)網(wǎng)工控屏&amp;網(wǎng)關(guān)進(jìn)行協(xié)議轉(zhuǎn)換,將底層PLC/傳感器的數(shù)據(jù)轉(zhuǎn)換為TCP協(xié)議并傳輸?shù)接脩?/a>

    手把手教你通過宏集物聯(lián)網(wǎng)工控屏&網(wǎng)關(guān)進(jìn)行協(xié)議轉(zhuǎn)換,將底層PLC/傳感器的數(shù)據(jù)轉(zhuǎn)換為TCP協(xié)議并傳輸?shù)接脩艚K端
    的頭像 發(fā)表于 08-15 13:29 ?1000次閱讀
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>通過宏集物聯(lián)網(wǎng)工控屏&amp;網(wǎng)關(guān)進(jìn)行協(xié)議轉(zhuǎn)換,將底層PLC/傳感器的數(shù)據(jù)轉(zhuǎn)換為TCP協(xié)議并傳輸?shù)接脩? />    </a>
</div>                    </div>
                    <div   id=
    主站蜘蛛池模板: aaa一区二区三区 | 欧美在线视频免费 | 一区二区三区四区在线不卡高清 | 亚洲欧美在线一区 | 亚洲一区中文字幕在线观看 | 一级毛片视屏 | aaaa级日本片免费视频 | 日本不卡在线视频高清免费 | 男女做视频网站免费观看 | 天堂网中文在线最新版 | 一级特黄a免费大片 | 中国一级特黄特级毛片 | 好男人社区www在线观看 | 免费看毛片网 | 欧美色吧视频在线观看 | 日本一区二区三区四区在线观看 | 免费欧美黄色网址 | 欧美日一区 | 俺去俺来也www色官网免费的 | 激情五月亚洲 | 成人a级特黄毛片 | 日本特黄特色aaa大片免费欧 | 色网址在线| 天天操天天擦 | 你懂得的在线观看免费视频 | 亚洲一区二区影视 | 亚洲三级在线视频 | 国产精品第9页 | 亚洲精品自拍区在线观看 | 日a在线| 天天爽夜夜爽人人爽曰喷水 | 欧美高清一区二区 | 婷婷综合久久中文字幕蜜桃三 | 午夜影院普通用户体验区 | 午夜一级精品免费毛片 | 91精品久久久久含羞草 | 免费高清视频在线观看 | 在线播放免费观看 | 给我免费播放片黄色 | 亚州人成网在线播放 | seetube18日本第一次 |