Android linux eBPF网络相关原理(详细分析~)

一、eBPF相关概述

随着android的版本不断升级,android 9之后,内核版本均为4.X以及更高的5.X,linux的eBPF设计在android系统中应用也越来越多。对于BPF以及eBPF(extended BPF)网上已经有很多的文章介绍,推荐大家先通过公众号中“android平台eBPF初探”等文章先对eBPF的概念、框架和功能有个大概的了解。下面从eBPF设计中网络相关部分大概梳理下eBPF的演变过程。

Android linux eBPF网络相关原理(详细分析~)

BPF(Berkeley PacketFilter)最早出现的目的是为了提供一种高性能的网络包过滤方法,所谓的包过滤就是利用一些预定条件,对网络传输的数据包进行筛选、统计等。在BPF出现之前,iptable一直作为linux内核中防火墙和网络数据包过滤的主要方法。

Android linux eBPF网络相关原理(详细分析~)

相比之前的iptables过滤方法,BPF存在如下2个优点:1.BPF过滤的编码实现通过字节码的形式,直接运行在内核态,避免了在包过滤的过程中与用户态的数据交互,而过滤的结果以MAP形式提供给用户态获取。

2.BPF的过滤在代码中判断执行,相比较iptable的每个chain上的table中多条规则顺序匹配,效率更高。

在BPF的基础上,linux进行了对应的扩展,除了网络相关的内核hook,在文件系统、CPU调度、系统调用等内核很多模块也同步增加了hook点,丰富了eBPF的检测内容。eBPF同时从新封装了一套完整的系统调用,用于装载BPF的代码段、创建和读取BPF map,使得eBPF编程更加通用、易懂。

二、eBPF的编程的API封装

Android linux eBPF网络相关原理(详细分析~)

eBPF编程中,开发人员主要实现的是eBPF的program代码和MAP存储块信息的定义。linux现有版本中的
system/bpf/progs/include/bpf_helpers.h中已经提供了封装好的接口,如下所示:1.DEFINE_BPF_PROG(SECTION_NAME, prog_uid, prog_gid, the_prog)用于定义eBPF的program的代码段,在启动后通过libbpf_android.so调用bpf系统调用,将其加载到内核中。系统运行的过程中,kernel对应模块的hook会调用这些eBPF的program代码,执行的结果如果需要反馈到用户态就更新到MAP中。

Android linux eBPF网络相关原理(详细分析~)

2. #define DEFINE_BPF_PROG(SECTION_NAME,prog_uid, prog_gid, the_prog)用于创建eBPF的MAP存储数据,同时增加了3个接口定义,用于对该MAP的查询、更新、删除操作。

Android linux eBPF网络相关原理(详细分析~)

更多linux内核视频教程文档资料免费领取后台私信【内核】自行获取.

Android linux eBPF网络相关原理(详细分析~)

Android linux eBPF网络相关原理(详细分析~)

Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈-学习视频教程-腾讯课堂

三、Android的eBPF的网络统计和网络管控实现

Andoird 9以后的网络统计和网络收发数据管控(过滤)功能实现主要是使用了eBPF中skfilter和cgroupskb的program type。这部分代码都是在
system/netd/bpf_progs/netd.c中实现的。

Android linux eBPF网络相关原理(详细分析~)

1. Netd模块中eBPF program以及eBPF MAP定义

Android linux eBPF网络相关原理(详细分析~)

2. eBPF网络统计和管控的流程

Android linux eBPF网络相关原理(详细分析~)

1)系统开机后,netd.c运行,在sys/fs/bpf中生成对应的prog和map文件。

文件与代码定义的对应关系(下面看到的都是FILENAME 为netd.c 定义的):

/sys/fs/bpf/prog_FILENAME_PROGTYPE_PROGNAME /sys/fs/bpf/map_FILENAME_MAPNAME。

Android linux eBPF网络相关原理(详细分析~)

2)在收发数据时,linux协议栈在的cgroup bpf hook 函数
__cgroup_bpf_run_filter_skb会调用cgroupskb tpye类型的prog,区分接收、发送做不同的处理。

Android linux eBPF网络相关原理(详细分析~)

3)netd.c中定义的cgroupskb prog在内核态以字节码的形式运行,bpf_traffic_account函数开始对数据包就行统计。如果是发送的数据包,并且根据过滤规则为drop的数据包,直接标记为丢弃并不做统计;如果是UID为DNS进程,则根据框架的配置,选择是否drop;其他情况,根据进程的UID更新
map_netd_app_uid_stats_map对应的统计值,供上层框架查询。

Android linux eBPF网络相关原理(详细分析~)

4)同时系统启动时hal层的BandwidthController.cpp模块会通过iptables的方式在kernel Netfilter 的bw_raw_PREROUTING和bw_mangle_POSTROUTING chain上创建xt_bpf过滤器。所以在数据收发的过程中,所有数据包都会经过xb_bpf过滤。

Android linux eBPF网络相关原理(详细分析~)

Android linux eBPF网络相关原理(详细分析~)

Android linux eBPF网络相关原理(详细分析~)

5)Kernel的xb_bpf驱动中,bpf_mt_check_v1, 通过XT_BPF_MODE_PATH_PINNED的方式调用之前在netd中定义的xt_bpf_egress_prog 和 xt_bpf_ingress_prog的eBPF program。该eBPF program负责对正确的接口计算流量并更新到map_netd_iface_stats_map的MAP中。

Android linux eBPF网络相关原理(详细分析~)

Android linux eBPF网络相关原理(详细分析~)

3. Deviceidle策略生效时eBPF的验证

在Android M中,Google就引入了Doze模式,目的是降低待机过程中的功耗,其中对应用的管控就包括网络限制,一旦进入Doze idle mode,非白名单应用将无法连接网络。在Android 9之后,这种网络限制管控就是通过上面讲到的eBPF实现的。下面我们通过实际测试来验证下,这个过程中eBPF是如何生效的。1)通过下面adb命令,可以强制系统进入doze idle modeadb shell dumpsys battery unplugadb shell dumpsys deviceidle force-idle

2)进入idle状态后,主要执行两个操作:将白名单的应用过滤策略设置为DOZABLE_MATCH;打开DOZE idle 模式的策略管控。在eBPF中,uid的过滤策略在uid_owner_map中存储,而DOZE idle 模式是通过ownerMatch configuration来控制的。通过下面的命令,我们可以看到force-idle以后的uid_owner_map信息。

adb shell dumpsys netd trafficcontroller

Android linux eBPF网络相关原理(详细分析~)

3)上面提到的eBPF的bpf_traffic_account中,调用bpf_owner_match接口,其中判断如果当前config配置为DOZABLE_MATCH并且Uid规则不是DOZABLE_MATCH时将该包选择丢弃。

通过这种方式,进入idle以后,所有的非白名单应用发送的数据都被丢弃,即完成网络管控。

Android linux eBPF网络相关原理(详细分析~)

四、小结

通过以上介绍,相信大家应该对linux eBPF中cgroupskb以及skfilter在android的网络统计以及数据包过滤的功能实现有了基本了解。除了doze idle的功能验证,大家也可以通过App Standby网络限制功能、用户流量告警等功能按照上面的流程来跟踪整个功能是如何实现的,这样更能加深对linux eBPF的框架理解。目前android版本中,虽然还没有彻底废除iptables模块,但是如果为了降低手机的待机、后台运行等场景的数据收发功耗,我们可以参考上面流量统计功能自定义一些自己的匹配规则,使得这种eBPF字节码的编程方式运用更为广泛。

本文链接:https://www.dzdvip.com/34596.html 版权声明:本文内容均来源于互联网。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 395045033@qq.com,一经查实,本站将立刻删除。
(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年7月12日 22:16
下一篇 2022年7月12日 22:36

相关推荐

  • 干粉灭火器多长时间检查一次(干粉灭火器有效期几年 年检)

    干粉灭火器是一种高效灭火器,适用于可燃固体、可燃液体、可燃气体、电器着火等所引起的火灾,也适用于档案资料、纺织品及珍贵仪器着火等。但是干粉灭火器也是有期限的,如果干粉灭火器超过了有效期就会失效。干粉灭火器有效期是几年?手提式干粉灭火器(贮气瓶式)8年,手提贮压式干粉灭火器是10年,推车式干粉灭火器(贮气瓶式)10年,推车贮压式干粉灭火器12年。下面就和小编一起了解干粉灭火器知识吧。 灭火器是最为常用的消防器材,车间灭火器的配置、检查、维修、报废标准,一文说清楚! 1、灭火器的日常检查与维护 检查的依据是《建筑灭火器配置验收及检查规范》 GB50444-2008 1 灭火器的检查与维护应由相关技术人员承担。 2 每次送修的灭火器数量不得超过计算单元配置灭火器总数量的1/4。超出时,应选择相同类型和操作方法的灭火器替代,替代灭火器的灭火级别不应小于原配置灭火器的灭火级别。 3 检查或维修后的灭火器均应按原设置点位置摆放。 4 需维修、报废的灭火器应由灭火器生产企业或专业维修单位进行。 5 灭火器的配置、外观等应按附录C的要求每月进行一次检查。 6 下列场所配置的灭火器,应按附录C的要求每半月进行一次检查。 1 候车(机、船)室、歌舞娱乐放映游艺等人员密集的公共场所; 2 堆场、罐区、石油化工装置区、加油站、锅炉房、地下室等场所。 7 日常巡检发现灭火器被挪动,缺少零部件,或灭火器配置场所的使用性质发生变化等情况时,应及时处置。 8 灭火器的检查记录应予保留。 附录C 2、灭火器的维修和报废 维修和报废的依据1是《建筑灭火器配置验收及检查规范》 GB50444-2008 1 存在机械损伤、明显锈蚀、灭火剂泄露、被开启使用过或符合其他维修条件的灭火器应及时进行维修。 2 灭火器的维修期限应符合表5.3.2的规定。(3+1、5+2) 灭火器的维修期限 灭火器一经开启,必须重新充装。 维修和报废的依据2是《灭火器维修》 XF95-2015 维修 service;servicing为确保灭火器安全使用和有效灭火,对灭火器进行的检查、水压试验、灭火剂回收、零部件更换、再充装、报废与回收处置、质量检验等活动。 灭火器用户应按GB 50444的规定对在用灭火器进行定期检查,发现符合维修要求的灭火器应及时送生产企业维修部门或其授权的维修机构进行维修。. 根据相关规定:经维修灭火器按照《灭…

    2022年5月23日
    76
  • 蜜雪冰城洗脑主题曲如何爆火?营销背后的传播规律

    你爱我,我爱你,蜜雪冰城甜蜜蜜”,看到这句话,是不是已经在心中哼起了旋律呢?蜜雪冰城的这首洗脑主题曲是如何爆火的?其营销背后的传播规律又是怎样的? 在继“什么是快乐星球?”之后,网络上又出现了一首洗脑的考前禁曲,这支新晋曲目正出自大家都挺熟悉的茶饮品牌——蜜雪冰城。 (截自网络,侵删) 01 6月11日,蜜雪冰城官方发布了一则“蜜雪冰城主题曲14国20种语言合集”的动画MV,这段MV长达8分21秒。这八分多钟里,戳开视频的各位可以领略包括中文、英文、韩语、泰语等20种语言对“你爱我 我爱你 蜜雪冰城甜蜜蜜,你爱我 我爱你 蜜雪冰城甜蜜蜜”的演唱。 而这些演唱不但歌词一样、旋律一样,连画面都一模一样。这般攻势,谁遭得住呀?网友们纷纷沦陷,被成功洗脑。 其实,早在去年7月27日,蜜雪冰城就发布了这首主题曲的首版动画MV,可此时仅有中英文两种语言版本。MV首发的当时,并没有引发明显的网络关注。 但蜜雪冰城的门店却通常会依据规章,循环播放这首曲子。最近陆续有网友发觉了它的洗脑魔性,开始在网络上发文吐槽,还有人将其运用到短视频制作的背景曲中。 蜜雪冰城也注意到这些,于6月3日在社交平台和B站等地再次发布了初版MV,来蹭自己的话题,相关舆情热度开始显著升温。有了官方的响应,主题曲的二创风越刮越盛,不但有了各外语版本,方言版、京剧版、电音版、文言文版、舞蹈版……层出不穷。 官方也随之整合了网友们的二创作品,推出前文提到的14国20种语言合集,一把点热了话题,舆情热度骤升至峰值,且有理想的热度延续。 02 一个近一年前出的低成本MV,随着网友们的自传播推动,蜜雪冰城意外的白捡了一波厉害的广告宣传。 通常来说,单一重复的洗脑广告并不会受到大家的欢迎,甚至可能引发厌恶情绪。在2018年世界杯期间便产生过一场舆论热潮,BOSS直聘、知乎、马蜂窝等品牌在赛事中投放的中插广告,均采用了此种形式。 BOSS直聘:找工作,直接跟老板谈!找工作,上BOSS直聘!升职、加薪…… 知乎:你知道吗?你真的知道吗?你确定你知道吗?你真的确定你知道吗? 马蜂窝:旅游之前,为什么要上马蜂窝?为什么要上马蜂窝?为什么要上马蜂窝? 网友不堪其扰,纷纷抱怨,甚至有人直接批评这些广告为“粗鄙、恶心、无脑、对视觉和听觉的双重污染”,并卸载了相关软件。据分析结果显示,在近一个月中,当网友谈论到蜜雪冰城主题曲相关时,以占7…

    2021年6月23日
    39
  • 运动鞋排名前十名(运动品牌鞋子排行榜)

    大家是不是每天都被咱冬奥会刷屏,奥运作为全世界最重大的运动盛会,将全世界的国家都连接在一起。在这个舞台之上,除了来自各个国家的运动员们能大放异彩,为背后的国家争光以外,在奥运舞台上无形间吸引眼球的,还有那些运动员身着的运动品牌。 今天,小编为大家盘点全球十大运球鞋品牌,看看中国有几家能入榜。 NO.1 耐克 所属国家:美国 热门产品:Air 1 耐克是一家1972年美国的全球知名体育运动品牌,旗下生产的产品覆盖了服装、鞋类和运动器材等领域,旗下生产的阿甘鞋和AirMax系列都是风靡市场的经典款,其首创的气垫技术还为体育界带来一场革命。 而耐克,作为引领全球运动潮流的第一运动品牌,几乎在每一届的奥运会,都以不同方式参与其中,展现出不同寻常的魅力,可谓是与奥运早早就结下了不解之缘。小编特地选取了耐克在几届重要奥运会上的精彩表现,来一起欣赏耐克和全球最大体育盛会碰撞在一起之后,会擦出怎样的火花。 2004雅典奥运会,选择刘翔宣传“打破定律,你能比你快”的广告。并在雅典奥运会为他特别制作了目前全球最轻的SUPERFLY跑鞋:红、白、金三双鞋,最后决赛刘翔选择了白鞋。 2008北京奥运会,耐克发布了“Just Do It,欢迎回到起跑线”的主题广告。在广告的设计和投放上,耐克更是与赛事紧密结合,彰显人性化。随着代言人比赛的深入,耐克以“Just Do It,欢迎回到起跑线”作为点题给大众留下了深刻的印象。 2012伦敦奥运会,耐克的广告主题:“伟大”。“一直以来,我们只相信伟大是属于少数人的,只属于那些巨星,但其实,我们都可以伟大……”耐克在广告创意和执行上力图找到与伦敦奥运精神、奥运口号的契合点,加深和伦敦奥运会关联的紧密程度,也加深了受众和消费者的情感共鸣。 NO.2 阿迪达斯 所属国家:德国 热门产品:贝壳鞋 adidas的创始者,阿迪·达斯勒先生,是一位拥有运动员身份和鞋匠技术的德国人。因为他能充分了解运动员的需要,人有精巧的手艺和发明天才;所以在他的一生中,发明了七百多种与运动有关的专利产品,进而创造了adidas的运动用品王国。 阿迪达斯旗下拥有三大系列:运动表现系列 performance(三条纹)、运动传统系列 originals(三叶草)和运动时尚系列 neo(圆球型LOGO),其中以三叶草为经典系列产品,而阿迪达斯还是国际足联官方用球赞助商,也是NBA联盟…

    2022年4月21日
    81
  • 庆余年第二季什么时候上映(庆余年第二季什么时候开始播放)

    《庆余年第二季》是由腾讯影业出品,张若昀主演的古装剧。该剧在腾讯视频播出。该剧改编自猫腻同名小说。 《庆余年》官方宣布第二季将在2022年首播,具体时具体时间未知,个人猜测应该是在年底,11-12月份左右,为何如此猜测,是有依据的。 《庆余年》第一季首播时间是2019-11-26,而同样深受大家喜欢的同主演、同编剧的《雪中悍刀行》首播时间2021-12-15,而近期官方未给出任何有关上映的消息,故猜测《庆余年》第二季的首播时间极有可能是在今年的11-12月份。   此时间纯属猜测,届时未如期上映,请勿责怪!!! 要说2019年最火的电视剧,《庆余年》绝对算得上是其中之一,相信很多观众都已经看过这部剧集了,实话实说确实非常的好看,和小说的还原度也非常高,这电视剧剧情扎实,各位演员的颜值也是很高,还有老戏骨在线飙戏,让很多人大饱眼福。不过,第一季已经完结,大家对于接下来的第二季也是充满了期待,都盼望着《庆余年2》早日上映,第一季留下范闲被刺这么个悬念,真是吊足了大家的胃口。 就在最近,《庆余年2》也宣布了上映的时间,这个时间,在大家看来,真的是太久了,很有粉丝表示,真的是等不了,太难熬了,也有网友表示,你们这是认真的吗? 大家在网络上发现,《庆余年》第二季的上映时间写着2022年,而它的首播时间上又写了2021年,看到大家都一头雾水,不管这两个时间是哪个,对于粉丝们来说,都是太久了,《庆余年》第一季在19年播出,到2021年要两年,到2022年要三年,确实让人很吃惊,原本希望今年就能看到,看来是有点难了。 话也说回来,虽然大家对于《庆余年》第二季的播出时间,有很多的争议,可是,毕竟是一部这么好的剧集,也还是很值得大家等待的,虽然很想看到,但也怕草草了事,大家也知道,很多剧集为了赶热度,最后拍出来很不尽人意。毕竟慢工出细活,《庆余年》这么久的时间筹备和拍摄,第二季在剧情,演技上肯定会更有把握,相信未来呈现出来的作品,水平质量肯定会很高。 最会,个人对《庆余年》第二季是非常期待的,而且官方也说出来,还是原来的原班人马参演,相信一定会给我们带来不一样的经常,大家就拭目以待吧。

    2022年8月19日
    1.7K
  • 抖音带货人人能做吗?(怎么玩转抖音直播带货?)

    流量为王的时代,短视频带货似乎成为了当下电商最火热的变现手段。而抖音带货更是风生水起,反观,抖音之所以会火,就是因为其强大的传播力和带货能力。 从抖音逐步引入了商品橱窗,关联淘宝,自营店铺等功能,逐步引导抖音自媒体号主利用视频或直播进行流量变现。     但是抖音带货真的人人能做吗?接下来4步,教你如何玩转抖音带货? 选品是关键 你想带货,你就离不开选品,一个选品决定了你这次的带货到底能不能成功!选品也是有一定的门路,按照毛利结构分为引流品和利润品,按照着重点分为主推款和普通款。 引流品可以算是“秒杀福利”,一般给一个特别低的价格,帮助直播间拉新和涨粉。利润品顾名思义,就是毛利高的产品,还是要赚钱,都是低价品是不行的,产品以盈利为出发点,利润高。 而主推款,就是符合现在刚需,较高利润,流量大,容易成交的品类,这类的更适合做主推。普通款,其实就是给你来做连带,然后增加sku数,丰富整体商品结构。 把选品的结构搞清楚,就是做好了带货的第一步。     脚本撰写,完美话术 好的脚本,是奠定流量引入的基石。一个可以黏住用户看完的小视频,那就能成功把人留住,脚本做出让用户忍不住多看几遍的魔性,才能有巧妙的植入,为带货奠定基础。 直播流程图:梳理好你直播带货的流程,包括时间安排、直播内容等等 产品卖点:选好的品,提炼最核心最打动人的产品卖点 优惠福利:把这次带货的利益点,直接标明,再加上发放红包、优惠券等促销 互动话术:增加主动性互动引导,特别重要的话术需要简单循环,加深洗脑影响!     预热引流,导入流量 一个合理的预热视频的策划,要能把用户吸引到带货直播中,如果实在做不了优质内容,那么就索性让这条广告“硬”一点,把“带货”直接讲出来,把“优惠”直接打出来。 带货直播前,提前n天倒数,或者提前n小时发布短视频预热,以简单明了的预热视频为主,不超过20s。预热短视频要强调直播日期及时间点,添加字幕信息,增加用户直播间点击率。预留2-5条直播信息短视频在直播过程中发布,持续性引流。     结合dou+,提高流量 再好的广告,也要让用户看到才可能有效。对于绝大多数的中小广告主而言,这很难做到;而我们自己的抖音号又缺乏足够的粉丝积累,这时候传播就会变得很尴尬。所以,你前面都做好了,要托大影响力最简单的方法,当然是买广告。 抖音广告平台已经开放,1个CPM收费是200~240元之间…

    2021年9月15日
    41
  • 小红书引流营销的一些方向

    据统计,目前小红书的活跃用户数上亿,这样一个比较大的流量平台,受到越来越多微商小伙伴的关注。 任何一个平台都是一样,有相对特定的用户群体,如果要通过小红书来做营销引流,先要去考虑受众是否符合你的产品方向。小红书目前以一二三线城市的受众为主,受众的经济基础都不错,以都市女性群体居多,用户比较重视产品的质量是这个平台的一大特点。如果你的产品有品质又足够有卖点,完全可以考虑来操作一下。 今天,着重来介绍一下目前在小红书引流营销的一些思路和方向,希望能够为微商小伙伴带来一些帮助。   微商有电站 1.做视频自媒体。不得不说视频这种表现形式很容易涨粉引流,你会看到,在这个平台上,一些商家通过做视频自媒体收获很大,当然这种方式是一个长期积累的过程,要能足够坚持去做。 你可以多去借鉴一些大号的成功经验,多去做一些真人出镜的短视频,同时结合自己产品的特点,多去输出一些有价值的内容。如果视频质量足够好,就更容易受到平台的一些推荐,从而也更容易吸引更多的用户来关注。有了一定量的用户后再去做转化,就会非常容易了。 2.做图文自媒体。做图文还有流量吗?答案是肯定的。 目前在平台上,70%的内容还是图文以为主,因平台上女性群体居多,大部分人崇尚美和时尚,所以不管你是做哪个类目的产品,不管输出哪类内容,把你的图文做的精美有格调是首要条件。 上传照片一定要去处理优化,像美图秀秀、微商水印相机这类软件的操作,我相信每个微商小伙伴都不陌生。排版也很重要,这里推荐大家可以使用135编辑器、秀米等进行排版,具有跟产品相符的调性和别树一帜的排版风格,会得到更多用户的喜欢。 图文内容不必多说,想获得受众的认可,你的专业度、价值呈现、引导互动等都是必须去考虑的一些点。 3.做分享笔记。笔记主要是记录生活中的点滴,这种方式重在分享,除了把你认为好看的、好玩的、好吃的、好用的东西分享给大家,还可以分享一些产品的体验、用后的反馈等等,只要你的分享足够真诚,就一定能够打动用户。   微商有电站 4.关键词引流。基于庞大的用户数量,小红书也是一个很大的搜索引擎,很多人也喜欢来小红书做内容的检索。 如果你的搜索关键词排名能够靠前,就会得到一部分自然搜索流量。这样来看,我们在做内容之前,一定要考虑用户的搜索关键词,确定了关键词以后,再去做内容的优化。 主要做好以下方面: 首先是内容的标题上要带有关键词或…

    2021年5月31日
    29