この記事は、改訂&リニューアルして『P はプロトコルのP - MAC アドレスは5分で消えるか?』へ移転しました。
MAC アドレスは5分で消えるか?
多くのLayer2 スイッチでは、MAC アドレステーブルのエージングタイムは300秒に設定されています。
IEEE 802.1D が推奨するデフォルト値だからです。
IEEE 802.1D では、10〜1,000,000 秒の間で設定可能とされています(実際に設定可能かどうかは、機器の実装に依存します)。
※ IEEE 802.1D - Table 7.4 Ageing time parameter value 参照
あるMAC アドレスがスイッチのポートで学習された後、そのMAC アドレスを送信元とするフレームを300秒間受信しないと、そのMAC アドレスはテーブルから削除されます。
というのが通説となっています。
これは、多くの場合正しくありません。
MAC アドレステーブルのエージングタイムは、テーブル上のMAC アドレスが最後に参照されてから、エイジアウトするまでの時間を定めた物、という誤解に基づいているからです。
MAC アドレステーブルのエージングタイムは、エイジアウトするまでの時間ではなく、エントリをエイジアウトさせるべきかどうかの判定を行う間隔を定めた値です。
MAC アドレスがスイッチのポートで学習されると、そのMAC アドレスには、スイッチによって参照された事を意味するフラグがセットされます。
学習された直後のエイジアウト判定処理で、スイッチはMAC アドレスのフラグを確認します。
ここでフラグがセットされている場合、フラグはリセットされます。
その次の判定処理までの間に、そのMAC アドレスを送信元とするフレームを同じポートで受信すると、フラグは改めてセットされます。
判定処理までの間に、そのようなフレームを受信しなかった場合(つまり、フラグはリセットされている状態)、そのMAC アドレスはテーブルから削除されることになります。
以下の例は、エージングタイムがデフォルトの300秒の場合のエイジアウトについて説明するものです。
- Aのタイミングでフレームを受信します。送信元アドレスをMAC アドレステーブルに登録し、判定フラグをセットします。
- Bのタイミングで判定処理が発生し、セットされていたフラグをリセットします。
- Bから300秒経過し、Cのタイミングで二度目の判定処理が発生します。
A で登録されたMAC アドレスにはフラグがセットされていないので、エイジアウトします。
BとCの間に、フレームを再度受信した場合は、フラグがセットしなおされるため、C のタイミングではフラグがリセットされるだけで、エイジアウトはしません。
以上の事から、学習されたMAC アドレスが、その後一度も再学習されなかった場合、エイジアウトするまでに要する時間は、300秒以上(ただし、600秒未満)となることがわかります。
- 最短時間 = 300 秒 ------>> 判定処理のタイミングに学習した場合
最長時間 = 600-1 秒 ------>> 判定処理の直後に学習した場合
Catalyst6500 のDFC (Distributed Feature Card) など一部のスイッチでは、上記の動作とは異なる実装がされているものもあります。
DFC は、Catalyst6500 のラインカード毎に搭載されるForwarding Engine です。
本来SVE (Supervisor Engine Module) 上のPFC (Policy Feature Card) で行う転送処理を、各ラインカードで行わせることで、SVE の負荷を下げると同時に、高速転送処理を実現しています。
エージングの方式が通常のスイッチと異なるのは、筐体内に分散されたDFC 間で情報の同期を取るためのメカニズムが加わっているためです。
ネットワークエンジニアになろう!のトップページへ戻る