EtherType(イーサタイプ)は、イーサネットフレームのデータ種別を示す 1536~65535 (=十六進数で 0x0600
~0xFFFF
)の値。イーサネットフレームのヘッダ部に2バイト値として配置される。
この値は、フレームのペイロードにカプセル化されているプロトコルを表し、受信側のデータリンク層がペイロードのデータをどの上位層プロトコルに引き渡せばいいかを決定するのに用いる。
EtherTypeは1982年に初めてEthernet IIの規格で定義され[1]、後に1997年にIEEE 802.3規格に取り込まれた[2]。
イーサネットフレーム内でEtherTypeを格納するフィールドは「長さ/タイプ」という名前で、EtherType(タイプ)だけでなくペイロード長(長さ)を示すのにも使う場合がある。
歴史的には、1982年のEthernet II規格ではこのフィールドはEtherTypeを表し、1983年の初期IEEE 802.3規格ではバイト単位のペイロード長を表すものとした[3]。当時イーサネット環境で混用されていたフレーム種類によっては、両方の解釈が同時に有効であり、曖昧さが生じる可能性があった。
Ethernet II規格と初期IEEE 802.3規格を同じイーサネット環境内で混在できるように、統一規格としてIEEE 802.3x-1997ではEtherType値を1536 (=0x0600
)以上とする仕様が導入された。この値は、802.3のフレームのデータフィールドの最大長(MTU)が1500バイトであることから選ばれた。 結果として、このフィールドが1500以下であればイーサネットフレームのペイロード長を表し、1536以上であればEtherTypeを表す。1501から1535までの値の解釈は未定義である[4]。
フレームの終わりは、キャリアの損失や物理層の特殊シンボル・シーケンスによって判別できる[5]ため、イーサネットフレームにおいてペイロード長を明示する必要は必ずしもない。ただし、イーサネットフレームの最小ペイロードは46バイトなので、EtherTypeを使うフレームで受信側がそのデータ長を判断する必要があれば、ペイロード内に別途データ長を含める必要がある。
ジャンボフレームはIEEE 802.3の規格外のフレームであり、通常9000バイト程度のペイロード長を持つ。この値はEtherTypeとして扱う範囲のものであり、そのようなフレームのペイロード長を示すことはできない。
ジャンボフレームのフレーム長を示す方法として、2000年にEtherTypeの特殊値0x8870
を用いる方法が提案された[6]が、この仕様提案は標準化に際して棄却されている。これはIS-ISでの大きいパケットの用途のためであり、シスコシステムズ製ルータでもIS-ISのIIH Helloパケットのパディング用途で実装された[7]。棄却理由については、当時のIEEE 802.3議長であるGeoff Thompsonが802.3の公的な立場と棄却に至った背景を提案者に概説しており、これに提案者も議長に回答したが、その後の802.3からの回答は記録されていない[8]。
IEEE 802.1QによるVLANタグ(Qタグ)では、EtherType値として0x8100
を使用する[9]。このようなEtherTypeはTPID (Tag Protocol Identifier)と呼び、タグ付きフレームであることを表す。その後にVLAN情報を示す2バイトのTCP (Tag Control Information)が続き、さらにその後にカプセル化されたパケットのプロトコルを示す本来のEtherTypeが続く。
IEEE 802.1adで規定された二重タグ (Q-in-Qタグ)ではこのタグ付けを拡張し、さらに入れ子にしたEtherTypeとTCIの組が挿入される。
IEEE 802.2で規定されたLLCでは、LLCヘッダと組み合わせてSNAPヘッダを使うことがあり、この中でプロトコルIDとしてEtherTypeを使う[10]。イーサネット以外のIEEE 802規格や、FDDIなどのネットワーク規格で用いる。なお、イーサネットでは現在LLCヘッダはほとんど使われずEthernet II書式が使われている。
EtherTypeは、IANAによって割り当てられる[11]。IANAでは IEEE Registration Authority などの複数の参照先をもとにした一覧を作成している[12]。
以下に主なプロトコルのEtherType値を示す。これは全てのEtherType値を網羅したものではない。
EtherType | プロトコル |
---|---|
0x0800 |
IPv4 |
0x0806 |
ARP |
0x0842 |
Wake-on-LAN[13] |
0x22F3 |
TRILL |
0x22EA |
Stream Reservation Protocol |
0x6003 |
DECnet フェーズIV |
0x8035 |
RARP |
0x809B |
AppleTalk (Ethertalk) |
0x80F3 |
AppleTalk 用 ARP (AARP) |
0x8100 |
タグVLAN (IEEE 802.1Q) / Shortest Path Bridging (NNI互換用[14], IEEE 802.1aq) |
0x8137 |
IPX |
0x8204 |
QNX Qnet |
0x86DD |
IPv6 |
0x8808 |
MAC制御フレーム (PAUSEフレームなど) |
0x8809 |
スロープロトコル (リンクアグリゲーションなど) |
0x8819 |
CobraNet |
0x8847 |
MPLSユニキャスト |
0x8848 |
MPLSマルチキャスト |
0x8863 |
PPPoE Discovery Stage |
0x8864 |
PPPoE Session Stage |
0x886D |
Intel 拡張機能[15] |
0x8870 |
ジャンボフレーム(draft-ietf-isis-ext-eth-01として提案されたが廃止) |
0x887B |
HomePlug 1.0 MME |
0x888E |
EAPoL (EAP over LAN, IEEE 802.1X) |
0x8892 |
Profinet |
0x889A |
HyperSCSI (SCSI over Ethernet) |
0x88A2 |
ATA over Ethernet |
0x88A4 |
EtherCAT |
0x88A8 |
Q-in-Q VLAN (IEEE 802.1ad) / Shortest Path Bridging (IEEE 802.1aq)[14] |
0x88B8 |
GOOSE (Generic Object Oriented Substation event) |
0x88B9 |
GSE (Generic Substation Events) Management Services |
0x88BA |
SV (Sampled Value Transmission, IEC 61850) |
0x88CC |
LLDP (IEEE 802.1AB) |
0x88CD |
SERCOS III |
0x88DC |
WAVE Short Message Protocol (WSMP, IEEE 802.11p) |
0x88E3 |
Media Redundancy Protocol (IEC 62439-2) |
0x88E5 |
MACsec (IEEE 802.1AE) |
0x88E7 |
Provider Backbone Bridges (PBB, IEEE 802.1ah) |
0x88F7 |
PTP over Ethernet (IEEE 1588) |
0x88F8 |
NC-SI |
0x88FB |
Parallel Redundancy Protocol (PRP, IEC 62439-3) |
0x8902 |
Connectivity Fault Management (CFM), Ethernet OAM (IEEE 802.1ag, ITU-T Y.1731) |
0x8906 |
FCoE |
0x8914 |
FCoE 初期化プロトコル (FIP) |
0x8915 |
RDMA over Converged Ethernet (RoCE) |
0x891D |
TTEthernet (TTE) 制御フレーム |
0x892F |
High-availability Seamless Redundancy (HSR, IEC 62439-3) |
0x9000 |
DIX仕様の試験用フレーム (Ethernet Configuration Testing Protocol)[16] |
0x9100 |
Q-in-Q VLAN (非標準の実装) |