ETHERNETリンク注意点

  1. はじめに
    ETHERNETリンク時に気をつけなければならないことのひとつに、半二重、全二重通信の設定があります。ほとんどの機器がオートネゴシエーションに対応し、リンクの設定などしなくなったため、あまり注意が払われなくなっているのかも知れません。
    しかし、一見正常にリンクしているようにみえても、システムを運用しているときに、おもわぬトラブルを招くことになります。
     
  2. 問題点
    言わずもがなですが、通信速度が異なるものは通信できません。よって、根本的に動かないため、さほど問題ではありません。
    問題になるのが、誤っていても一見正常に動作しているようにみえる、前述、半二重、全二重通信の設定です。
    半二重通信する機器と、全二重通信する機器を直接接続しても正常に通信することはできません。それは、半二重機器は受信中に送信することはできませんが、全二重機器では受信中でも送信することができるからです。

     
    例:半二重機器と全二重機器の通信トラブル

    1. 半二重機器側に送信したい要因(データ1)が発生します。
    2. 半二重機器はデータ1の送信を開始し、送信中となります。
    3. 全二重機器はデータ1の受信中状態となります。
    4. このとき全二重機器側にも送信したい要因(データ2)が発生したとします。
    5. 全二重機器は受信中でも送信できるため、データ2の送信を開始します。
    6. 半二重機器はデータ1の送信中にデータ2を受信したため、送信データと受信データが衝突したと判断します。
    7. 「6.」より、半二重機器は受信中のデータ2を破棄(※1)または正常受信(※2)、送信中であったデータ1は破棄(ジャム送出)した後、再送(バックオフアルゴリズム)します。
       ※1:送信中に受信したのでデータ衝突とみなし、受信データを破棄したとき。
       ※2:全二重からの送信は正常なので、データ2は正常受信としたとき。
    8. 全二重機器は受信中のデータ1をジャムにより破壊され受信失敗、送信中であったデータ2は正常に送信したと思っているので再送なし、となります。
    9. 「7.」「8.」により半二重機器から全二重機器への送信は通りづらいので遅延、全二重機器から半二重機器へのデータは消滅する、などのトラブルになります。
      これに、上位のTCPの再送等も混ざると、さらに混沌とした状態になります。
  3. 発生要因
    前述はどのようなときに起きやすいのか、例をあげてみます。
    • 半/全二重対応オートネゴ機器 と 全二重固定機器
      オートネゴ機器と固定機器(オートネゴシエーションできない機器)との通信は、半二重通信となります。よって、この場合、前者機器が半二重、後者機器が全二重となります。
      全二重固定機器と接続できるのは全二重固定機器のみです。
      よって、全二重固定機器をハブに接続するときは、オートネゴシエーションを停止し、全二重固定設定にできるタイプのハブしか接続してはいけません。
       
    • 半二重対応オートネゴ機器 と 全二重対応オートネゴ機器
      お互いにオートネゴシエーション対応でも、お互いの半/全二重のオートネゴシエーションが有効でなければ、もちろんうまくいきません。
      オートネゴシエーション対応でも、半二重のみ対応、全二重のみ対応の機器があります。
  4. おわりに
    大枠として、下記のことを覚えていればいいのではないかと思います。
    • 半二重、全二重通信はリンクしてしまい、一見正常に通信しているようにみえるので注意。
    • 半/全二重対応オートネゴ機器は、オートネゴシエーションできないとき、半二重通信となる。
    • 全二重固定機器は全二重固定機器とのみ接続可能。
    • オートネゴシエーションに対応していても、半/全二重、どちらにも対応しているとは限らない。

2010/05/26