Bluetoothによるネットワーキング の0(基本的事項)

Bluetoothによるネットワーキングとしてはダイアルアップネットワークがよく知られている。つまり携帯電話のようなデバイスを無線経由でダイアルアップするためにBluetoothが使われる事が非常に多い。このようなネットワーク方式はDUN(Dial Up Network)と呼ばれる。
しかし、Bluetoothを使ったネットワークとして別にPAN(Personal Area Network)も用意されている。PANはBluetooth経由でEthernet通信を可能にする。
PANの利用用途としては、Wi-FiネットワークにおけるAd-Hocネットワーキングが最も近い。Wi-Fiと異なり、暗号化インフラはPINの形で統合されており*1、セットアップはそれなりに容易といえる。
ただし、PANを使用したいシチュエーションは非常に限られている。
例えば、ファイルの転送を行いたければFTPOPPという別のプロファイルが存在し、これらのプロファイルは携帯電話などPC以外のデバイスでも大抵サポートされている。対して、PANをサポートしたデバイスは基本的にPC以外に存在しない(PDAの類が含まれることも有る)。
PANは通常のTCP/IPソフトウェアをAd-Hoc的に使用したいというケースにだけ威力を発揮する。

アクセスポイント的な使用

Windows XPでは、Ethernetバイス同士のブリッジを行えるため、Bluetoothバイスが提供するEthernetと既存のEthernetをブリッジすることでPANを無線LANのAP的に使用することができる。
ただし、これはXPやVistaの標準Bluetoothスタックでは行えない。

事前の要求

PANを使用するアプリケーションを設計する前に推奨される事項として、以下が有る。

  • IPv6をサポートすること

IPv4はAd-Hocネットワークのためのシステムが存在しないため、機能することを保証できない。一部のBluetoothスタックはPANと同時に通常のDHCPをサポートすることでIPv4でも動作するようにしているが、それ以外の場合はいわゆる「ネットワークアドレスの取得」が終了(タイムアウト)するまでIPv4ネットワークは使用できない。
それよりも問題となるのは、Windows標準スタックではDHCPサーバをサポートしていない。
対して、IPv6ではMACアドレスを使用した直接の通信(Link-Localアドレス)が可能で有るため、特にIP層を意識する必要なくシステムをデザインできる。

IPv6そのものは近隣ノードを発見するためのインフラを提供しないため、何らかの方法で近隣ノードを取得する必要が有る。
Bluetoothスタックに対して接続中のデバイスを問い合わせる方法はBluetoothスタックごとに異なるのでアテにならない。
ひとつはBonjourを使うことで、適当なサービスをBonjourに対して提供することで近隣のノードを発見することができる。また、BonjourやLLMNRがインストールされたコンピュータであれば、名前(ホスト名)を指定して名前解決を行うことで接続しているBluetoothバイスIPv6アドレスを知ることが出来る。
ただし、BonjourWindowsはデフォルトでは装備しておらず、LLMNRはWindows Vista以外は装備していない。
IPv6マルチキャストに対して良い考察を提供しており、自前のディスカバリプロトコルを実装するのもそれほど悪い選択肢ではない。この場合Link-Localマルチキャストアドレスが使用できる。

接続の大きな流れ

基本的に、アプリケーションの側から接続をinitiateすることは出来ない。予めユーザが接続を作成する必要が有る。
この接続の流れは、まず通常のBluetoothバイスを接続するときのようにPINを双方で入力して接続鍵を生成し、その後PANへ接続する操作を行う。
デフォルトではPANが有効になっていないことが有るので有効にする必要が有るかもしれない。
これらの手順はOPPによるファイルの転送などにもそのまま応用できる。

*1:Wi-FiではWPSがほぼ同様のものを提供するが、そもそもWi-FiのAd-Hocネットワークはサポート状況が悪いことが多い