Ethernet の flow control(フロー制御)の概要と設定 〜IEEE802.3X PAUSE〜

TCPにもフロー制御の機能がありましたが、Ethernetにもフロー制御が定められています。IEEE802.3Xという規格です。

IEEE802.3X とは

Ethernet のフロー制御規格です。

スイッチはインタフェース単位で輻輳を検知し、受信リングバッファ (rx-ring) がオーバーフローする前に、そのインタフェースからマルチキャスト (0180:c200:0001) 宛に PAUSE フレームを送り、受信した端末は一定時間通信を止めます

PAUSE フレームのフォーマット

IEEE802.3X のフロー制御の PAUSE フレームのフォーマットを以下に示します。

操作コードには PAUSE を示す「1」が入ります。

このフレームを受け取った端末は、「中断時間*512」のbit数分の時間、送信を止めます。例えば中断時間=10000、インタフェースの速度=1G bpsであれば、bit数分の時間、というのは

送信停止時間 = (10000*512[bit])/ (1*1024*1024*1024[bit/sec]) = 4.7[msec]

となります。

また、この時間が経過する前であっても、バッファに空きができたら「中断時間=0」の PAUSE フレームを送ることで、相手方に転送開始をしてよいことを伝えることができます。

Ethernet の中身データの最小サイズは 46 bit なので、残りを 46 bit 目まで Padding で埋めます。

cisco のコマンド

cisco では IEEE802.3X はデフォルトで無効になっています。

PAUSE フレームを送る設定にしたいときは、インタフェースで以下コマンドを打ちます。

(config-if)# flowcontrol send on

また、PAUSE フレームを受信した時に、PAUSE フレームに従って通信停止させたい場合は、インタフェースで以下コマンドを打ちます。

(config-if)# flowcontrol receive on

フォローする