近距離無線

メッシュネットワーク

機器同士が中継し合う網状の通信構成。

概要

メッシュネットワーク(Mesh Network)は、ネットワークに参加する複数の機器(ノード)が互いに中継役を担い合う網(メッシュ)状の通信トポロジーである。特定の集中ルーターや基地局に依存しないため、1台のノードが故障や障害を受けても通信経路を自動的に迂回し、ネットワーク全体の通信を維持できる。

組み込み・IoT 分野では以下のプロトコルがメッシュネットワークを実装している。

プロトコル物理層主な用途
ZigBeeIEEE 802.15.4(2.4 GHz)スマートホーム、産業
ThreadIEEE 802.15.4(2.4 GHz)スマートホーム(Matter 基盤)
Bluetooth MeshBluetooth LE(2.4 GHz)照明・建築設備
Z-Wave900 MHz 帯スマートホーム
Wi-Fi EasyMeshWi-Fi(2.4/5/6 GHz)家庭用 Wi-Fi 拡張
LoRa MeshSub-GHz農業・インフラ監視

メッシュネットワークはスターネットワーク(全ノードが中央のルーターに集約)やツリーネットワークと対比される概念であり、単一障害点(SPOF)の排除と通信エリアの拡張を主な目的とする。


歴史・背景

メッシュネットワークの概念は、軍事通信の分散化研究(1960〜1970 年代)から生まれた。インターネットの前身である ARPANET も、核攻撃に対して耐性を持つ分散ネットワークとして設計されたものである。

IoT 向けメッシュネットワークの商用化は 2000 年代から始まり、以下のような展開をたどった。

年代出来事
2003ZigBee Alliance 設立・IEEE 802.15.4 策定
2004ZigBee 1.0 規格化(メッシュルーティング対応)
2014Thread 1.0 策定(IP ベースのメッシュ)
2017Bluetooth Mesh 1.0 策定
2017Wi-Fi EasyMesh 策定(IEEE 802.11s ベース)
2019Thread 1.2 策定(高信頼マルチキャスト追加)
2022Matter 1.0 が Thread をトランスポートとして採用

技術仕様

ネットワークトポロジーの種類

スターネットワーク        メッシュネットワーク(フルメッシュ)
    [ルーター]              [A]──[B]
   ╱  │   ╲                │╲   ╱│
 [A] [B]  [C]            [C]──[D]
                          自律的に経路選択

ツリーネットワーク        部分メッシュ(実際の IoT に近い)
    [ルーター]              [コーディネータ]
    ╱    ╲                  ╱          ╲
  [A]    [B]            [ルーター]   [ルーター]
  ╱╲    ╱╲            ╱    ╲       ╱    ╲
[C][D][E][F]        [端末] [端末] [端末] [端末]

ノード種別(ZigBee・Thread 共通の概念)

役割説明消費電力
コーディネータ / ボーダールーターネットワークの起点・インターネット接続常時電源
ルーター / フルファンクションデバイスパケット中継・ルーティングに参加常時電源
エンドデバイス / 省電力デバイス中継なし・通信のみ(スリープ可能)電池動作可

ルーティングプロトコル

ZigBee のルーティング: AODV(Ad hoc On-demand Distance Vector)をベースとしたツリー・メッシュルーティングを使用する。

Thread のルーティング: RPL(Routing Protocol for Low-Power and Lossy Networks)を採用。IPv6 ベースで動作し、ボーダールーターがインターネット側へのゲートウェイとして機能する。

Thread ネットワーク構成:
  インターネット

  [ボーダールーター(BR)]  ← Wi-Fi や Ethernet でインターネット接続
      │ Thread(IEEE 802.15.4)
  [フルスレッドデバイス(FTD)]──[FTD]
      │                             │
  [省電力エンドデバイス]         [省電力エンドデバイス]

Bluetooth Mesh のルーティング: フラッディング(ブロードキャスト中継)方式を採用。専用のルーティングテーブルを持たず、TTL(Time to Live)でホップ数を制限する。

チャネルアクセス方式

メッシュ対応プロトコルの多くは CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance) を使い、送信前にチャネルの空き状態を確認することで衝突を回避する。

送信前の流れ(CSMA/CA):
1. CCA(Clear Channel Assessment)でチャネルを検知
2. チャネルがビジー → ランダムバックオフ(指数的バックオフ)
3. チャネルがアイドル → 送信開始
4. ACK 受信で成功確認

動作原理

自己組織化(Self-Organization)

メッシュネットワークの重要な特性は、新しいノードが加わると自動的にネットワークトポロジーを再構築し、最適な経路を探索する 自己組織化 能力である。

# Thread/OpenThread の自己組織化の概念(擬似コード)
class ThreadNode:
    def join_network(self, channel, pan_id):
        # ビーコンスキャンで近隣ルーターを発見
        routers = self.scan_for_routers(channel)
        # 最良の親ルーターを選択(リンク品質・ホップ数基準)
        parent = self.select_parent(routers)
        # アタッチ要求
        self.attach_to_parent(parent)
        # MLE(Mesh Link Establishment)でアドレス取得
        self.obtain_ipv6_address()

ルート発見(Route Discovery)

AODV ベースのルート発見では、送信元ノードが RREQ(Route Request) をブロードキャストし、宛先または最良経路を知るノードが RREP(Route Reply) を返す。

A(送信元)→ RREQ ブロードキャスト
         B, C, D が受信 → 中継(フラッディング)
                           E が宛先 → RREP を A へ送信
A ← RREP(経路: A → B → E の情報)
以後: A は B → E のルートでデータ送信

メッシュネットワークの自己修復(Self-Healing)

リンクが切断した場合、ノードは近隣ルーターへの RREQ で代替経路を探索する。この自己修復機能により、一部のノードが停止しても通信を継続できる。

通常時:   A → B → C → D(宛先)
B が障害:  A → B(失敗)→ RREQ 再探索 → A → E → C → D(迂回)

用途・ユースケース

スマートホーム照明(Bluetooth Mesh)

DALI-2 や Bluetooth Mesh を使ったスマート照明システムでは、スイッチ・調光器・照明器具がメッシュを形成し、どのスイッチからでも任意の照明グループを制御できる。

[スマートスイッチ]──[電球A]──[電球B]──[電球C]
       │                           │
    [電球D]──────────────────────[電球E]

産業用センサーネットワーク(ZigBee)

工場や倉庫内の温湿度・振動・電力センサーを ZigBee メッシュで接続し、中央のゲートウェイへデータを集約する。金属構造物の多い工場内でも、メッシュの自己修復機能で安定した通信を実現できる。

Thread + Matter のスマートホーム

Matter 1.0 から Thread がトランスポートとして採用されたことで、Thread ボーダールーター(例: Apple HomePod mini、Google Nest Hub 2 等)を起点に Thread メッシュが構築され、様々な Matter 機器が低電力・高信頼で通信できる環境が整いつつある。

ESP32 による Bluetooth Mesh デバイス実装

ESP32 は Bluetooth Mesh をネイティブサポートしており、Espressif IoT Development Framework(ESP-IDF)で実装できる。

#include "esp_ble_mesh_defs.h"
#include "esp_ble_mesh_networking_api.h"

// Bluetooth Mesh プロビジョナー初期化
static esp_ble_mesh_prov_t provision = {
    .uuid = dev_uuid,
    .output_size = 0,
    .input_size = 0,
};

// ジェネリック On/Off サーバーモデル
static esp_ble_mesh_model_t root_models[] = {
    ESP_BLE_MESH_MODEL_CFG_SRV(&config_server),
    ESP_BLE_MESH_MODEL_GEN_ONOFF_SRV(&onoff_pub, &onoff_server),
};

void app_main(void) {
    esp_ble_mesh_register_prov_callback(prov_complete_handler);
    esp_ble_mesh_register_generic_server_callback(onoff_handler);
    esp_ble_mesh_init(&provision, &composition);
    esp_ble_mesh_node_prov_enable(ESP_BLE_MESH_PROV_ADV | ESP_BLE_MESH_PROV_GATT);
}

農業 IoT(LoRa メッシュ)

広大な農地ではセルラー電波が届かない場合があるが、LoRa ベースのメッシュプロトコル(例: Meshtastic)を使うことで数 km 範囲をカバーするセンサーネットワークを電池動作で構築できる。


実装・開発のポイント

ネットワーク設計のガイドライン

ルーター配置の考え方:

  • 通信エリア全体をカバーするよう、ルーターノードを格子状に配置
  • ルーターのリンク品質が低い(RSSI < -85 dBm)場合は中継ルーターを追加
  • 最大ホップ数は 5〜7 ホップ以内に収めるとレイテンシが安定

エンドデバイスの省電力設計:

// ZigBee エンドデバイスのスリープ設定例(Zigbee2MQTT / ZHA 向けデバイス)
// ポーリング間隔を長くして消費電力を削減
#define POLL_INTERVAL_MS  (7500)   // 7.5秒ごとに親ノードへポーリング
#define REJOIN_INTERVAL_S (3600)   // 1時間ごとにネットワーク再参加確認

// センサー計測 → 送信 → スリープ サイクル
void sensor_task(void) {
    float temp = read_temperature();
    zigbee_send_report(temp);
    esp_sleep_enable_timer_wakeup(SLEEP_DURATION_US);
    esp_deep_sleep_start();
}

OpenThread(Thread の OSS 実装)

Thread の公式 OSS 実装である OpenThread は ESP32、Nordic nRF5340 など多くのプラットフォームで動作する。

# OpenThread CLI シミュレーターで動作確認
./output/simulation/bin/ot-cli-ftd 1  # ノード1(Full Thread Device)

> dataset init new
> dataset commit active
> ifconfig up
> thread start
> state
# → router または leader になったことを確認

> ipaddr          # IPv6 アドレス確認
> ping fd00::1    # 他ノードへの疎通確認

トポロジー可視化とデバッグ

ZigBee ネットワークでは OTBR(OpenThread Border Router) のウェブインターフェースや、ZigBee2MQTT の Networkmap 機能でトポロジーをリアルタイム確認できる。

# ZigBee2MQTT でネットワークマップ取得(MQTT コマンド)
mosquitto_pub -t "zigbee2mqtt/bridge/request/networkmap" -m '{"type": "raw", "routes": true}'

他技術との比較

項目ZigBee メッシュThread メッシュBluetooth MeshWi-Fi EasyMeshLoRa メッシュ
物理層IEEE 802.15.4IEEE 802.15.4Bluetooth LEWi-FiLoRa
ルーティングAODV + ツリーRPL(IPv6)フラッディングIEEE 802.11s独自
IP 対応部分的完全(IPv6)非対応完全非対応
最大ノード数〜64,000〜511〜32,767数十〜数百数千
通信距離10〜100 m10〜100 m10〜100 m50〜300 m1〜10 km
データレート250 kbps250 kbps1〜2 Mbps数 Gbps0.3〜50 kbps
省電力非常に良い非常に良い良い悪い非常に良い
Matter 対応Bridge 経由ネイティブなしなしなし

メッシュネットワークの選択では、通信距離・電力制約・データレート・既存エコシステムとの互換性を総合的に判断する必要がある。新規スマートホームシステムでは Thread + Matter の組み合わせが有力だが、産業用途では ZigBee の豊富な実績が依然強みとなっている。基地局/ゲートウェイ を必要とする LoRaWAN と異なり、メッシュネットワークはゲートウェイへの依存度を下げることでネットワークの堅牢性を高める構成が可能である。

関連用語

参考リンク