2008年10月11日土曜日

HSRPとSTPの繊細な関係について

DATE: 03/22/2008 10:59:15
-----
BODY:
現場では、一つのネットワークに各々の業者が責任分解点を設けて
それぞれのネットワーク機器を設定することがある。

今回はそれにまつわる話。

こちらで管理しているL3スイッチ2台(シスコ)にHSRPを有効にし、
別業者が設定している対向のL3スイッチ(シスコ製)には、
HSRP仮想アドレスをネクストホップアドレスとしたデフォルトルートを設定する。

L3スイッチA(HSRP-Active)--------+
                        別業者L3スイッチ
L3スイッチB(HSRP-Standby)-------+

業者間のポリシーではSTPを設定しないこと。
なので、こちらで管理している2台のL3スイッチではSTPを無効にしている。

このとき、構成図のL3スイッチB(HSRP-Standby)のケーブルを抜き差しすると、
このネットワークを横切る通信が、約10数秒の間に数回ダウンする現象が現れた。

ここで詳細は省くけどルーティング、HSRP自体に問題はないとした。
L3スイッチB(HSRP-Standby)のリンクアップによってルーティング経路は変化はしないから。
また、HSRPのステート変化によって通信に影響を及ぼさないからだ。

となると、STPに疑いを持たざるを得ない。
仮に、別業者でSTPが動作していると(尚且つこちらでSTPが無効になっていると)、
この現象は説明可能だからだ。

L3スイッチBのリンクアップで、それぞれのステート変化を見てみる。
(HSRP,STPのタイマーはデフォルト)

リンクアップ後    L3スイッチBのHSRP状態    別業者スイッチSTPポート(L3スイッチB側)状態

0秒            INIT→LISTEN               Blocking→Listening
10秒          LISTEN→SPEAK              Listening
15秒            SPEAK                  Listening→Learning
20秒         SPEAK→STANDBY→ACTIVE       Learning
30秒           ACTIVE→SPEAK             Learning→Forwarding


ここでリンクアップ後20秒に注目してもっと細かい動きを時系列でみる。

1.L3スイッチBは対向スイッチがSTPによってHSRPパケットを中継しない為
  2度目のHSRPホールドダウンタイムを迎え、Activeに遷移する。

2.L3スイッチBは自身がActiveルータであることを知らせる為
  「Gratuitous ARP」を送出する。

3.Gratuitous ARPを受けた他業者スイッチのSTPポート状態はLearningである。
  このポート状態は通信を中継せず、MACを学習する段階である為、 
  他業者スイッチMACテーブルのエントリのうち、
  仮想MACアドレスの出力ポートを、L3スイッチA側からL3スイッチB側に変更する。

4.このネットワークを横切る通信は、他業者スイッチ上でパケットドロップする。
  仮想MAC宛ての通信は、「Learning」であるL3スイッチB側ポートで出力されるからだ。

5.しかし、まもなく通信は復旧する。
  なぜなら、L3スイッチAのHSRP-Helloが他業者スイッチで受信されるからだ。
  L3スイッチAのHSRP-Helloの送信元MACは、仮想MACアドレスである。
  
(注)Active状態にあるルータのHelloの送信元MACは、仮想MACアドレスでなければならない旨
  RFC2281に記載されている。
  
  http://www.ietf.org/rfc/rfc2281.txt

「If and only if the router is in the Active state, the router MUST use
the group's virtual MAC address as the source MAC address for its
Hello messages. This is necessary in order to allow learning bridges
to be able to determine which LAN segment the virtual MAC address
currently belongs to.」

6.ところが、Gratuitous ARPは、2秒間隔で3回、回数毎に2発、計6発投げる。
  Gratuitous ARPを他業者スイッチが受信すればパケットドロップが再び発生する。

7.前述の2-5の繰り返しにより、別業者スイッチSTPポート(L3スイッチB側)が
  Forwardingになるまでパケットドロップが断続的に発生する。


結局、SEに確認を要請したのは、他業者スイッチ上でSTPが有効になっているかどうかだ。
STPが無効になっていたら、再調査(゜_゜)

0 件のコメント: