ホスト ルートの ECMP の構成

この章では、Cisco NX-OS スイッチでホスト ルートの等コスト マルチパス(ECMP)プロトコルを構成する方法について説明します。

この章は、次の項で構成されています。

ホスト ルートの ECMP に関する情報

ホスト ルートの ECMP サポートを有効にすると、すべてのユニキャスト ホスト ルートは最長プレフィックス一致アルゴリズム(LPM)テーブルにプログラムされます。ホスト ルートの ECMP は、スイッチ ハードウェアで提供されます。hardware profile unicast enable-host-ecmp コマンドを使用して CLI でこの機能を構成します。


(注)  


IPv4(/32)ルートと IPv6(/128)ルート用に ECMP が構成されている場合、ホスト エントリはホスト テーブルではなく LPM ルーティング テーブルに格納されます。


ホスト ルートの ECMP の注意事項

ホスト ルートの ECMP には、以下の構成の注意事項と制限事項があります。

  • [no] hardware profile unicast enable-host-ecmp コマンドを使用してホスト ルートの ECMP を有効または無効にした後、次を実行していることを確認します。

    • copy running-config startup-config command コマンドを使用して、スイッチで構成を保存します。

    • : reload コマンドを使用してスイッチをリロードして、構成を適用できるようにします。

ホスト ルートの ECMP の前提条件

ホスト ルートの ECMP には、次の前提条件があります。

  • このコマンドを使用する前に、 system urpf disable コマンドを使用してスイッチ上のユニキャスト リバース パス フォワーディング(URPF)をグローバルに無効にした後、構成を保存してスイッチをリロードすることを推奨します。URPF をグローバルに無効にすると、LPM 表のサイズが拡張されます。

デフォルト設定

ホスト ルートの ECMP はデフォルトで無効になっています。

ホスト ルートの ECMP の構成

このセクションは、次のトピックで構成されています。

ホスト ルートの ECMP 機能の有効化

ホスト ルート機能の ECMP を有効にすることができます。

手順の概要

  1. configure terminal
  2. (任意) system urpf disable
  3. hardware profile unicast enable-host-ecmp
  4. copy running-config startup-config
  5. reload

手順の詳細

  コマンドまたはアクション 目的

ステップ 1

configure terminal

例:

switch# configure terminal
switch(config)#

グローバル コンフィギュレーション モードを開始します。

ステップ 2

(任意) system urpf disable

例:

switch(config)# system urpf disable
(任意)

スイッチで URPF をグローバルに無効にします。

ステップ 3

hardware profile unicast enable-host-ecmp

例:

switch(config)# hardware profile unicast enable-host-ecmp

スイッチ上でホスト ルートの ECMP をグローバルに有効にします。

ステップ 4

copy running-config startup-config

例:

switch(config)# copy running-config startup-config

この設定変更を保存します。

ステップ 5

reload

例:

switch(config)# reload
WARNING: This command will reboot the system
Do you want to continue? (y/n) [n] y

Cisco Nexus 3000 シリーズ スイッチ ソフトウェアをリロードします。

ホスト ルート機能の ECMP の無効化

ホスト ルート機能の ECMP を無効にすることができます。

手順の概要

  1. configure terminal
  2. no hardware profile unicast enable-host-ecmp
  3. copy running-config startup-config
  4. reload

手順の詳細

  コマンドまたはアクション 目的

ステップ 1

configure terminal

例:

switch# configure terminal
switch(config)#

グローバル コンフィギュレーション モードを開始します。

ステップ 2

no hardware profile unicast enable-host-ecmp

例:

switch(config)# no hardware profile unicast enable-host-ecmp

スイッチでホスト ルートの ECMP をグローバルに無効化し、すべての関連構成を削除します。

ステップ 3

copy running-config startup-config

例:

switch(config)# copy running-config startup-config

この設定変更を保存します。

ステップ 4

reload

例:

switch(config)# reload
WARNING: This command will reboot the system
Do you want to continue? (y/n) [n] y

Cisco Nexus 3000 シリーズ スイッチ ソフトウェアをリロードします。

重み付け ECMP over BGP の構成

ECMP は、異なるネクストホップを持ち、同じ宛先への複数のルートを許可し、ルーティングされたトラフィックをそれらの複数のネクスト ホップにロード バランシングするメカニズムです。負荷エントロピーは、リンク使用効率を最大化する最良の方法です。

多くの場合、ネットワーク内のアプリケーションの分散は不均衡になりがちです。新しいクラスタは、古いクラスタとは異なるオーバーサブスクリプション率でロールインします。新しいクラスタには、古いクラスタよりも強力なサーバーがあり、CPU ごとにより多くの負荷を処理できます。ネットワークは完全ではないため、ルーティング動作をある程度制御する必要があります。トラフィックの負荷を分散し、ルーティング動作の制御を管理するために、BGP 経由の加重 ECMP を構成できます。

この展開では、次の使用例が考慮されています。

  • リソースの不均等な分散

  • SDN または非同種ファブリック

重み付け ECMP over BGP の構成

ECMP は、異なるネクストホップを持ち、同じ宛先への複数のルートを許可し、ルーティングされたトラフィックをそれらの複数のネクスト ホップにロード バランシングするメカニズムです。負荷エントロピーは、リンク使用効率を最大化する最良の方法です。

多くの場合、ネットワーク内のアプリケーションの分散は不均衡になりがちです。新しいクラスタは、古いクラスタとは異なるオーバーサブスクリプション率でロールインします。新しいクラスタには、古いクラスタよりも強力なサーバーがあり、CPU ごとにより多くの負荷を処理できます。ネットワークは完全ではないため、ルーティング動作をある程度制御する必要があります。トラフィックの負荷を分散し、ルーティング動作の制御を管理するために、BGP 経由の加重 ECMP を構成できます。

この展開では、次の使用例が考慮されています。

  • リソースの不均等な分散

  • SDN または非同種ファブリック

SDN/非同種ファブリック

SDN/非同種ファブリックの場合、次の例を検討してください。

  • VIP1(任意のサービス)のインスタンスが 2 つあります。

  • サーバーの NIC IP アドレスは、VIP のネクスト ホップ(NH)としてアドバタイズされます。

  • VIP1 は、データセンター全体に均等に展開されます。

  • クラスタ 1 は 3:1 オーバーサブスクライブされ、クラスタ 2 は 12:1 オーバーサブスクライブされています。

その結果、従来の ECMP ではトラフィックを最適に配信できません。

使用例に対する解決策

ユースケースでリソースの不均等な分散と最適ではないトラフィック分散が発生している場合の解決策は、BGP 上で重み付き ECMP を構成することです。各インスタンスの重みは、(ホストまたはコントローラから)VIP ルートを挿入して通知できます。その後、インフラストラクチャ全体の重みを集計し、アプリケーション展開の分布に比例するようにトラフィックを配信できます。

重み付け ECMP over BGP の構成に関する注意事項と制限事項

BGP 上で重み付け ECMP を構成する場合は、次の注意事項を参照してください。

  • Cisco Nexus 3100 プラットフォーム スイッチは、非復元モードでのみ重み付け ECMP をサポートします。

  • BGPは、draft-ietf-idr-link-bandwidth-06.txtで定義されているリンク帯域幅EXTCOMMを使用して、重み付けECMP機能を実装します。

  • 重み付け ECMP 機能は、IPv4 アドレスファミリのみでサポートされます。

  • iBGP ピアと eBGP ピアの両方からリンク帯域幅 EXTCOMM を受け入れることができます。

  • BGP 更新でリンク帯域幅 EXTCOMM を送信しないでください。BGP コントローラ/ピアは、すべてのルータにリンク帯域幅を送信します。

  • 重み付けプログラミングの場合、リンク帯域幅 EXTCOMM には、RIB にダウンロードする前に整数を使用して kbits/秒に変換される 4 バイトの浮動小数点整数としてバイト/秒でエンコードされたリンク帯域幅があります。

  • ハードウェア ECMP 幅は 64 サイズに固定されています。

リンク帯域幅 EXTCOMM フィールドの表示

リンク帯域幅の EXTCOMM フィールドの表示については、次の例を参照してください。

Link Bandwidth EXTCOMM fields:
Link Bandwidth attribute – “40 04 00 64 47 80 00 00”
Where “40 04” specifies a Link Bandwidth EXTCOMM
Where “00 64” specifies a AS #.
Where “47 80 00 00” specifies the Link Bandwidth value as floating point integer.
The Link Bandwidth floating point value bits are encoded as follows:
#define IEEE_NUMBER_WIDTH 32 /* bits in number */
#define IEEE_EXP_WIDTH 8 /* bits in exponent */
#define IEEE_MANTISSA_WIDTH (IEEE_NUMBER_WIDTH - 1 - IEEE_EXP_WIDTH)
#define IEEE_SIGN_MASK 0x80000000
#define IEEE_EXPONENT_MASK 0x7F800000
#define IEEE_MANTISSA_MASK 0x007FFFFF
Link Bandwidth value programmed to RIB is calculated as follows:
uint32_t ieee_bw_32 = ntohl(GETLONG(&extcomm->value[4])); = 0x47800000
int64_t dmzlink_bw_64 = ptr_ieee_to_int64(&ieee_bw_32); = 65536
uint32_t value = 520 = (uint32_t)((dmzlink_bw_64 / 1000) * 8) = 520

ダイナミック ECMP グループのサイズ変更の構成

ダイナミック ECMP グループのサイズ変更機能を構成すると、Cisco Nexus 3000 シリーズ スイッチおよび Cisco Nexus 3100 プラットフォーム スイッチでより多くの ECMP グループを構成できます。最大 1022 個の ECMP グループを構成できます。ECMP グループのサイズはハードウェアで固定されていません。


(注)  


  • Cisco Nexus 3000 シリーズ スイッチでは、ダイナミック ECMP グループのサイズ変更機能がデフォルトで有効になっています。Cisco Nexus 3100 プラットフォーム スイッチでは、ダイナミック ECMP グループのサイズ変更機能を非復元モードで使用できます。


Cisco Nexus 3100 プラットフォーム スイッチでより多くの数の ECMP グループを構成するために、次の新しい CLI コマンドが導入されました。

(config)# no hardware profile ecmp resilient
Warning: The command will take effect after next reload.
(config)#

ダイナミック ECMP グループのサイズ変更の確認

次のコマンドを使用して、ECMP グループの構成を確認します。

# show hardware profile status
slot 1
=======
 
Total LPM Entries = 7679.
Total Host Entries = 16384.
Reserved LPM Entries = 1024.
Max Host4/Host6 Limit Entries (shared)= 8192/4096*
Max Mcast Limit Entries = 4096.
Max Ucast IPv6 LPM Limit Entries = 2048.
Max Ucast IPv6 LPM_65_to_127 Limit Entries = 128.
Used LPM Entries (Total) = 4.
Used IPv4 LPM Entries = 1.
Used IPv6 LPM Entries = 2.
Used IPv6 LPM_65_to_127 Entries = 1.
Used Host Entries in LPM (Total) = 0.
Used Host4 Entries in LPM = 0.
Used Host6 Entries in LPM = 0.
Used Mcast Entries = 0.
Used Mcast OIFL Entries = 0.
Used Host Entries in Host (Total) = 0.
Used Host4 Entries in Host = 0.
Used Host6 Entries in Host = 0.
Max ECMP Table Entries = 1022.
Used ECMP Table Entries = 0.
Max ECMP Next Hop Table Entries = 16384.
Used ECMP Next Hop Table Entries = 0.
MFIB prefer-source-tree = Disabled/0/0.
 
*Unicast Host Table is in shared mode b/n v4 & v6...
#

ホスト ルートの ECMP 構成の確認

ホスト ルートの ECMP の構成情報を表示するには、次のいずれかの作業を行います。

コマンド

目的

show hardware profile status

ハードウェア テーブルのユニキャストおよびマルチキャスト ルーティング エントリを表示します。

show running-config

実行中のシステム構成を表示します。

ホスト ルートに ECMP を構成する例

次に、URPF を無効にし、ホスト ルートに ECMP を構成する例を示します。

switch# configure terminal
switch(config)# system urpf disable
switch(config)# hardware profile unicast enable-host-ecmp
switch(config)# copy running-config startup-config
switch(config)# reload

次に、ホスト ルートの ECMP を無効にする例を示します。

switch# configure terminal
switch(config)# no hardware profile unicast enable-host-ecmp
switch(config)# copy running-config startup-config
switch(config)# reload

その他の参考資料

ホスト ルートの ECMP の実装に関する詳細情報については、次の各項を参照してください。