全二重通信と半二重通信 混在環境の問題 | SEの道標
スイッチング

全二重通信と半二重通信 混在環境の問題

全二重通信とは 半二重通信とは

ここではイーサネットに限った話をします。ただし、イーサネットとは10/100/1000BASE-Tだけでなく、 10BASE-2や10BASE-5なども含みます。

10BASE-T、100BASE-TX、1000BASE-Tなどの規格ではUTPケーブルを利用しますが、UTPケーブルには8本の銅線が利用されて おり、受信用と送信用に分かれているため送受信を同時に行うことができます

このように、送受信を同時に行うことのできる規格を全二重通信といい、UTPケーブルでは"全二重通信"が多く利用されています。

一方、10BASE-2や10BASE-5においては、同軸ケーブルが利用されます。同軸ケーブルは線が1本(実際には2系統あるが、1つは アース、画像はコチラ)のため、 送受信は同時に行えなえません。そのため、送信と受信を切り替えて行う"半二重通信"が利用されます。

この全二重通信、半二重通信というのは、ケーブルの両端のNIC等のインタフェースで、設定を揃える必要があります。 設定を自動で揃えるため、オートネゴシエーションというものもありますが、やはり設定はお互いオートネゴシエーションに揃えます。

オートネゴ失敗による全二重半二重混在環境とその問題

もし片方で全二重の設定をし、もう片方でオートネゴシエーションの設定をすると、オートネゴシエーション側のインタフェースは、ネゴが取れないため、半二重になってしまいます。その結果、show interfaceを表示すると、半二重側ではcollisionのカウンタが、全二重側ではruntsのカウンタが上がっているはずです。

runtsは、64byte未満の(つまりEthernet規格で定められた最小byte数より小さい)フレームが検出されたときに上がるカウンタです。全二重側では相手が通信していようがいまいが、常に送信しますが、半二重側では相手から通信が来た場合はすぐに通信を止めます。なので、例えば半二重側が10byte送出したタイミングで相手からの通信を検知した場合10byteのフレームが全二重側に届くわけです。

コメント

タイトルとURLをコピーしました