自動交渉とイーサネットの物理層(PCS/PMA)
片側だけ半二重に落ちる「デュプレックス不一致」がなぜ起きるかが腑に落ちる。オートネゴシエーションのコードワード交換から、64b/66b符号化・PCS/PMA層・SerDesまで、リンクが確立する物理層の内側を一気に押さえられる。
- 1.オートネゴシエーションはリンクパルス列(FLP)でリンクコードワードを交換し、両端が広告した能力の論理積から最高速度・全二重を自動選択する。固定設定とオート設定が混在するとデュプレックス不一致が起きる。
- 2.10G以降のPCSは64b/66b符号化を使い、64ビットのデータに2ビットの同期ヘッダを付けてビット境界を保ちつつ符号化オーバーヘッドを約3%まで圧縮する。8b/10bの25%に比べ高効率。
- 3.PCSは符号化・スクランブル・レーン分配を担い、PMAはシリアライズ/デシリアライズ(SerDes)とクロック復元を担う。SerDesが並列データを高速シリアル信号に変換し光・銅の物理媒体へ送り出す。
リンクは「自動で速度が決まる」ところから始まる
ケーブルを挿すだけで 1G なのか 10G なのか、全二重か半二重かが自動で決まる——この裏で動くのが オートネゴシエーション(auto-negotiation) です。さらにビット列が光や銅の上を流れる前段では、PCS(Physical Coding Sublayer) と PMA(Physical Medium Attachment) が符号化とシリアル化を担います。フレームより下、つまり物理層(PHY)の内部動作を押さえると、デュプレックス不一致やリンクアップ失敗の切り分けが原理から理解できます。フレーム構造とスイッチングの全体像は /network/ethernet-switching-internals/ を、層構造の位置づけは /network/osi/ を参照してください。
オートネゴシエーション:能力を広告して論理積を取る
オートネゴシエーションは IEEE 802.3 Clause 28(ツイストペア)で規定される、両端が自分の対応能力を広告し合い、共通の最高性能を選ぶ 仕組みです。鍵となるのが リンクコードワード(Link Code Word, LCW) の交換です。
リンクが無通信のとき、10BASE-T は約 16ms ごとに NLP(Normal Link Pulse) という単発パルスを送ってリンク生存を確認していました。オートネゴシエーションはこれを拡張し、FLP(Fast Link Pulse)バースト を使います。1つの FLP バーストは最大 33 個のパルス位置を持ち、奇数位置(17個)はクロックパルス、その間の偶数位置(16個)がデータビットで、ここに 16 ビットのリンクコードワードを載せます。
| LCW のフィールド | 意味 |
|---|---|
| Selector Field(5ビット) | 規格種別(IEEE 802.3 か 802.9 か)を示す |
| Technology Ability(8ビット) | 10/100/1000・全二重/半二重・ポーズ能力を広告するビット群 |
| Remote Fault(1ビット) | 相手側で障害を検出したことを通知 |
| Acknowledge(1ビット) | 相手のコードワードを正しく受信したことの確認 |
| Next Page(1ビット) | さらに追加情報を送るかどうか(NextPage機構) |
両端は受け取った相手の Technology Ability と自分の能力の 論理積(共通に対応するモード集合) を取り、あらかじめ決められた 優先順位 に従って最高のモードを選びます。優先順位は概ね「速度が高い順」かつ「同速なら全二重 > 半二重」で、たとえば 1000BASE-T 全二重 > 100BASE-TX 全二重 > 100BASE-TX 半二重 > 10BASE-T 全二重 > 10BASE-T 半二重 の序列です。両端が独立に同じ表を引くため、必ず同じ結論に収束します。
1000BASE-T は速度・デュプレックスに加え、マスター/スレーブ(どちらがクロック源になるか)を決める必要があります。これは NextPage 機構で追加交換され、決まらないとリンクが上がりません。10G 以上の銅(10GBASE-T)でも Clause 28 ベースの自動交渉が使われ、さらにダウンシフト(ケーブル品質に応じた減速)も行います。
デュプレックス不一致:片側だけ手動だと壊れる
オートネゴシエーションの最も実務的な落とし穴が デュプレックス不一致(duplex mismatch) です。これは「片側がオート、もう片側が全二重固定」のときに起きます。
| ローカル設定 | リモート設定 | 結果 |
|---|---|---|
| オート | オート | 正常に全二重で合意 |
| 全二重固定 | 全二重固定 | 両側全二重(ただし非推奨:障害時の縮退ができない) |
| オート | 全二重固定 | 不一致:オート側が半二重に落ちる |
| 半二重固定 | 半二重固定 | 両側半二重(低速だが整合はする) |
なぜ「オート対全二重固定」が危険か。固定側は FLP に Acknowledge を返さない(自分は交渉に参加しない)ため、オート側は相手の能力を受け取れません。能力不明のとき、IEEE 802.3 はオート側に パラレル検出(parallel detection) で半二重へフォールバックするよう定めています。結果、固定側=全二重、オート側=半二重 という非対称が生まれます。
全二重側は衝突を想定せずいつでも送信し、半二重側は CSMA/CD で衝突検出・バックオフを行います。半二重側から見ると全二重側の送信が「衝突」「レイトコリジョン」「FCSエラー」として観測され、フレームが断続的に破棄されます。リンクはアップしたまま小さいパケットは通るため、「pingは通るのに大容量転送だけ極端に遅い」という分かりにくい症状になります。show interface のレイトコリジョン/FCSエラー増加が典型的な手がかりです。切り分け手順は /network/network-troubleshooting/ を参照してください。
PCS と PMA:フレームを「線に乗る信号」に変える
速度とデュプレックスが決まったら、上位から降りてきたビット列を実際に媒体へ送り出します。物理層は内部的に複数のサブレイヤに分かれており、上から PCS → PMA → PMD の順に並びます。
| サブレイヤ | 主な役割 |
|---|---|
| PCS(Physical Coding Sublayer) | ブロック符号化・スクランブル・複数レーンへの分配/集約・ブロック同期 |
| PMA(Physical Medium Attachment) | シリアライズ/デシリアライズ(SerDes)・クロック復元・レーン間スキュー補正 |
| PMD(Physical Medium Dependent) | 電気/光信号の送受信そのもの(ドライバ・受光素子・トランシーバ) |
PCS の中心仕事が ブロック符号化 です。生のデータをそのまま流すと、0 か 1 が長く続いたとき受信側がビット境界を見失います(クロック復元はビットの遷移を頼りにするため)。そこで一定長ごとに符号化し、十分な遷移とDC平衡 を保証します。
64b/66b 符号化:3%のオーバーヘッドで同期を保つ
10ギガビット以降の主役が 64b/66b 符号化 です。名前の通り、64ビットのペイロードに2ビットの同期ヘッダを付けて 66ビットのブロック にします。
[ 2ビット同期ヘッダ ][ 64ビットのデータ/制御ペイロード ]
同期ヘッダ "01" → 64ビットすべてがデータ
同期ヘッダ "10" → 制御情報を含むブロック(タイプフィールドで識別)
("00" と "11" は出現しない=必ず遷移が起き、ブロック境界の検出に使える)
同期ヘッダは必ず 01 か 10 なので ブロックごとに最低1回のビット遷移 が保証され、受信側はこの2ビットを目印にブロック境界を検出します。データ本体は スクランブラ(自己同期スクランブラ、生成多項式 x^58 + x^39 + 1)で攪拌され、連続する同一ビットや偏りを統計的に解消します。スクランブルは符号語を増やさないので、オーバーヘッドは同期ヘッダ分だけ、すなわち 2 / 64 = 約3.1% に収まります。
これに対し、1G(1000BASE-X)や初期の光リンクで使われた 8b/10b 符号化 は、8ビットを10ビットに対応づける固定テーブル方式でした。各符号語が遷移とDC平衡を満たすよう選んであり実装は単純ですが、オーバーヘッドは 2 / 8 = 25% に達します。10G で 8b/10b を使うと回線速度が 12.5Gbps 必要になってしまうため、低オーバーヘッドの 64b/66b へ移行しました。
| 符号化方式 | オーバーヘッド | 境界保証の方法 | 主な世代 |
|---|---|---|---|
| 8b/10b | 25% | 符号語テーブルで遷移とDC平衡を保証 | 1G・初期FCなど |
| 64b/66b | 約3.1% | 2ビット同期ヘッダ+スクランブラ | 10G〜(多くの世代) |
| 256b/257b | 約0.4% | 64b/66bブロックを束ねヘッダを圧縮 | 100G以降の一部 |
10GBASE-R の回線ボーレートが 10.3125Gbps なのは、10Gbps × 66/64 = 10.3125Gbps だからです。符号化オーバーヘッドはそのまま「線上で余分に流すビット」になるため、効率の良い符号化ほど同じ物理速度でより多くのユーザーデータを運べます。これがフレーム単位の効率を論じる /network/mtu/ とは別の、ビット層での効率の話です。
SerDes:並列データを高速シリアル信号へ
PCS が作った符号化済みビット列を、実際に1本(または数本)の線で送るには 並列→直列変換 が要ります。これを担うのが PMA 内の SerDes(Serializer/Deserializer) です。
送信側の SerDes は、チップ内部で並列に扱っているデータ(例:32ビット幅 × 比較的低いクロック)を 1ビット幅の超高速シリアルストリーム にまとめ上げ、PMD のドライバへ渡します。受信側の SerDes は逆に、流れてくるシリアル信号から クロックをデータ自身から復元(CDR: Clock and Data Recovery) し、ビットを取り出して並列に戻します。CDR がビット遷移を手がかりにするため、前段の符号化・スクランブルによる遷移保証が不可欠になります。
送信: [並列データ32b] → エンコード/スクランブル(PCS) → SerDes直列化(PMA)
→ ドライバ(PMD) → 光/銅の媒体
受信: 媒体 → 受光/受信(PMD) → SerDes:CDRでクロック復元・直列受信(PMA)
→ ブロック同期/デスクランブル/デコード(PCS) → [並列データ32b]
高速化は SerDes 1レーンあたりの速度向上と レーン多重 の両輪で進みます。100G は「25Gbps × 4レーン」や「50Gbps × 2レーン」、400G は「100Gbps × 4レーン」のように、PCS が論理ストリームを物理レーンに 分配(distribution) し、PMA が各レーンを SerDes でシリアル化します。複数レーンは到着時刻がずれるため、PCS は各レーンに アライメントマーカ を挿入し、受信側でレーン間スキューを吸収して並べ直します。
50Gbps 超のレーンでは、従来の2値(NRZ:0/1)に代わり PAM4 が使われます。1シンボルに4段階の電圧で2ビットを表現するため、同じシンボルレートで2倍のビットを運べます。ただし電圧マージンが狭くなりノイズに弱いため、前方誤り訂正(FEC)と組み合わせて使うのが前提です。FEC は PCS のさらに内側(または隣接)の処理として組み込まれます。
「オートネゴシエーションは何を交換するか」→ FLPバーストに載せたリンクコードワード(能力ビット群)。「合意の仕組みは」→ 両端の能力の論理積を取り、共通の優先表で最高モードを選ぶ。「デュプレックス不一致はなぜ起きるか」→ 片側固定だと相手が能力を受け取れず、パラレル検出で半二重に落ちるため。「64b/66bのオーバーヘッドは」→ 約3.1%(8b/10bの25%に対し)。「PCSとPMAの役割分担は」→ PCSが符号化/スクランブル/レーン分配、PMAがSerDes/クロック復元。この5点を結べれば上級。
まとめ
イーサネットのリンクは、まずオートネゴシエーションがFLPバースト上のリンクコードワードを交換し、両端の能力の論理積から速度と全二重を自動選択するところから始まります。片側だけ固定にすると相手は能力を受け取れず半二重へフォールバックし、「動くのに遅い」デュプレックス不一致になります。速度確定後はPCSがデータを64b/66bで符号化・スクランブルして同期を保ち、PMAのSerDesが並列データを高速シリアル信号に変換し、CDRでクロックを復元します。符号化効率(25% → 約3%)とレーン多重・PAM4が高速化を支えている——フレームより下のこの物理層を押さえると、リンクが上がる/上がらない、速い/遅いの理由が原理から読み解けます。
ネットワーク Article
自動交渉とイーサネットの物理層(PCS/PMA)を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
イーサネット
比較で見る軸
難易度: advanced / カテゴリ: ネットワーク / タグ数: 6
導入後に効く点
10G以降のPCSは64b/66b符号化を使い、64ビットのデータに2ビットの同期ヘッダを付けてビット境界を保ちつつ符号化オーバーヘッドを約3%まで圧縮する。8b/10bの25%に比べ高効率。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- ネットワーク
- タグ数
- 6
判断チェックリスト
- 自社の用途が「イーサネット / オートネゴシエーション」に近いか確認する。
- 強みである「オートネゴシエーションはリンクパルス列(FLP)でリンクコードワードを交換し、両端が広告した能力の論理積から最高速度・全二重を自動選択する。固定設定とオート設定が混在するとデュプレックス不一致が起きる。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。