この製品のドキュメントセットは、偏向のない言語を使用するように配慮されています。このドキュメントセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブ ランゲージの取り組みの詳細は、こちらをご覧ください。
シスコは世界中のユーザにそれぞれの言語でサポート コンテンツを提供するために、機械と人による翻訳を組み合わせて、本ドキュメントを翻訳しています。ただし、最高度の機械翻訳であっても、専門家による翻訳のような正確性は確保されません。シスコは、これら翻訳の正確性について法的責任を負いません。原典である英語版(リンクからアクセス可能)もあわせて参照することを推奨します。
このドキュメントでは、Cisco Express Forwarding を使用しているときに、Cisco IOS ソフトウェアが複数のパラレル リンク間のレイヤ 3 ロード バランシングを実装する方法について詳しく説明します。
このドキュメントの内容は、シスコ エクスプレス フォワーディングの 2 つのデータ構造について理解していることが前提となっています。
転送情報ベース(FIB)
隣接テーブル
Cisco Express Forwardingの動作の概要については、このドキュメントの「関連情報」セクションを参照してください。
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
このマニュアルの情報は、特定のラボ環境に置かれたデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。実稼動中のネットワークで作業をしている場合、実際にコマンドを使用する前に、その潜在的な影響について理解しておく必要があります。
ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。
Cisco IOS では、ルータを介してパケットを転送するために、内部メカニズムとして IP スイッチングを使用します。使用するメカニズムには、プロセススイッチング、ファースト スイッチング、そして CEF があります。多くのパケットをスイッチするために、3 つのメカニズムのいずれを使用するかによって、システム全体のパフォーマンスとロード バランシングに与える影響が決まります。
IP スイッチングのメカニズムでは、パケット単位および宛先単位という 2 つの一般的なモードをサポートしています。次のテーブルでは、両方のモードについて、利点と不都合の概略を示します。
宛先単位 | パケット単位 | |
---|---|---|
IP スイッチングのメカニズム | 宛先単位でのファースト スイッチングおよび CEF | パケット単位でのプロセス スイッチングおよび CEF |
長所 | ファースト スイッチングの場合、複数のパスが有効な場合でも、与えられた宛先に対して同一のパスを使用することが保証されます。CEF スイッチングの場合、複数のパスが有効な場合でも、与えられた発信元ホストと宛先ホストのペアに対して同一のパスを使用することが保証されます。異なるペアに対するトラフィックは、別のパスを使用する傾向があります。 | パケット単位のロード バランシングによるパスの使用では、ルータが個々のホストやユーザのセッションを考慮することなく連続してデータ パケットを送信できるため、好ましいものです。各パケットが宛先に到達するためのパスの決定には、ラウンドロビン方式が使用されます。 |
デメリット | ファースト スイッチングの場合、宛先単位のスイッチングでは、ある宛先へのパケットが毎回同じパスを辿るため、不均等なロード シェアリングが発生することがあります。CEF スイッチングでは、発信元と宛先のペアの数が少ない場合に、不均等な分配が生じることがあります。宛先単位のロードバランシングは、トラフィックの統計的な分散に依存します。発信元と宛先のペアの数が増加した場合は、ロード シェアリングが効果的です。 | 与えられた発信元ホストと宛先ホストのペアに対するパケットは、異なるパスを取る場合があり、パケットの並び替えが発生することがあります。この方法は、順序どおりの配送が要求される Voice over IP(VoIP)などのフローには推奨されません。 |
ロード バランシングとは、ルータが複数のパスを経由してパケットを宛先の IP アドレス(IP プレフィクスとも呼ばれる)に送信する機能を意味します。
ロード バランシングについて説明する前に、次の用語を定義しておきます。
ターム | 定義 |
---|---|
プレフィックス | 192.16.10.0/24などの宛先IPネットワークについて説明します。Cisco IOSは、ダイナミックルーティングプロトコルを使用したメッセージ交換またはスタティックルートの手動設定によって得られた情報を使用して、宛先IPプレフィックスをルーティングテーブルに追加します。 |
パス | ある宛先プレフィクスへ到達するための有効な経路を意味します。Cisco IOS では、各パスにコストを割り当てています。宛先プレフィクスへのアクティブな一連のパスは、コストが均等な場合と不均等な場合があります。 |
セッション | 2 つの IP ノード間での単方向のコミュニケーション フローを意味します。あるセッションにあるパケットは、すべて同一の発信元と宛先の IP アドレスを使用します。 |
その他の情報については、「ロード バランシングの機能の仕方」を参照してください。
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 |
ルータBが、ルータAのイーサネットインターフェイスIPネットワーク192.168.20.0に到達するための1つ以上のパスを選択する方法を見てみましょう。
デフォルトでは、Open Shortest Path First(OSPF)により、宛先への単一の最適なパスがサポートされています。このシナリオでは、Router B は 1 に等しい最大パスで設定されています。したがって、Router B は、それが最初にどれを受信したかに基づいて、可能性のある等価パスの中から 1 つのパスのみを選択します。ルータ B は、シリアル 2 を 192.168.20.0 ネットワークへの単一の経路として選択することから開始します。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
show ip routeコマンドを使用して、ルーティングテーブルに192.168.20.0への2つのパスが含まれていることを確認します。
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 では、パスの発信元と宛先の両方のアドレスに基づいてパスが追跡されることです。簡単に言うと、パスは IP セッションであり、各セッションは論理的に一意な発信元と宛先のアドレスのペアであると言えます。
ロード バランシングが行われる方法を理解するには、まずテーブルが関連付けられている方法を理解する必要があります。CEF テーブルでは、16 のハッシュ バケット(ロード シェア テーブル)をポイントします。これらのハッシュ バケットは、パラレル パスのための隣接関係テーブルをポイントしています。詳細は、「CEF ロード バランシングの内容」を参照してください。スイッチされる各パケットは、発信元アドレスと宛先アドレスのペアに分けられ、ロードシェア テーブルと照合されます。
注:Cisco Express Forwardingスイッチングには、主に宛先単位とパケット単位の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 ロード バランシングを支えている、内部メカニズムを詳しく見てみましょう。
各セッション(上記の表を参照)がアクティブなパスに割り当てられます。
セッションのパスへの割り当てが行われます。これには、発信元と宛先の IP アドレスを取得するハッシュ機能に加え、最近の Cisco IOS のリリースではエンドツーエンドのパスの割り当てを無作為に行う一意のハッシュ ID が使用されます。
アクティブなパスが、16 のハッシュ バケットのうちのいくつかに内部的に割り当てられます。パスのバケットへの割り当ては、ロード バランシングのタイプとアクティブなパスの数によって変わります。
ハッシュ機能を使用した結果は、有効なバケットの 1 つ、つまりセッションに使用するパスを選択するために使用されます。
ルータによって転送されるすべてのセッションに対して、それぞれのアクティブ パスが同じ番号のセッションを搬送します。
これらの CEF の内容の例を見てみましょう。
宛先プレフィクスに対するアクティブ パスの数を 2 つに減らすには、maximum-paths コマンドを使用します。
RouterB(config)#router ospf 1 RouterB(config-router)#maximum-paths 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 | 0 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ミリ秒 | 10 | 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
3 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 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.
注:宛先に対しては1つのパスを選択しますが、Cisco Express Forwardingの宛先単位およびファーストスイッチングのメカニズムでは、そのパスの選択方法が異なります。CEF では、発信元と宛先の両方の IP アドレスが考慮されますが、ファースト スイッチングでは宛先の IP アドレスしか考慮されません。
ルータ上での CEF ロード バランシングを検証するには、次のステップに従います。
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.
特定の発信インターフェイスで、パケット単位または宛先単位のスイッチングが有効になっていることを確認します。デフォルトは宛先単位です。
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
ルーティング テーブルと 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
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)を示しています。.各ルートのトラフィック共有は1です。このことは、3 つの等コストのルート間で、等コストの宛先単位ロード シェアリングが行われることを示します。
シスコ エクスプレス フォワーディングの隣接関係を確認します。
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
予想される 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]
ハッシュ バケットのアカウンティングを有効にし、ネットワークでの 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 パケットが CEF スイッチ ルータを通過する必要があることに注意してください。つまり、ping パケットはある CEF スイッチ インターフェイスから入力され、CEF スイッチされて、他の CEF スイッチ インターフェイスから送信される必要があります。
注:送信元と宛先のペアの数が増えると、宛先単位のロードシェアリングが効果的になります。
プレフィクスにトラフィックを送信している間に、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
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
出力された内容が不均等である場合は、次のことを考慮してください。
一意の発信元と宛先アドレスのペア、またはパラレル リンクを通過するセッションの数。
各セッションのパケットの数とサイズ。1 つのセッションに膨大な数のパケットがありませんか。宛先単位のロード バランシングは統計的なトラフィック分散に依存し、発信元と宛先のペアの数が増加した場合にはロード シェアリングが効果的です。
ルーティング テーブルの変更によって、宛先へのアクティブ パスの数が調整された場合、シスコ エクスプレス フォワーディングでは、show ip cef {プレフィクス} internal コマンドの出力にあるロード バランス構造をアップデートします。次に CEF では、新しく着信したパケットを、隣接関係や対応するハッシュ バケットと照合します。選択されたバケットは、前に使用されたものと同じ場合もあれば、違う場合もあります。
次のステップでは、宛先プレフィクスへのアクティブ パスの数が変更された後に、CEF ロード バランシング情報が更新される方法について説明します。
宛先プレフィクスが 2 つのパスを経由して到達可能であると仮定します。パス 1 は非アクティブですが、パス 2 はアクティブで、すべてのトラフィックを搬送しています。
パス 1 が再び使用可能になると、IP ルーティング再収束プロセスが開始されます。
この時点で、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 のパケット単位のロード バランシングは、当初はソフトウェア ベースで転送を行うプラットフォームでサポートされていました。このようなプラットフォームには、2600、3600、および 7200 シリーズが含まれます。パケット単位のロード バランシングは、現在はハードウェアでサポートされており、NSE-1 を組み込んだ 7200 シリーズ、7300、および 10000 シリーズで Parallel Express Forwarding(PXF)を使用しています。Catalyst 6000シリーズでは、MSFC2上のCisco IOS Cisco Express Forwarding 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でのパケット単位のロードバランシングはサポートされていません。PXF でサポートされるのは宛先単位のロード バランシングだけです。ただし、ルータの CLI で設定コマンドが使用可能であったため、サポート対象であるかのような誤解を招いていました。これは修正済みで、Cisco bug ID CSCdx63389 に記録されています。
12000 シリーズでは、すべてのレイヤ 3 フォワーディングエンジン上でパケット単位のロード バランシングが行えます。ただし、エンジン 3 と 4 は除きます。各ラインカードは転送の決定を独立して行います。各 IP フローの実際のルートを表示するには、ハードウェアベースの CEF テーブルを使用しているラインカードの、exec slot X show ip hardware-cef exact-route <発信元> <宛先> コマンドを使用します。
改定 | 発行日 | コメント |
---|---|---|
1.0 |
10-Aug-2005 |
初版 |