open Harmony中分布式软总线的学习任务清单

前言

之前看带我的人写的博客,从分布式软总线的发布认证到组网,对分布式软总线有些写基础的认知,接下来打算进行一个深入的学习,这里将分布式软总线学习的任务清单列出来

项目概览

项目路径 : 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/ --- 虚拟链路BLE
    • dispatcher/ --- 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/ --- 通道QoS
    • time_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周

核心重点:连接模块 → 认证模块 → 组网模块 → 传输模块,这四大模块是分布式软总线的核心实现,建议深入阅读源码,理解其状态机、通道选择算法、会话管理等关键机制。

相关推荐
wuqingshun3141591 小时前
说一下 Kafka 中关于事务消息的实现?
分布式·kafka
精神底层2 小时前
AI 学习笔记:研究方法的演变
人工智能·笔记·学习
依然范特东2 小时前
RAG学习总结3--检索技术
笔记·学习
白帽小阳3 小时前
[特殊字符]【2026最新】零基础入门学网络安全(详细路线图),看这篇就够了!
学习·安全·web安全·网络安全·安全运营·学习路线·web渗透
QQ骞3 小时前
【ECU-HIL 嵌入式车载软件测试学习路线和面试描述方式(1)】
学习·面试·职场和发展
kdxiaojie3 小时前
Linux 驱动研究 —— I2C (5)
linux·运维·笔记·学习
茯苓gao5 小时前
机器人产业的三级火箭:卖电机、卖模组与卖整机,三种商业模式的终局推演
笔记·学习·机器人
mm9954205 小时前
PMI三大证书:PMP、PgMP、PfMP证书对比
学习·职场和发展·项目管理·学习方法·pmp
铅笔侠_小龙虾6 小时前
Rust 学习(4)-函数与注释
开发语言·学习·rust