速度の差を吸収するフロー制御
通信速度が異なる機器を相互接続するスイッチには、送受信するデータの流量を動的に制御する「フロー制御」の機能が必須となる。
たとえば、サーバが100Mbps、クライアントが10Mbpsで接続されたスイッチを考えてみよう。サーバ-スイッチ間とスイッチ-クライアント間の速度には差があるため、サーバから送信されたデータは処理が間に合わず、徐々にスイッチのバッファに溜められていく。しかし、このままデータがサーバから流れてくると、いつかスイッチのバッファがオーバーフローして、データの消失事故が起こる。
この事故を未然に防ぐためには、スイッチはバッファが溢れそうになるとサーバに対し送信を一時停止するよう合図を出す。そして合図が出されている間、サーバは送信を停止する、という機器間でのデータの流量調整機能が必要とされる。これがフロー制御である(図2)。
Ethernetでは、送信停止の合図の出し方は、機器間の通信モードによって異なる。半二重通信では、①衝突が発生した時と同じジャム信号を受信側が送出する(擬似コリジョン方式)、②搬送波(キャリア信号)を受信側が送出する(擬似送信方式)のどちらかである。いずれの場合もサーバは送信を停止し、その間にスイッチはデータをクライアントへ送出し続けて、バッファを空にする。
一方、全二重通信では、送信と受信は並行して行なわれるため、スイッチがジャム信号や搬送波を送信しても、送信側は送信を停止しない。その代わりに、「PAUSEフレーム」という特別なEthernetフレームを利用する。バッファが溢れそうになった受信側の機器は、送信側に対しPAUSEフレームを送る。送信側は、このフレームが受信側から送られている間は送信を中断して待機する。もちろんこのPAUSEフレームは、他の機器には影響しないようになっている※2。
※2:他の機器には影響しない PAUSEフレームの宛先には、特別なマルチキャストアドレスが使われる。このアドレスは中継が禁止されているため、スイッチが受信した場合でも、PAUSEフレームは他のポートへ転送されない。現在市販されているスイッチでは、前述したオートネゴシエーションによって、相手機器との間のフロー制御の方法を自動的に決定する。
(次ページ、「企業向けスイッチに求められる機能」に続く)
この連載の記事
-
最終回
ネットワーク
アクセスルータの機能を知っていますか? -
第4回
ネットワーク
レイヤ3スイッチのさまざまな機能 -
第3回
ネットワーク
ルーティングとレイヤ3スイッチの関係とは -
第1回
ネットワーク
ネットワーク機器の代表「スイッチ」の役割とは? -
ネットワーク
図で解剖!スイッチ&ルータ - この連載の一覧へ