当前位置: 首页 > news >正文

Android Tethering/netd 集成架构深度分析

源码位置:packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/核心类:Tethering.java、TetheringService.java、TetherMainSM、UpstreamNetworkMonitor.java、BpfCoordinator.java、OffloadController.java、IPv6TetheringCoordinator.java、EntitlementManager.java1. 模块概览Tethering(网络共享)模块是 Android 的网关功能核心,使设备可以充当 IP 路由器,通过 USB、WiFi 热点、蓝牙、以太网等下游接口向其他设备共享互联网连接。Android 16 中,Tethering 作为ConnectivityMainline 模块的一部分,可通过 Google Play System Update 独立升级。1.1 架构全景图Downstream InterfacesHAL / HardwareKernel / BPFnetd (Native Daemon)Tethering Module (Mainline)Framework (System Server)App LayerSettings / 其他 AppTetheringManagerSystem ServiceTetheringServiceService EntryTetheringConnectorBinder StubTetheringCore LogicTetherMainSMMain State MachineIpServerDownstream IP ServerTetheringConfigurationConfigurationUpstreamNetworkMonitorUpstream SelectionOffloadControllerHW OffloadBpfCoordinatorBPF Traffic ControlIPv6TetheringCoordinatorIPv6 Prefix DelegationEntitlementManagerProvisioning CheckConnectedClientsTrackerClient TrackingnetdNAT / DNS / ForwardingBPF Mapstether4/tether6/stats/limit/devConntrackConnection TrackingOffload HALWiFi/Modem Hardware OffloadUSB (RNDIS/NCM)WiFi HotspotBluetooth PANEthernetTethermainSM1.2 支持的下游类型类型常量说明IP范围USB (RNDIS)TETHERING_USBUSB RNDIS 网络共享192.168.42.xUSB (NCM)TETHERING_NCMUSB NCM 网络共享192.168.42.xWiFiTETHERING_WIFIWiFi 热点192.168.43.x蓝牙TETHERING_BLUETOOTH蓝牙 PAN 共享192.168.44.x以太网TETHERING_ETHERNET有线网共享动态分配WiFi P2PTETHERING_WIFI_P2PWiFi Direct 共享192.168.49.xWigigTETHERING_WIGIG60GHz WiGig(Android S+ 废弃)虚拟TETHERING_VIRTUALAVF 虚拟机共享动态2. 核心类与源码锚点[Tethering.java](file:///d:/Resource/Android%2016/android-16/packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/Tethering.java):核心业务逻辑(超过2500行),类注释:“This class holds much of the business logic to allow Android devices to act as IP gateways via USB, BT, and WiFi interfaces.”[TetheringService.java](file:///d:/Resource/Android%2016/android-16/packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/TetheringService.java):Android Service 入口,通过ITetheringConnector.Stub暴露 Binder 接口[UpstreamNetworkMonitor.java](file:///d:/Resource/Android%2016/android-16/packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/UpstreamNetworkMonitor.java):上游网络监控,管理NetworkCallback注册和上游选择逻辑[BpfCoordinator.java](file:///d:/Resource/Android%2016/android-16/packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/BpfCoordinator.java):BPF 协调器,通过 BPF maps 管理转发规则、流量统计和配额[OffloadController.java](file:///d:/Resource/Android%2016/android-16/packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/OffloadController.java):硬件卸载控制器,与 WiFi/Modem 卸载 HAL 交互[OffloadHardwareInterface.java](file:///d:/Resource/Android%2016/android-16/packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/OffloadHardwareInterface.java):硬件卸载的抽象接口,支持 HIDL 1.0/1.1 和 AIDL 三种 HAL 版本[IPv6TetheringCoordinator.java](file:///d:/Resource/Android%2016/android-16/packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/IPv6TetheringCoordinator.java):IPv6 共享协调器,管理 IPv6 前缀分配[EntitlementManager.java](file:///d:/Resource/Android%2016/android-16/packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/EntitlementManager.java):运营商授权检查(provisioning),支持 UI 和静默两种模式[TetheringConfiguration.java](file:///d:/Resource/Android%2016/android-16/packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/TetheringConfiguration.java):配置管理,包括 upstream auto-selection、DUN requirement、DHCP ranges[RequestTracker.java](file:///d:/Resource/Android%2016/android-16/packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/RequestTracker.java):请求追踪器(Android 16 新增),管理 TetheringRequest 的 pending/serving 状态[ConnectedClientsTracker.java](file:///d:/Resource/Android%2016/android-16/packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/ConnectedClientsTracker.java):跟踪下游连接的客户端列表3. Google 设计技巧深入分析3.1 TetherMainSM 状态机 — 核心路由控制Google 将 Tethering 的核心流转逻辑封装在TetherMainSM(extendsStateMachine)中:源码 [Tethering.java](file:///d:/Resource/Android%2016/android-16/packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/Tethering.java#L1938-L2005) 中定义的状态:classTetherMainSMextendsStateMachine{staticfinalintEVENT_IFACE_SERVING_STATE_ACTIVE=BASE_MAIN_SM+1;staticfinalintEVENT_IFACE_SERVING_STATE_INACTIVE=BASE_MAIN_SM+2;staticfinalintCMD_UPSTREAM_CHANGED=BASE_MAIN_SM+3;staticfinalintCMD_RETRY_UPSTREAM=BASE_MAIN_SM+4;staticfinalintEVENT_UPSTREAM_CALLBACK=BASE_MAIN_SM+5;staticfinalintCMD_CLEAR_ERROR=BASE_MAIN_SM+6;staticfinalintEVENT_IFACE_UPDATE_LINKPROPERTIES=BASE_MAIN_SM+7;staticfinalintEVENT_UPSTREAM_PERMISSION_CHANGED=BASE_MAIN_SM+8;staticfinalintEVENT_REQUEST_CHANGE_DOWNSTREAM=BASE_
http://www.zskr.cn/news/1383904.html

相关文章:

  • 从零理解 Redisson:Java 分布式工具箱的入门与实战
  • 探析数字孪生的核心特性与应用价值
  • 告别AWCC臃肿:AlienFX Tools终极轻量级控制方案深度评测
  • 谈美---朱光潜前20页
  • 脉冲神经网络加速器设计与边缘计算优化
  • OpenIPC开源固件:5分钟解锁网络摄像头的终极控制权
  • 告别全屏截图!用Playwright精准捕获页面元素,让你的测试报告更专业
  • 告别MQTT.fx!用STM32+ESP8266直连新版OneNET,手把手教你从零配置JSON数据上传
  • 独家专访杨元庆:详解联想集团千亿美金营收目标
  • Redis三大缓存异常问题
  • Ubuntu经常安装软件
  • 航空发动机叶片三维扫描-诺斯顿
  • 创业团队如何利用Taotoken实现低成本多模型AI能力快速验证
  • 半监督学习在肺部疾病声音分类中的应用:MFCC+CNN与三模块协同训练
  • 5分钟学会BlenderKit:让你在Blender里拥有一个永不枯竭的创意资源库
  • 小白友好:OpenClaw Windows 一键部署教程(含安装包)
  • LVGL多页面开发避坑:用内部Timer替代轮询,解决页面切换时的内存踩踏问题
  • 用Azure Kinect DK和Body Tracking SDK,5分钟实现一个实时人体骨骼点检测Demo(C++版)
  • 电磁流量计十大品牌排名 - 水质仪表品牌排行榜
  • 【常规维护】Claude Code v2.1.150 发布:聚焦内部基础设施演进
  • 榨干Codex!OpenAI工程师亲授Codex真正用法
  • 真可用!美团数字人模型开源,MV、电商等统统拿下
  • 2026年5月西安AI搜索流量怎么抢?优质GEO优化服务商TOP5榜单 - 资讯快报
  • FortiGate DNS服务器:不只是域名解析,更是安全策略第一道防线
  • 私有化视频会议系统EasyDSS一个平台,搞定直播、点播、作业、统计—学校终于不用买多套系统了
  • 临沂黄金回收优选榜单|甄选特色门店 合规经营无套路 铸就本地行业标杆 - 鑫顺黄金回收
  • 如何快速解锁中兴光猫权限:zteOnu工具完整使用指南
  • 百度深度学习研究院的“叛将“,带着一颗芯片改变了中国智能驾驶——地平线余凯,从ImageNet冠军到征程出货1000万
  • Harness终极实战:打造全链路可观测性Agent环境
  • Linux命令总结