概要
メッシュネットワーク(Mesh Network)は、ネットワークに参加する複数の機器(ノード)が互いに中継役を担い合う網(メッシュ)状の通信トポロジーである。特定の集中ルーターや基地局に依存しないため、1台のノードが故障や障害を受けても通信経路を自動的に迂回し、ネットワーク全体の通信を維持できる。
組み込み・IoT 分野では以下のプロトコルがメッシュネットワークを実装している。
| プロトコル | 物理層 | 主な用途 |
|---|---|---|
| ZigBee | IEEE 802.15.4(2.4 GHz) | スマートホーム、産業 |
| Thread | IEEE 802.15.4(2.4 GHz) | スマートホーム(Matter 基盤) |
| Bluetooth Mesh | Bluetooth LE(2.4 GHz) | 照明・建築設備 |
| Z-Wave | 900 MHz 帯 | スマートホーム |
| Wi-Fi EasyMesh | Wi-Fi(2.4/5/6 GHz) | 家庭用 Wi-Fi 拡張 |
| LoRa Mesh | Sub-GHz | 農業・インフラ監視 |
メッシュネットワークはスターネットワーク(全ノードが中央のルーターに集約)やツリーネットワークと対比される概念であり、単一障害点(SPOF)の排除と通信エリアの拡張を主な目的とする。
歴史・背景
メッシュネットワークの概念は、軍事通信の分散化研究(1960〜1970 年代)から生まれた。インターネットの前身である ARPANET も、核攻撃に対して耐性を持つ分散ネットワークとして設計されたものである。
IoT 向けメッシュネットワークの商用化は 2000 年代から始まり、以下のような展開をたどった。
| 年代 | 出来事 |
|---|---|
| 2003 | ZigBee Alliance 設立・IEEE 802.15.4 策定 |
| 2004 | ZigBee 1.0 規格化(メッシュルーティング対応) |
| 2014 | Thread 1.0 策定(IP ベースのメッシュ) |
| 2017 | Bluetooth Mesh 1.0 策定 |
| 2017 | Wi-Fi EasyMesh 策定(IEEE 802.11s ベース) |
| 2019 | Thread 1.2 策定(高信頼マルチキャスト追加) |
| 2022 | Matter 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 Mesh | Wi-Fi EasyMesh | LoRa メッシュ |
|---|---|---|---|---|---|
| 物理層 | IEEE 802.15.4 | IEEE 802.15.4 | Bluetooth LE | Wi-Fi | LoRa |
| ルーティング | AODV + ツリー | RPL(IPv6) | フラッディング | IEEE 802.11s | 独自 |
| IP 対応 | 部分的 | 完全(IPv6) | 非対応 | 完全 | 非対応 |
| 最大ノード数 | 〜64,000 | 〜511 | 〜32,767 | 数十〜数百 | 数千 |
| 通信距離 | 10〜100 m | 10〜100 m | 10〜100 m | 50〜300 m | 1〜10 km |
| データレート | 250 kbps | 250 kbps | 1〜2 Mbps | 数 Gbps | 0.3〜50 kbps |
| 省電力 | 非常に良い | 非常に良い | 良い | 悪い | 非常に良い |
| Matter 対応 | Bridge 経由 | ネイティブ | なし | なし | なし |
メッシュネットワークの選択では、通信距離・電力制約・データレート・既存エコシステムとの互換性を総合的に判断する必要がある。新規スマートホームシステムでは Thread + Matter の組み合わせが有力だが、産業用途では ZigBee の豊富な実績が依然強みとなっている。基地局/ゲートウェイ を必要とする LoRaWAN と異なり、メッシュネットワークはゲートウェイへの依存度を下げることでネットワークの堅牢性を高める構成が可能である。