IP : Cisco Express Forwarding(CEF)

Cisco Express Forwarding を使用したパラレル リンク上のロード バランシングに関するトラブルシューティング

2016 年 10 月 28 日 - 機械翻訳について
その他のバージョン: PDFpdf | ライター翻訳版 (2008 年 4 月 7 日) | 英語版 (2015 年 12 月 19 日) | フィードバック


目次


概要

この資料にどのように Cisco IOS 明白にされていますか。 ソフトウェアは Cisco Express Forwarding を使用するとき複数のパラレル リンクを渡るレイヤ3 ロード バランシングを設定します。

前提条件

要件

このドキュメントの内容は、シスコ エクスプレス フォワーディングの 2 つのデータ構造について理解していることが前提となっています。

  • 転送情報ベース(FIB)

  • 隣接テーブル

オペレーションの Cisco Express Forwarding 外観についてはこの資料の「関連情報」セクションを参照して下さい。

使用するコンポーネント

このドキュメントは、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。

このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されたものです。 このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。 対象のネットワークが実稼働中である場合には、どのような作業についても、その潜在的な影響について確実に理解しておく必要があります。

表記法

ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。

背景説明

Cisco IOS では、ルータを介してパケットを転送するために、内部メカニズムとして IP スイッチングを使用します。 使用するメカニズムには、プロセススイッチング、ファースト スイッチング、そして CEF があります。 多くのパケットをスイッチするために、3 つのメカニズムのいずれを使用するかによって、システム全体のパフォーマンスとロード バランシングに与える影響が決まります。

IP スイッチングのメカニズムでは、パケット単位および宛先単位という 2 つの一般的なモードをサポートしています。 次のテーブルでは、両方のモードについて、利点と不都合の概略を示します。

宛先単位 パケット単位
IP スイッチングのメカニズム 宛先単位でのファースト スイッチングおよび CEF パケット単位でのプロセス スイッチングおよび CEF
利点 ファースト スイッチングの場合、複数のパスが有効な場合でも、与えられた宛先に対して同一のパスを使用することが保証されます。 CEF スイッチングの場合、複数のパスが有効な場合でも、与えられた発信元ホストと宛先ホストのペアに対して同一のパスを使用することが保証されます。 異なるペアに対するトラフィックは、別のパスを使用する傾向があります。 パケット単位のロード バランシングによるパスの使用では、ルータが個々のホストやユーザのセッションを考慮することなく連続してデータ パケットを送信できるため、好ましいものです。 各パケットが宛先に到達するためのパスの決定には、ラウンドロビン方式が使用されます。
短所 ファースト スイッチングの場合、宛先単位のスイッチングでは、ある宛先へのパケットが毎回同じパスを辿るため、不均等なロード シェアリングが発生することがあります。 CEF スイッチングでは、発信元と宛先のペアの数が少ない場合に、不均等な分配が生じることがあります。 宛先別のロード バランスをとることはトラフィックの統計的な分配によって決まります; 発信元と宛先のペアの数が増加した場合は、ロード シェアリングが効果的です。 与えられた発信元ホストと宛先ホストのペアに対するパケットは、異なるパスを取る場合があり、パケットの並び替えが発生することがあります。 この方法は、順序どおりの配送が要求される Voice over IP(VoIP)などのフローには推奨されません。

ロード バランシングとは

ロード バランシングとは、ルータが複数のパスを経由してパケットを宛先の IP アドレス(IP プレフィクスとも呼ばれる)に送信する機能を意味します。

ロード バランシングについて説明する前に、次の用語を定義しておきます。

用語 定義
Prefix 192.16.10.0/24 のような宛先IP ネットワークを、記述します。 Cisco IOS では、ダイナミック ルーティング プロトコルを使用したメッセージ交換や、手作業によるスタティック ルートの設定によって得られた情報を使用して、ルーティング テーブルに宛先の IP プレフィクスを付加しています。
Path ある宛先プレフィクスへ到達するための有効な経路を意味します。 Cisco IOS では、各パスにコストを割り当てています。 宛先プレフィクスへのアクティブな一連のパスは、コストが均等な場合と不均等な場合があります。
セッション 2 つの IP ノード間での単方向のコミュニケーション フローを意味します。 あるセッションにあるパケットは、すべて同一の発信元と宛先の IP アドレスを使用します。

その他の情報については、「ロード バランシングの機能の仕方」を参照してください。

CEF の前に:複数のパスまたはルートの収集

CEF では、IP ルーティング テーブルにあるパス情報を使用して、複数のリンクの間でトラフィックのバランスを取ります。 このため、適切な CEF ロード バランシングの確認は、IP ルーティング テーブルの内容の確認から始まります。

次のトポロジでは、ルータ A とルータ B の 2 つのルータが、high-level data link control(HDLC; 高レベル データリンク制御)のカプセル化を使用して、3 つのシリアル インターフェイスでバックツーバックに接続されています。

ルータ A ルータ B
interface Ethernet 0 
 ip address  192.168.20.1 255.255.255.0 
! 
interface Serial1 
 ip address 10.10.10.1 255.255.255.0  
! 
interface Serial2 
 ip address 20.20.20.1 255.255.255.0 
! 
interface Serial3 
 ip address 30.30.30.1 255.255.255.0 
 ip ospf cost 100 
! 
router ospf 1 
 network 10.10.10.0 0.0.0.255 area 0 
 network 20.20.20.0 0.0.0.255 area 0 
 network 30.30.30.0 0.0.0.255 area 0 
network 192.168.20.0 0.0.0.255 area 0
interface Serial1 
 ip address 10.10.10.2 255.255.255.0 
 clockrate 2000000 
! 
interface Serial2 
 ip address 20.20.20.2 255.255.255.0 
 clockrate 148000 
! 
interface Serial3 
 ip address 30.30.30.2 255.255.255.0 
 ip ospf cost 100 
 clockrate 148000 
router ospf 1 
 network 10.10.10.0 0.0.0.255 area 0 
 network 20.20.20.0 0.0.0.255 area 0 
 network 30.30.30.0 0.0.0.255 area 0
maximum-paths 1

ルータ A イーサネットインターフェイス IPネットワーク 192.168.20.0 に達するためにルータ B が 1つ以上のパスをどのように選択するか検知 しよう。

  • デフォルトでは、Open Shortest Path First(OSPF)により、宛先への単一の最適なパスがサポートされています。 このシナリオでは、Router B は 1 に等しい最大パスで設定されています。 したがって、Router B は、それが最初にどれを受信したかに基づいて、可能性のある等価パスの中から 1 つのパスのみを選択します。 ルータ B は 192.168.20.0 ネットワークに単一パスとしてシリアル 2 の選択から開始します。 show ip cef コマンドおよび show ip route コマンドを使用して、現在のパスの設定を確認します。

    RouterB#show ip cef  192.168.20.0
    	
     192.168.20.0/24, version 59, cached adjacency to Serial2 
    0 packets, 0 bytes 
      via 20.20.20.1, Serial2, 0 dependencies 
        next hop 20.20.20.1, Serial2 
        valid cached adjacency
    	 
    RouterB#show ip route  192.168.20.0
     
    Routing entry for  192.168.20.0/24 
      Known via "ospf 1", distance 110, metric 74, type intra area 
      Redistributing via ospf 1 
      Last update from 20.20.20.1 on Serial2, 00:03:58 ago 
      Routing Descriptor Blocks: 
      * 20.20.20.1, from 204.204.204.1, 00:03:58 ago, via Serial2 
          Route metric is 74, traffic share count is 1
    
  • OSPF に maximum-paths コマンドを使用して、ルーティング テーブルに複数のパスを許可します。 OSPF では、等コストロード バランシングだけを許しています。 不等コストロード シェアリングを設定するには、Interior Gateway Protocol(IGP; 内部ゲートウェイ プロトコル)として、Enhanced Interior Gateway Routing Protocol/Interior Gateway Routing Protocol(EIGRP/IGRP)を設定します。 IGRP および EIGRP に おける 不等コストパス の 負荷バランシング (バリアンス) を 参照してください。 詳細については。

    RouterB(config)#router ospf 1
    	
    RouterB(config-router)#maximum-paths ? 
      <1-6>  Number of paths 
      
    RouterB(config-router)#maximum-paths 3 
    
    
  • ルーティング テーブルが 192.168.20.0 に 2 つのパスが含まれていることを確認する show ip route コマンドを使用して下さい。

    RouterB#show ip route  192.168.20.0
    	
    Routing entry for  192.168.20.0/24 
      Known via "ospf 1", distance 110, metric 74, type intra area 
      Redistributing via ospf 1 
      Last update from 10.10.10.1 on Serial1, 00:00:11 ago 
      Routing Descriptor Blocks: 
      * 20.20.20.1, from 204.204.204.1, 00:00:11 ago, via Serial2 
          Route metric is 74, traffic share count is 1 
             10.10.10.1, from 204.204.204.1, 00:00:11 ago, via Serial1 
          Route metric is 74, traffic share count is 1 
          
    !--- The route metric is 74 for both paths.
    
    
  • 3 つの等コストのパスをサポートするように OSPF を設定しましたが、show ip route の出力には、アクティブなパスが 2 つしか表示されていません。 この理由を調べるために、show ip ospf interface コマンドを使用します。 シリアル 3 は、シリアル 1 とシリアル 2 よりも高いコストが与えられているため、不均等になっています。

    RouterB#show ip ospf interface s1
    	
    Serial1 is up, line protocol is up 
      Internet Address 10.10.10.4/24, Area 0 
      Process ID 1, Router ID 100.100.100.1, Network Type POINT_TO_POINT, Cost: 64 
      
    RouterB#show ip ospf interface s2
    
    Serial2 is up, line protocol is up 
      Internet Address 20.20.20.2/24, Area 0 
      Process ID 1, Router ID 100.100.100.1, Network Type POINT_TO_POINT, Cost: 64 
      
    RouterB#show ip ospf interface s3
    
    Serial3 is up, line protocol is up 
      Internet Address 30.30.30.2/24, Area 0 
      Process ID 1, Router ID 100.100.100.1, Network Type POINT_TO_POINT, Cost: 100
    
  • show run コマンドを使用して、Serial 3 が ip ospf cost 100 コマンドで設定されているかどうかを確認します。 no ip ospf cost 100 サブインターフェイス コマンドを使用して、シリアル 3 を設定から削除し、すべて 3 つのシリアル リンクのコストを均等にします。

    RouterB#show run interface s3
     
    Building configuration...
     
    Current configuration: 
    ! 
    interface Serial3 
     ip address 30.30.30.2 255.255.255.0 
     no ip directed-broadcast 
     ip ospf cost 100 
     ip ospf interface-retry 0
    
  • show ip route コマンドは 192.168.20.0 ネットワークに今 3 つの等コスト パスを表示する。

    RouterB#show ip route  192.168.20.0
     
    Routing entry for  192.168.20.0/24 
      Known via "ospf 1", distance 110, metric 74, type intra area 
      Redistributing via ospf 1 
      Last update from 10.10.10.1 on Serial1, 00:00:01 ago 
      Routing Descriptor Blocks: 
      * 20.20.20.1, from 204.204.204.1, 00:00:01 ago, via Serial2 
          Route metric is 74, traffic share count is 1 
        30.30.30.1, from 204.204.204.1, 00:00:01 ago, via Serial3 
          Route metric is 74, traffic share count is 1 
        10.10.10.1, from 204.204.204.1, 00:00:01 ago, via Serial1 
          Route metric is 74, traffic share count is

次に、CEF ロード バランシングで、パケットを転送するためにルーティング テーブルの情報が使用される方法を見てみましょう。

CEF ロード シェアリングの設定

CEF では、ロードシェア テーブルを使用してロード バランシングを行っています。 シスコルータでの他のすべてのロード バランシングと同様に、ロード バランシングの決定は発信インターフェイスで行われます。 他のスイッチング方法と異なる点は、CEF では、パスの発信元と宛先の両方のアドレスに基づいてパスが追跡されることです。 簡単に言うと、パスは IP セッションであり、各セッションは論理的に一意な発信元と宛先のアドレスのペアであると言えます。

ロード バランシングが行われる方法を理解するには、まずテーブルが関連付けられている方法を理解する必要があります。 CEF テーブルでは、16 のハッシュ バケット(ロード シェア テーブル)をポイントします。これらのハッシュ バケットは、パラレル パスのための隣接関係テーブルをポイントしています。 詳細は、「CEF ロード バランシングの内容」を参照してください。 スイッチされる各パケットは、発信元アドレスと宛先アドレスのペアに分けられ、ロードシェア テーブルと照合されます。

シスコ エクスプレス フォワーディングのスイッチングには、宛先単位とパケット単位の 2 種類の主なタイプがあります。 1 台のルータで両方のタイプが使用されている場合は、それぞれのタイプごとに固有のロードシェア テーブルが保持されます。

宛先単位のロード バランシングでは、ルータは複数のパスを使用してロード シェアリングを行うことができます。 宛先単位のロード バランシングは、CEF を有効にした際にデフォルトで有効になります。これは、ほとんどの状況で選択されるロード バランシング方法です。 宛先単位のロード バランシングは、統計的なトラフィック分散に依存するため、発信元と宛先のペアの数が増加した場合は、ロード シェアリングが効果的です。

パケット単位のロード バランシングでは、ルータは、個々のホストまたはユーザ セッションを考慮することなく、連続したデータ パケットをパスに送信できます。 各パケットが宛先に到達するためのパスの決定には、ラウンドロビン方式が使用されます。 パケット単位のロード バランシングでは、複数リンク上でのバランシングが確実に行われます。 パケット単位のロード バランシングによるパスの利用はよいものですが、与えられた発信元と宛先のホストのペアに向けたパケットに異なるパスが選択され、これによりパケットの並び替えが発生する場合があります。 このため、パケット単位のロード バランシングは、順序どおりにパケットが宛先に到達することに依存する、VOIP などのデータ トラフィックには適しません。 パケット単位のロード バランシングは、発信元と宛先の単一のペアに対するパスが過負荷にならないように、使用できます。

パケット単位と宛先単位の方法を変更するには、ip load-sharing コマンドを使用します。

7200-1.3(config)#interface fast 0/0
   
7200-1.3(config-if)#ip load-sharing ? 
  per-destination  Deterministic distribution 
  per-packet       Random distribution 
  
7200-1.3(config-if)#ip load-sharing per-packet

変更を確認するには、show cef interface コマンドを使用します。

7200-1.3#show cef interface fast 0/0 
FastEthernet0/0 is up (if_number 3) 
  Corresponding hwidb fast_if_number 3 
  Corresponding hwidb firstsw->if_number 3 
  Internet address is 172.16.81.13/24 
  ICMP redirects are always sent 
  Per packet load-sharing is enabled 
  IP unicast RPF check is disabled 
  Inbound access list is not set 
  Outbound access list is not set 
  IP policy routing is disabled 
  Hardware idb is FastEthernet0/0 
  Fast switching type 1, interface type 18 
  IP CEF switching enabled 
  IP Feature Fast switching turbo vector 
  IP Feature CEF switching turbo vector 
  Input fast flags 0x0, Output fast flags 0x0 
  ifindex 1(1) 
  Slot 0 Slot unit 0 VC -1 
  Transmit limit accumulator 0x0 (0x0) 
  IP MTU 1500

CEF ロード バランシングの内部メカニズム

CEF ロード バランシングを支えている、内部メカニズムを詳しく見てみましょう。

  • 各セッション(上記の表を参照)がアクティブなパスに割り当てられます。

  • セッションのパスへの割り当てが行われます。これには、発信元と宛先の IP アドレスを取得するハッシュ機能に加え、最近の Cisco IOS のリリースではエンドツーエンドのパスの割り当てを無作為に行う一意のハッシュ ID が使用されます。

  • アクティブなパスが、16 のハッシュ バケットのうちのいくつかに内部的に割り当てられます。 パスのバケットへの割り当ては、ロード バランシングのタイプとアクティブなパスの数によって変わります。

  • ハッシュ機能を使用した結果は、有効なバケットの 1 つ、つまりセッションに使用するパスを選択するために使用されます。

  • ルータによって転送されるすべてのセッションに対して、それぞれのアクティブ パスが同じ番号のセッションを搬送します。

これらの CEF の内容の例を見てみましょう。

  1. 宛先プレフィクスに対するアクティブ パスの数を 2 つに減らすには、maximum-paths コマンドを使用します。

    RouterB(config)#router ospf 1
    RouterB(config-router)#maximum-paths 2
    
  2. show ip cef {プレフィクス} internal コマンドを使用して、パスのバケットへの割り当てを表示します。

    RouterB#show ip cef  192.168.20.0 internal 
     192.168.20.0/24, version 66, per-destination sharing 
    0 packets, 0 bytes 
      via 20.20.20.1, Serial2, 0 dependencies 
        traffic share 1 
        next hop 20.20.20.1, Serial2 
        valid adjacency 
      via 30.30.30.1, Serial3, 0 dependencies 
        traffic share 1 
        next hop 30.30.30.1, Serial3 
        valid adjacency 
      0 packets, 0 bytes switched through the prefix 
      Load distribution: 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 (refcount 1) 
      
    !--- The load distribution line summarizes how each path is 
    !--- assigned to the hash buckets.
    
      
    
      Hash  OK  Interface                 Address         Packets 
      1     Y   Serial2                   point2point           0 
      2     Y   Serial3                   point2point           0 
      3     Y   Serial2                   point2point           0 
      4     Y   Serial3                   point2point           0 
      5     Y   Serial2                   point2point           0 
      6     Y   Serial3                   point2point           0 
      7     Y   Serial2                   point2point           0 
      8     Y   Serial3                   point2point           0 
      9     Y   Serial2                   point2point           0 
      10    Y   Serial3                   point2point           0 
      11    Y   Serial2                   point2point           0 
      12    Y   Serial3                   point2point           0 
      13    Y   Serial2                   point2point           0 
      14    Y   Serial3                   point2point           0 
      15    Y   Serial2                   point2point           0 
      16    Y   Serial3                   point2point 

    16 のハッシュ バケットは、ロード バランシングのタイプとアクティブ パスの数によって設定されます。 簡単なケースは、パスの数が偶数の場合です。 16 個のバケットは、アクティブ パスで均等に埋められます。 16 の数がアクティブ パスの数によって割り切れない場合、最後の方の残りのバケットは無効になります。 次の表では、ハッシュ バケットが 2 つまたは 3 つのアクティブ パスを探す方法を示します。

    バケット/パス 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    2 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
    3 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 x

    次の例では、宛先へのパスが 3 つあります。 CEF がハッシュ バケット 16 を削除し、3 つのシリアル リンクがハッシュ バケットの 1 から 15 まで均等に割り当てられていることに注目してください。

    RouterB#show ip cef  192.168.20.0 interface 
     192.168.20.0/24, version 64, per-destination sharing 
    0 packets, 0 bytes 
      via 20.20.20.1, Serial2, 0 dependencies 
        traffic share 1 
        next hop 20.20.20.1, Serial2 
        valid adjacency 
      via 30.30.30.1, Serial3, 0 dependencies 
        traffic share 1 
        next hop 30.30.30.1, Serial3 
        valid adjacency 
      via 10.10.10.1, Serial1, 0 dependencies 
        traffic share 1 
        next hop 10.10.10.1, Serial1 
        valid adjacency 
    
      0 packets, 0 bytes switched through the prefix 
      Load distribution: 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 (refcount 1) 
      
    !--- The active paths are assigned to hash buckets in a 
    !--- round-robin pattern.
    
       
    
      Hash  OK  Interface                 Address         Packets 
      1     Y   Serial2                   point2point           0 
      2     Y   Serial3                   point2point           0 
      3     Y   Serial1                   point2point           0 
      4     Y   Serial2                   point2point           0 
      5     Y   Serial3                   point2point           0 
      6     Y   Serial1                   point2point           0 
      7     Y   Serial2                   point2point           0 
      8     Y   Serial3                   point2point           0 
      9     Y   Serial1                   point2point           0 
      10    Y   Serial2                   point2point           0 
      11    Y   Serial3                   point2point           0 
      12    Y   Serial1                   point2point           0 
      13    Y   Serial2                   point2point           0 
      14    Y   Serial3                   point2point           0 
      15    Y   Serial1                   point2point           0 
      
    !--- Hash bucket 16 has been removed.
     
    
    

    ここでは宛先に対する単一のパスが選択されていますが、シスコ エクスプレス フォワーディングの宛先単位とファースト スイッチングのメカニズムは、パスの選択方法の点で異なっています。 CEF では、発信元と宛先の両方の IP アドレスが考慮されますが、ファースト スイッチングでは宛先の IP アドレスしか考慮されません。

CEF ロード バランシングの検証

ルータ上での CEF ロード バランシングを検証するには、次のステップに従います。

  1. CEF がルータ上でグローバルに有効になっていることを確認します。

    S3-4K-2#show ip cef 
    %CEF not running 
    Prefix                      Next Hop                     Interface 
    
    !--- This output shows Cisco Express Forwarding is not enabled. 
    !--- Use ip cef command in global configuration to enable it.
    
    
    
  2. 特定の発信インターフェイスで、パケット単位または宛先単位のスイッチングが有効になっていることを確認します。 デフォルトは宛先単位です。

    RouterA#show cef interface s1
     
    Serial1 is up (if_number 3)
      Internet address is 10.10.10.1/24 
      ICMP redirects are always sent 
      Per packet loadbalancing is disabled 
      IP unicast RPF check is disabled 
      Inbound access list is not set 
      Outbound access list is not set 
      Interface is marked as point to point interface 
      Hardware idb is Serial1 
      Fast switching type 4, interface type 40 
      IP CEF switching enabled 
     
     !--- Cisco Express Forwarding is enabled on the interface. 
    
      IP CEF Fast switching turbo vector 
      Input fast flags 0x0, Output fast flags 0x0 
      ifindex 5(5)
      
    Slot 0 Slot unit 1 VC -1 
      
      Transmit limit accumulator 0x0 (0x0) 
      IP MTU 1500 
  3. ルーティング テーブルと CEF フォワーディング テーブルに、すべてのパラレル パスが含まれていることを、show ip route コマンドを使って確認します。

    RouterB#show ip route 192.168.20.0 
    Routing entry for 192.168.20.0/32, 1 known subnets 
     
    O       192.168.20.1 [110/65] via 20.20.20.1, 00:06:54, Serial1 
                         [110/65] via 10.10.10.1, 00:06:54, Serial2 
                         [110/65] via 30.30.30.1, 00:06:54, Serial3 
    
  4. show ip cef コマンドを使用して、CEF FIB を確認します。

    RouterB#show ip cef 192.168.20.0
    192.168.20.0/24, version 18, per-destination sharing
    0 packets, 0 bytes
      via 30.30.30.1, Serial3,   0 dependencies
        traffic share 1
        next hop 30.30.30.1, Serial3
        valid adjacency
      via 20.20.20.1, Serial2, 0 dependencies
        traffic share 1
        next hop 20.20.20.1, Serial2
        valid adjacency
      via 10.10.10.1, Serial1, 0 dependencies
        traffic share 1
        next hop 10.10.10.1, Serial1
        valid adjacency
      0 packets, 0 bytes switched through the prefix
      tmstats: external 0 packets, 0 bytes
               internal 0 packets, 0 bytes
    
    
    RouterB#show ip cef 192.168.20.0 internal
    192.168.20.0/24, version 18, per-destination sharing
    0 packets, 0 bytes
      via 30.30.30.1, Serial3, 0 dependencies
        traffic share 1
        next hop 30.30.30.1, Serial3
        valid adjacency
      via 20.20.20.1, Serial2, 0 dependencies
        traffic share 1
        next hop 20.20.20.1, Serial2
        valid adjacency
      via 10.10.10.1, Serial1, 0 dependencies
        traffic share 1
        next hop 10.10.10.1, Serial1
        valid adjacency
    
      0 packets, 0 bytes switched through the prefix
      tmstats: external 0 packets, 0 bytes
               internal 0 packets, 0 bytes
      Load distribution: 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 (refcount 1)
    
      Hash  OK  Interface                 Address         Packets
      1     Y   Serial3                   point2point           0
      2     Y   Serial2                   point2point           0
      3     Y   Serial1                   point2point           0
      4     Y   Serial3                   point2point           0
      5     Y   Serial2                   point2point           0
      6     Y   Serial1                   point2point           0
      7     Y   Serial3                   point2point           0
      8     Y   Serial2                   point2point           0
      9     Y   Serial1                   point2point           0
      10    Y   Serial3                   point2point           0
      11    Y   Serial2                   point2point           0
      12    Y   Serial1                   point2point           0
      13    Y   Serial3                   point2point           0
      14    Y   Serial2                   point2point           0
      15    Y   Serial1                   point2point           0
    

    上記のロードシェアテーブルは負荷分散に 0 1 2 0 1 2.を示します。 が示されており、さらに各ルートでのトラフィックのシェアが 1 であることが示されています。 このことは、3 つの等コストのルート間で、等コストの宛先単位ロード シェアリングが行われることを示します。

  5. シスコ エクスプレス フォワーディングの隣接関係を確認します。

    RouterB#show adjacency detail
    Protocol Interface                 Address
    IP       Serial1                   point2point(11)
                                       0 packets, 0 bytes
                                       0F000800
                                       CEF   expires: 00:02:31
                                             refresh: 00:00:31
    IP       Serial2                   point2point(11)
                                       0 packets, 0 bytes
                                       0F000800
                                       CEF   expires: 00:02:31
                                             refresh: 00:00:31
    IP       Serial3                   point2point(11)
                                       0 packets, 0 bytes
                                       0F000800
                                       CEF   expires: 00:02:31
                                             refresh: 00:00:31
  6. 予想される CEF ロードバランシング メカニズムが、すべての発信インターフェイスで設定されていることを確認します。

    RouterB#show ip cef  192.168.20.0
    
     192.168.20.0/24, version 89, per-destination sharing 
    0 packets, 0 bytes 
      via 10.10.10.1, Serial1, 0 dependencies 
        traffic share 1 
        next hop 10.10.10.1, Serial1 
        valid adjacency 
      [output omitted]
  7. ハッシュ バケットのアカウンティングを有効にし、ネットワークでの CEF パターンが分かりやすくなるように統計情報を収集します。 たとえば、宛先に対するスイッチされたパケットの数やバイト数、あるいは宛先を経由してスイッチされたパケットの数などの情報を収集したい場合があります。 次のコマンドを使用します。

    router(config)# ip cef accounting load-balance-hash
    

    Packet フィールドの下の値を見て、パケットのフローを確認します。

    RouterB#show ip cef 192.168.20.0 internal
    [...]
    
      Load distribution: 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 (refcount 1)
    
      Hash  OK  Interface                 Address         Packets
      1     Y   Serial                    point2point           0
      2     Y   Serial2                   point2point           0
      3     Y   Serial1                   point2point           0
      4     Y   Serial3                   point2point           0
      5     Y   Serial2                   point2point          35
      6     Y   Serial1                   point2point           0
      7     Y   Serial3                   point2point           0
      8     Y   Serial2                   point2point          60
      9     Y   Serial1                   point2point           0
      10    Y   Serial3                   point2point           0
      11    Y   Serial2                   point2point           0
      12    Y   Serial1                   point2point           0
      13    Y   Serial3                   point2point           0
      14    Y   Serial2                   point2point          30
      15    Y   Serial1                   point2point           0

    125 のパケットはシリアル 2.をフローしました。 トラフィックを生成したらのに PING を使用する場合 pingパケットが Cisco Express Forwarding スイッチ ルータを通過する必要があるようにして下さい。 つまり、ping パケットはある CEF スイッチ インターフェイスから入力され、CEF スイッチされて、他の CEF スイッチ インターフェイスから送信される必要があります。

    発信元と宛先のペアが増えるに連れて、宛先単位のロード シェアリングがより効果的です。

  8. プレフィクスにトラフィックを送信している間に、show interface コマンドの出力を得ます。 「txload」と「rxload」の値を調べます (インターフェイスによっては、「load」の値を 1 つだけ表示しているものもあります。これは、送信と受信の両方が考慮されています)。 パケット単位のロード バランシングではパケットの数を均等に分配しますが、パラレル リンクではパケットのサイズによってわずかに不均等な割合トが見られる場合があります。

    Serial1/0:0 is up, line protocol is up
    reliability 255/255, txload 10/255, rxload 3/255
     
    Serial1/1:0 is up, line protocol is up
    reliability 255/255, txload 18/255, rxload 3/255
    
    
  9. CEF 宛先単位ロード バランシングでは、次のコマンドを使用して、セッションが割り当てられるパスを決めることができます。 キーワードとして internal を追加し、使用されているハッシュ バケットを表示します。

    show ip cef exact-route {source-ip-address} {dest-ip-address} [internal]
     
    RouterB# show ip cef exact-route 50.50.50.2 192.168.20.1  internal
    50.50.50.2      -> 192.168.20.1   : Serial9/0 (next hop 20.20.20.1)
                                        Bucket 4 from 15, total 3 paths
    RouterB# show ip cef exact-route 5.5.5.1 192.168.20.1  internal   
    5.5.5.1         ->192.168.20.1   : Serial9/0 (next hop 20.20.20.1)
                                        Bucket 7 from 15, total 3 paths
    RouterB# show ip cef exact-route 6.6.6.1 192.168.20.1  internal
    6.6.6.1         -> 192.168.20.1   : Serial9/0 (next hop 20.20.20.1)
                                        Bucket 7 from 15, total 3 paths
    RouterB# show ip cef exact-route 8.8.8.1 192.168.20.1  internal
    8.8.8.1         -> 192.168.20.1   : Serial9/0 (next hop 20.20.20.1)
                                        Bucket 13 from 15, total 3 paths
    
  10. 出力された内容が不均等である場合は、次のことを考慮してください。

    • 一意の発信元と宛先アドレスのペア、またはパラレル リンクを通過するセッションの数。

    • 各セッションのパケットの数とサイズ。 1 つのセッションに膨大な数のパケットがありませんか。 宛先単位のロード バランシングは統計的なトラフィック分散に依存し、発信元と宛先のペアの数が増加した場合にはロード シェアリングが効果的です。

リンク変更後のロード シェアリング

ルーティング テーブルの変更によって、宛先へのアクティブ パスの数が調整された場合、シスコ エクスプレス フォワーディングでは、show ip cef {プレフィクス} internal コマンドの出力にあるロード バランス構造をアップデートします。 次に CEF では、新しく着信したパケットを、隣接関係や対応するハッシュ バケットと照合します。 選択されたバケットは、前に使用されたものと同じ場合もあれば、違う場合もあります。

次のステップでは、宛先プレフィクスへのアクティブ パスの数が変更された後に、CEF ロード バランシング情報が更新される方法について説明します。

  1. 宛先プレフィクスが 2 つのパスを経由して到達可能であると仮定します。 パス 1 は非アクティブですが、パス 2 はアクティブで、すべてのトラフィックを搬送しています。

  2. パス 1 が再び使用可能になると、IP ルーティング再収束プロセスが開始されます。

  3. この時点で、CEF によって両方のパスについて負荷のバランスが取られるため、パス 2 を経由する既存のフローは保持されません。これにより、パス 1は使用されないままになります。 つまり、CEF では、あるセッションへのパケットを有効なパス上に転送できることと、選択されているハッシュ バケットによっては、あるフローについて新しいパスを選択できることについては考慮されません。

ロード シェアリング情報が削除されるまでの有効期限

ルーティング テーブル内で変更が行われた後、CEF では、アクティブ パスをハッシュ バケットに割り当てているロード バランシング構造を削除し、再構築します。 再構築プロセスの間にはパケットが失われる場合もあります。show ip cef {プレフィクス} internal コマンドを使用すると、ロード シェアリング情報が削除されるまでの有効期限が表示されます。

router#show ip cef 10.10.128.0 int 
 10.10.128.0/28, version 63, per-destination sharing 
 0 packets, 0 bytes 
   via 10.8.0.31, 0 dependencies, recursive 
     next hop 10.8.2.49, POS0/0/0 
     valid adjacency 
   Load sharing information due for deletion 

Cisco bug ID CSCdm87127 では、デフォルトルート 0.0.0.0 に対するアクティブ パスの数を変更する際に、失われるパケットの数を最小にするという改善が行われています。 とりわけ、CEF では、このルートに対するアクティブ パスの最大数のために、空白の FIB エントリを割り当てています。

既知の問題

CEF ロード バランシングは、4 つのパスの場合には均等になりません。 詳細は、CSCdm87756登録ユーザ専用)を参照してください。

Cisco IOS の 12.0(16)S 以前のバージョンでは、show ip cef exact-route コマンドを入力すると、Cisco 12000 シリーズ インターネット ルータまたは Cisco 7500/RSP シリーズ ルータで Route Processor(RP; ルート プロセッサ)のリロードが生じる場合があります。 この状態は、宛先プレフィクスが再帰的であり、ルータでネクスト ホップへのロード シェアリングが行われている場合に発生します。 詳細は、この問題を解決している「CSCdt80914」を参照してください。

6500 シリーズ プラットフォーム CEF パケットごとの負荷分散でサポートされません。 これはハードウェアの制約が原因であり、現在バランスをとる宛先別のロードだけを持っていることは可能性のあるです。 従って唯一のオプションは負荷分散型分散マルチリンク ポイントツーポイント プロトコル(dMLPPP)またはレイヤ4 フローを使用することです。

ハードウェアによる CEF ロード バランシングのサポート

CEF のパケット単位のロード バランシングは、当初はソフトウェア ベースで転送を行うプラットフォームでサポートされていました。 このようなプラットフォームには、2600、3600、および 7200 シリーズが含まれます。 パケット単位のロード バランシングは、現在はハードウェアでサポートされており、NSE-1 を組み込んだ 7200 シリーズ、7300、および 10000 シリーズで Parallel Express Forwarding(PXF)を使用しています。 Catalyst 6000 シリーズでは、MSFC2 に対する Cisco IOS シスコ エクスプレス フォワーディングの ip load-sharing per-packet、ip cef accounting per-prefix、および ip cef accounting non-recursive コマンドを、MSFC2 上のソフトウェアによってシスコ エクスプレス フォワーディング スイッチされたトラフィックにのみ適用します。 このコマンドは、PFC2 や DFC を装着したスイッチング モジュールでハードウェアのレイヤ 3 スイッチが行われたトラフィックには影響を及ぼしません。 詳細は、『スーパバイザ エンジン 2 での IP ユニキャスト レイヤ 3 スイッチングの設定』を参照してください。

NSE-100 プロセッサ カードを搭載した Cisco 7300 ルータは、PXF では CEF パケット単位のロード バランシングをサポートしていません。 PXF でサポートされるのは宛先単位のロード バランシングだけです。 ただし、ルータの CLI で設定コマンドが使用可能であったため、サポート対象であるかのような誤解を招いていました。 これは修正済みで、Cisco bug ID CSCdx63389 に記録されています。

12000 シリーズで、パケットごとのロード バランシングはエンジン 3 および 4.を除くすべてのレイヤ3 フォワーディング エンジンで利用できます。 各ラインカードは独立 した 転送の決定を作ります。 各 IP フローの実際のルートを表示するには、ハードウェアベースの CEF テーブルを使用しているラインカードの、exec slot X show ip hardware-cef exact-route <発信元> <宛先> コマンドを使用します。


関連情報


Document ID: 18285