HSRPとECMPの組み合わせのベストプラクティス


19

Cisco IOSでは、ECMP(または非対称パスの他の原因)とHSRPの組み合わせがデフォルトで壊れています。この設計のデフォルトの動作では、ユニキャストトラフィックが過剰にあふれます。

未知のユニキャストフラッディングを防ぐためにHSRPをECMPで使用するためのベストプラクティスは何ですか?

詳細/背景

多くの施設について、下の最初の図に似たHSRPトポロジがあります。Cisco WANルーターには、他のすべてのサイトへの等コストルートがあります。したがって、常に非対称ルーティングの影響を確認できます。通常、R1をHSRPプライマリに割り当てますが、ECMPはR1またはR2のいずれかを経由するリターントラフィックを許可します。

問題は、PC1がWANを介してリモートiSCSIドライブをマウントすると、トラフィックはR1を介してサイトを離れますが、R2を介して戻る可能性があることです。iSCSIトラフィックがR1を介して戻る限り、問題はありません。

HSRP_Broken_00

この問題は、PC1のトラフィックがR2経由で戻るときに発生します。iSCSIセッションが8:00:00に開始し、両方のルーターと両方のスイッチがPC1のMACを同時に学習すると仮定します。8:00:00から8:00:05の間は、両方のスイッチのCAMテーブルにPC1のMACアドレスがまだあるため、フラッディングの問題はありません。

HSRP_Broken_01

iSCSIセッションが開始してから5分後、PC1のMACのS2のCAMエントリはCAMテーブルから期限切れになり、S2はPC1のトラフィックをすべてのポート(この場合はPo1、Gi0 / 3、Gi0 / 4)にフラッディングします。PC1のiSCSIセッションが多くの帯域幅を消費する場合、この未知のユニキャストフラッディングは、PC3およびPC4へのリンクから重要な容量を吸い込む可能性があります。

Cisco IOSスイッチには、300秒のデフォルトCAMタイマーがあります...

S2# show mac address-table aging-time
Vlan Aging Time
---- ----------
1    300
17   300

ただし、Cisco IOSのデフォルトのインターフェイスARPタイマーは4時間です...

R2# show interface gi0/0
GigabitEthernet0/0 is up, line protocol is up 
  Hardware is AmdP2, address is 000a.dead.beef (bia 000a.dead.beef)
  Internet address is 172.17.1.252/24
  MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec, 
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set
  Keepalive set (10 sec)
  ARP type: ARPA, ARP Timeout 04:00:00       <--------------

したがって、S2は5分後にPC1のiSCSIトラフィックのフラッディングを開始します。

HSRP_Broken_02


なぜ人々は自分自身で質問を投稿し続けてから答えるのですか?いや、答えを探して見つけた人たちは、すでに答えを持っているのか?これはQ&Aサイトであり、ブログではありません(良い記事を提供していないということではありません!)
jwbensley

8
@javano:SEは自己回答を明示的に奨励しています。REF meta.networkengineering.stackexchange.com/questions/4/...
クレイグ・コンスタンティン

1
@CraigConstantineはい彼らは質問を投稿する前にすでに答えを知っていたからです。これは少し奇妙だと思います。
jwbensley

6
それでも、Qと即時の回答を書くことが明示的に奨励されているという事実は残っています。
クレイグコンスタンティン

4
あなたは他の人が直面するだろうと思うという問題を解決した場合は@javano、SEが望んでその問題の解決のための検索エンジンのトラフィックを...彼らは私が同時に答えを投稿するかどうか気にしません...実際、質問Webフォームの下部にある「自分の質問に答える-あなたの知識を共有し、Q&Aスタイル」という小さなチェックボックスがあります
マイクペニントン

回答:


14

簡単な答えは、CAMタイマーを対応するインターフェイスARPタイマーと同じかわずかに長くすることですが、少なくとも3つの異なるオプションから選択できます...

オプション1:すべてのインターフェイスARPタイマーを下げる

このオプションは、適切なサイズのレイヤー2スイッチドネットワーク、適切な数のARPエントリ、およびルーティングされたインターフェイスが少ない場合に最適です。この方法は、PC macエントリがトポロジからすぐに期限切れになるのを確認する場合にも適しています。

  • イーサネットスイッチに面しているすべてのIOSイーサネットインターフェイス: arp timeout 240
  • イーサネットスイッチに面しているすべてのIOSイーサネットインターフェイス:hold-queue 200 inおよびhold-queue 200 out定期的なARP更新中にARPパケットのドロップを回避するため(これらの制限は、一度に処理する必要があると思われるARP更新の数に応じて、より高くまたはより低くなります)。選択的パケット廃棄値を調整する場合は、リンクした論文のガイドラインに従う必要があります。

これにより、特定のARPエントリで発生しなかった場合、Cisco IOSは4分以内にARPテーブルを強制的に更新します。明らかな欠点は、ARPエントリがたくさんある場合、これがうまくスケールしないことです...制限はプラットフォームによって異なります。Catalyst 4500/6500(Layer3 SVI)のルーターごとに何百ものARPを問題なく使用しました。

オプション2:スイッチのCAMタイマーを増やす

このオプションは、多数のARPエントリ(つまり、激しいVMWare環境で見られるような数千)がある場合に最適に機能します。

  • すべてのIOSスイッチ:mac address-table aging-time 14400、またはmac address-table aging-time 14400 vlan <vlan-id>懸念される任意のVLAN。

この変更により、ほとんどの人が300秒(Cisco IOSで)に固定されていると想定するタイマーが調整されるため、これを継続性ドキュメントに必ず含めてください。これの副作用は、PCが削除された後、CAMテーブルエントリが4時間保持されることです(PoVに応じて、良い場合も悪い場合もあります)。4時間が長すぎる場合は、次のオプションを参照してください...

オプション3:インターフェイスARPタイマーとスイッチCAMタイマーの両方を変更する

このオプションは、オプション2の非常に長いCAMタイマーを回避しますが、構成が増えます。900秒、1800秒など、必要なものを選択できます。CAMタイマーとARPタイマーが一致していることを確認してください。したがって、トポロジでオプション1とオプション2の両方を構成する必要があります。


4
最初の提案されたソリューションを選択してこの問題をソートしましたが、IOSがテーブルをクリーンアップする順序がわからなかったため、ARPタイムアウトを293s(mac-address table timeoutの下の最も近い素数)に設定しました。これが良い選択であったかどうかはまだわかりません
マルコマルゼッティ

1
技術的には、Cisco IOSは60秒間隔でARPウォーカーを起動するため、240を使用する必要があります...それを編集に含めるのを怠りました...編集...なぜ素数を選んだのか不思議です...
マイクペニントン

ACK。MACタイムアウト以下のARPタイムアウトはBCPである必要があります。HSRPである必要はありません。2台のルーターがある場合でも、噛み付いてループを引き起こす可能性があります。
ytti

知りませんでした。したがって、私たちのトリックはまったく役に立ちません。タイマーの重複を最小限に抑えるために、素数を選択しました。
マルコマルゼッティ

4
@MikePennington、ありがとう。とにかく、ARPタイムアウト解決は数分で実装されます
マルコマルゼッティ

1

私にとって、ECMPは本当の問題です。したがって、未知のユニキャストフラッディングを制限する上記の手順に加えて、リターントラフィックに対してR2よりもR1が優先されるように、WANへのルートメトリックを調整することもできます。これを実現する1つの方法は、次のようにR2の配布リストを使用することです(例として使用されるEIGRP、他のコマンドを使用したOSPFまたはBGPでも同じことが実現できます)。

!
ip prefix-list R1-PREFER seq 5 permit 172.17.1.0/24
!
ルートマップR1-PREFER-MAP許可10
 一致するIPアドレスのプレフィックスリストR1-PREFER
 メトリックの設定1 1 1 1 1
...(他のすべてのルートを許可)
!
ルーターEIGRP 1
 ....
 distribute-listルートマップR1-PREFER-MAP out Ser1 / 0
 ....
!

これにより、WANは172.17.1.0のすべてのトラフィックをR1に転送します。R1 Se1 / 0に障害が発生した場合、ルートはR2に向かってインストールされます。これらのメトリクスをさらに調整して、R2へのバックアップルートが実際に高速なフェイルオーバーの実現可能な後継になるようにすることができます。HSRPと追跡が出力トラフィックを処理します。


私の質問ではなく、基本的にあなたが望む質問に答えます...これにはfhrpとecmpの両方が必要です
マイク・ペニントン

それについてすみません-私はこのフォーラムに慣れてきて、その要件を逃しました!
smoothbSE

問題ありません。NEへようこそ:)
マイクペニントン

0

HSRPが使用されている場合にECMPを使用しないという考え方は、入力トラフィックが出力トラフィックよりも高い可能性のあるサーバーでは問題ない場合があります。ほとんどの人が単にARPタイマーを設定するのが好きです。レイヤー3スイッチを備えたMDFと2つの収集スイッチを備えたIDFと5つのアクセススイッチを備えている場合、CAMタイマーを台無しにすることができます。


0

スイッチのスタックを使用して、2番目のスイッチのMACアドレスエントリが期限切れになるというこの問題を軽減できます。


0

ああ、私はこれを覚えています。数週間前、このバックに対処するために数週間の楽しみがありました。1つのしわは、STPイベントによってVLANが高速エージングモードになるため、ARPタイマーよりも長いMACタイマーを設定しても効果がないことです。

サーバーからECMPを強制的に戻し、各ルーターに1つのプライマリを持つ2つのフローティングHSRPゲートウェイを作成することで問題を解決しました。次に、各ホストで両方のゲートウェイを構成しました。この方法でホストトラフィックをR1とR2の両方に強制することにより、R2がMACアドレスを期限切れにしないことが保証されます。

理想的には、L2 / 3スイッチが期限切れのMACアドレスに関連付けられたARPエントリをパージした場合、これは問題になりません。IPへの次のパケットは、ARPキャッシュとMACテーブルの両方にデータを取り込む新しいARP要求になります。私が考えるシスコは、最終的にこれを実施したが、私は確かに言うことはできません。


0

要約:MC-LAGまたはHSRP GARP

私はタイマーを微調整することのファンではありませんでした。タイマーは通常多くの理由で特定の方法で設定されます。それらを変更する:

  • どこでも同じものを維持するために潜在的に運用集約的です
  • 物事をより複雑にし、トラブルシューティングを困難にします
  • 最近の解説者が示したように、予期せぬ副作用を引き起こす可能性があります
  • 将来のシスコの機能強化では「うまく機能しない」可能性があります

代わりに:

  1. MC-LAG(シスコのドキュメントでは「MEC」とも呼ばれます)を使用します。これが最適なオプションですが、MC-LAGを使用できる展開シナリオを理解する必要があります(普遍的なソリューションではなく、適切な調査とテストの後にのみ展開する必要があります)。MC-LAGバリアントはハードウェアに依存しています。例は次のとおりです。

    a。スタッキング(Cat 3k)

    b。VSS(Cat4k / 6k)

    c。VPC(ネクサス)

    d。擬似mLACP(ASR1k)

    e。MC-LAG(ASR9k)

    f。クラスタリング(ASA)

  2. HSRPがGratuitous ARPパケットを定期的に送信できるようにします。確かに、これはタイマーの変更に似ていますが、CAMテーブルとARPタイマーの操作よりもはるかに優雅な変更です。(ただし、これはハードウェアとソフトウェアの組み合わせに依存することに注意してください。すべてのHSRP実装がこれを提供するわけではありません。)

    デフォルトでは、HSRPは、ルーターが転送ゲートウェイになってから0、2、および4秒後に3つのGARPを送信します。ただし、GARPの数(「無限」を含む)と間隔を選択できる構成パラメーターがあります。

私は、MC-LAGをかなり広範囲に使用しています。特に、VSS、VPC、およびクラスタリング(私はスタッキングのファンではありません)。

MC-LAGまたはGLBPを使用できない場合、これはキャンパスL2 / L3境界ルーターに適用します(350棟のキャンパスがあるため、Cat6kをかなり頻繁に使用します)。

Cat6k-v15(config)#interface vlan 100
Cat6k-v15(config-if)#standby arp ?
  gratuitous  Setup gratuitous ARP interval and count

Cat6k-v15(config-if)#standby arp gratuitous ?
  count     Set HSRP gratuitous ARP count
  interval  Set HSRP gratuitous ARP interval
  <cr>

Cat6k-v15(config-if)#standby arp gratuitous count ?
  <0-60>  Number of gratuitous ARPs to send after group is activated (0 for continuous)

Cat6k-v15(config-if)#standby arp gratuitous count 0 ?
  count     Set HSRP gratuitous ARP count
  interval  Set HSRP gratuitous ARP interval
  <cr>

Cat6k-v15(config-if)#standby arp gratuitous count 0 interval ?
  <3-1800>  Gratuitous ARP Interval (sec)

Cat6k-v15(config-if)#standby arp gratuitous count 0 interval 60 ?
  count     Set HSRP gratuitous ARP count
  interval  Set HSRP gratuitous ARP interval
  <cr>

Cat6k-v15(config-if)#standby arp gratuitous count 0 interval 60 

(これらすべてへの参照を投稿しますが、このサイトには3つ以上のURLを投稿するほどの「評判」はありません。)


MC-LAGと呼んでいるものは確かにオプションですが、従来のIOSプラットフォームでの可用性は不安定です。また、HSRP Gratuitous ARPがこの問題の解決にどのように役立つかがわかりません。私の質問の例を使用して、HSRP Gratuitous ARPが172.17.1.1のARPエントリタイムアウトをどのように解決するかについて詳しく説明してください。デフォルトのGWは172.17.1.254
Mike Pennington

長い答えなので、これを2つの部分に分けてみましょう。パート1 ... HSRPの問題は、ルーターが仮想MACでARPクエリに応答することです。ただし、ルーターがデータグラムをホストに転送する場合、物理 MACアドレスを使用します。スイッチは転送テーブルをかなり迅速にクリアします(多くの場合300秒、または5分)が、ARPエントリはそれよりはるかに長く続くことがよくあります(8時間が一般的です)。
ウェイリンピエゴルシュ

パート2 ...スイッチが転送テーブルから仮想MACアドレスをタイムアウトすると、サーバーから仮想MACへのトラフィックは「不明なユニキャスト」になり、スイッチはデフォルトでハブのような動作を行い、トラフィックをすべてフラッディングしますポート。定期的にGARPを送信することにより、ルーターはスイッチ転送テーブルを更新します。さらに、GARPを送信することにより、サーバー上のARPテーブルが更新され、ARPクエリを送信する必要がなくなります。
ウェイリンピエゴルシュ

2部構成の回答に続いて、質問が反対方向からの質問であることに気付きました。サーバーのMACアドレスは、ルーターの仮想MACではなく、スイッチからフラッシュされます。この特定の問題があり、最初はMC-LAG(特にVPC)を介して解決しましたが、後にNexusを既に使用していたため、FabricPath別名TRILLに切り替えて問題を解消しました。ただし、どちらもハードウェアおよびトポロジに依存しています。
ウェイリンピエゴルシュ

元のコメントが有効であることに気付いたのですが、残念ながら不完全です。MC-LAGだけでなく、両方の層のMC-LAG。次に、スイッチレベルとルーターレベルの両方で共有CAMテーブルを処理します。
ウェイリン・ピエゴルシュ

0

元のコメントが有効であることに気付いたのですが、残念ながら不完全です。ベンダーに依存しない設計の推奨事項は、長方形ではなく三角形を作成することです。そう:

  1. MC-LAGだけでなく、両方の層のMC-LAG。次に、スイッチレベルとルーターレベルの両方で共有CAMテーブルを処理します。

  2. それができない場合、MC-LAGはルーターまたはスイッチのいずれか、MC-LAGは追加のリンク(ルーターとスイッチ間のフルメッシュ)を使用して他のレイヤーに接続します。STPは、ループのないトポロジを保証します。

  3. それができない場合でも、ルーターとスイッチをフルメッシュのままにします。STPはループのないトポロジを保証し、スイッチのCAMテーブルはすべての適切なMAC転送ルールを認識します。サーバーは常にそのMACを送信し、1分間隔でHSRP GARPを設定すると、スイッチはHSRP vMACを忘れません。

優先オプションはその順序です。ただし、少なくとも、追加のリンクペアをインストールしてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.