オートネゴシエーション
オートネゴシエーション(Autonegotiation)とは、ツイストペアケーブルを介したイーサネット(Ethernet over twisted pair)で使用されるシグナリングメカニズムおよび手順であり、2つのネットワーク装置の間で、通信速度、通信モード、フロー制御などの伝送パラメータの情報を交換し、最適なものを選択する機能である。このプロセスでは、イーサネットに接続されたデバイスは最初に相互の利用可能な伝送パラメータを共有し、両方が対応している最高性能の伝送モードを選択する。
オートネゴシエーションが有効化されている機器と、通信モードが固定されている機器を直接接続すると、スループットが大幅に低下する等のネットワーク障害の原因になるため、ネットワーク管理者は十分に注意する必要がある。
オートネゴシエーションは、IEEE 802.3のClause 28に定義されており、元々はファスト・イーサネット規格のオプションのコンポーネントだった。10BASE-Tで使用されているNormal Link Pulse(NLP)との後方互換性がある。このプロトコルは、ギガビット・イーサネット規格で大幅に拡張され、ツイストペアケーブルを介した1000BASE-Tギガビット・イーサネットでは必須である。
OSI参照モデルでは、オートネゴシエーションは物理層にある。
オートネゴシエーションは、複数の通信速度、異なる通信モード(半二重/全二重)、異なる規格が可能なデバイス間で使用できる (実際には1つの規格のみが広く使用されている)。各装置は自身の「技術的能力(technology abilities)」、すなわち使用可能な動作モードを宣言し、両方の装置で使用可能なものの中から最良のモードが選択される。低速度より高速度のもの、半二重よりも全二重の方が優先される。
自動検出が可能な装置とそうでない装置が接続されている場合、並列検出(パラレルディテクション)が使用される。これは、一方の装置がオートネゴシエーションに対応していないか、管理上オートネゴシエーションが無効に設定されている場合に発生する。この状態では、オートネゴシエーションが可能な装置が他の装置の側に速度を一致させることができる。しかしこの手順では、通信モードを自動で決定できないため、常に半二重であると仮定される。したがって事実上この組み合わせで全二重モードで通信することは出来ない。
オートネゴシエーションでは、通信速度と通信モード以外にも、ポートタイプ(シングルポート、マルチポート)やマスター/スレーブパラメータ(手動で設定されているかどうか、手動設定の場合は装置がマスターかスレーブか、自動設定の場合はマスタースレーブシードビット)が通信される。
1995年、IEEE 802.3u規格がリリースされた。これは、接続されたネットワークアダプタが、可能な限り最良の動作モードで動作できるように自動的に交渉する機能のための規格である。IEEE 802.3のClause 28となったこのプロトコルは、ナショナル セミコンダクターによるNWayと呼ばれる特許技術から開発されたものである。同社は、一度ライセンス料を支払うだけで、誰でもこのシステムを使うことを保証するという書簡を出した。他の会社は、その特許の利用権を購入した。
1995年のファーストイーサネット規格IEEE 802.3uのオートネゴシエーション仕様の最初のバージョンでは、規格の標準化が不十分であったため、メーカーによって実装にばらつきがあった。そのため、異なるメーカーのデバイス間のオートネゴシエーションは失敗する場合があった。
オートネゴシエーションの仕様で議論の余地がある部分は、1998年の802.3のリリースによって削除された。その後、1999年にギガビット・イーサネット規格IEEE 802.3abがリリースされた。新しい規格では、銅線を介した1 Gbit/sの1000BASE-Tイーサネットにオートネゴシエーションが必須であると規定されていた。現在、ほとんどのネットワーク機器メーカーは、全てのアクセスポートでオートネゴシエーションを使用し、それを工場出荷時のデフォルト設定として、機能を有効にすることを推奨している。
1000BASE-T、1000BASE-TX、10GBASE-Tの規格では、オートネゴシエーションが必須である。
家庭用・業務用の別に関わらず、多くのネットワーク機器がオートネゴシエーションに対応しており、また、デフォルトで有効化されている。さらに家庭用や業務用の安価な機器ではそもそもオートネゴシエーションを解除して通信モードを手動で設定できないことが多い。そのため、オートネゴシエーションを意識せずに利用しているユーザは多い。しかし、オートネゴシエーションは、誤った使い方をしたり、不用意に解除すると、ネットワーク障害の原因になる。直接接続されている2つのデバイスのうち1つがオートネゴシエーションに設定され、もう1つが手動で全二重に通信モードが設定されている場合では、オートネゴシエーションが正しく動作せず、半二重で通信が開始されるため、通信モードが不一致となる。この状態でもネットワークは不安定ながら動作するため、pingによる疎通確認試験では問題を認知することができない。しかし、大量のパケット破棄が発生し、スループットが大幅に低下する。また古い機器や安価な機器などで10BASE-Tにしか対応しない機器はそもそもオートネゴシエーション機能に対応していないため、オートネゴシエーションの機器と接続して全二重モードを設定しようとすると同じく通信モードが不一致となる。
2つの装置の内、片方が全二重、片方が半二重で動作している場合、両方の装置が同時にフレームを送信しようとすると、接続は非常に低いスループットでのみ機能する。これは、全二重モードではデータを両方向に同時に送受信できるが、半二重モードでは一度に一方向にしか送信できないためである。その結果、全二重の装置では、受信中にデータを送信することがある。ただし、他の装置が半二重で動作している場合、データを受信することは期待されていない(現在送信中のため)。そのため、衝突(コリジョン)を検知し、送信中のフレームを再送信しようとする。タイミングによっては、半二重の装置はレイト・コリジョン(late collision)を検出することがある。これはCSMA/CDでハードエラーとして解釈されてフレームを再送信しない場合がある。一方、全二重の装置は衝突を検出せず、他の装置が衝突によって破損しているとして廃棄した場合でも、フレームを再送信しない。それでも、受信フレームが衝突検出によって切り捨てられることを想定していない全二重の装置は、半二重の装置が送信しようとした打ち切られたフレームからのフレームチェックシーケンスエラーを報告する。半二重の装置で報告されたレイト・コリジョンと全二重の装置で報告されたFCSエラーの組み合わせは、通信モードの不一致が存在することを示すものとして使用できる。
パケット損失は、両方の装置が同時に送信しているときに発生する。また、リンクがユーザーの視点から見て一方向にのみ使用されている場合でも発生する可能性がある。TCPストリームでは、送信側の全てのパケットが受信側デバイスによって確認応答される必要がある。その結果、実際のデータが一方向にのみ送信されている場合でも、逆方向に送信される確認応答パケットとの衝突が発生する可能性がある。
両方の装置は、他方の装置の技術的能力を受信すると、両方の装置が利用可能な最良の動作モードを決定する。802.3の2018年版で指定されているモード間の優先順位は次の通りである。すなわち、各装置は、両方の装置で対応しているモードの中で、このリストの一番上にあるモードを選択する。
40GBASE-T 全二重
25GBASE-T 全二重
10GBASE-T 全二重
5GBASE-T 全二重
2.5GBASE-T 全二重
1000BASE-T 全二重
1000BASE-T 半二重
100BASE-T2 全二重
100BASE-TX 全二重
100BASE-T2 半二重
100BASE-T4 半二重
100BASE-TX 半二重
10BASE-T 全二重
10BASE-T 半二重
オートネゴシエーション(以前のNWay)は、10BASE-Tにおいて他の装置の接続の存在を検出するために使用しているものと同様のパルスに基づいている。これをconnection present(接続存在)パルスと言い、イーサネット装置によって、フレームを送受信していないときに送信される。最大パルス幅200ナノ秒、公称持続時間100ナノ秒の正極性の電気パルスであり、16ミリ秒の間隔で生成される(タイミング変動許容範囲は8ミリ秒)。このパルスは、10BASE-Tの用語ではlink integrity test (LIT)パルス(リンク整合性試験パルス)と言い、オートネゴシエーション仕様ではノーマルリンクパルス(NLP:normal link pulse)と言う。
50〜150ミリ秒にわたってフレームもLITパルスも受信されない場合、装置はリンク障害を検出する。この方式が機能するために、装置は受信に関係なくLITパルスを送信する必要がある。
オートネゴシエーションは、NLPとラベル付けされた同様のパルスを使用する。NLPは単極で、正極性のみで、公称期間は100ナノ秒である。ただし、各LITは、125マイクロ秒間隔で送信される17〜33個のパルスからなるパルスバーストとなる。このパルスバーストはファストリンクパルス(FLP:fast link pulse)バーストと呼ばれる。FLPバーストの開始間の時間間隔は、ノーマルリンクパルス間と同じ16ミリ秒(変動許容誤差は8ミリ秒)である。
FLPバーストは125マイクロ秒間隔(許容誤差14マイクロ秒)の14個のNLPで構成されている。2つの連続したNLPの各対の間に(すなわち、パルス対の最初のNLPの62.5マイクロ秒後に)追加の正のパルスが存在する場合がある。この追加パルスの存在は論理1を示し、存在しないことは論理0を示す。結果として、各FLPは16ビットのデータワードを含むことになる。このデータワードはリンクコードワード(LCW:link code word)と呼ばれる。リンクコードワードのビットは0から15までの番号が付けられている。ビット0は時間内の最初のパルスに対応し、ビット15は最後のパルスに対応する。
各ファストリンクパルスバーストは、リンクコードワードと呼ばれる16ビットのワードを送信する。最初のワードをベースリンクコードワード(base link code word)と言い、次のように使用される。
0–4: セレクタフィールド: IEEE 802.3とIEEE 802.9のどちらの規格を使用しているか示す。
5–12: 技術的能力フィールド: 100BASE-Tと10BASE-Tにおいて利用可能な動作モードを示すビット列(内容は後述)。
13: 遠隔故障: 装置がリンク故障を検出しているときに1に設定される。
14: 確認応答: 相手側からベースリンクコードワードを正しく受信したことを示すために、1に設定する。同一のベースコードワードを最低3回受信したことによって正しく受信したと判定される。
15: ネクストページ: このビットは、ベースリンクコードワードの後に他のリンクコードワードを送信するときに使用される。
技術的能力フィールド(technology ability field)は8ビットで構成されている。IEEE 802.3では、次のように定義されている。
ビット0: 装置が10BASE-Tに対応している
ビット1: 装置が10BASE-T 全二重に対応している
ビット2: 装置が100BASE-TXに対応している
ビット3: 装置が100BASE-TX 全二重に対応している
ビット4: 装置が100BASE-T4に対応している
ビット5: ポーズ
ビット6: 全二重の非対称休止
ビット7: 予約
確認応答ビットは、相手のベースコードワードを正しく受信したことを知らせるために使用される。これは、同一のベースコードワードを最低3回受信したことに対応する。同一のベースコードワードを3回受信すると、装置は以降6回目から8回目まで、確認応答ビットを1に設定してリンクコードワードを送信する。
リンクコードワードはページ(page)とも呼ばれる。従って、ベースリンクコードワードはベースページとも呼ばれる。ベースページのネクストページビットは、装置が他のページを送信しようとしているときに1に設定される。これを使用して他の機能を通知することができる。この追加ページは、両方の装置がネクストページビットを1に設定してベースページを送信した場合にのみ送信される。追加ページもまたリンクコードワードとしてエンコードされる(17クロックパルスで最大16ビットパルスを使用)。
装置が10BASE-T、100BASE-TX、100BASE-T4のうちどのモードに対応しているかを通知するには、ベースページ(ベースリンクコードワード)だけで十分である。ギガビット・イーサネットの場合、あと2つ別のページが必要となる。両方の装置がネクストページビットを1に設定してベースページを送信した場合、これらのページが送信される。
追加のページには、メッセージページ(message page)と未フォーマットページ(unformatted page)の2種類がある。これらのページは、ベースページと同じ方法でエンコードされた16ビットワードである。最初の11ビットはデータで、最後から2番目のビットはページがメッセージページか未フォーマットページかを示す。各ページの最後のビットは、追加のページがあることを示す。
1000BASE-Tがサポートするモードとマスター・スレーブデータ(2つの装置のどちらがマスターとして動作し、どちらがスレーブとして動作するかを決定するために使用される)は、単一のメッセージページとその後に単一の未フォーマットページを使用して送信される。メッセージページには以下が含まれる。
通信モード(半二重/半二重)
マスター/スレーブが手動で設定されているかどうか
マスター/スレーブが手動設定の場合、装置がマスター・スレーブのどちらで設定されているか
未フォーマットページには、マスタースレーブシード値(master-slave seed value)と呼ばれる10ビットワードが含まれている。
オートネゴシエーションは、以下の特許により保護されている。
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