◆ フロー制御
スイッチでは、受信フレームを一度は共有のバッファメモリに格納し、MACアドレステーブルを使い
宛先MACアドレスを見て必要な宛先に送信されます。その後、そのフレームはメモリから消去されます。
複数のフレームが多数同時に送信されてきても、それらは全てバッファメモリに蓄えられて、順次送信
されていきますが、メモリ容量を超えるフレームはバッファされず破棄されてしまいます。それにより
TCP通信では再送処理が発生してしまうので、再送処理のためにタイムラグが発生してアプリの応答が
悪くなります。この問題を回避するために、フロー制御ではバッファメモリがあふれる前にフレームが
送信されてくるのを防ぐことができます。フロー制御の動作は全二重通信、半二重通信とで異なります。
◆ 半二重通信 ( half duplex ) におけるフロー制御
フロー制御方式としてバックプレッシャ機能を採用しています。スイッチ上のバッファメモリがあふれ
そうになると、スイッチはジャム信号を送信します。これにより送り手は CSMA/CD に従い、ランダム
な時間を待機してから再度フレームを送信するようになります。
◆ 全二重通信 ( full duplex ) におけるフロー制御
フロー制御方式としてIEEE802.3xフロー制御を採用しています。スイッチ上のバッファメモリがあふれ
そうになると、スイッチはPAUSEフレームを送信します。これにより送り手は指定された時間だけ待機
してから再度フレームを送信するようになります。ただしバッファに余裕ができた場合はスイッチから
PAUSE解除フレームを送信するようになり、その場合すぐに再度フレームを送信できるようになります。
◆ 参考:推奨の設定 ( 固定設定 or Auto設定 ) はどちら?
以上が全二重通信と半二重通信、オートネゴシエーション機能、フロー制御についての解説となります。
さて、ネットワークの構築作業において通信モード不一致(一方が固定設定、もう一方がAuto設定)を
発生させないことはとても大切なことです。ここでは通信モードの不一致を発生させないための術を紹介。
CiscoのWebサイトでも紹介されている通り推奨設定(固定設定 or Auto設定)というものはありません。
つまり、両方の機器が固定設定のパターン、両方の機器がAuto設定のパターンのどちらでも正しく動作
します。しかし、以下の通信モードの組み合わせは非常に安定しており当方の設計ポリシーも以下です。
機器のタイプ |
Auto or 固定 |
理由 |
NW機器 ⇔ NW機器 |
Auto ⇔ Auto |
IEEE802.3uによる自動の最適化の結果を確認できるため |
スイッチ ⇔ PC間 |
Auto ⇔ Auto |
クライアントPCのNICのデフォルト設定がAutoであるため |
スイッチ ⇔ サーバ間 |
サーバ側にあわせる |
ただし、どちらでも良い場合は、Auto設定にしています |
NW機器 ⇔ ONU |
ONU側にあわせる |
既にキャリアで設定している状態に合わせざるをえないため |
私の設計ポリシーと言っていますが同じように実装しているネットワークエンジニアは多いと思います。
前回に申し上げた通り、通信モードの不一致を発生させたままユーザに引き渡すと障害報告書の提出は
避けられませんので、自分のなかで一貫した通信モードのポリシーを決めておくことは重要なことです。
そして、ここからがポイントとなります。自分で制御できないONUなどのキャリア機器、外部ベンダーの
導入機器と接続する場合、相手側が「固定設定にする」と決まった場合でも、当方は必ずAutoに設定して
IEEE802.3uによる最適化の結果を見るようにします。もし、こちらの機器が「半二重」になれば、相手側
の機器は間違いなく「固定設定」であることを確認できます。それが確認できてから固定設定にしています。
そして「全二重」になった場合は、相手側が間違えているか、両者の認識違いがあったことを確認する
ことができます。サーバと接続する場合も同じでとにかくAutoにしてステータス結果を確認しています。
そうすることで、相手側のミスもつぶせます。簡単なことですが、通信モード不一致の最高の回避策です。
|