前言

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

 

 项目概览

项目路径: 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分发器

四、连接模块(Connection)(⭐⭐⭐ 核心重点)

任务 4.1:连接管理器

  • core/connection/manager/ — softbus_conn_manager.c 连接管理器
    • 流控:softbus_conn_flow_control.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发送队列

任务 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/ — 诊断

五、认证模块(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 — 预连接

六、组网模块(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.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.6:Auth通道

  • core/transmission/trans_channel/auth/ — 认证通道

任务 7.9:SDK端传输实现

  • sdk/transmission/ — 客户端传输实现
    • Session管理、通道管理、Proxy/TCP/UDP/Stream/File各通道客户端
    • Stream传输:VTP(Video Transport Protocol)实例、流打包/解包

八、特性配置与编译(⭐)

任务 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 文件中的模块化编译配置

学习路线

阶段 内容 预计时间
第一阶段 项目概览 + 整体架构 + 对外接口层 1-2周
第二阶段 发现模块 + 连接模块 2-3周
第三阶段 认证模块 + 组网模块 3-4周
第四阶段 传输模块 2-3周

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

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐