イーサネットフレーム

出典: フリー百科事典『ウィキペディア(Wikipedia)』

出典: フリー百科事典『ウィキペディア(Wikipedia)』

コンピュータネットワークにおいて、イーサネットフレーム英語: Ethernet frame)とは、イーサネットにおけるフレームであり、データリンク層プロトコルデータユニットである。イーサネットフレームは、基礎となるイーサネット物理層英語版の転送機構を使用して転送される。つまり、イーサネットリンク上のパケットは、ペイロードとしてイーサネットフレームを転送する[1]

イーサネットフレームの前には、プリアンブルと開始フレーム識別子(SFD: start frame delimiter)が続く。これらは物理層のイーサネットパケットの一部である。各イーサネットフレームはイーサネットヘッダで始まる。イーサネットヘッダの最初の2つのフィールドは宛先と送信元のMACアドレスである。フレームの中央部はペイロードデータである。ペイロードデータには、フレームで伝送される他のプロトコル(Internet Protocolなど)の任意のヘッダを含む。フレームは、フレームチェックシーケンス(FCS)で終わる。これは、データの転送中の破損を検出するために使用される32ビットの巡回冗長検査(CRC)である。

構造[編集]

伝送路上のデータパケットとそのペイロードとしてのフレームは、バイナリデータで構成されている。イーサネットは最上位オクテットを先頭にしてデータを送信する。ただし、各オクテット内では、最下位ビットが最初に送信される[注釈 1]

イーサネットフレームの内部構造は、IEEE 802.3に規定されている[1]。以下の表は、MTUが1500オクテットまでのペイロードサイズについて、送信されたときのイーサネットパケットと内部のフレームを示している[注釈 2]ギガビットイーサネットなどの高速イーサネットの実装では、ジャンボフレーム英語版と呼ばれるより大きなフレームに対応している。

802.3イーサネットのパケットとフレームの構造
レイヤ プリアンブル SFD 送信先MAC 送信元MAC 802.1Qタグ(オプション) EtherType (Ethernet II) /長さ (IEEE 802.3) ペイロード フレームチェックシーケンス(32ビットCRC パケット間隔(IPG)
octets 1 octet 6 octets 6 octets (4 octets) 2 octets 46‑1500 octets 4 octets 12 octets
L2
イーサネットフレーム
← 64–1522 octets →
L1
イーサネットパケット & IPG
← 72–1530 octets → ← 12 octets →

オプションの802.1Qタグは、フレーム内の追加スペースを消費する。このオプションのフィールドサイズは上記の表の括弧内に示されている。IEEE 802.1ad英語版(Q-in-Q)では、1つのフレーム内に複数のタグを含めることができる。上記の表にはこのオプションは示されていない。

イーサネットパケット(物理層)[編集]

プリアンブルと開始フレーム識別子[編集]

イーサネットパケット内のイーサネットフレーム。SFDはパケットのプリアンブルの終わりとフレームの始まりを示す[3]

イーサネットパケットは、7オクテットのプリアンブルと1オクテットの開始フレーム識別子(SFD: start frame delimiter)で始まる[注釈 3]。プリアンブルは、1と0のビットが交互に現れる56ビット(7バイト)のパターンで構成されているため、ネットワーク上のデバイスは受信クロックを簡単に同期させて、ビットレベルの同期をとることができる。その後に続くSFDで、バイトレベルの同期を提供し、新しい着信フレームをマークする。大きなシンボルの代わりにシリアルビットを送信するイーサネットの変種では、プリアンブルの(コード化されていない)伝送路上のビットパターンは、フレームのSFD部分と合わせて10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101011となり[3]:sections 4.2.5 and 3.2.2、ビットは左から右へ順番に送信される[3]:sections 4.2.5

SFDは8ビット(1バイト)の値で、イーサネットパケットの最初のフィールドであるプリアンブルの終わりと、イーサネットフレームの始まりを示す。SFDはプリアンブルのビットパターンを崩し、実際のフレームの開始を知らせるように設計されている[3]:section 4.2.5。SFDの直後に宛先MACアドレスが続く。宛先MACアドレスは、イーサネットフレームの最初のフィールドである。SFDは二進数シーケンス10101011(イーサネットLSBの最初のビット順序で0xD5、10進213)である[3]:sections 3.2.2, 3.3, 4.2.6

イーサネットMACを物理媒体に接続するには、物理層トランシーバ回路(PHY)が必要である。PHYとMACとの間の接続は物理媒体とは無関係であり、媒体独立インターフェース(MII、GMII、RGMII、SGMII、XGMII)のバスを使用する。ファストイーサネットトランシーバチップはMIIバスを使用する。これは4ビット(1ニブル)幅のバスであるため、プリアンブルは14個の0x5として表され、SFDは(ニブルとして)0x5 0xDとなる。ギガビットイーサネットトランシーバチップは8ビット幅のインターフェイスであるGMIIバスを使用するので、プリアンブルとSFDは0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xD5(バイト単位)になる。

フレーム(データリンク層)[編集]

ヘッダ[編集]

ヘッダには、宛先と送信元のMACアドレス(それぞれ6オクテット)、EtherTypeフィールド、およびオプションでIEEE 802.1QタグまたはIEEE 802.1ad英語版タグがある。

EtherTypeフィールドの長さは2オクテットであり、2つの異なる目的のために使われる。この値が1500以下の場合は、オクテット単位のでペイロードのサイズを意味し、1536以上の場合は、フレームのペイロードにカプセル化されているプロトコルを示すEtherTypeとして使用されることを示す。EtherTypeとして使用される場合、フレームの長さはパケット間隔と有効なフレームチェックシーケンス(FCS)の位置によって決まる。

IEEE 802.1Qタグ、IEEE 802.1adタグ(オプション)は4オクテットのフィールドで、仮想LANのメンバーシップとIEEE 802.1pプライオリティを示す。タグの最初の2オクテットはタグプロトコル識別子(TPID: Tag Protocol IDentifier)と呼ばれ、フレームが802.1Qまたは802.1adタグ付きであることを示す。802.1Qの場合のTPIDは0x8100、802.1adの場合は0x88a8である。

ペイロード[編集]

最小ペイロードサイズは、802.1Qタグが存在する場合は42オクテット、存在しない場合は46オクテットである[注釈 4]。実際のペイロードが最小ペイロードよりも小さい場合は、最小ペイロードサイズになるまでパディングバイトが追加される[注釈 5]。最大ペイロードサイズは1500オクテットである。非標準のジャンボフレーム英語版では、最大ペイロードサイズを大きくすることができる。

フレームチェックシーケンス[編集]

フレームチェックシーケンス(FCS)は、受信側でフレーム全体内の破損データの検出を可能にする4オクテットの巡回冗長検査(CRC)である。FCSの値は、保護されたMACフレームフィールド(送信元アドレスと宛先アドレス、長さ/タイプフィールド、MACクライアントデータ、パディング。つまり、FCS以外の全てのフィールド)の関数として計算される[3]:section 3.2.9

CRCコードを含む受信フレームデータに対してCRCアルゴリズムを実行すると、CRCは多項式で除算されたデータの剰余であるため、エラーのない受信データに対しては常にゼロになる。ただし、この手法ではエラーの検出に失敗する可能性があり、末尾にゼロがあるデータも同じゼロ残差になる。これを回避するために、ペイロードデータの最後に付加される前に送信側によってFCSは補数が取られる(ビットごとに反転される)[3]:section 3.2.9。この方法では、データが正しく受信されたとき、アルゴリズムの結果は常に0xC704DD7B(マジックナンバーまたはCRC32剰余と呼ばれる)になる。これにより、FCSフィールドが実際に開始される場所を知らなくても、フレームを受信して​​FCSを検証することができる[5][6]

フレームの終わり(物理層)[編集]

フレームの終わり(EOF: end of a frame)は通常、物理層でのデータストリームの終わりのシンボル、またはキャリア信号の消失によって示される。例えば10BASE-Tでは、受信側はキャリアの消失によって送信されたフレームの終わりを検出する。後の仕様の物理層では、特にキャリアがフレーム間で継続的に送信される場合に、曖昧さを避けるために明示的なend of dataまたはend of streamのシンボルやシーケンスを使用する。例えば8b/10bによるギガビットイーサネットでは、フレームが送信される前後に特別なシンボルを送信する[7][8]

パケット間隔(物理層)[編集]

パケット間隔(IPG: interpacket gap)は、パケット間のアイドル時間である。パケットが送信された後、送信側は次のパケットを送信する前に最低96ビット(12オクテット)のアイドル状態を維持する必要がある。

種類[編集]

イーサネットフレームの種類
フレームの種類 Ethertypeまたは長さ ペイロード開始の2バイト
Ethernet II ≥ 1536 Any
Novell raw IEEE 802.3 ≤ 1500 0xFFFF
IEEE 802.2 LLC ≤ 1500 Other
IEEE 802.2 SNAP ≤ 1500 0xAAAA

イーサネットフレームにはいくつかの種類がある。

異なるフレームタイプは異なるフォーマットとMTU値を持つが、同じ物理媒体上に共存できる。右の表のようにフレームの種類を区別することができる。

さらに、4つのイーサネットフレームの種類全てに、オプションでIEEE 802.1Qタグを含めることができ、それが属するVLANとその優先順位(Quality of Service)を識別できる。このカプセル化はIEEE 802.3ac英語版で定義されており、最大フレームを4オクテット増加させる。

IEEE 802.1Qタグは、送信元アドレスとEtherType/Lengthフィールドの間に配置される。タグの最初の2オクテットは、タグプロトコル識別子(TPID: Tag Protocol IDentifier)0x8100である。これはタグがない場合のEtherType/Lengthフィールドと同じ場所にあるため、EtherType値が0x8100であることはフレームがタグ付けされていることを意味し、実際のEtherType/Lengthはタグの後ろに配置される。タグの後ろの2オクテットはタグ制御情報(TCI: Tag Control Information)(IEEE 802.1pの優先度(Quality of Service)とVLAN ID)である。タグの後には、上記の種類のいずれかによる、フレームの残りの部分が続く。

Ethernet II[編集]

Ethernet IIフレーム(設計の主要な参加者であるDECIntelXeroxからDIXイーサネットともいう[9])は、宛先・送信元MACアドレスの前に、2オクテットのEtherTypeフィールドを定義する。EtherTypeは、フレームデータによってカプセル化された上位層プロトコルを識別するのに使用する。例えば、EtherType値0x0800は、フレームにIPv4データグラムが含まれていることを示す。同様に、0x0806のEtherTypeはARPフレーム、0x86DDはIPv6フレームを示し、0x8100は前述の通りIEEE 802.1Qタグの存在を示す。

最も一般的なイーサネットフレームのフォーマットであるEthernet II

この業界標準規格が正式なIEEE標準化プロセスを経るにつれて、EtherTypeフィールドは新しい802.3標準規格のデータ長フィールドに変更された[注釈 7]。受信者はまだフレームを解釈する方法を知る必要があるので、規格では長さに続いて、タイプを指定するためにIEEE 802.2ヘッダが要求された。何年も後に、802.3x-1997規格、および802.3規格のそれ以降のバージョンでは、両方の種類のフレーミングが正式に承認された。Ethernet IIフレームは、その単純さと低いオーバーヘッドにより、イーサネットLANでは最も一般的である。

Ethernet IIのフレーミングを使用するフレームとオリジナルの802.3フレーミングを使用するフレームを同じイーサネットセグメントで使用できるようにするには、EtherType値を1536(0x0600)以上にする必要がある。802.3フレームのペイロードフィールドの最大長が1500オクテット(0x05DC)であるため、その値が選択された。従って、フィールドの値が1536以上の場合、フレームはEthernet IIフレームでなければならず、そのフィールドはEtherTypeを表す[10]。それが1500以下の場合、それはIEEE 802.3フレームでなければならず、そのフィールドは長さを表す。1500と1536の間の値は未定義である[11]。この規約により、ソフトウェアはフレームがEthernet IIフレームかIEEE 802.3フレームかを判断することができ、同じ物理媒体上で両方の規格を共存させることができる。

ノベル raw IEEE 802.3[編集]

ノベルのraw 802.3フレームフォーマットは、初期のIEEE 802.3の開発作業に基づくものである。ノベルはこれを出発点として、イーサネットを介した独自のIPX英語版ネットワークプロトコルの初の実装を作成した。raw 802.3フレームフォーマットでは、LLCヘッダを使用せず、長さフィールドのすぐ後にIPXパケットが開始する。これはIEEE 802.3規格には準拠していないが、IPXでは常に最初の2オクテットを0xFFとするので(IEEE 802.2 LLCでそのパターンになることは理論的にはあり得るが、極めて可能性が低い)、他のイーサネット実装と同じ物理媒体上で共存できる。ただし、DECnetの初期のいくつかの形式は、この仕様によって混乱している。

ノベルのNetWareは、1990年代半ばまでデフォルトでこのフレームタイプを使用しており、NetWareが広く普及しIPがまだ普及していなかった頃には、世界のイーサネットトラフィックのほとんどはIPXを伝送するraw 802.3フレームフォーマットを介していた。NetWare 4.10以降、IPXを使用するときのNetWareのデフォルトはLLCによるIEEE 802.2(NetWareフレームタイプEthernet_802.2)である[12]

IEEE 802.2 LLC[編集]

OSI参照モデル用に設計されたプロトコルの中には、コネクション型とコネクションレス型の両方のネットワークサービスを提供するIEEE 802.2 LLCカプセル化の上で直接動作するものもある。

IEEE 802.2 LLCのカプセル化は、IPを介したNetWareへの移行がまだ完了していない大企業のNetWare環境を除いて、現在、一般的なネットワークでは広く使用されていない。過去には、多くの企業ネットワークで、IEEE 802.2を使用して、イーサネットとトークンリングFDDIネットワーク間のトランスペアレント変換ブリッジをサポートしていた。

IEEE 802.2 LLCのSAP/SNAPフレームに、IPv4トラフィックをカプセル化するためのインターネット標準がある[13]。FDDI、トークンリング、IEEE 802.11(EtherTypeを使用する5.9 GHz帯域を除く)[14]やその他のIEEE 802 LANで使用されているが、イーサネットではほとんど実装されていない。IPv6は、IEEE 802.2 LLC SAP/SNAPを使用してイーサネット経由で送信することもできるが、これもまたほとんど使用されていない。

IEEE 802.2 SNAP[編集]

802.2 LLCヘッダを調べることによって、その後にSNAPヘッダが続くかどうかを判断することが可能である。LLCヘッダには、OSIの用語で「サービスアクセスポイント」(SAPs: service access points)と呼ばれる2つの8ビットアドレスフィールドが含まれている。送信元と宛先の両方のSAPが値0xAAに設定されている場合、LLCヘッダの後にSNAPヘッダが続く。SNAPヘッダを使用すると、EtherType値を全てのIEEE 802プロトコルで使用でき、プライベートプロトコルIDスペースにも対応できる。

IEEE 802.3x-1997では、MACアドレスの後の16ビットフィールドを長さフィールドまたはタイプフィールドとして使用することを明示的に許可するようにIEEEイーサネット規格が変更された。

Mac OSは、イーサネット上のAppleTalk v2プロトコルスイート(EtherTalk)にIEEE 802.2 LLC+SNAPカプセル化を使用する。

最大スループット[編集]

イーサネットのプロトコルオーバーヘッドをパーセンテージ(IPGを含むパケットサイズ)として次の式で計算できる。

イーサネットのプロトコル効率は次の式で計算できる。

最大効率は、最大許容ペイロードサイズで達成され、その値は以下のように計算される。

タグなしフレームの場合、パケットサイズは最大ペイロード1500オクテット+プリアンブル8オクテット+ヘッダ14オクテット+トレーラ4オクテット+最小パケット間隔12オクテットに=1538オクテットである。最大効率は以下のように計算される。

802.1Q VLANタグが使用されているとき、スループットは効率から計算できる。

物理層の正味のビットレート(ワイヤビットレート)はイーサネットの物理層規格に依存し、10 Mbit/s、100 Mbit/s、1 Gbit/s、10 Gbit/sのいずれかである。その結果、100BASE-TXイーサネットの最大スループットは、802.1Qなしで97.53 Mbit/s、802.1Qありで97.28 Mbit/sになる。

チャネル利用率(Channel utilization)は、プロトコル効率とよく混同される概念である。これは、ペイロードまたはオーバーヘッドのいずれかで、送信されるデータの性質を無視して、チャネルの使用のみを考慮する。物理層は、リンクチャネルや機器はデータフレームと制御フレームの違いを区別できない。チャネル利用率は次のように計算できる。

合計時間(total time)は、チャネルに沿ったラウンドトリップ時間、ホストでの処理時間、およびデータと確認応答の送信時間を考慮したものである。データの送信に費やされた時間(time spent transmitting data)には、データと確認応答が含まれる。

ラントフレーム[編集]

ラントフレーム(runt frame)は、IEEE 802.3の最小長64オクテットより短いイーサネットフレームである。ラントフレームは一般に衝突によって引き起こされる。その他の考えられる原因として、ネットワークカードの誤動作、バッファアンダーランデュプレックスの不一致英語版、ソフトウェアの不具合がある[15]

脚注[編集]

[ヘルプ]

注釈[編集]

  1. ^ フレームチェックシーケンス(FCS)は異なるビット順序を使用する。[2]
  2. ^ プリアンブルとSFDの先頭のビットパターンは、左側に記載している方から送信されるビット列として記載している(最下位ビットからは送信されるオクテット値としてではない)。この表記は、IEEE 802.3規格で使用されているものと一致する。
  3. ^ プリアンブルと開始フレーム識別子は、LANアナライザでは表示されない。LANアナライザがデータを収集するOSIレイヤ2に渡される前に、これらのビットがOSIレイヤ1でネットワークカード(NIC)によって取り除かれるためである。プリアンブルと開始フレーム識別子をキャプチャして表示することができるレイヤ2キャプチャもあるが、それらは高価であり、主に物理的な接続性に関連する問題を検出するために使用される。
  4. ^ ペイロードの最小サイズは、イーサネットLANアーキテクチャの衝突検出に使用される512ビットのスロット時間によって決まる。
  5. ^ 802.1Qが存在する場合、42および46オクテットの最小値の両方が有効である[4]
  6. ^ イーサネットバージョン1は8ビットのMACアドレスを使用する初期のイーサネットプロトタイプに使われていたが、商用には使用されなかった。
  7. ^ オリジナルのイーサネットフレームでは、データ長は明示せず、それを囲むフレーミングで長さを定義する。

出典[編集]

  1. ^ a b 3.1.1 Packet format (PDF)”. IEEE Standard for Ethernet, 802.3-2015 – section one. p. 108 (2016年). 2018年4月12日閲覧。
  2. ^ 802.3-2012 – IEEE Standard for Ethernet (PDF)”. ieee.org. IEEE Standards Association (2012年12月28日). 2014年2月9日閲覧。 “Opcodes are transmitted high-order octet first. Within each octet, bits are transmitted least-significant bit first. [...] Each octet of the MAC frame, with the exception of the FCS, is transmitted least significant bit first.”
  3. ^ a b c d e f g 802.3-2012 – IEEE Standard for Ethernet (PDF)”. ieee.org. IEEE Standards Association (2012年12月28日). 2014年2月9日閲覧。
  4. ^ IEEE 802.1Q-2011, Annex G
  5. ^ [リンク切れ]Cyclic Redundancy Check (PDF)”. hackersdelight.org (2009年7月28日). 2015年6月2日閲覧。
  6. ^ Nanditha Jayarajan (2007年4月20日). “Configurable LocalLink CRC Reference Design (PDF)”. xilinx.com. p. 14. 2014年6月30日閲覧。
  7. ^ Charles E. Spurgeon (February 2000). Ethernet: The Definitive Guide. O'Reilly. pp. 41, 47. https://books.google.com/books?id=MRChaUQr0Q0C&printsec=frontcover&source=gbs_ge_summary_r&redir_esc=y#v=onepage&q&f=false 2014年6月30日閲覧。. 
  8. ^ 40.1.3.1 Physical Coding Sublayer (PCS) (PDF)”. IEEE Standard for Ethernet, 802.3-2012 – section three. p. 183 (2012年12月28日). 2014年7月6日閲覧。
  9. ^ Drew Heywood; Zubair Ahmad (2001). Drew Heywood's Windows 2000 Network Services. Sams. p. 53. ISBN 0-672-31741-9. 
  10. ^ LAN MAN Standards Committee of the IEEE Computer Society (20 March 1997). IEEE Std 802.3x-1997 and IEEE Std 802.3y-1997. The Institute of Electrical and Electronics Engineers, Inc.. pp. 28–31. 
  11. ^ IEEE Std 802.3-2005, 3.2.6
  12. ^ Don Provan (1993年9月17日). “Ethernet Framing”. comp.sys.novell. (ウェブリンク)  (HTML-formatted version Archived 18 April 2015 at the Wayback Machine.)  — a classic series of Usenet postings by Novell's Don Provan that have found their way into numerous FAQs and are widely considered the definitive answer to the Novell Frame Type usage.
  13. ^ RFC1042: A Standard for the Transmission of IP Datagrams over IEEE 802 Networks”. Network Working Group of the IETF (1988年2月). 2019年2月7日閲覧。
  14. ^ Computer Society, IEEE (2016). IEEE Std 802.11-2016: Part 11: Wireless LAN Medium Access Control IEEE (MAC) and Physical Layer (PHY) Specifications.. New York, NY: IEEE. pp. 249. 
  15. ^ Troubleshooting Ethernet”. Cisco Systems. 2016年8月13日閲覧。