OpenHarmony 分布式软总线の内部構造と機能概要

分布式软总线の基本概念

OpenHarmony における分布式软总线は、複数のデバイス間でシームレスな通信を実現するための基盤技術です。この仕組みは、分布式ハードウェアおよび分布式ソフトバスシステムの根幹を成し、リンクの種類を問わずデバイス間の発見、ネットワーキング、データ転送を可能にします。

主要な機能は以下の通りです:

  • 発見(Discovery):WiFi や Bluetooth などのプロトコルを活用し、周囲のデバイスを検出します。
  • 組網(Networking):デバイス間のネットワーク構築とトポロジ管理を統一されたインターフェースで提供します。
  • 転送(Transmission):メッセージ、バイト列、ストリーム、ファイルなど、多様な形式のデータ転送をサポートします。

ソースコード構造

OpenHarmony のソースツリーにおいて、システム機能関連は主に foundation ディレクトリに配置され、通信関連機能は communication 配下に存在します。分布式软总线の実装は foundation/communication/dsoftbus パス下にあり、大まかなディレクトリ構成は以下のようになります。

.
├── adapter                 // ハードウェアおよびプロトコル适配層
│   ├── BUILD.gn
│   ├── common              //  ネットワーク・プロトコル适配管理
│   └── default_config      //  設定ファイル
├── components              //  外部依存コンポーネント
│   ├── mbedtls             //  SSL/TLS ライブラリ
│   └── nstackx             //  TCP/IP プロトコルスタック
├── core                    //  核心処理層
│   ├── adapter             //  内部适配インターフェース
│   ├── authentication      //  認証ロジック
│   ├── bus_center          //  ネットワーク構築管理
│   ├── connection          //  接続管理
│   ├── discovery           //  デバイス発見処理
│   ├── frame               //  フレームワーク基盤
│   └── transmission        //  データ転送処理
├── interfaces              //  公開ヘッダーファイル
│   ├── inner_kits
│   └── kits
├── sdk                     //  アプリケーション向け SDK
│   ├── bus_center
│   ├── discovery
│   └── transmission
└── tests                   //  単体テストおよび統合テスト

利用にあたっての制約事項:

  • デバイス発見は同一レイヤー 2 ネットワーク内(同一スイッチ、WiFi ルーター、または近場通信範囲)である必要があります。
  • ネットワーク構築前に、デバイス間の認証(バインディング)プロセスが必須です。

アーキテクチャ詳細

ディレクトリ構造とコンパイル設定に基づき、システムアーキテクチャは以下のように層化されています。

  • SDK 層:他モジュールに対し、デバイス発見、サービス公開、接続、遠端情報取得、時刻同期などの能力を提供します。softbus_client.so を経由し、ヘッダーファイルは interfaces/kits に配置されます。
  • Tools 層SoftBusDumpDeviceInfo などのツールを提供し、ローカルデバイス情報や発見されたリモートノード情報のダンプを行います。
  • Core 層:软总线の核心実装であり、softbus_server ライブラリとして動作します。System Ability フレームワークを通じてシステム能力を提供します。
  • Discovery モジュール:ネットワークおよび Bluetooth デバイスの公開、発見、接続機能を担当します。
  • Authentication モジュール:接続方式に応じた認証実装を提供し、统一的な認証能力を維持します。DeviceAuthCallback を介して分布式デバイス業務に接続結果、データ受信、切断処理などのコールバックを提供します。
  • Connection モジュール:BLE、BR、TCP、P2P などの接続方式をサポートします。バックグラウンドで接続サービスを開始し、スレッドプールを通じて接続タスクを処理します。認証モジュールはこの接続モジュールを介して認証を行い、業務モジュールに対しデータ返却用のコールバックインターフェースを提供します。
  • Transmission モジュール:メッセージ送信インターフェースを提供します。認証セッションのキーを用いた AES 暗号化により、暗号化または平文の情報送信が可能です。
  • BusCenter モジュール:LNN(Local Network)サービスの核心接口を提供します。ネットワークトポロジ台帳(NetLedger)、メッセージ処理ループ(BusLooper)、イベント処理オブジェクト、ネットワーク発見サービス(Coap)、ルート管理(LaneHub)などを含みます。各標準デバイスはネットワークノードまたはゲートウェイとして動作可能であり、BusCenter はゲートウェイ実装部分を担います。
  • Common モジュール:ビットマップ、DFX(Design For X)、JSON 処理、メッセージハンドラー、ネットワークパラメータ、キュー、セキュリティ、プロパティ管理などの共通ユーティリティを含みます。
  • Frame モジュール:システムタイプ(L0、L1、L2)に応じて異なる外部インターフェース実装を提供するフレームワーク層です。
  • Adapter 層:WiFi、Bluetooth などの異なるデバイスタイプやシステムへの适配を行い、外部依存関係をラップして调用します。

機能フローと依存関係

システム内のモジュール間の依存とデータフローは以下の通り整理できます。

[DistributedHardware & Tools]
       ↓ (SO 引用・接口调用)
[SoftBus_Client_SDK]
       ↓ (IPC 通信・SystemAbility)
[SoftBus_Server_Core]
       ↓ (底层适配・加密)
[SoftBus_Adapter & Utils]

主要な構成要素の詳細:

  1. DistributedHardware(分布式硬件管理)
    • devicemanager:アカウントに依存しない分布式デバイスの認証・組網能力を提供し、開発者向けに监听・発見・認証の接口を用意します。
    • distributedcamera:複数デバイスのカメラ協働機能を提供し、分布式硬件フレームワーク subsystem に対し C++ 接口を公開します。
    • distributedhardwarefwk:硬件情報の统一管理、查询、使能能力を提供するフレームワークです。
    • distributedscreen:屏幕虚拟化能力を提供し、認証済みの他デバイス屏幕を Display 領域として利用可能にします。
  2. SoftBus_Client(SDK):IPC 通信を通じて softbus_server と交互動作し、機能を実現します。BusCenter 管理接口、発見接口、フレームワーク実装、传输会话管理接口などを含みます。
  3. SoftBus_Server(Core):System Ability をフレームワークとし、IPC 通信をサポートする核心サービスライブラリです。認証、主サービス、接続管理、発見、会话サービス、権限設定などのモジュールで構成されます。
  4. SoftBus_Utils:核心層の共通ライブラリであり、ビットマップ管理、DFX(hidumper、hisystemevent)、JSON ユーティリティ、メッセージハンドラー(Looper 管理、同期・异步送信)などを実装します。

技術的要約

  • 软总线サービスは、システムイベントの监听およびネットワークスキャン(Coap、BR、BLE)に依存してデバイスの発見を行い、認証済みのデバイス接続を確立します。
  • 应用層に対し直接调用接口を提供せず、分布式デバイス管理を介して NAPI 接口を提供し、应用層からの利用を可能にします。

タグ: OpenHarmony DistributedSoftBus SystemArchitecture IPC DeviceCommunication

8月14日 11:29 投稿