BATMAN ( Better Approach to Mobile Ad-hoc Networking ) は、ドイツの「 Freifunk」コミュニティによって開発中のマルチホップモバイルアドホックネットワーク用のルーティングプロトコルであり、大規模メッシュ展開のパフォーマンス要件を満たさなかったOptimized Link State Routing Protocol (OLSR) を置き換えることを目的としています。[ 2 ]
BATMANの重要なポイントは、ネットワーク内の最適な経路に関する知識を分散化することです。 つまり、単一のノードがすべてのデータを保持しているわけではありません。この技術により、ネットワークの変更に関する情報をネットワーク内のすべてのノードに伝達する必要がなくなります。各ノードは、データを受信した「方向」に関する情報のみを保存し、それに応じてデータを送信します。データはノードからノードへと渡され、パケットは個別に動的に生成された経路をたどります。こうして、集合知のネットワークが構築されるのです。
2007 年初頭、BATMAN の開発者は、ネットワーク層ではなくデータリンク層( OSI モデルのレイヤー 2) でのルーティングのアイデアの実験を開始しました。[ 3 ]レイヤー 3 ルーティング デーモンと区別するために、接尾辞「adv」(advanced の略) が選択されました。UDP / IPを介して交換される情報に基づいてルーティング テーブルを操作する代わりに、仮想ネットワーク インターフェイスを提供し、イーサネット パケットを透過的に転送します。[ 4 ] batman-adv カーネル モジュールは、2.6.38 以降、公式のLinux カーネルの一部となっています。[ 5 ]
BATMANは、従来のルーティングプロトコルの要素を備えています。他のBATMANノードを検出し、ノード間の最適な経路(ルート)を見つけます。また、新しいノードを追跡し、その存在を近隣ノードに通知します。
静的ネットワークでは、ネットワーク管理者や技術者が、どのコンピュータにどの経路やケーブルでアクセスするかを決定します。無線ネットワークは常に変化しており、低い参加閾値は「フリーファンク」ネットワークの基盤となる重要な要素であるため、この作業は可能な限り自動化する必要があります。
定期的に、各ノードはブロードキャストを送信し、その存在を近隣ノードすべてに通知します。近隣ノードは、このメッセージをさらにその近隣ノードに中継し、これを繰り返します。こうして、ネットワーク内のすべてのノードに情報が伝達されます。特定のノードへの最適な経路を見つけるために、BATMANは受信した発信元メッセージの数をカウントし、メッセージがどの近隣ノードを経由して届いたかを記録します。
距離ベクトルプロトコルと同様に、BATMANは経路全体を決定しようとはせず、発信者メッセージを利用して、パケットが正しい方向へ進む最初のステップのみを特定します。データは、その方向の次の隣接ノードに渡され、隣接ノードも同様のメカニズムを使用します。このプロセスは、データが宛先に到達するまで繰り返されます。
BATMANは無線ネットワークに加えて、イーサネットなどの一般的な有線ケーブル接続でも使用できます。
課題は、できるだけ簡単で、小さく、高速なプロトコルを作成することだった。開発をいくつかの段階に分け、反復的なプロセスを用いて複雑な機能を実装するのが賢明だと考えた。
第一段階では、ルーティングアルゴリズムを実装し、その実用性と今回のタスクへの適合性を検証した。発信者メッセージ(存在に関する情報)の送受信には、UDPポート1966が選択された。
バージョン 1 のアルゴリズムは重要な仮定を置いていました。ノードが別のノードから存在データを受信するとすぐに、データを送り返すこともできると想定していました。しかし、無線ネットワークでは、非対称リンクのように、一方向の通信しかできない可能性が非常に高いです。[ 6 ]このことに対応し、発生する問題を解決するために、プロトコルにメカニズムが組み込まれました。このメカニズムにより、ノードは隣接ノードが双方向通信を提供しているかどうかを判断できます。双方向ノードのみがネットワークの一部とみなされ、一方向ノードはもはや完全には含まれません。
このバージョンの最大の革新は、BATMANが複数のネットワークデバイスをサポートしている点です。BATMANを実行するコンピュータやルーターを、高層ビルなどの中心的な場所に設置し、複数の有線または無線ネットワークインターフェースを接続することができます。このように設置することで、BATMANは再送信遅延なしに、複数の方向にネットワークデータを中継することが可能になります。
ネットワークにおける最適な経路を決定する過程で、予期せぬ現象や特殊な状況が発生する場合があります。これらの問題に対処し、循環ルーティング(データが宛先に到達できなくなる原因となる)を防止するための対策を講じています。
ノードは、自身がインターネットへのアクセスを提供していることをネットワークに通知できます。他のノードはこの情報を使用して、近くにインターネット接続があるかどうか、また利用可能な帯域幅がどれくらいあるかを評価します。ノードは特定のゲートウェイを使用することも、接続速度などの基準に基づいてBATMANが使用するゲートウェイを決定できるようにすることもできます。
このバージョンでは、BATMAN自体を実行していないデバイスもアナウンスできるようになりました。通常、この方法はホームネットワークをメッシュネットワークに接続するために使用されます。屋上に設置されたアンテナはBATMANを介して無線ネットワークに接続され、建物の残りの部分もアナウンスされるため、アクセス可能になります。
このバージョンのBATMANは、実世界の条件下では高いレベルの安定性を示すものの、収束時間がやや遅いことが示されています。[ 7 ]これは理論的な分析によって確認されています。[ 8 ]
BatMan-eXperimental (BMX) は、独立したブロードキャストデータグラムで OGM (発信者メッセージ) を複数回送信することによって、実際の指数を近似することを目的としています。[ 9 ]これは、Axel Neumann によって開発された BATMAN の独立したブランチとして始まりました。[ 10 ]安全に信頼されたマルチトポロジルーティング(SEMTOR)を組み込んだ拡張バージョンはBMX7 と呼ばれています。[ 11 ]
バージョン4では、異常なリンク状況における伝送品質をより正確に検出するアルゴリズムが実装されています。発信元メッセージはこのデータを取り込むように更新され、他のノードが非対称接続の品質をより正確に把握できるようになります。この新しい指標は「送信品質(TQ)」と呼ばれます。
第5バージョンでは、主に2つの変更が導入されました。「近隣ノードの検出とメッシュルーティングの分離」と、スループットベースのメトリックへの変更です。
新しい近隣ノード発見プロトコルであるエコーロケーションプロトコル(ELP)が導入されました。近隣ノード発見とメッシュルーティングを分離することで、異なる間隔を使用できるようになります。メッシュに送信されるメトリックはそれほど頻繁に更新する必要はありませんが、ローカル接続の変化にはより迅速に対応できます。
BATMAN IVでは、メッシュ全体の評価指標としてパケット損失率を使用していました。BATMAN Vでは、この指標がスループットに基づくものに変更されました。これにより、パケット損失率が低く高性能なリンクが存在する場合に、メッシュ全体のパフォーマンスが向上します。この場合、低速ながら信頼性の高いリンクよりも、高性能なリンクが優先されます。
2017年、 HBOのドラマシリーズ「シリコンバレー」(シーズン4 エピソード2)のホワイトボードに「BATMAN」と書かれており、番組の主人公リチャード・ヘンドリックスが自身の「新しいインターネット」コンセプトの構成要素として「BATMAN」を含めているように見える(ホワイトボードの右上にテキストが見える)。[ 14 ]