はじめに
AP なしでネットワークを構築できる Ad-hoc 通信は用途によってはとても便利です。メッシュネットというか MANET といったほうがいいのか、その設定の準備として Raspberry Pi で BUFFALO の USB WIFI ドングル WLI-UC-GN や WLI-UC-GNM でアドホック通信をしようとしてはまりました
つきましては、自分への備忘録としてここにメモを残させて頂きますとともに、僭越ながらもしどなたかのお役に立つ事がありましたらそれに勝る幸せはございません
結論
多くのドキュメントで ad-hoc 接続のための /etc/network/interface の設定として以下が紹介されています
- (当たり前だけど他とぶつからない)固定 IP アドレス (static)
- wireless-mode ad-hoc
- ad-hoc 通信をする全ての機器で ESSID を合わせる
WLI-UC-GN や WLI-UC-GNM ではこれで接続ができなかった(ping がとおらない)のではまりました
参考URL 1.によるとBUFFALO の wifi ドングルで ad-hoc 通信をするためには更に
- チャンネルを明示的に合わせる
- 104ビットの WEP を合わせる
WEP は open, 40ビット、64ビット、104ビットと試行錯誤した結果、104ビットの鍵を指定してやっと ping が通りました。ああよかった。
設定のサンプル
例えば、3台の Raspberry Pi に以下の IP アドレスをつかって ad-hoc 通信をするとして
- 192.168.12.1
- 192.168.12.3
- 192.168.12.5
192.168.12.1 の interfaces を以下のようにし、残りの2台にも同様(address だけ違う)にして、ad-hoc通信が可能です
auto wlan0
iface wlan0 inet static
address 192.168.12.1
netmask 255.255.255.0
wireless-channel 1
wireless-mode ad-hoc
wireless-essid pi
wireless-key 01234567890123456789012345
ところで
ところで、ad-hoc 通信は機器間の 1対1 の通信と説明されているのをよくみかけるのですが、別に 1対1 である必要はなく、複数台での構成が可能です。
例えば、下図のように 3台の RPi で 192.168.12.x の ad-hoc ネットワークを作ることが可能です。さらに 12.3 には2つの wlan を用意し、二つめを別のネットワークに接続させてコンソールにする事も可能です
この時、複数機器間の同時通信も可能でした。ただし、転送速度は落ちました。下の表は 12.5 から 12.1 への bulk 転送の速度が、他の bulk転送の影響を受けるか測ってみた結果です。
future works
ad-hoc 通信ができましたので olsr によるメッシュネットを構築してみます。raspbian では olsrd は apt-get でインストールできます。Mac も brew でインストールできます。Windows は簡単にはインストールできないみたいです。レガシーOS は嫌ですね
参考URL
- BUFFALO のQA もの凄く古いドキュメントですが、BUFFALO の Wifi ドングルを ad-hoc で使う設定について書いてあるドキュメントをこれ意外に見つけることができませんでした