DataNetwork 数据网络 HAL 抽象架构

1. 概述

DataNetwork 是 Android 11+ Telephony 框架中数据面 HAL 抽象的核心类。它代表一个已建立的蜂窝数据连接在框架层的逻辑对象,负责管理该连接的网络接口(NetworkAgent)、链路属性(LinkProperties)、能力集(NetworkCapabilities)、QoS 参数以及连接的生命周期。在 Android 13+ 的 5G 多切片(Network Slicing)架构中,一个 SIM 卡可以同时拥有多个 DataNetwork 实例——每个对应一个不同的数据连接(如 eMBB 切片和 URLLC 切片各有独立的 DataNetwork)。

1.1 核心概念

概念 含义
DataNetwork 单个数据连接在框架层的逻辑表示,持有 NetworkAgent 和 LinkProperties
DataService Vendor HAL 服务 — android.hardware.radio.data.IData,负责 setupDataCall/deactivateDataCall
NetworkAgent ConnectivityService 侧的网络代理,注册后使该网络可用于 App 流量
NetworkCapabilities 描述网络能力(INTERNET/MMS/IMS/DUN 等),决定 App 的 NetworkRequest 路由
LinkProperties 描述链路属性(IP 地址、DNS、MTU、路由),由 DataCallResponse 构建
QoS Bearer Session 5G QoS 流 — 3GPP TS 24.501 定义的 QoS Flow,映射到 Dedicated Bearer
Network Slicing 5G 网络切片 — NSSAI (Network Slice Selection Assistance Information) 标识的虚拟化网络

2. 核心类与源码锚点

类名 路径 说明
DataNetwork [DataNetwork.java](file:///d:/Resource%20Android%2016/android-16/frameworks/opt/telephony/src/java/com/android/internal/telephony/data/DataNetwork.java) 数据网络核心类,继承 Handler
DataNetworkController [DataNetworkController.java](file:///d:/Resource%20Android%2016/android-16/frameworks/opt/telephony/src/java/com/android/internal/telephony/data/DataNetworkController.java) 管理多个 DataNetwork 的控制器
DataService frameworks/base/telephony/java/android/telephony/data/DataService.java Vendor HAL 服务绑定基类
DataServiceCallback frameworks/base/telephony/java/android/telephony/data/DataServiceCallback.java DataService 异步回调结果码
NetworkAgent android.net.NetworkAgent (frameworks/base) ConnectivityService 的网络代理
LinkProperties android.net.LinkProperties (frameworks/base) 链路属性封装
NetworkCapabilities android.net.NetworkCapabilities (frameworks/base) 网络能力声明
DataCallResponse frameworks/base/telephony/java/android/telephony/data/DataCallResponse.java 数据呼叫建立响应,携带 IP/CID/MTU 等
TelephonyNetworkSpecifier frameworks/base/core/java/android/net/TelephonyNetworkSpecifier.java NetworkRequest 中用 subId 标识蜂窝网络
QosBearerSession frameworks/base/telephony/java/android/telephony/data/QosBearerSession.java 5G QoS 流抽象
NetworkSliceInfo frameworks/base/telephony/java/android/telephony/data/NetworkSliceInfo.java 5G 网络切片信息
TrafficDescriptor frameworks/base/telephony/java/android/telephony/data/TrafficDescriptor.java 流量描述符 — URSP 规则匹配

3. DataNetwork 核心字段

// DataNetwork.java
public class DataNetwork extends Handler {
   
   
    private final int mId;                                    // CID (Context ID)
    private final @ApnType int mApnTypeBitmask;               // APN 类型位图
    private final TelephonyNetworkAgent mNetworkAgent;        // NetworkAgent 封装
    private LinkProperties mLinkProperties;                   // IP/DNS/路由/MTU
    private NetworkCapabilities mNetworkCapabilities;         // 网络能力
    private final @NetCapability int[] mCapabilities;         // 声明的能力列表
    private DataCallResponse mDataCallResponse;               // 最新数据呼叫响应
    private DataProfile mDataProfile;                         // 关联的 DataProfile
    private @DataState int mState;                            // 连接状态
    private NetworkScore mNetworkScore;                       // 网络评分
    private List<QosBearerSession> mQosBearerSessions;        // QoS 流列表
    private NetworkSliceInfo mNetworkSliceInfo;               // 网络切片信息
    private LinkCapacityEstimate mLinkCapacityEstimate;       // 链路容量评估
}

3.1 关键导入解析

import android.net.NetworkAgent;          // ConnectivityService 注册接口
import android.net.NetworkAgentConfig;    // NetworkAgent 配置
import android.net.NetworkProvider;       // 网络提供者 
import android.net.NetworkScore;          // 网络打分
import android.net.TelephonyNetworkSpecifier;  // 蜂窝网络标识
import android.telephony.data.Qos;           // QoS 基类
import android.telephony.data.QosBearerSession;  // 5G QoS 流
import android.telephony.data.NetworkSliceInfo;   // 5G 切片
import android.telephony.data.TrafficDescriptor;  // URSP 流量描述
import android.net.vcn.VcnManager;          // VCN (Virtual Carrier Network)

Google 设计技巧 #1 — DataNetwork 作为 “双面胶” (Janus-Faced Adapter)
DataNetwork 一边面对 Vendor HAL(DataService 回调 → 更新 LinkProperties/状态),一边面对 ConnectivityService(通过 NetworkAgent 注册网络)。它是一个双向适配器——Modem 的数据面变化(IP 地址变化、QoS 流建立/释放)被转换为 ConnectivityService 理解的 LinkPropertiesNetworkCapabilities 更新。这使 ConnectivityService 完全不感知 HAL 层的细节。


4. DataNetwork 的生命周期状态机

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值