ネットワークのAuto-Negotiationについて

ネットワーク機器の標準的な機能の1つに、"Auto-Negotiation(オートネゴシエーション)機能"がある。これは、接続した機器(ポート)間で通信速度と通信モード(半二重/全二重)を折衝し、最適なものに自動設定してくれるという仕組み。なお、全二重通信と半二重通信についてはIT 用語辞典 全二重【full duplex】の説明がわかりやすい。

Auto-Negotiationを設定しておけば、システム設計時や隣接するサーバ、ネットワーク機器の追加の際などに毎回相手の機器のポートスピードを調べて設定する必要がなくなる。便利な機能なため非常に良く使われている設定の一つなのだが、このAuto-Negotiation機能には一つ大きな問題がある。それは、機器間で通信モード(半二重/全二重)の設定のミスマッチがしばしば発生するという点。

では、何が要因でこのような現象がしばしば発生するのか?

答えはAuto-Negotiationの仕様にある。Auto- Negotiationは相手側の機器とFLP(Fast Link Pulse)というパルスを交換する事で通信モードを決定する。しかし、相手側の機器が固定設定をしている、もしくはAuto-Negotiation の設定をしていない場合、このFLPパルスが相手から送られてこない。

では、どうするか?

Auto- Negotiationの仕様では、相手側の機器からAuto-Negotiationの応答がない場合、ポート設定は半二重をにする事になっている。従って、片方がAuto-negotiaton、片方が全二重固定という設定を行なった場合、必ずミスマッチが発生してしまうのである。なお、通信速度については、Auto-negotiatonが機能しなくてもAuto-sensingと呼ばれる機能により自動認識される。

システムの設計・構築をしていると、前述のような状況(ミスマッチ)をしばしば見かけるのだが、現状ネットワークやサーバの教科書にはこういう事はあまり載っていない。私が最初に知ったのは先輩が顧客システムで暗黙のように(?)設定していたのを見た時である。

この問題のタチが悪い点として、通信速度は別として「とりあえず通信は確保されてしまう」、という点である。管理者の方でもこの問題を知らない、もしくは気付いていないという方が結構いるかもしれない。対策としては、ネットワーク機器を新しく設置した際は必ず全ポートのステータスを確認すること。この問題は熟練したNEさんでも結構見落とすケースがあるようだ。