LAN スイッチ:MAC アドレスは5分で消えるか?

多くのレイヤー2 スイッチでは、MAC アドレス・テーブルのエージング・タイムは300 秒に設定されています。
a

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秒の場合のエイジ・アウトについて説明するものです。


mac_ageing.png

      1. Aのタイミングでフレームを受信します。送信元アドレスをMAC アドレス・テーブルに登録し、判定フラグをセットします。
      2. Bのタイミングで判定処理が発生し、セットされていたフラグをリセットします。
      3. Bから300秒経過し、Cのタイミングで二度目の判定処理が発生します。A で登録されたMAC アドレスにはフラグがセットされていないので、エイジ・アウトします。

BCの間にフレームを再度受信した場合は、フラグがセットしなおされるため、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 間で、情報の同期を取るためのメカニズムが加わっているためです。