LED通信事業プロジェクト エンジニアブログ
よくある質問にお答えします (第二回)
LED Backhaulの光通信では何を通信しているの?
記事更新日 2021年11月24日
はじめに
弊社の製品であるLED Backhaul(以下LEDBH)は光無線通信ですが、では「光無線通信で何を通信しているのか?何が通信できるのか?」という質問をよく頂きます。その回答は簡単で「イーサネットです」ということになります。もっとシンプルに言い換えると、「LANケーブルを無線化する装置だ」とも言えて、実際営業時の説明ではそういう言い方をすることもあります。しかし、あまりなじみのない光無線通信ということで「特殊なフォーマットで通信しているのではないか?」とか思われる方が多いみたいです。というわけで、今回は「LEDBHは何を通信しているのか?」に対して回答しつつ、LEDBHの仕組みなどを説明したいと思います。
イーサネットとは
「LEDBHはイーサネット層で通信を行います」と聞けば、通信プロトコルに詳しい方であればそれで全て理解いただけると思います。しかし、イーサネットの名前は聞いたことがあるけど、実際どういうものか分からないという方に少し説明したいと思います。
イーサネットと言えば、パソコンに挿す写真のような「LANケーブル」を思い浮かべると思います。実際、LANケーブルはイーサネットケーブルとも呼ばれます。そのイーサネットケーブルという呼び名があまりに広まったため、LANケーブルで通信するための規格がイーサネットであると思いがちですが、それは違います。LANケーブル以外にも、同軸ケーブルや光ファイバーでイーサネットの通信をすることができます。同軸の方はほぼ絶滅していてお目にかかることも少ないですが、光ケーブルのイーサネットというのは結構身近でも使われています。例えば企業内のLAN配線ですと、目に見える末端部分はLANケーブル(かWi-Fi)が使われていると思いますが、途中の基幹部分、例えばビルの階を跨ぐ縦方向配線などには通信速度、通信距離、安定性どれもLANケーブルに勝る光ファイバーのイーサネットが使われることが多いです。ちょっと脱線しましたが、ここで言いたかったのはイーサネットというのがケーブルそのものの規格ではなく通信方式の規格であるということです。
そして、もう一つよく勘違いされている事があります。「イーサネット=IP」みたいに思われていますが、イーサネットはIPで通信する規格ではないということです。確かに普通の方がイーサネットでやり取りするデータの殆どはIP通信、つまりインターネットプロトコルによる通信でしょう。各機器にはIPアドレスという「番地」が付けられ、その番地を指定して通信しています。今お読みになっているこのブログも、URLとそれに対応したIPアドレスがあって、そのIPアドレスをブラウザ等が利用して宛先までデータを届けています。しかし、IP通信はイーサネットよりも上のレイヤーの通信です。イーサネットはIPアドレスを含むIPのパケットを運びますが、イーサネット自身はパケットの中身、つまりIPアドレスを見ることはできません。では、イーサネット自身は何を見てパケットの宛先を決めているのかというと、それはMACアドレスです。LANポート(イーサポート)には必ずMACアドレスというものが付与されています。MACアドレスは「6バイト」と長く、全ての機器でユニークになるような番号が付けられます。言わばシリアルナンバーみたいなものです。イーサネットでは宛先にそのユニークなMACアドレスを指定することで、通信したい機器までパケットを届けることができます。そして、MACアドレスとIPアドレスは「ARP(通称アープ)」というプロトコルで別途紐付けされます。ARPによりMACアドレスとIPアドレスの対照テーブルが作られ、「このIPアドレスにパケットを送りたいときは、このMACアドレスに送る」ということが分かるようになっています。
LEDBHとIPアドレス
イーサネットはIP通信を送ることが多いですが、IP以外のデータを送ることも可能です。IP通信はイーサネットの中身(ペイロード)の一種であり、通信の仕組み的にIPアドレスは必要なく、MACアドレスで宛先を指定してデータを送るプロトコルです。つまり、LEDBHはIPアドレスに関係無くMACアドレスで通信を行う装置ということができるでしょう。良く聞かれる質問の一つに「LEDBHを使用するとき、各機器のIPアドレスはどうすればいいの?」ということがありますが、それに対する回答は「IPアドレスは関係無いので、好きにして下さい」ということになります。しかし、それには「LEDBHの設定とかしないのであれば」という条件が付きます。
LEDBHには様々な設定項目がありそれを変更することができます。そして設定を変更するためにはLEDBHにアクセスしてWeb設定画面を開く必要があります。その設定画面を開くにはIPアドレスを指定する必要があります(初期設定ではhttp://192.168.0.xxx)。というわけで、LDEBHで通信するだけであればIPアドレスは一切関係ありませんが、設定を変えようと思うならLEDBHにアクセスできるIPアドレスのサブネットなりなんなりにしておいていただく必要がある、ということです。もちろんですが、LEDBHのIPアドレス自体を変更することもできます。この辺の感覚は、スイッチングハブの設定画面と一緒です。あちらも通信そのものにはIPアドレス関係ありませんが、設定するときだけIPアドレス設定が必要となります。LEDBHの場合は、光軸合わせに必要なSNR(信号のSN比)を取得するのにもIPアドレスが必要になるため、やはり設置時には適切にIPアドレスを設定いただき、LEDBHにアクセスできる環境を作っていただいた方が良いと思います。尚、LEDBHはDHCPクライアントにも対応していますので、動的にIPアドレスを振っていただくこともできます。
IPアドレスが分からないときはどうするのか?
さて、ここで疑問が。LEDBHの設定をするのにIPアドレスが必要。しかし、そのIPアドレスが分からないときは、設定画面にすらたどり着けません。残念ながらLEDBHには操作用ディスプレーもありません。じゃあ、どうやってIPアドレスの分からない(もちろんMACアドレスも分からない)LEDBHに対して、アクセスすればいいのでしょうか?実は、LEDBHに添付しているSNRを表示するツール「SNR Viewer」というアプリを使えばIPアドレスを知ることができます。それは、LEDBHにSNR Viewerを動かしているPCと全く関係無いIPアドレスが振られていたとしても取得可能です。
例えば、我々もよく使っているNETGEARさんのハブにも専用のアプリケーションがあって、それを使うとぶら下がっているハブのIPアドレスが分かるようになっています。実は筆者もネットワークが専門では無いため、こういったアプリがどうやってIPアドレスを知っているのか、LEDBHの開発に携わるまで知りませんでした。IPアドレス総当たりでもしてるのかな?と思っていたぐらいです。なかなかネットを検索しても出てこない情報ですが、折角の機会ですので、ここで我々のLEDBHが、どうやってIPアドレス不明の中からIPアドレスを取得しているのかを説明したいと思います。実は、結構簡単です。
- PC(アプリ)はある特殊なMACアドレス宛てにパケットを送信する。このMACアドレスは実在する機器に割り振られたものでは「ない」アドレスだが、全てのLEDBHはこのMACアドレスを知っているというMACアドレスである。
- この特殊MACアドレスを宛先とするパケットを受け取った全てのLEDBH機器は、そのパケットの送り先に対して必ず返事のパケットを返す。
- PCは、返信パケットを受信し、その送り先(つまりLEDBH)に対して、IPアドレスなどのステータス情報を送るようにリクエストパケットを送る。
- リクエストパケットを受信したLEDBHは、そのパケットの送り先に対してステータス情報を送る。
こんな流れです。鍵は「特殊MACアドレス」です。イーサネット上では「宛先の機器が分からないMACアドレスのパケットは、取りあえずいろんなところにばらまく」という動作をします。これをLEDBHが受信して必ず返信します。これさえできれば、PC(アプリ)は、LEDBHのMACアドレスが把握できるので、あとは直接やり取りすればいいだけです。
ただし、「分からないMACアドレスは飛ばさない」というタイプのハブも希に存在するため、そういったハブを跨いで繋がっている場合は、この仕組みが使えません。ですから、LEDBHのIPアドレスを知りたい場合は
- PCとLEDBHを直接LANケーブルを繋げる or
- この手のパケットを通すことが分かっているスイッチ(NETGEAR製は大丈夫)を使って繋げる
ことを推奨しています。また、ネットワークに複数台のLEDBHが繋がっている場合、複数台から返事が返ってきます。「どの機器がどのMACアドレスか」というのは通常把握していないでしょうから、IPアドレスを知りたいという目的の場合は1台だけ繋いでおくことをお勧めします。また、イーサネットの使用上、当然「ルーター(サブネットを跨ぐ装置)」は超えることができませんので、PCとLEDBHをネットワーク上の近い場所に置いておくことも重要です。
ちなみに、このようなIPアドレスなし、MACアドレスもアプリ側から指定する、みたいなのパケットを作り出すためには、MACヘッダーから自作しなければなりません。ヘッダーも含めて1からすべて指定した「低レベルのパケット」を送受信するにはOSのRaw Socketと呼ばれるAPIを利用するのが一般的でした。しかし、この機能を使った悪事(例えば偽装アドレスパケットの送信)が多発したため、Windows XP SP2以降OSのRaw Socketからは多くの機能が削除されてしまいました(Linux系ではまだ使えるみたいですが)。そのため、前述の「SNR Viewer」では、Raw Socket APIを自作して低レベルのパケットを作り出しています。
イーサネットだけど・・・
イーサネットは衝突によるエラーは想定されていますが、通信区間のノイズ環境が高くしてエラーが多数起こる、そういった状況は想定されていません。したがって、イーサネットは「エラー検出」はしますが「エラー訂正」はしません。一方、LEDBHは、光無線とはいえ無線は無線です。通信経路でのエラーは必ず発生します。ですから、LEDBHには光無線区間のMAC/PHY層にてエラー訂正機能、再送機能(通称H-ARQ)が付いております。ですから、通常の使用においては無線区間でのエラーがイーサネット層に見えることはありません。ただし、無線区間の通信品質が大きい場合などで、光無線区間でのエラー再送が間に合わずにイーサネット含む上位レイヤーにエラーが出てしまうことはあります。
LEDBHはイーサネットのペイロード、すなわちIPパケットの中身は全く見ていないと言いましたが、実はIPヘッダーを参照する場合も無いわけではありません。それはQoSの設定を行った場合です。LEDBHはIPプレシデンスやDSCPの一部機能に対応しており、その際にIPヘッダーの一部を参照します。とはいえ、通常QoSを設定する場合、1対1通信しかしないLEDBH区間でするのではなく、前段のハブ(L2スイッチ)で行うでしょうから、殆どの方はこの機能を使うことはないでしょうし、この機能によって別途IPアドレスの設定を変えなければいけないとかいうこともありません。
まとめ
- 「光無線通信で何を通信しているのか?」という質問の答えは、ずばり「イーサネット」です。
- 通信だけであればIPアドレスの設定は必要ありません。
- LEDBH機器設定の変更と光軸合わせのためのSNR取得はIPで行うため、それらが必要な場合は適切なIPアドレス設定が必要となります。
- どんなIPが設定されていようとLEDBH機器のIPアドレスが分かるSNR ViewerはRaw Socketを使って通信しますので、ルーターや一部ハブを跨いでの使用はできません。
- LEDBHは「無線」なので、無線区間においてのエラーは避けられませんが、光無線通信のレイヤーでエラー訂正・再送を行うため、通常使用においてイーサネットレベルでエラーが発生することはありません。