前言
之前看带我的人写的博客,从分布式软总线的发布认证到组网,对分布式软总线有些写基础的认知,接下来打算进行一个深入的学习,这里将分布式软总线学习的任务清单列出来
项目概览
项目路径 : foundation/communication/dsoftbus
分布式软总线实现近场设备间统一的分布式通信管理能力,提供不区分链路的设备间发现连接、组网和传输能力。核心三大功能:
- 发现连接:基于WiFi、蓝牙等通信方式的设备发现连接
- 设备组网:统一的设备组网和拓扑管理
- 数据传输:消息、字节、流、文件的数据传输通道
一、整体架构理解(⭐ 入门优先)
任务 1.1:理解分层架构
- SDK层 (
sdk/):运行业务进程代码,面向应用提供客户端能力 - Core层 (
core/):服务端核心实现,包含发现、连接、认证、组网、传输 - Adapter层 (
adapter/+core/adapter/):OS适配层,屏蔽平台差异 - Interfaces层 (
interfaces/):对外公开API(kits/公共接口 + inner_kits/内部接口) - DFX层 (
dfx/):诊断维护(日志、事件、打桩、trace、看门狗)
任务 1.2:理解 Client-Server 架构
- 服务端:core/frame/standard/ --- SA服务(System Ability ID: 4700)
- 客户端:sdk/frame/standard/ --- 通过IPC Proxy/Stub与Server通信
- IPC通信机制:
softbus_server_stub.cpp/softbus_client_stub.cpp/softbus_server_proxy.cpp
任务 1.3:阅读 README 和架构图
- README_zh.md
- 理解 mini / small / standard 三种系统级别的差异
二、对外接口层(⭐⭐ 重点掌握)
任务 2.1:公共接口
- softbus_common.h --- 公共常量、初始化/去初始化接口
- softbus_error_code.h --- 错误码定义
任务 2.2:发现接口
PublishLNN()/StopPublishLNN()--- 服务发布RefreshLNN()/StopRefreshLNN()--- 设备发现- 发布模式、媒介(WIFI/BR/BLE/COAP)、频率、能力等参数
任务 2.3:组网接口(Bus Center)
- softbus_bus_center.h --- 组网核心API
JoinLNN()/LeaveLNN()--- 加入/退出网络RegNodeDeviceStateCb()--- 注册节点状态回调(上线/下线/信息变化)GetAllNodeDeviceInfo()/GetLocalNodeDeviceInfo()--- 获取节点信息StartTimeSync()/StopTimeSync()--- 时间同步- Meta Node(元节点)相关接口
任务 2.4:传输接口
- session.h --- Session传输API(v1)
CreateSessionServer()/RemoveSessionServer()--- 创建/移除会话服务OpenSession()/CloseSession()--- 打开/关闭会话SendBytes()/SendMessage()/SendStream()/SendFile()--- 数据发送- SessionType: TYPE_MESSAGE / TYPE_BYTES / TYPE_FILE / TYPE_STREAM
- socket.h --- Socket传输API(v2)
Socket()/Listen()/Bind()/Connect()/SendBytes()等
任务 2.5:内部接口
- inner_kits/transport/ --- 内部传输接口(dfs_session.h, inner_session.h, inner_socket.h)
- inner_kits/lnn/ --- BLE测距、数据级别
三、发现模块(Discovery)(⭐⭐)
任务 3.1:发现管理框架
- core/discovery/manager/ ---
disc_manager.c发现管理器,统一调度 - core/discovery/interface/ ---
disc_interface.h内部接口定义
任务 3.2:BLE发现
- core/discovery/ble/ --- BLE发现子模块
softbus_ble/--- 基础BLE发现实现approach_ble/--- 靠近发现share_ble/--- 共享发现touch_ble/--- 触碰发现oop_ble/--- OOP BLE发现virtual_link_ble/--- 虚拟链路BLEdispatcher/--- BLE分发器
任务 3.3:CoAP发现
- core/discovery/coap/ --- 基于CoAP协议的WiFi发现
nstackx_coap/--- NSTACKX CoAP适配
任务 3.4:USB发现
- core/discovery/usb/ --- USB设备发现
任务 3.5:事件管理
- core/discovery/event_manager/ --- 发现事件管理
四、连接模块(Connection)(⭐⭐⭐ 核心重点)
任务 4.1:连接管理器
- core/connection/manager/ ---
softbus_conn_manager.c连接管理器- 流控:
softbus_conn_flow_control.c
- 流控:
任务 4.2:BR连接(经典蓝牙)
- core/connection/br/
softbus_conn_br_manager.c--- BR连接管理softbus_conn_br_connection.c--- BR连接建立/维护softbus_conn_br_trans.c--- BR数据传输softbus_conn_br_send_queue.c--- BR发送队列softbus_conn_br_pending_packet.c--- BR待处理数据包softbus_conn_br_snapshot.c/softbus_conn_br_hidumper.c--- 诊断
任务 4.3:BLE连接(低功耗蓝牙)
- core/connection/ble/
softbus_conn_ble_manager.c--- BLE连接管理softbus_conn_ble_client.c/softbus_conn_ble_server.c--- GATT客户端/服务端softbus_conn_ble_connection.c--- BLE连接建立softbus_conn_ble_trans.c--- BLE数据传输softbus_conn_ble_send_queue.c--- BLE发送队列- CoC(Connection Oriented Channel)虚拟化
任务 4.4:TCP连接
- core/connection/tcp/ --- TCP连接管理
- core/connection/common/ --- 基础监听器、Socket、Epoll事件
任务 4.5:WiFi Direct连接(P2P)
- core/connection/wifi_direct_cpp/ --- C++实现的WiFi Direct
entity/--- P2P实体状态机(Available/Connect/CreateGroup/DestroyGroup/Unavailable)command/--- 命令模式(Connect/Disconnect/Negotiate命令)processor/--- 处理器(P2P V1处理器)channel/--- 协商通道(Auth/Proxy/Dummy)protocol/--- 协议(JSON/TLV)data/--- 数据模型(InnerLink/InterfaceInfo/LinkInfo/NegotiateMessage等)event/--- 事件分发dfx/--- 诊断
任务 4.6:CoAP连接
- core/connection/coap/ --- CoAP连接管理
五、认证模块(Authentication)(⭐⭐⭐ 安全核心)
任务 5.1:认证管理器
- core/authentication/
auth_manager.c--- 认证管理器,统一管理认证会话auth_interface.c--- 认证对外接口auth_request.c--- 认证请求处理auth_normalize_request.c--- 认证规范化请求
任务 5.2:认证会话与状态机
auth_session_fsm.c--- 认证会话有限状态机auth_session_json.c--- 会话JSON消息处理auth_session_key.c--- 会话密钥管理auth_session_message.c--- 会话消息处理
任务 5.3:设备认证
auth_device.c--- 设备认证核心逻辑auth_device_common_key.c--- 设备公共密钥auth_deviceprofile.c--- 设备Profile交互auth_device_profile_listener.cpp--- 设备Profile监听
任务 5.4:HiChain安全认证
auth_hichain.c--- HiChain认证协议实现auth_hichain_adapter.c--- HiChain适配层
任务 5.5:认证连接
auth_connection.c--- 认证连接管理auth_tcp_connection.c--- TCP认证连接auth_lane.c--- 认证通道选择auth_pre_link.c--- 预连接
任务 5.6:Meta认证与PTK
auth_meta_manager.c--- Meta认证管理auth_meta_ptk_proc.c--- PTK(Pre-Shared Temporary Key)处理customized_security_protocol.c--- 自定义安全协议
六、组网模块(Bus Center / LNN)(⭐⭐⭐ 核心重点)
任务 6.1:组网管理框架
- core/bus_center/interface/ ---
bus_center_manager.h组网管理器接口 - core/bus_center/ipc/ --- 组网IPC通信
任务 6.2:网络构建器(Net Builder)
- core/bus_center/lnn/net_builder/
lnn_net_builder.c--- 网络构建核心lnn_connection_fsm.c--- 连接有限状态机lnn_connection_fsm_process.c--- 连接FSM处理lnn_sync_info_manager.c--- 信息同步管理lnn_topo_manager.c--- 拓扑管理lnn_cipherkey_manager.c--- 密钥管理lnn_fast_offline.c--- 快速离线lnn_device_info_recovery.c--- 设备信息恢复lnn_data_cloud_sync.c--- 数据云同步
任务 6.3:网络账本(Net Ledger)
- core/bus_center/lnn/net_ledger/
local_ledger/--- 本地账本(本机设备信息)distributed_ledger/--- 分布式账本(在线设备信息)decision_db/--- 决策数据库common/--- 节点信息、设备信息、网络能力、特性能力
任务 6.4:网络管理(Net BusCenter)
- core/bus_center/lnn/net_buscenter/
lnn_network_manager.c--- 网络管理器lnn_physical_subnet_manager.c--- 物理子网管理lnn_bt_network_impl.c--- 蓝牙网络实现lnn_ip_network_impl.c--- IP网络实现
任务 6.5:通道枢纽(Lane Hub)
- core/bus_center/lnn/lane_hub/
common/--- 通道枢纽核心lane_manager/--- 通道管理器(重点)lnn_lane.c--- 通道分配与选择lnn_lane_select.c--- 通道选择算法lnn_lane_score.c--- 通道评分lnn_lane_link.c--- 通道链路管理lnn_lane_link_p2p.c--- P2P链路lnn_lane_link_wifi_direct.c--- WiFi Direct链路lnn_lane_link_conflict.c--- 链路冲突处理lnn_lane_reliability.c--- 通道可靠性lnn_trans_lane.c/lnn_trans_free_lane.c--- 传输通道/空闲通道lnn_ctrl_lane.c--- 控制通道lnn_lane_prelink.c--- 通道预连接lnn_lane_communication_capability.c--- 通信能力
heartbeat/--- 心跳机制lnn_heartbeat_fsm.c--- 心跳有限状态机lnn_heartbeat_strategy.c--- 心跳策略lnn_ble_heartbeat.c--- BLE心跳lnn_ble_lpdevice.c--- BLE低功耗设备
lane_qos/--- 通道QoStime_sync/--- 时间同步
任务 6.6:发现管理(组网内)
- core/bus_center/lnn/disc_mgr/ --- 组网内CoAP发现管理
任务 6.7:决策中心与元节点
- core/bus_center/lnn/decision_center/ --- 决策中心
- core/bus_center/lnn/meta_node/ --- 元节点管理
七、传输模块(Transmission)(⭐⭐⭐ 核心重点)
任务 7.1:会话管理
- core/transmission/session/
trans_session_service.c--- 会话服务trans_session_manager.c--- 会话管理器softbus_scenario_manager.c--- 场景管理器
任务 7.2:通道管理
- core/transmission/trans_channel/manager/
trans_channel_manager.c--- 通道管理器trans_channel_callback.c--- 通道回调trans_lane_manager.c--- 传输通道管理trans_link_listener.c--- 链路监听trans_auth_negotiation.c--- 认证协商trans_bind_request_manager.c--- 绑定请求管理
任务 7.3:Proxy通道
- core/transmission/trans_channel/proxy/
softbus_proxychannel_manager.c--- Proxy通道管理softbus_proxychannel_network.c--- Proxy通道网络softbus_proxychannel_message.c--- Proxy通道消息softbus_proxychannel_callback.c--- Proxy通道回调softbus_proxychannel_control.c--- Proxy通道控制softbus_proxychannel_pipeline.c--- Proxy通道管道softbus_proxychannel_session.c--- Proxy通道会话softbus_proxychannel_transceiver.c--- Proxy通道收发
任务 7.4:TCP Direct通道
- core/transmission/trans_channel/tcp_direct/
trans_tcp_direct_manager.c--- TCP直连管理trans_tcp_direct_listener.c--- TCP直连监听trans_tcp_direct_message.c--- TCP直连消息trans_tcp_direct_p2p.c--- P2P直连trans_tcp_direct_wifi.c--- WiFi直连trans_tcp_direct_auth.c--- TCP直连认证
任务 7.5:UDP通道与协商
- core/transmission/trans_channel/udp_negotiation/
trans_udp_negotiation.c--- UDP协商trans_udp_channel_manager.c--- UDP通道管理
任务 7.6:Auth通道
- core/transmission/trans_channel/auth/ --- 认证通道
任务 7.7:QoS
- core/transmission/trans_channel/qos/ --- 服务质量
任务 7.8:通道公共
- core/transmission/trans_channel/common/
trans_channel_limit.c--- 通道限流trans_lane_pending_ctl.c--- 通道等待控制trans_qos_info.c--- QoS信息
任务 7.9:SDK端传输实现
- sdk/transmission/ --- 客户端传输实现
- Session管理、通道管理、Proxy/TCP/UDP/Stream/File各通道客户端
- Stream传输:VTP(Video Transport Protocol)实例、流打包/解包
八、适配层(Adapter)(⭐⭐)
任务 8.1:OS适配层
- adapter/ --- 外部适配
kernel/--- 内核适配(liteos_m / posix)net/--- 网络适配(Bluetooth BLE/Broadcast、HDI WLAN、WiFi)security/--- 安全适配(AccessToken)openssl//mbedtls/--- 加密适配perf/--- 性能适配range/--- 测距适配json/--- JSON适配
任务 8.2:Core内适配层
- core/adapter/ --- 内部适配
authentication/--- 认证适配br/--- BR适配bus_center/--- 组网适配(OHOS账号、KV存储、OOBE等)huks/--- HUKS密钥适配kv_store/--- KV数据存储适配transmission/--- 传输适配
任务 8.3:总线中心公共适配
- adapter/common/bus_center/ --- 事件监听适配
boot_event/--- 开机事件common_event/--- 公共事件driver/--- HDF驱动network/--- 网络状态(BT/LwIP/NetLink/NetManager)platform/--- 平台wlan/--- WLAN服务
九、通用基础设施(⭐)
任务 9.1:公共工具
- core/common/
utils/--- 通用工具函数、SQLite3工具json_utils/--- JSON工具network/--- 网络工具bitmap/--- 位图工具queue/--- 队列message_handler/--- 消息处理(支持FFRT)softbus_property/--- 特性配置
任务 9.2:安全与权限
security/permission/--- 权限管理(access_control、permission_entry、permission_utils)security/sequence_verification/--- 序列号验证
任务 9.3:DFX(诊断维护)
- dfx/
log/--- 日志event/--- 事件上报(HiSysEvent)dumper/--- HiDumper打桩(连接/发现/组网/传输各模块)trace/--- HiTrace链路追踪anonymize/--- 敏感数据脱敏statistics/--- 统计(BT/WiFi/网络传输)watchdog/--- 看门狗
十、依赖组件(⭐)
任务 10.1:NSTACKX组件
- components/nstackx/ --- 近场发现与传输协议栈
fillp/--- FILLP协议(可靠UDP传输协议)app_lib/--- 应用层(Socket、Epoll、配置)fillp_lib/--- 协议层(流控、帧、输入输出、PCB、Cookie)
十一、特性配置与编译(⭐)
任务 11.1:特性开关
- adapter/feature_config/
inner_feature/--- 内部特性开关(conn/disc/lnn/trans/t2stack)public_feature/--- 公共特性开关external_deps_feature/--- 外部依赖特性
任务 11.2:默认配置
- adapter/default_config/ --- mini/small/standard默认配置
任务 11.3:编译构建
- 理解 BUILD.gn 编译体系
- 理解
.gni文件中的模块化编译配置
十二、测试体系(⭐)
任务 12.1:测试目录结构
- tests/
core/--- 核心模块测试(frame/discovery/transmission/connection/adapter/common)sdk/--- SDK测试(bus_center/transmission/discovery/frame)adapter/--- 适配层测试- 各模块均有 unittest / fuzztest / benchmarktest
学习路线
| 阶段 | 内容 | 预计时间 |
|---|---|---|
| 第一阶段 | 项目概览 + 整体架构 + 对外接口层 | 1-2周 |
| 第二阶段 | 发现模块 + 连接模块 | 2-3周 |
| 第三阶段 | 认证模块 + 组网模块 | 3-4周 |
| 第四阶段 | 传输模块 | 2-3周 |
| 第五阶段 | 适配层 + 通用基础 + DFX + 特性配置 | 1-2周 |
| 第六阶段 | 依赖组件(NSTACKX/FILLP) + 测试体系 | 1周 |
核心重点:连接模块 → 认证模块 → 组网模块 → 传输模块,这四大模块是分布式软总线的核心实现,建议深入阅读源码,理解其状态机、通道选择算法、会话管理等关键机制。