イーサネットのカプセル化方式を整理する
■ イーサネット イーサネット(Ethernet)は、1972 年、 ゼロックスのパロアルト研究所で研究が始められた。 オリジナルバージョンであるイーサネットバージョン1は、 1980年に、DEC、Intel、Xerox の三社によってリリースされた。 この最初のイーサネット標準は、3社の頭をとってDIXイーサネットと呼ばれる。 あるいは単にイーサネット(Ethernet)と呼ぶ場合も多い。 その後、1982年にバージョン2がリリースされた。 ■ イーサネット 2 Novell:Ethernet_U Cisco:arpa DIXは、1982 年に、バージョン2のイーサネットをリリースした。 以来、ほとんど全てのバージョン1が、バージョン2に置き換わっている。 一般にTCP/IPでも、バージョン2のフレームが使用されている。 イーサネット2フレームでは、宛先アドレス、送信元アドレスの次に、 イーサタイプという2バイトのフィールドが続く。 このイーサタイプフィールドは、イーサネットで運ぶ上位層プロトコルを 識別するために用いられる。 |← Data Link Header →| +-----------+-------+------+----------------------------------------+---+ |Destination|Source |Type |Data |FCS| |Address |Address| | | | +-----------+-------+------+----------------------------------------+---+ 6 6 2 Variale 4 bit イーサタイプフィールドは、1500(16進数で05DC)より大きい値を取る。 一方、IEEE802.3シリーズの長さフィールドは、1500以下の値を取る。 これは、データ部分の最大長が1500バイトであることに起因する。 これにより、イーサネット系フレームかIEEE802.3系フレームかを識別できる。 ■ IEEE 802.3 IEEE802委員会は、1980年2月、 イーサネットの国際標準を作成するためのプロジェクトを始めた。 IEEEでは、DIXイーサネットをベースとして検討を進めた。 その結果、IEEE802.3標準では、 DIXイーサネットのイーサタイプフィールドを廃止して、 替わりに長さフィールドを設けて、データ部分の長さを表すことにした。 このためIEEE802.3標準では、ネットワーク層プロトコルの識別ができない。 なお、IEEE802.3標準の長さフィールド値は、必ず1500(05DC)以下になる。 MACフレームのデータ部分の最大長は1500バイトだから。 このことは、DIXイーサネットフレーム(イーサタイプ使用)か IEEEフレーム(長さフィールド使用)かの識別に役立つ。 |← Data Link Header →| +-----------+-------+------+----------------------------------------+---+ |Destination|Source |Length|Data |FCS| |Address |Address| | | | +-----------+-------+------+----------------------------------------+---+ 6 6 2 Variale 4 bit IEEE802.3標準の初期バージョンでは、 ネットワーク層のパケットを直接データフィールドに格納する(Raw方式)。 当初はLANのネットワーク層といえばIPX一色だったので、 上位層プロトコルの判別ができなくても問題なかったのである。 しかし、その後TCP/IPプロトコルが台頭し、IPとARPの判別が必要になった。 NICは、受信したマックフレームを、 どのネットワーク層プロトコルに渡せばよいか、判別しなければならない。 そこで、IEEE802.3標準の最終バージョンでは、 後述するLLCヘッダやSNAPフィールドを、合わせて使うことが規定された。 ■ 802.3 Raw Novell: Ethernet_802.3 Cisco: novell-ether IEEE802.3標準の初期バージョンをベースとして ノベル社が独自にリリースしたカプセル化フォーマット。 NetWare 3.11以前のデフォルトフレームタイプになっている。 Raw(生)と呼ぶのは、データ部分に直接上位層パケットを格納するため。 802.3 Rawを使ってIPXパケットをカプセル化する場合には、 IPXパケットの先頭にあるチェックサムフィールドの値を、常にFFFFとする。 これにより、Rawフレームと他のカプセル化を使用したフレームとを判別できる。 RawはIEEE802.3初期バージョンをベースにしているので、 上位層プロトコルを識別するためのフィールドがない。 当時はまだ、IPXが全盛の時期であり、こうした仕様で問題なかった。 |← Data Link Header →| +-----------+-------+------+----------------------------------------+---+ |Destination|Source |Length|IPX Packet |FCS| |Address |Address| |(0xFFFF・・・) | | +-----------+-------+------+----------------------------------------+---+ 6 6 2 Variale 4 bit ノベル社がこの独自フォーマットをリリースしてから2年後、 IEEE802.3標準の最終バージョンが発表された。最終バージョンでは、 長さフィールドの後ろに、LLC ヘッダを付加する形に修正された。 このため、この時点でノベル社のカプセル化フォーマット(Raw)は、 国際標準規格との互換性がなくなってしまった。 そこでノベル社は、NetWare 3.12以降のデフォルトのカプセル化タイプとして、 後述するIEEE802.2 LLCを採用している。 ■ IEEE 802.2 LLC Novell: Ethernet_802.2 Cisco: sap IEEE802.3標準のフレームに、 ノード間のリンク制御に使用するLLCヘッダを追加するための仕様。 LLCヘッダは3バイトからなり、データ部分の先頭に配置される。 LLCヘッダーでは、 サービスアクセスポイント(SAP)という概念を導入している。 LSAP(Link Service Access Point)は、LLCデータを受信する役割を、 SSAP(Source Service Access Point)は、LLCデータを送信する役割を持つ。 ノベル社では、当初はRawフレームを使用していたが、 NetWare 3.12以降は、デフォルトのカプセル化タイプとしてLLCを採用した。 |← Data Link Header →|← LLC Header →| +-----------+-------+------+----+----+-------+----------------------+---+ |Destination|Source |Length|DSAP|SSAP|Control|Data |FCS| |Address |Address| | | | | | | +-----------+-------+------+----+----+-------+----------------------+---+ 6 6 2 1 1 1 Variale 4 bit LLCヘッダでも、 イーサタイプと互換する形での上位層プロトコル識別ができない。 そこで後に、LLCを更に拡張したSNAPフィールドが定義された。 SNAPフィールドを使用する場合には、 DSAPとSSAPフィールドに、共に16進でAA(10進数で170)が入る。 逆にSAPフィールドがAAAA以外の場合は、 LLCヘッダのみを使用しており、SNAPフィールドは使っていない。 ■ SNAP Novell:Ethernet_SNAP Cisco: snap イーサネットバージョン2では、イーサタイプフィールドを使って、 上位層プロトコルタイプを指定することができるが、 802.2 LLCヘッダでは、イーサネットUで使用されている イーサタイプの値を、そのまま埋め込むことはできない。 この違いを埋めるために SNAP(サブネットワークアクセスプロトコル)が作られた。 SNAPでは、802.2 LLCヘッダの後ろに、さらにSNAPフィールドを付加する。 SNAPフィールドは5オクテットで構成され、 ここに上位層プロトコルのタイプを記述することができる。 |← Data Link Header →|← LLC Header →|←SNAP Field→| +-----------+-------+------+----+----+-------+--------+-----+-------+---+ |Destination|Source |Length|DSAP|SSAP|Control|Protocol|Type |Data |FCS| |Address |Address| | | | |ID | | | | +-----------+-------+------+----+----+-------+--------+-----+-------+---+ 6 6 2 1 1 1 3 2 Variale 4 bit こうして、DIXイーサネット系のカプセル化方式と IEEE系のカプセル化方式とが、互換性を得ることができた。 なお、Cisco独自のCDPプロトコルでは、このSNAPを使用している。 ■ まとめ ■ 参考URL http://www.cam.hi-ho.ne.jp/puffin/compendium/J_EN-FrFmt.html http://www.geocities.jp/cckik/ether.html 2003/08/01 pm