オートネゴシエーション

オートネゴシエーション機能とは、UTPケーブルを利用する10BASE-T/100BASE-TX/1000BASE-Tなどのイーサネット規格のポートで機能します。イーサネットのポート同士を接続しているとき、両端のポートの通信速度、通信モード(全二重/半二重)を自動的に最適化する機能です。

オートネゴシエーション機能に対応したイーサネットポート同士を接続した場合、それぞれ「FLP(Fast Link Pulse)バースト」と呼ばれるパルス信号を送出します。このFLPバーストのやり取りによって、互いの通信速度とサポートする通信モードを検出し、下の表の優先順位に従って最適なものを選択します。

オートネゴシエーションの優先順位
優先順位通信速度/全二重通信/半二重
1

1000BASE-T 全二重

2

1000BASE-T 半二重

3

100BASE-TX 全二重

4

100BASE-TX 半二重

5

10BASE-T 全二重

6

10BASE-T 半二重

1000BASE-T/100BASE-TX/10BASE-Tの優先順位のみを抜粋しています。
図 オートネゴシエーション

ほとんどの機器でオートネゴシエーションに対応しているので、対向のポート同士で最適な通信速度と通信モードが自動的に決まります。

オートネゴシエーションが失敗する場合

「オート」という言葉から、「対向のポートの速度と全二重/半二重に自動的に合わせる」と思ってしまいがちです。「対向に合わせる」のではなくて、「お互いのポートがサポートしている一番良い速度と通信モードを決める」のがオートネゴシエーションです。

このことをきちんと理解しておかないと、オートネゴシエーションが失敗するような設定をしてしまいます。たとえば、片方を1000Mbps 全二重固定の設定をして、その対向ポートをオートネゴシエーションの設定にした場合です。オートネゴシエーションの設定をしているポートが1000Mbps 全二重になることを期待している設定ですが、うまく機能しません。

図 オートネゴシエーションが失敗する例

固定の設定をしているポートからはFLPを送りません。そのため、オートネゴシエーションの設定をしているポートでは、対向のポートで利用できる速度や通信方式がわからなくなります。速度は、電気信号から判別できるので合わせることができますが、全二重か半二重かはわかりません。本来、イーサネットは半二重通信なので判別できないときは、半二重として動作するようにしていることがほとんどです。その結果、対向のポート同士で全二重と半二重が一致しなくなってしまいます。

図 オートネゴシエーションが失敗する例 つづき

全二重/半二重の不一致

オートネゴシエーションが機能せずに、対向のポートで半二重と全二重の通信モードが一致しないと、あるときは通信ができ、あるときは通信ができないという不安定なネットワークになってしまいます。半二重/全二重の不一致のトラブルは、規則性がなく断続的に通信ができなくなるのでとてもわかりにくいトラブルです。半二重と全二重が一致していなくても、ポートがダウンすることはありません。ポートがダウンしていれば、「何かがおかしい」とすぐに気が付きますが、ポートのリンク自体はアップしているので気が付きにくいトラブルです。全二重/半二重が一致していないと、リンクはアップしていても、アプリケーションのスループットが著しく落ち込んでしまうような現象になります。

レイヤ2スイッチの1つのポートに1台のホストを接続しているマイクロセグメンテーションのとき、原理的には衝突は発生しません。半二重のポートでも、ポイントツーポイントで接続している場合、送信用の電気信号と受信用の電気信号が分離されているからです。しかし、半二重ポートはCSMA/CDの動作に基づいて、イーサネットフレームを送信中に受信用の信号を受け取ると、擬似的な衝突とみなして、他のホストが衝突の検出を確実に行うことができるようにジャム信号を送信します。そして、擬似的な衝突が発生すると、イーサネットフレームが失われてしまいます。イーサネットフレームは再送されますが、その間にTCPのレベルでセグメントが失われてしまうことがあります。TCPセグメントが失われると、ネットワークが混雑しているとして、送信レートを下げて再送します。その結果、アプリケーションのデータ転送のスループットが低下してしまうことになります。

図 全二重/半二重の不一致

オートネゴシエーションが失敗しないために

オートネゴシエーションが失敗しないようにするために、対向のポート同士で二重モードの設定を合わせておくことが重要です。オートネゴシエーションを利用するなら、両方のポートでオートネゴシエーションを有効にします。半二重または全二重固定の設定をするなら、両方のポートで半二重または全二重固定の設定をします。「対向のポートの設定はきちんと合わせる」ことが原則です。

現在では、オートネゴシエーションのFLPバーストだけではなくCDP(Cisco Discovery Protocol)やLLDP(Link Layer Discovery Protocol)などでも全二重/半二重の通信モードの情報を交換できるようになっています。そのため、全二重/半二重の不一致のトラブルが起こるケースはほとんどなくなっています。

レイヤ2スイッチの仕組み