IP : IP アプリケーション サービス

設定例:各種ルータ プラットフォームを使用したスイッチング環境における HSRP の不安定性の回避

2002 年 6 月 1 日 - ライター翻訳版
その他のバージョン: PDFpdf | 機械翻訳版 (2013 年 8 月 21 日) | 英語版 (2008 年 6 月 2 日) | フィードバック

概要

LAN スイッチ経由で接続している 2 台のルータ間で Hot Standby Router Protocol(HSRP; ホットスタンバイ ルータ プロトコル)を実行していると、HSRP が不安定になることがあります。この現象は、ネットワークが不通になっているときやアクティブ ルータの移行中(高い優先順位と preempt が設定された HSRP ルータを LAN に追加しているときなど)に多く発生します。この文書は、この不安定な状態になる理由とその回避方法について説明しています。

ネットワーク ダイアグラム

ネットワーク ダイアグラム

設定例

次の表は関連する設定コマンドだけを示しています。

ルータ A ルータ B
interface FastEthernet1/0

    ip address 10.144.220.3 255.255.252.0

    standby priority 120

    standby preempt

    standby ip 10.144.220.1

   
interface FastEthernet3/0

    ip address 10.144.220.2 255.255.252.0

    standby priority 110

    standby preempt

    standby ip 10.144.220.1

   

debug および show コマンド

debug コマンドを発行する前に「debug コマンドに関する重要な情報」を参照してください。

  • debug standby
debug の出力例

上のダイアグラムでは、ルータ A をネットワークに追加すると、ルータ B の HSRP 状態がアクティブからスタンバイへと変化することがわかります。ルータ B で debug standby を実行すると、次の出力が得られます。

RouterB#debug standby



   *Mar 1 02:55:56: SB0:FastEthernet3/0 Hello out 10.144.220.2 Active pri 110 hel 3 hol 10 ip 10.144.220.1

   *Mar 1 02:56:08: SB0:FastEthernet3/0 Hello in 10.144.220.3 Active pri 120 hel 3 hol 10 ip 10.144.220.1

   *Mar 1 02:56:08: SB0: FastEthernet3/0 state Active -> Speak

   *Mar 1 02:56:08: SB0:FastEthernet3/0 Resign out 10.144.220.2 Speak pri 110 hel 3 hol 10 ip 10.144.220.1

   *Mar 1 02:56:08: SB0:FastEthernet3/0 Hello out 10.144.220.2 Speak pri 110 hel 3 hol 10 ip 10.144.220.1

   *Mar 1 02:56:09: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet3/0, changed state to down

   *Mar 1 02:56:11: SB0: FastEthernet3/0 state Speak -> Init

   *Mar 1 02:56:13: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet3/0, changed state to up

   *Mar 1 02:56:13: SB0: FastEthernet3/0 state Init -> Listen

   *Mar 1 02:56:14: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet3/0, changed state to down

   *Mar 1 02:56:14: SB0: FastEthernet3/0 state Listen -> Init

   *Mar 1 02:56:20: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet3/0, changed state to up

   *Mar 1 02:56:20: SB0: FastEthernet3/0 state Init -> Listen

   *Mar 1 02:56:30: SB0: FastEthernet3/0 state Listen -> Speak

   *Mar 1 02:56:40: SB0: FastEthernet3/0 state Speak -> Standby

   *Mar 1 02:56:41: SB0: FastEthernet3/0 state Standby -> Active

   *Mar 1 02:56:41: SB: FastEthernet3/0 Adding 0000.0c07.ac00 to address filter

   *Mar 1 02:56:41: SB0:FastEthernet3/0 Hello out 10.144.220.2 Active pri 110 hel 3 hol 10 ip 10.144.220.1

   *Mar 1 02:56:44: SB0:FastEthernet3/0 Hello in 10.144.220.3 Active pri 120 hel 3 hol 10 ip 10.144.220.1

   *Mar 1 02:56:44: SB0: FastEthernet3/0 state Active -> Speak

   

上の出力から、ルータ B の HSRP 状態がアクティブ → スピーク → スタンバイ → アクティブと連続的に変化していることがわかります。

HSRP プロセスはマルチキャスト アドレス 224.0.0.2 を使用して、他の HSRP ルータと hello パケットをやり取りしています。接続性が失われたり、または優先順位の高い HSRP ルータをネットワークに追加したりすると、上記のように HSRP 状態が変化し始める可能性があります。HSRP を特定のルータ プラットフォーム(「注:」を参照)で実行していて、優先順位の高いルータをネットワークに追加すると、優先順位の低いルータの HSRP 状態がアクティブからスピークに変わり、リンク状態が変化します。スイッチのポートはこのリンク状態の変化を検出し、スパニングツリー プロトコルの遷移が起こります。ポートはおよそ 30 秒の時間をかけて、リスニング、ラーニング、フォワーディングの各ステージを通過します。この時間間隔は HSRP hello プロセスのデフォルトのタイムアウトを超えているため、優先順位の低いルータはスタンバイ状態に達した後、アクティブ ルータから hello パケットがまったく受信されないため、アクティブ状態になります。

ルータ同士が互いの HSRP hello パケットを検出しないため、双方ともアクティブになります。スイッチ ポートがラーニング状態に遷移したときに、2 つの異なるポートから同じ仮想 MAC アドレスが検出される可能性があります。

注:HSRP 状態の変化に起因する物理的なリンク状態の変化は、特に Cisco 2600、Cisco 3600、Cisco 7200 の各シリーズのルータに搭載されている Network Module-Fast Ethernet(NM-FE)インターフェイス上で発生します。Cisco IOS(R) ソフトウェア リリース 12.1(3) 以降ではこの動作は発生しません。

下記のバグ ID のリンクからバグ情報の詳細を見るには、登録ユーザであり、ログインしている必要があります。

詳細については、シスコ バグ ID CSCdr02376 を参照してください。

上で説明した問題を回避するには、次のいずれか 1 つの対策を実行してください。

  1. set spantree portfast enable を設定します。これにより、スイッチがスパニングツリーの各状態をバイパスして直接フォワーディング状態に移行できます。このインターフェイスまたはポート上でパケットをブリッジングするようにルータを設定している場合には、この方法は使用できません。このリンク上でただちにフォワーディング状態に移行すると、ネットワークで転送ループの停止が起こりやすくなる可能性があるためです。

    注:この制限は、他のスイッチやブリッジに接続しているスイッチ ポートにも適用されます。

  2. HSRP タイマーを、スパニングツリーの転送遅延(デフォルトは 15 秒)が HSRP ホールドタイム(デフォルトは 10 秒)の半分未満になるように変更します。HSRP ホールドタイムとして 40 秒を推奨します。

    注:HSRP ホールドタイムを増やすと、アクティブ ルータがダウンしたことを検出してスタンバイ ルータをアクティブにする際に HSRP の動作速度が低下します。

  3. パケット ストームがネットワーク上で発生しないようにします(IPX はパケット ストームを起こしやすい傾向があります)。

  4. standby use-bia コマンドを設定します。これにより、HSRP のアクティブ ルータが焼き込みアドレスを強制的に使用します。この結果、2 つのことが実現します。HSRP は MAC アドレス フィルタ リストに対してユニキャスト MAC アドレスを変更(または追加)する必要がないため、イーサネット インターフェイスがリセットされません。また、スイッチは 2 つの異なるポートに付けられた同じアドレスを学習しません。詳細については、「standby use-bia コマンドとは何ですか?(English)」を参照してください。

standby use-bia コマンドの使用には次の欠点があります。

  • ルータがアクティブになると、仮想 IP アドレスが異なる MAC アドレスに移動します。新しいアクティブ ルータは gratuitous Address Resolution Protocol(ARP)応答を送信しますが、必ずしもすべてのホスト実装が gratuitous ARP を正しく処理できるとは限りません。

  • standby use-bia を設定すると、プロキシ ARP を使用できません。スタンバイ ルータは、故障したルータのプロキシ ARP データベースが失われた場合、それを補うことができません。

  • 内部的な制限のため、Multilayer Switch Feature Card 2(MSFC2)では standby use-bia コマンドはサポートされていません。


関連するシスコ サポート コミュニティ ディスカッション

シスコ サポート コミュニティは、どなたでも投稿や回答ができる情報交換スペースです。


関連情報


Document ID: 13782