産業用イーサネット(4)フォーマット四方山話!?

MACアドレスは枯渇する?

図1 は、VLAN なしと VLAN 付きのイーサネットフォーマットだ。いずれのフォーマットも、宛先アドレスで始まる。パソコンなどの受信ノードとしては、受信しなければならない自分宛てのフレームか、受信する必要がなく廃棄してもよいフレームかの判断がいち早くできる。通信用として良くできたフォーマットだ。しかし、6バイトの宛先アドレスで始まるフォーマットは、これから先も「宛先アドレス」を変更できない。このアドレス(MACアドレス)はIEEE が重複しないように上位24ビットを機器ベンダーに配布し、下位24ビットは各ベンダーの責任で重複しないように管理することになっている。MACアドレスの総数は、248 =281,474,976,710,656 個になる。約281 兆個だ。

イーサネットフレーム構造
図1 イーサネットフレーム構造

国連の「世界の人口見通し2022」では、2025年に世界人口は約80億人になると推定している。80憶人がMACアドレスを使うと仮定すると、1人当たり約35,000 個になる。80億人が 100年間毎年 350 個のMACアドレスが使える。当面枯渇することはなさそうだ。

MACアドレス枯渇?
図2 MACアドレス枯渇?

MACアドレスは本当に重複していない?

どこで調べてもMACアドレスは世界中で同じものを持ったものはないユニークなアドレスとあるが本当だろうか?

2012年に、HDムーアがMACアドレスの重複を調べたデータが公開されている。これによると、各社かなりの数のMACアドレスが重複している。人は間違いを犯すものだ。

MACアドレスの重複
図3 MACアドレスの重複 引用:DerbyCon 2012: The Wild West

VLAN登場 本当に大丈夫か?

イーサネット初期の規格には VLAN はなかった。現在も変わらないが、当時もルータでのネットワーク分割が常識だった。しかしルータが高価なため、第2層の領域(ブロードキャスト・ドメイン)が広がり、通信効率が悪化した。解決策として、ケーブル接続を変更せず領域を分割できる VLAN が登場した。

【再掲】図1 の様に、本来「上位タイプ(第3層のIPなど)」を示す領域に、第2層の VLAN を示す領域を追加することで対応することになった。階層概念上はおかしな構造だが、まずまずの解決策だ。

VLAN の追加で新たな問題が2つ発生した。1つ目は、フレームの最大長が4バイト長くなり 1522バイトになったことだ。規格上は、最大長を超えるフレームは廃棄しなければならない。世界中に設置されたブリッジやルータが、厳密に1518バイトを超えるフレームを廃棄 していれば VLAN は使えない。そこで、IEEE は世界中のイーサネット機器を調べた。結果は、ほぼ全ての機器が、1536バイトか2048バイト以上のフレームを廃棄するように作られていた。理由は極めて単純だ。1518を超える数(1519以上)を判断するのは2進法では煩雑だ。単純な比較回路で実現するため、1536か2048になった。私が開発していた機器も 1536バイト以上を廃棄するようになっていた。

図4 2進数による各バイト数の計算

2つ目の問題は、VLAN 間通信はルータでないとできないことだ。VLAN 内は当時もハードウェアで実現したスイッチ(機能的にはブリッジ)がすでに流通し、高速フレーム処理ができた。しかし、当時のルータはソフトウェアでルーティング処理を行うため低速で高価だった。VLAN でブロードキャスト・ドメインを分割することで VLAN 内は高速になったが、ネットワーク全体としては高速化できなかった。当時の感覚としては、自動車から自転車に乗り換えるような感覚だった。この解決策として、ハードウェアでルーティングを行う「L3 スイッチ」が登場した。

イーサネットフレーム構造
【再掲】図1 イーサネットフレーム構造

2つ目の問題は、VLAN 間通信はルータでないとできないことだ。VLAN 内は当時もハードウェアで実現したスイッチ(機能的にはブリッジ)がすでに流通し、高速フレーム処理ができた。しかし、当時のルータはソフトウェアでルーティング処理を行うため低速で高価だった。VLAN でブロードキャスト・ドメインを分割することで VLAN 内は高速になったが、ネットワーク全体としては高速化できなかった。当時の感覚としては、自動車から自転車に乗り換えるような感覚だった。この解決策として、ハードウェアでルーティングを行う「L3 スイッチ」が登場した。

VLAN 間ルーティングが課題
図5 VLAN 間ルーティングが課題

CFI ビットが消えた!?

図6 はVLAN で拡張された領域だ。当初 赤枠 は、 CFIビットと呼ばれたが、今は DEI と名前も機能も変わった。

CFI( Canonical Format Indicator)は、「0」で標準イーサネットのMACアドレス、 「1」でToken Ring/FDDI のMACアドレスを示している。イーサネット上では CFI は常に「0」だ。DEI( Drop Eligibility Indicator)は、 「0」では何もせず「1」で輻輳発生時に優先的にフレームを廃棄する。多くのスイッチやルータが普及した段階で、定義が変わるのは迷惑な話だが、CFI の定義にそもそもの原因がある。

VLAN付きイーサネットフレーム構造
図6 VLAN付きイーサネットフレーム構造

CFI ビットの意味は、図7 の様に、宛先アドレス/送信元アドレスのビット順が逆転する。イーサネットとトークンリングを相互接続するために用意された機能だ。イーサネットポートでCFIが「1」 のフレームを受信すると VLAN の付かないポートにはフォワードしない。VLAN タグの付いたポートには規格上フォワード可能だが、実装した話は聞いたことがない。フォワードした VLAN 領域が全て CFI=「1」ならば正常に動作しそうだが、「1」と「0」混在環境では動作するとは思えない。イーサネット陣営の一部では CFI を「IBM ビット」と呼び忌み嫌っていたようだ。

このビット順(エンディアンとも言う)は別な問題も引き起こした。Token Ring 機器が得意なベンダーからイーサネットの NIC(Network Interface Card)を購入したところ、 MAC アドレスのビット順が逆転した NIC が出荷された。ビット順が逆転しているため、運が悪いと他社の MAC アドレスと重複する。この時は運悪く他社の MAC アドレスと重複したが、不幸中の幸いで重複したベンダーが製品出荷前であったため、MAC アドレスを買い取ることで決着したようだ。

CFI ビットの意味
図7 CFI ビットの意味

柔軟な IP パケット

IP パケットの構造は、イーサネットとは根本的に異なる。パケットの先頭は「バージョン」だ。バージョンを変えれば、ここから先はいか様にも変えられる。実に柔軟な構造だ。図8 はIPv4 とIPv6 のパケットフォーマットの概要だ。一見して、IPv6 は簡略化され領域の配置も異なる。先頭にある「バージョン」で識別するため、パケットフォーマットに違いがあっても複数バージョンが混在しても問題ない。現在のような、IPv4 と IPV6 が混在する環境下でも問題なく動作する。

しかし、ハードウェアでのルーティング処理には厄介な構造だ。送信元IPアドレスと宛先IPアドレスはヘッダの最後にあり、バージョンにより場所も長さも異なる。ソフトウェア処理を前提に作られたことがよくわかる。

IP パケット構造
図8 IP パケット構造

工場・物流現場のネットワークの現状

この記事を書いた人

岩崎 有平

早稲田大学 理工学部 電子通信学科にて通信工学を専攻。
安立電気(現 アンリツ)に入社後、コンピュータ周辺機器の開発を経てネットワーク機器の開発やプロモーションに従事する。
おもにEthernetを利用したリアルタイム監視映像配信サービスの実現や、重要データの優先配信、映像ストリームの安定配信に向けた機器の開発行い、Video On Demandや金融機関のネットワークシステム安定化に注力した。
現在は、Ethernetにおけるリアルタイム機能の強化・開発と普及に向けて、Ethernet TSNの普及活動を行っている。