分布式软总线の基本概念
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]
主要な構成要素の詳細:
- DistributedHardware(分布式硬件管理):
devicemanager:アカウントに依存しない分布式デバイスの認証・組網能力を提供し、開発者向けに监听・発見・認証の接口を用意します。distributedcamera:複数デバイスのカメラ協働機能を提供し、分布式硬件フレームワーク subsystem に対し C++ 接口を公開します。distributedhardwarefwk:硬件情報の统一管理、查询、使能能力を提供するフレームワークです。distributedscreen:屏幕虚拟化能力を提供し、認証済みの他デバイス屏幕を Display 領域として利用可能にします。
- SoftBus_Client(SDK):IPC 通信を通じて
softbus_serverと交互動作し、機能を実現します。BusCenter 管理接口、発見接口、フレームワーク実装、传输会话管理接口などを含みます。 - SoftBus_Server(Core):System Ability をフレームワークとし、IPC 通信をサポートする核心サービスライブラリです。認証、主サービス、接続管理、発見、会话サービス、権限設定などのモジュールで構成されます。
- SoftBus_Utils:核心層の共通ライブラリであり、ビットマップ管理、DFX(hidumper、hisystemevent)、JSON ユーティリティ、メッセージハンドラー(Looper 管理、同期・异步送信)などを実装します。
技術的要約
- 软总线サービスは、システムイベントの监听およびネットワークスキャン(Coap、BR、BLE)に依存してデバイスの発見を行い、認証済みのデバイス接続を確立します。
- 应用層に対し直接调用接口を提供せず、分布式デバイス管理を介して NAPI 接口を提供し、应用層からの利用を可能にします。