オートネゴシエーション(英語: Auto-negotiation、A/N、オートネゴ)は、イーサネットにおけるケーブル接続時の自動設定機能。特にLANケーブルの接続において、通信速度を2つの機器間で互いに送り合って最適値を選択するものを指す。1000BASE-Tや10GBASE-Tなどの規格で必須となっている。

100Mbps以下の接続でオートネゴシエーションが有効な機器とそうでない機器を直接接続すると、設定によってはスループットが大幅に低下するなどのネットワーク障害の原因になるため、ネットワーク管理者は十分に注意する必要がある。詳細は#運用上の注意の節を参照のこと。

## 概要

具体例として、以下のような対応規格を持つ2台の機器のLANケーブル接続を考える。

- 機器A 対応規格: 10BASE-T 半二重、100BASE-TX 半二重
- 機器B 対応規格: 10BASE-T 全二重・半二重、100BASE-TX 全二重・半二重、1000BASE-T 全二重

この例では、オートネゴシエーション機能により、両者で共通のプロトコルのうち速度が最高となる「100BASE-TX 半二重」で自動的にリンクを確立し通信を開始する。

一般にLANケーブル接続ポートでは、複数の通信速度、異なる二重通信モード(半二重/全二重)、異なる規格をサポートすることが可能であり、オートネゴシエーションは主にそのような接続ポートを持つ機器で使われる。各機器は自身の対応機能(technology abilities)をお互いに通知し、両者が使用可能なものの中から最良の動作モードが選択される。低速度より高速度のもの、半二重よりも全二重の方が優先される。

オートネゴシエーション可能な機器とそうでない機器を接続することもできる。これは例えば、一方の機器がオートネゴシエーションに対応していなかったり、管理上オートネゴシエーションが無効に設定されていたりする場合が当てはまる。接続時には、オートネゴシエーション可能な機器による並列検出により、相手側に速度を合わせることができる。しかしこの組み合わせの場合、二重通信モードを自動で決定できないため、常に半二重であると仮定され、全二重通信が事実上できない。これは運用上問題となることがある(次節後述)。

オートネゴシエーションでは、通信速度と二重通信モード以外にも、フロー制御・マルチポート対応・マスター/スレーブ設定・EEEなどのパラメタなどがやりとりされる。

OSI参照モデルでは、オートネゴシエーションは物理層に属する。

## 運用上の注意

家庭用・業務用の多くのネットワーク機器がオートネゴシエーションに対応しており、デフォルトで有効化されている。さらに安価な機器ではそもそもオートネゴシエーションを解除して通信モードを手動で設定できないことが多い。そのため、オートネゴシエーションを意識せずに利用しているユーザは多い。しかし、オートネゴシエーションは、誤った使い方をしたり、不用意に解除したりすると、ネットワーク障害の原因になる。

以下のような2つの機器を直接接続する場合に問題となる。

- 機器A: オートネゴシエーション設定
- 機器B: 10BASE-Tまたは100BASE-TXの全二重モードで固定動作するもの

このとき、機器Aはオートネゴシエーションの仕様上、半二重として自動設定されるため、A-B間で二重通信モードが不一致となる。この状態でもネットワークは不安定ながら動作するため、pingによる疎通確認試験では問題を認知することができない。しかし、大量のパケット破棄が発生し、スループットが大幅に低下する。

一般に、100Mbps以下のLANケーブル通信では、両者でオートネゴシエーションの有効・無効を揃えておく必要がある。基本的には有効にすることが推奨されるが、古い機器や安価な機器などで10BASE-Tにしか対応しないような機器との接続はそもそもオートネゴシエーション機能に対応していないため、接続側のオートネゴシエーションを無効にしなければならない場合もある。

### 二重通信モードの不一致

2つの機器のうち、片方が全二重、片方が半二重で動作している場合、両者が同時にフレームを送信しようとすると、非常に低いスループットの接続となる。これは、全二重モードではデータを両方向に同時に送受信できるが、半二重モードでは一度に一方向にしか送信できないためである。その結果、全二重の機器で受信中にデータを送信する場合、半二重の機器は送信中のデータ受信を衝突(コリジョン)として検知し、送信中のフレームを再送信しようとする。一方で、全二重の機器では衝突を検出せず、相手側が衝突によって破損しているとして廃棄した場合でも、フレームを再送信しない。このようなフレームの再送・破損が頻発することでスループットの低下を招く。

一見ユーザからは片方向のみの通信に見える場合でもパケット損失が発生することがある。これはTCP通信など、送信側の送ったパケットを受信側が確認応答する環境である場合、実際のデータが一方向にのみ送信されている場合でも、逆方向に送信される確認応答パケットとの衝突が発生していることがありえるためである。

このような二重通信モードの不一致を見つける方法として、両機器の統計情報を用いることができる。全二重の機器では、受信フレームが衝突検出によって切り捨てられることはないため、半二重の機器が送信しようとして打ち切られたフレームからFCSエラーを報告できる。半二重の機器では、タイミングによってはレイト・コリジョン(64バイト以上送ったときに発生する衝突)を検出することがあり、これはCSMA/CDでハードエラーとして解釈されてフレームを再送信しない場合もある。半二重の機器によるレイト・コリジョンと全二重の機器によるFCSエラーの組み合わせは、このような問題のある接続の検出に利用できる。

## 規格

オートネゴシエーションは、IEEE 802.3の以下の節で規定されている。

- Clause 28: ツイストペア規格用 (100BASE-TX, 1000BASE-T, 2.5GBASE-T, 5GBASE-T, 10GBASE-T など)
- Clause 37: 光ファイバ規格用 (1000BASE-SX, 1000BASE-LX など)
- Clause 73: バックプレーン規格用 (1000BASE-KX, 10GBASE-KR, 25GBASE-KR/CR など)
- Clause 98: シングルペア規格用 (1000BASE-T1 など)

1995年に100メガビット・イーサネットとしてIEEE 802.3u規格が標準化されたときに、そのオプション機能として初めてオートネゴシエーションの仕様が規定された。この仕様は、ナショナル セミコンダクターによるNWayと呼ばれる特許技術が元になっており、一度ライセンス料を支払うだけで誰でもこのシステムを使えることを保証する文面が公開されている。他メーカはその特許の利用権を購入して実装した。

IEEE 802.3uの初版では仕様に不十分な点があったため、メーカの実装にばらつきがあり、異なるメーカの機器間ではオートネゴシエーションが失敗することがあった。初期仕様で議論の余地があった箇所は、1998年の802.3改版時に削除された。

1999年にギガビット・イーサネットとしてIEEE 802.3abが標準化され、この中で従来オプション機能だったオートネゴシエーションが1000BASE-Tでは必須であると規定された。「1000BASE-T全二重固定動作」の設定が用意されているネットワーク機器があるが、これは接続時のオートネゴシエーションで対応規格を1000BASE-T全二重のみとして通知する動作を指す。以降、後発の10GBASE-Tや2.5GBASE-Tなどもすべて必須と規定されている。

## 優先度

接続された2つの機器は、お互いに相手側機器の対応機能を受信すると、両者で共通対応しているもののうちから最良の規格を決定する。802.3の2018年版が規定しているツイストペア規格の優先順位は次の通りであり、機器が共通対応しているもののうちこの一覧の上位にある通信速度が適用される。

1. 40GBASE-T 全二重
2. 25GBASE-T 全二重
3. 10GBASE-T 全二重
4. 5GBASE-T 全二重
5. 2.5GBASE-T 全二重
6. 1000BASE-T 全二重
7. 1000BASE-T 半二重
8. 100BASE-T2 全二重
9. 100BASE-TX 全二重
10. 100BASE-T2 半二重
11. 100BASE-T4 半二重
12. 100BASE-TX 半二重
13. 10BASE-T 全二重
14. 10BASE-T 半二重

## データ構成

### 電気信号

オートネゴシエーションは10BASE-Tの接続確立の方式に基づいているため、初めに10BASE-Tの方式について概説する。10BASE-Tでは他の機器接続の存在を検出するために一定間隔でパルスを送信しており、機器がフレームのデータ送信していないときはこのパルスを送信する。10BASE-Tでは50〜150ミリ秒間このパルスもフレームも受信できないとリンクダウンを検出する。

オートネゴシエーションでは、同様のパルスを2ミリ秒以内に最大33個連続して送る。この連続パルスをFLP (fast link pulse)バーストと呼ぶ。

1回のFLPバーストでは全体で16ビットを表現しており、オートネゴシエーションの各種パラメタが含まれる。

FLPバーストは17個のクロックパルスとその間に挿入される最大16個のビットパルスから成る。クロックパルスは125(±14)マイクロ秒間隔で必ず送られ、その中間に(すなわちクロックパルスの62.5マイクロ秒後に)挿入されるビットパルスの有無で`1`/`0`を表現する。

FLPバーストの16ビットを「ページ」または「リンクコードワード」(LCW: link codeword)と呼ぶ。ビット0はFLPバーストの最初のビットパルスに対応し、ビット15は最後のビットパルスに対応する。

### ベースページ

FLPバーストは16ビットずつデータを送信する。接続時の最初の送信データはベースページ(base page)またはベースLCW (base link codeword)と呼び、以下のような内容を送る。

ベースページ(clause 28)の書式

| ビット | 名称 | 内容 |
| --- | --- | --- |
| 4-0 | セレクタ | 対応規格を示す。(値はビット4→ビット0の順)  `00001`: IEEE 802.3   `00010`: IEEE 802.9a (廃止)  `00011`: IEEE 802.5v (廃止)  `00100`: IEEE 1394   `00101`: INCITS |
| 5 | 対応機能 (technology ability) | 10BASE-T (半二重) 対応 |
| 6 | 10BASE-T 全二重 対応 |
| 7 | 100BASE-TX (半二重) 対応 |
| 8 | 100BASE-TX 全二重 対応 |
| 9 | 100BASE-T4 対応 |
| 10 | 全二重の対称PAUSE 対応 |
| 11 | 全二重の非対称PAUSE 対応 |
| 12 | 追加ページあり | ベースページの後に追加ページ(拡張版)を送信するときに使う。 |
| 13 | リモートフォルト | リンクダウンを検出している(パルスが受信できていない)ときに`1`を示す。 |
| 14 | 確認応答 (ACK) | 相手側からベースページを同じ内容で最低3回受信したときに`1`を示す。 |
| 15 | 追加ページあり | ベースページの後に追加ページを送信するときに使う。 |

ビット10にあたるPAUSE設定では、両者が`1`同士の場合にのみ双方向でPAUSEを送受する。また、両者でビット10・11の値が`0・1`と`1・1`の組み合わせとなった場合、前者がPAUSE送信のみ、後者が受信のみとなる。

ビット14にあたる確認応答は、相手のベースページを正しく受信したことを知らせるために使う。相手のベースページを同じ内容で最低3回受信したときに`1`を示し、以降はこのビットを`1`に保持したままベースページを6~8回送信する。

ビット12・15にあたる追加ページありビットは、次節の追加ページを送信しようとしているときに`1`に設定される。ベースページのこのビットが`1`になったものを両方の機器が受信した場合にのみ、以降の追加ページが送信される。

### 追加ページ

追加ページ(Next Pages)を使用すると、前節のパラメタ以外にさらに他のパラメタを通知することができる。例えば上記ベースページに含まれない1000BASE-Tやそれ以上の通信速度の場合にこのページが用いられる。

追加ページには以下の4種類がある。16ビット版を使うときはベースページのビット15を`1`に、48ビット拡張版を使うときはベースページのビット12を`1`にする。

- メッセージページ (message page): 16ビット
- 自由書式ページ (unformatted page): 16ビット
- メッセージページ拡張版 (extended message page): 48ビット
- 自由書式ページ拡張版 (extended unformatted page): 48ビット

これらはメッセージページ、自由書式ページの順で送付される。先行のメッセージページではデータ種別のみを通知し、後発の自由書式ページではデータ種別に応じてその内容やページ数が変化する。
いずれも以下のような形式でデータをやりとりする。

追加ページ(clause 28)の書式

| ビット | 名称 | 内容 |
| --- | --- | --- |
| 10-0 | データ種別/データ | メッセージページの場合: データ種別   (以下は主なもの、値はビット0をLSBとした11ビット値) `7`: 100BASE-T2 用途  `8`: 1000BASE-T 用途  `9`: 1Gbps以上用途 `10`: EEE 用途 |
| 自由書式ページの場合: データ (メッセージページで示された種別によって異なる) |
| 11 | トグル | 1ページごとに`0`と`1`を交互に切り替えて送る。抜け漏れ防止用。 |
| 12 | 確認応答 (ACK) | 相手側から追加ページを正しく受信したことを示す。 |
| 13 | ページ種別 | `0`: 自由書式ページ  `1`: メッセージページ |
| 14 | 確認応答2 (ACK2) | 相手から来た追加ページの内容に対応可能かを示す。 |
| 15 | 追加ページあり | このページの後に別のページを送信するときに使う。 |
| 47-16 | 自由書式 | (拡張版のみ) |

一例として、1000BASE-Tの場合は以下のように全部で4ページが用いられる。ベースページ、メッセージページを送ったあとに自由書式ページを2ページ分送付する方式が規定されている。

1000BASE-T オートネゴシエーションにおけるページ送付手順・書式

| ページ | ビット | 内容 |
| --- | --- | --- |
| 1: ベースページ | 4-0 | `1`: IEEE 802.3 対応 |
| 11-5 | (100BASE-TXや10BASE-Tなどの対応がある場合には対応値が入る) |
| 15 | `1`: 追加ページあり |
| 2: メッセージページ | 10-0 | `8`: 1000BASE-T 用途 |
| 13 | `1`: メッセージページ |
| 15 | `1`: 追加ページあり |
| 3: 自由書式ページ1 | 0 | マスタ/スレーブ固定設定 |
| 1 | `1`: マスタ, `0`: スレーブ (ビット0が`1`のときのみ有効) |
| 2 | 1000BASE-T マルチポート 対応 |
| 3 | 1000BASE-T 全二重 対応 |
| 4 | 1000BASE-T 半二重 対応 |
| 10-5 | (`0`固定) |
| 13 | `0`: 自由書式ページ |
| 15 | `1`: 追加ページあり |
| 4: 自由書式ページ2 | 10-0 | マスタ/スレーブ用擬似乱数値   (相手より大きい値ならマスタ、前ページのビット0が`0`のときのみ有効) |
| 13 | `0`: 自由書式ページ |
| 15 | `0`: 最終ページ |
|

1Gbpsを超える規格対応の例では、以下のように48ビット拡張版の追加ページを用いる。

1Gbps以上のオートネゴシエーションにおけるページ送付手順・書式

| ページ | ビット | 内容 |
| --- | --- | --- |
| 1: ベースページ | 4-0 | `1`: IEEE 802.3 対応 |
| 11-5 | (100BASE-TXや10BASE-Tなどの対応がある場合には対応値が入る) |
| 12 | `1`: 追加ページあり |
| 2: メッセージページ   拡張版 | 10-0 | `9`: 1Gbps以上用途 |
| 13 | `1`: メッセージページ |
| 15 | `1`: 追加ページあり |
| 3: 自由書式ページ   拡張版 |
| 10-0 | (`0`固定) |
| 13 | `0`: 自由書式ページ |
| 15 | `0`: 最終ページ |
| 26-16 | マスタ/スレーブ用擬似乱数値 (相手より大きい値ならマスタ、ビット27が`0`のときのみ有効) |
| 27 | マスタ/スレーブ固定設定 |
| 28 | `1`: マスタ, `0`: スレーブ (ビット27が`1`のときのみ有効) |
| 29 | マルチポート 対応 |
| 30 | 1000BASE-T 全二重 対応 |
| 31 | 1000BASE-T 半二重 対応 |
| 32 | 10GBASE-T 対応 |
| 33 | (`1`固定, スレーブによる受信クロックの送信利用) |
| 34 | ショートリーチ動作 |
| 35 | 10GBASE-T fast retrain 対応 |
| 36 | (`0`固定, 対向へのPMAトレーニングリセット要求) |
| 37 | (`0`固定) |
| 38 | 100BASE-TX EEE 対応 |
| 39 | 1000BASE-T EEE 対応 |
| 40 | 10GBASE-T EEE 対応 |
| 41 | 25GBASE-T 対応 |
| 42 | 40GBASE-T 対応 |
| 43 | 2.5GBASE-T 対応 |
| 44 | 5GBASE-T 対応 |
| 47-45 | (`0`固定) |
|

## 特許

オートネゴシエーションは、以下の特許により保護されている。

- アメリカ合衆国特許第 5,617,418号
- アメリカ合衆国特許第 5,687,174号
- E アメリカ合衆国特許第 RE39405 E号
- E アメリカ合衆国特許第 RE39116 E号
- 971,018 (filed 1992-11-02)
- 146,729 (filed 1993-11-01)
- 430,143 (filed 1995-04-26)
- 欧州特許出願 SN 93308568.0 (DE, FR, GB, IT, NL)
- 韓国特許 No. 286791
- 台湾特許 No. 098359
- 日本特許 No. 3705610
- 日本特許 4234. 特許出願 SN H5-274147
- 韓国特許出願 SN 22995/93
- 台湾特許出願 SN 83104531

## その他の伝送媒体

オートネゴシエーションはLANケーブル接続以外の規格にも転用されているものがある。

### 光ファイバ

1000BASE-Xの各種光ファイバ規格にオプションとして実装されており、8b/10bの特殊シンボルを用いて以下の16ビットのベースページをやりとりする。

1000BASE-X ベースページ(clause 37)の書式

| ビット | 内容 |
| --- | --- |
| 4-0 | (`0`固定) |
| 5 | 1000BASE-X 全二重 対応 |
| 6 | 1000BASE-X 半二重 対応 |
| 7 | 全二重の対称PAUSE 対応 |
| 8 | 全二重の非対称PAUSE 対応 |
| 11-9 | (`0`固定) |
| 13-12 | リモートフォルト  `00`: 正常, `10`: 送信停止中, `01`: 受信なし, `11`: オートネゴシエーション失敗 |
| 14 | ACK |
| 15 | 追加ページあり |

### バックプレーン・ダイレクトアタッチケーブル

156.25Mbps (6.4ナノ秒/bit)の差動マンチェスタ符号により、以下の48ビットのベースページをやりとりする。

ベースページ(clause 73)の書式

| ビット | 名称 | 内容 |
| --- | --- | --- |
| 4-0 (S4-S0) | セレクタ | (ツイストペア規格に同じ) |
| 9-5 (E4-E0) | 受信擬似乱数 (Echoed Nonce) | ACK時に相手から来たT4-T0の値を格納する。 |
| 11-10 (C1-C0) | Capability | PAUSE設定 (ツイストペア規格に同じ) |
| 12 (C2) | (`0`固定) |
| 13 | リモートフォルト | (ツイストペア規格に同じ) |
| 14 | ACK | (ツイストペア規格に同じ) |
| 15 | 追加ページあり | (ツイストペア規格に同じ) |
| 20-16 (T4-T0) | 送信擬似乱数 (Transmitted Nonce) | 相手から来たE4-E0の値と比較する。 |
| 21 (A0) | 対応機能 (Technology Ability) | 1000BASE-KX |
| 22 (A1) | 10GBASE-KX4 |
| 23 (A2) | 10GBASE-KR |
| 24 (A3) | 40GBASE-KR4 |
| 25 (A4) | 40GBASE-CR4 |
| 26 (A5) | 100GBASE-CR10 |
| 27 (A6) | 100GBASE-KP4 |
| 28 (A7) | 100GBASE-KR4 |
| 29 (A8) | 100GBASE-CR4 |
| 30 (A9) | 25GBASE-KR-S or 25GBASE-CR-S |
| 31 (A10) | 25GBASE-KR or 25GBASE-CR |
| 32 (A11) | 2.5GBASE-KX |
| 33 (A12) | 5GBASE-KR |
| 34 (A13) | 50GBASE-KR or 50GBASE-CR |
| 35 (A14) | 100GBASE-KR2 or 100GBASE-CR2 |
| 36 (A15) | 200GBASE-KR4 or 200GBASE-CR4 |
| 43-37 (A22-16) | (`0`固定) |
| 44 (F2) | FEC対応 | 25G RS-FEC 動作 |
| 45 (F3) | 25G BASE-R FEC 動作 |
| 46 (F0) | 10Gbps FEC 機能あり |
| 47 (F1) | 10Gbps FEC 動作 |

### シングルペアケーブル

差動マンチェスタ符号により半二重で48ビットのベースページをやりとりする。信号速度は2種類ある。

- 高速モード: 16+2/3 Mbps (60ナノ秒/bit)
- 低速モード: 625 kbps (1.6マイクロ秒/bit, 10BASE-T1L用)

シングルペア規格においても1ポートで複数の規格をサポートすることができ、以下の優先度が規定されている。

1. 10GBASE-T1
2. 5GBASE-T1
3. 2.5GBASE-T1
4. 1000BASE-T1
5. 100BASE-T1
6. 10BASE-T1S 全二重
7. 10BASE-T1S 半二重
8. 10BASE-T1L