#始めに
olsrd を使って Raspberry Pi や Mac によるメッシュネットワークを簡単に構築できます。災害時等、現場でトポロジを意識しないで一時的なネットワークを構築したい時に便利です
#なにが嬉しいのか
ad-hoc 通信ができるようになったら、次は olsrd を動かすとメッシュネットを構築できます。メッシュネットになると通常の ad-hoc 通信と違い、マルチホップで通信をすることができます。ルーティングテーブルは olsrd が定期的に再構成してくれるので、ピアが移動してネットワークトポロジが変わっても大丈夫なあたりが MANET の Mobile たる所以ですね
#インストール
Raspberry Pi の場合は apt で、Mac は brew でインストールできます
sudo apt-get install olsrd
brew install olsrd
#起動
sudo olsrd -i インターフェース1 (インターフェース2 ...) -d 1
インターフェースは Raspberry Pi の場合は wlan0 とか、Mac の場合はおそらく en0 とかだと思います。
-d 1 はデバッグオプションで、1 で標準出力に下記のようなデバッグ情報を出力してくれます。0 でデバッグ出力なしです
ここで LQ は Link Quality で、LQ をベースに COST が計算されます。
上のデバッグ出力は 192.168.12.x ネットワーク内で
- 192.168.12.1
- 192.168.12.3
- 192.168.12.5
の3台がそれぞれお互いすぐそばにあり、olsrd を起動している時の、12.1 のデバッグ出力です。
1-hop として 192.168.12.3 と 192.168.12.5 両方が見えていて、さらに 2-hop でぞれの相手が見えているメッシュになっています。
ここで、1 と 3 がかろうじてつながる程度に距離を離して、さらに 3 と 5 がかろうじてつながるよに距離を離して、1 - 3 - 5 という接続しかできないようにメッシュを引き延ばすと 1 のデバッグ出力は以下のようになります
1-hop で 3 が、2-hop で 5 が見えています
この時、1 から 5 が(3経由のマルチホップで) 普通に使えます。
#補足
因に、olsrd を動かすのに ad-hoc 接続は別に必須ではないです。 managed mode の wifi に対してもルーティングテーブルをつくってくれます。例えば、wifi ドングルを二個刺して、一個が ad-hoc接続、もう一個を AP 接続(managed)にして、その両方を olsrd で管理することも可能です。下の図では 192.168.12.x 系が ad-hoc, 192.168.11.x 系が AP 接続な状態で olsrd でルーティングしています。
もちろん、APに接続することが前提なメッシュネットというのは本来の柔軟性がなくて嬉しくしくないですね。
#感想
メッシュネットは消費電力の小さい ZigBee とか 920MHz モジュールとかで構築するもの、という先入観が私はあったのですが、よく考えてみると Raspberry Pi + WiFi という大飯食らい(!)な構成でもパワーリソースが問題にならないような現場では、モジュールの安さと Linux が使えてしまうソフトウェアの柔軟さの魅力のほうが大きいので、これはこれでありな気がします
#参考URL
- OLSR.org
- Linux Olsr HOWTO
- アドホックネットワークにおける プロアクティブ型経路制御の適用限界 もの凄く丁寧に書かれている修論なのですが、本当にわかりやすくまとまっていて概要がよくわかりました
- アドホックネットワーク 信学会の知識ベース。あっさりとした説明