コントロール プレーン保護の概要
ルーティングの安定性を確保するには、重要なコントロール プレーンおよび管理トラフィックが確実に Cisco 7600 ルータのルート プロセッサ(RP)またはスイッチ プロセッサ(SP)CPU に到達することが不可欠です。また、IP オプション、Time to Live(TTL)パケット、エラーのあるパケット、レイヤ 2 ブロードキャストおよびマルチキャスト パケットなどのトラフィックも RP に転送され、輻輳を引き起こすので、そのようなトラフィックは制御する必要があります。コントロール プレーンの保護には、不要なトラフィックから RP や SP を保護し、さらに、重要なコントロール プレーンおよび管理トラフィックを RP または SP に確実に配信することが必要です。
7600 で DOS からの保護を行うには、次のコントロールプレーン保護メカニズムをイネーブルにします。
• Modular QoS Command Line(MQC; モジュラ QoS コマンド ライン)を使用する Control Plane Policing(CoPP; コントロール プレーン ポリシング)
• Multi Layer Switching(MLS; マルチ レイヤ スイッチング)レート リミッタ
• MLS プロトコル ポリシング
• ブロードキャストおよびマルチキャスト ストーム制御
• Selective Packet Discard(SPD; 選択的パケット廃棄)
デフォルトでは、コントロール プレーン保護メカニズムの基本セットだけがイネーブルになります。コントロール プレーン メカニズムは、必要に応じてカスタマイズする必要があります。
Cisco 7600 におけるコントロール プレーン保護の実装
ここでは、コントロール プレーン保護を実装するために Cisco 7600 ルータで使用できるメカニズムについて、また、c7600 ルータ内のパケット フローについて説明します。コントロール プレーン保護はさまざまなステージで実装でき、通常は、パケットを分析して、ルート プロセッサに転送(パケットをパント)するときに適用されます。パケットをパントする決定は、Policy Feature Card(PFC; ポリシー フィーチャ カード)または DFC レベル、あるいは RP または SP の IOS プロセス レベルで行われます。パケットのパントが決定されたら、ポリシングとレート制限を使用してコントロール プレーン保護を実装できます。インターフェイスにトラフィック ストーム制御、アクセス コントロール リスト(ACL)、または入力 Quality of Service(QoS)を設定し、不要なデータ パケットをドロップすることによって、パントが決定される前にコントロール プレーン保護を適用することもできます。
次の項では、Cisco 7600 ルータにおける SP または RP の IOS プロセス レベルへのパケットのパスについて説明します。データ パケットのパスを理解しておくと、コントロール プレーン保護をより適切に設定できます。
制御パケットのパス
図 40-1 に、c7600 ルータの基本的なアーキテクチャと、パケットのパント パスにおけるアクションを示します。
図 40-1 パントされたパケットのパス
PFC または DFC での転送決定に至る、パントされたパケットのパスは、送信パケットのパスと似ています。パケットが RP または SP CPU にパントされる必要があると PFC または DFC で判断された場合、入力ラインカードはスイッチ ファブリック経由でアクティブ スーパーバイザのファブリック インターフェイスまたはバス インターフェイスにパケットを転送します。その後、パケットはパケット ASIC を通過して RP または SP CPU に到達します。
ラインカードによるコントロール パネル保護のサポート
ここでは、コントロール プレーン保護に影響する、C7600 にサポートされているラインカード上の QoS 機能およびその他の機能について説明します。
LAN カード
ユニキャスト、ブロードキャスト、またはマルチキャスト ストーム制御は、LAN カードのポートの特定用途向け集積回路(ASIC)に実装されます。ストーム制御の結果としてドロップされたパケットは、DFC または PFC の EARL に到達しません。パケットはまず、ポート ASIC を通過し、次に LAN カードの Encoded Address Recognition Logic(EARL)を通過します。EARL は、MAC アドレスに基づいたパケットの学習と転送を行うための、c7600 スーパーバイザ エンジン内の中央集中処理エンジンです。
DSCP 状態のポートでキューイングを実行できる WS-X6708 ラインカードを除き、入力キューイングは信頼できるサービス クラス(CoS)状態のポートと、有効な CoS タグを伝送するフレームに対してのみ実行されます。グローバル マッピングを変更することで、この設定を変更できます。変更しない場合、内部データバス ヘッダーの DSCP はゼロに設定されます。重要なパケットが、インターフェイスから SP または RP CPU へのパス全体において高いプライオリティで処理されるようにするには、それらのパケットの元の dot1q CoS、IP COS または DSCP フィールド値を維持することが重要です。ポートの信頼状態を確認するには、 show queueing interface コマンドを使用します。
パケットに対するそれ以上のアクションは、ラインカードに DFC が存在する場合は DFC で、または PFC で実行されます。SUP 720 または RSP720 上のポートは、LAN カード上のポートと見なすことができます。
次に、 show queueing interface コマンドを使用してポートの信頼状態を確認する例を示します。
Router# show queueing int Gig5/1 | inc Port
入力 CoS とキューのデフォルト マッピング、および WS-X6708 モジュールに対する入力 DSCP キューイングの詳細については、を参照してください。
7600-SIP-200 カード
ユニキャスト、ブロードキャスト、またはマルチキャスト ストーム制御は、SIP-200 ラインカードでは実装されません。
SIP-200 の QoS は、MQC を使用して設定されます。分類、マーキング、ポリシング、WRED、CBWFQ、シャーピング、プライオリティ キューイング、および LLQ などの QoS 機能は、7600-SIP-200 の RX(受信)CPU で実行されます。RX CPU では、非 IP パケットに対して QoS は適用されません。
内部データ バス ヘッダー内の CoS は、IP precedence から作成されます。非 IP トラフィックの場合、コントロール プレーン トラフィックに対する CoS は 6 に設定されます。制御トラフィック以外の非 IP パケットの場合、内部 CoS は 0 に設定されます。7600-SIP-200 カードでは、ポートの信頼の概念は使用されません。
7600-SIP-400 カード
ユニキャスト、ブロードキャスト、またはマルチキャスト ストーム制御は、SIP-400 ラインカードでは実装されません。
SPA からパケットを受信すると、Ingress Network Processor(INP; 入力ネットワーク プロセッサ)はまず、パケットを分類します。内部の pak_priority フラグが、IP ルーティング プロトコル パケットと非 IP コントロール プレーン トラフィック(ARP を含む)に設定されます。SIP-400 の pak_priority フラグは、ローカルな意味しか持ちません。このフラグはデータ バス ヘッダーが作成されるときに考慮されますが、SP または RP CPU の IOS に pak_priority フラグを伝送するためのプロビジョニングはありません。 pak_priority が設定され、パケットが非 IP である場合、内部データバス ヘッダーにインデックス誘導型ビットが設定されます。
内部データバス ヘッダーの CoS フィールドは、dot1q タグからコピーされます。パケットが非 IP であり、 pak_priority が設定されている場合、データバスの CoS 値は 6 に設定されます。Ingress Network Processor(INP; 入力ネットワーク プロセッサ)は、入力 QoS が入力インターフェイスに設定されている場合、これを適用します。内部データ バス CoS 値が 6 に設定されたパケットは、別個のチャネルのファブリックに送信されます。パケットはその後、ファブリック インターフェイスを介して PFC に送信されます。
7600-SIP-400 カードでは、ポートの信頼の概念は使用されません。
7600-ES20 および 7600-SIP-600 カード
ユニキャスト、ブロードキャスト、またはマルチキャスト ストーム制御は、SIP-600 および ES20 ラインカード上の Network Processor(NP; ネットワーク プロセッサ)に実装されます。パケットは、SIP-600 または ES20 ラインカード上の EARL を通過してから、NP を通過します。SIP-600 では、ストーム制御はギガビット インターフェイスおよび 10 ギガビット インターフェイスでのみサポートされます。ES20 および SIP-600 カードには DFC が搭載されています。パケットが EARL に送信される前に、Cisco Discovery Protocol(CDP)、スパニングツリー プロトコル(STP)、ダイナミック トランキング プロトコル(DTP)、VLAN トランキング プロトコル(VTP)、単方向リンク検出(UDLD)、ポート集約プロトコル(PAgP)、リンク集約制御プロトコル(LACP)または IEEE フロー制御パケットに対してデータバス BPDU が設定されます。IP パケットについては、ポートの信頼状態によって IP precedence からデータバス CoS フィールドがコピーされる場合があります。ES20 および SIP-600 には DFC への 2 つのキューがあり、CoS 値 0 ~ 5 のパケットは低プライオリティ キューに移動し、CoS 値 6 および 7 のパケットは高プライオリティ キューに移動します。
7600-SIP-600 カードと 7600-ES20 カードでは、ポートの信頼の概念が使用されます。意味するところは、LAN カードの場合と同じです。
ES+ ラインカード
ユニキャスト、ブロードキャスト、またはマルチキャスト ストーム制御は、ES+ ラインカード上の Network Processor(NP; ネットワーク プロセッサ)に実装されます。パケットは NP を通過してから、ES+ ラインカード上の EARL を通過します。ストーム制御によってドロップされたパケットは、ES+ ラインカード上の EARL に到達しません。
ES+ カード上の Network Processor Unit(NPU)の入力パケットメモリには、ポートごとに 2 つの RX キュー(高プライオリティ キューと低プライオリティ キュー)が存在します。また、Intermediate System-to-Intermediate System(IS-IS)には、独自の特別なキューがあります。高プライオリティの制御パケットは、高プライオリティ キューに配置されます。
NP で入力 QoS が適用されます。その後、パケットは EARL に渡されます。7600-ES+ カードでは、ポートは常に信頼されます。
PFC または DFC 上の EARL 経由でパントされるパケットのパス
ここでは、パントを招くチェックやアクションのみに焦点を当てながら、PFC または DFC 経由でパントされるパケットのパスについて説明します。
PFC または DFC でパケットを受信すると、まず、宛先 MAC のルックアップが行われ、次のようにパケットのタイプに応じて適切なアクションが実行されます。
• ブロードキャスト フレーム:パケットが受信された VLAN にレイヤ 3 インターフェイスが存在する場合、ブロードキャスト フレームは RP CPU にパントされます。ブロードキャスト パケットは、MLS レート制限の影響を受けません。
• マルチキャスト フレーム:パケットを受信した VLAN にレイヤ 3 インターフェイスが存在し、さらに宛先 MAC アドレスが IPv4 ローカル ネットワーク制御ブロック マルチキャストまたは IPv4 インターネットワーク制御ブロック マルチキャストに対応する場合(0100.5e00.0000 ~ 0100.5e00.01ff)、フレームは RP CPU にパントされます。その他のマルチキャスト フレームは、さまざまな理由で RP または SP CPU にパントされる可能性があります。すべてのパケットは MLS QoS プロトコル ポリサーに照らして評価され、ポリサーは MLS QoS プロトコル ポリサーの設定に応じて適用されます。RP または SP CPU にパントされたマルチキャスト パケットは、MLS レート リミッタに従います。
• ユニキャスト フレーム:同じルータの宛先 MAC アドレスを持つフレームは、レイヤ 3 のルックアップ用に転送される場合があります。レイヤ 3 のルックアップでは、レイヤ 3 アドレスが、PFC または DFC でサポートされていないルータまたは機能に対してローカルであるなど、さまざまな理由からパントを招く可能性があります。RP または SP CPU にパントされたユニキャスト パケットも、MLS レート制限の影響を受けます。また、ユニキャスト パケットにはコントロール プレーン ポリシングも適用されます。コントロール プレーン ポリシングは設定する必要があり、デフォルトではアクティブになりません。
PFC または DFC におけるコントロール プレーン トラフィックのポリシング
PFC または DFC には、コントロール プレーン トラフィックをポリシングするための 3 つのメカニズムがあります。
• MLS プロトコル ポリサー:MLS プロトコル ポリサーは、RP または SP CPU にパントされるトラフィックだけでなく、指定のプロトコルのすべてのトラフィックをポリシングします。このポリサーを使用して、これらのパケットの IP precedence を変更することもできます。このポリサーの設定には、 mls qos protocol police コマンドを使用します。MLS プロトコル ポリシングの詳細については、「MLS プロトコル ポリシング」を参照してください。
• MLS レート リミッタ:MLS レート リミッタは、RP または SP CPU にパントされるトラフィックにのみ適用されます。
PFC3 または DFC3 上の EARL には 10 個のレート リミッタ レジスタが搭載されており、グローバル コンフィギュレーション モードで設定されます。これらのレート リミッタ レジスタには、特定のレート リミッタに一致する結果パケットのレート制限情報が含まれます。10 個のレート リミッタ レジスタのうち、2 つのレジスタはレイヤ 2 フォワーディング エンジンにあり、レイヤ 2 レート リミッタ用に予約されています。残りの 8 つのレジスタはレイヤ 3 フォワーディング エンジンにあり、レイヤ 3 レート リミッタ用に予約されています。一部のレート リミッタはデフォルトでイネーブルになりますが、その他は設定する必要があります。MLS レート リミッタの設定には、 mls rate-limit コマンドを使用します。
アクティブおよび非アクティブのレート リミッタと、パント パケットに使用される宛先インデックスを表示するには、RP CPU では show mls rate-limit コマンド、SP CPU では show mls rate-limit hw-detail コマンドを使用します。一部のレート制限シナリオは、同じレジスタを共有するように事前設定されています。どのレート リミッタが同じレジスタを共有するかを調べるには、RP CPU に対して show mls rate-limit usage コマンドを実行します。MLS レート リミッタの設定の詳細については、「MLS レート リミッタのデフォルト設定」を参照してください。
• コントロール プレーン ポリサー:MQC を使用して設定されたコントロール プレーン ポリサーは、RP CPU にパントされるユニキャスト トラフィックにのみ適用されます。コントロール プレーン ポリサーおよび MLS レート リミッタを経由するパケット パスを同時に使用することはできません。パケットが MLS レート リミッタを通過する場合は、コントロール プレーン ポリサーによって制限することはできません。CoPP は、提供されるレート、ドロップ レート、およびパケット カウンタの可視性を高めます。
show policy-map control-plane コマンドを実行すると、コントロール プレーン ポリサーの統計情報が表示されます。
図 40-2 および図 40-3 に、EARL におけるユニキャスト パケットとマルチキャスト パケットのパケット パスを示します。
図 40-2 EARL におけるユニキャスト パケットのパケット パス
図 40-3 EARL におけるマルチキャスト パケットのパケット パス
着信パケットはまず、MLS プロトコル ポリサーに照らして評価されます。MLS プロトコル ポリサーと入力 PFC または DFC QoS は、同時に使用できません。MLS プロトコル ポリサーと入力 PFC または DFC QoS は、転送が決定される前に実行されます。
転送の決定により、パケットが RP CPU にパントされる場合、パント パケットは設定されているレート リミッタに照らして評価されます。パケットがレート リミッタに一致した場合、パケットは適切なレート リミッタを通過します。設定されているレート リミッタのいずれにも一致せず、RP CPU に宛先指定される場合は、ハードウェア CoPP を通過します。MLS レート リミッタおよびハードウェア CoPP は同時に使用できません。ハードウェア CoPP は、SP CPU へのパント パスでは適用されません。MLS レート リミッタおよびハードウェア CoPP は出力機能であり、転送の決定後に適用されます。
図 40-4 で、PFC または DFC 上の CoPP について説明します。
図 40-4 PFC または DFC 上のコントロール パネル ポリサー(ハードウェア CoPP)
MLS レート リミッタと CoPP は両方ともグローバル コンフィギュレーション モードで設定されます。いったん設定されると、同じ設定がシャーシ内のすべての PFC または DFC に伝播されます。CoPP の最初の部分は PFC または DFC に適用され、2 番目の部分は RP CPU に適用されます。MLS レート リミッタは、PFC または DFC 上のハードウェアにのみ適用されます。
コントロール プレーン保護のためのハードウェア ポリシングおよびレート制限は、PFC または DFC ごとに集約されます。各 PFC または DFC を介して集約されたトラフィックは、CoPP によってソフトウェア レベルで再びポリシングされます。
たとえば、シャーシに 2 つの DFC と 1 つの PFC があり、CoPP の集約ポリサー レートが 1 Mbps に設定されている場合、RP CPU は最大 3 Mbps のトラフィックを受信し、ソフトウェアで 1 Mbps にポリシングされます。
show policy-map control-plane コマンドを実行すると、すべての PFC または DFC、および IOS に関するコントロール プレーン ポリサーの統計情報が表示されます。RP CPU に対して show mls rate-limit コマンドを実行すると、アクティブ PFC の設定のみが表示されます。DFC とスタンバイ PFC の設定を表示するには、DFC およびスタンバイ RP それぞれに対して show mls rate-limit コマンドを実行します。
PFC または DFC の後にパントされるパケットのパス
RSP720/SUP 720 ハードウェア
図 40-5 に、PFC または DFC の後にパントされるパケットのパスを示します。
図 40-5 RSP720 または SUP 720 上のパケット パス
PFC または DFC は、パケットのパントを決定すると、スイッチ ファブリック経由でスーパーバイザ上のファブリック インターフェイスまたはバス インターフェイスにパケットを送信するよう、入力ラインカードに指示します。ファブリックまたはバス インターフェイスはパケットをパケット ASIC に転送します。パケット ASIC は、パケットを SP または RP CPU に転送します。
各プロセッサには、2 つの入力キューを持つ別個の In-band Interface Channel(IBC)が搭載されています。高プライオリティ キュー(キュー 0)は、データ バス CoS 値 4 ~ 7 のパケットを受信し、低プライオリティ キュー(キュー 1)は、データバス CoS 値 0 ~ 3 のパケットを受信します。IBC コントローラは、パケットを受信すると、そのパケットを IOS 入出力メモリにコピーし、Network Input/Output(NetIO; ネットワーク入出力)割り込みを CPU に要求します。
SPD の統計情報を含む、IBC で受信したパケットの詳細情報を得るには、 show ibc exec コマンドを使用します。このコマンドを実行すると、カウンタに関する情報が表示され、設定されているコントロール プレーン保護がパントされたトラフィックのレートを制限していることを確認するのに役立ちます。また、SP および RP でパントされたトラフィックをトラブルシューティングするのにも役立ちます。
次に、 show ibc exec コマンドの出力例を示します。
Router# show ibc | inc Rx\(
Rx(0) 23116485 2693239358
IOS 上のパントされたパケットのパス
NetIO 割り込みが要求されると、NetIO 割り込みハンドラ ルーチンによってインターフェイス ドライバが呼び出されます。IBC から受信した複数のパケットを 1 つの NetIO 割り込みで処理できます。現在の NetIO 割り込みが netint usec(ネットワークレベルの割り込みの実行が許可されている最大時間、マイクロ秒単位)期間よりも長い場合、NetIO 割り込みハンドラは終了し、netint mask usec(ネットワークレベルの割り込みがマスキングされる最大時間)期間中は NetIO 割り込みがディセーブルになります。このメカニズムを NetIO スロットリングと呼びます。NetIO スロットル中は、受信バッファが満杯にならない限り、DMA を介した IO メモリへのパケットのコピーが行われます。NetIO スロットリングによって遅延するのは、NetIO 割り込みの処理のみです。NetIO スロットリング中にドロップされるパケットに対する制御はないので、RP または SP CPU にパントされるパケットに対して適切な制御を課すことが重要です。
NetIO 割り込み中は、インターフェイス ドライバがパケットのタイプの決定し、適切なネットワーク プロトコル パケットに対応する NetIO 割り込みハンドラを呼び出します。パケットが IP パケットである場合、c7600 では RP CPU によるソフトウェア転送が許可されているので、IOS はまず Cisco Express Forwarding(CEF; シスコ エクスプレス フォワーディング)ルーチンを呼び出します。パケットを割り込みレベルで転送できない場合、またはルータに宛先指定される場合、パケットはプロセス レベルにパントされます。
パケットを入力プロセス キューに配置するように CEF が試みる前に、SPD メカニズムが適用されます。SPD では、通常のパケットに許可された制限を超える高プライオリティ パケットをバッファリングして、重要なパケットのドロップを回避できます。
インターフェイスの入力キュー内のパケット数が入力キューの制限に達すると、インターフェイスはスロットリングされます。つまり、スロットルが解除されるまで、このインターフェイスではそれ以上のパケットは受信されません。このメカニズムをインターフェイス スロットリングと呼びます。スロットリングされたインターフェイスでドロップされるパケット数を確認するには show ibc コマンドを使用し、インターフェイスがスロットリングされる回数を確認するには show interfaces コマンドを使用します。インターフェイスのスロットル時に SPD ヘッドルームおよび SPD 拡張ヘッドルームに入るパケットのドロップを防止するには、throttle selective インターフェイス コンフィギュレーション コマンドを設定します。SPD でパケットがドロップされない場合は、ソフトウェア CoPP がプロセス レベルで適用されます。したがって、CoPP の設定が最適であることを確認することが重要です。
NetIO 割り込みタイマーおよびスロットリングの統計情報を調べるには、 show platform netint コマンドを使用します。
次に、 show platform netint コマンドの出力例を示します。
Router# show platform netint
Network IO Interrupt Throttling:
throttle count=90, timer count=90
netint usec=4000, netint mask usec=800
inband_throttle_mask_hi = 0x0
inband_throttle_mask_lo = 0x800000
show platform netint コマンドの timer count は netint mask usec タイマーが起動した回数を示し、 throttle count は NetIO 割り込みがスロットリングされる回数を示します。
コントロール プレーン保護のベスト プラクティス
次に、コントロール プレーン保護に伴うベスト プラクティスを示します。
• ストーム制御を展開します。
• 重要なコントロール プレーン トラフィックがインターフェイスで受信される場合、ポート状態を trust として設定します。ポートが信頼できない場合、CoS および IP precedence はゼロにリセットされ、パント パスにおけるパケットの優先順位付けに影響します。
• 適用する必要のある CoPP ポリシーを決定します。
• c7600 上の異なる保護メカニズムの制限を考慮しながら、コントロール プレーン保護を実装します。
• MLS レート リミッタまたは MLS プロトコル ポリシングを使用して、その他のトラフィックをレート制限する必要があるかどうかを判断します。
• トラフィック レートをモニタし、調整します。トラフィック レートのモニタについては、次のコマンドが役立ちます。
– show mls statistics [ module ] コマンド。MLS 統計情報に関する情報を表示します。
– show policy-map control-plane コマンド。特に class-default における、コントロール プレーン ポリサーの分類カウンタの情報を表示します。
– show platform netint コマンド。NetIO スロットル カウントおよびタイマー カウントに関する情報を表示します。
– show ibc コマンド。分類およびドロップ カウンタに関する情報を表示します。
– debug netdr capture コマンド。パントされたパケットのキャプチャに関する情報を表示します。キャプチャされたパケットを表示するには、 show netdr captured-packets コマンドを使用します。
DoS 保護の機能概要
ここでは、Cisco 7600 シリーズ ルータにおける DoS 保護の概要、および数種類の DoS 攻撃シナリオについて説明します。
• 「PFC3 による DoS 保護」
セキュリティ ACL および VACL
ネットワークが DoS 攻撃を受けている場合、DoS パケットがターゲットに達する前に DoS パケットをドロップする有効な方法は ACL です。特定ホストからの攻撃が検出された場合は、セキュリティ ACL を使用します。次の例では、ホスト 10.1.1.10 およびそのホストからのすべてのトラフィックが拒否されます。
Router(config)# access-list 101 deny ip host 10.1.1.10 any
Router(config)# access-list 101 permit ip any any
セキュリティ ACL は、アドレスのスプーフィングからも保護します。たとえば送信元アドレス A がネットワーク内にあり、ルータ インターフェイスがインターネットに向いているとします。ルータ インターネット インターフェイスで着信 ACL を適用すれば、送信元が A(内部アドレス)になっているすべてのアドレスを拒否できます。この処理では、攻撃者が内部送信元アドレスをスプーフィングする攻撃が防止されます。パケットは、ルータ インターフェイスに到着したとき、その ACL と一致してドロップされるので、被害は発生しません。
Cisco 7600 シリーズ ルータを Cisco Intrusion Detection Module(CIDM)で使用している場合は、センシング エンジンによる攻撃の検出に対応して、セキュリティ ACL をダイナミックにインストールできます。
VACL は、レイヤ 2、レイヤ 3、レイヤ 4 の情報に基づくセキュリティ処理ツールです。パケットに対する VACL ルックアップの結果は、許可、拒否、許可および取り込み、リダイレクトのうちいずれかになります。VACL を特定 VLAN に関連付けると、すべてのトラフィックは、VACL によって許可されないと VLAN に入ることができません。VACL はハードウェアで処理されるので、Cisco 7600 シリーズ ルータで VACL を VLAN に適用してもパフォーマンスは低下しません。
QoS レート制限
QoS ACL は、MSFC3 によって処理される特定タイプのトラフィックの量を制限します。MSFC に DoS 攻撃が仕掛けられた場合、QoS ACL では、DoS トラフィックが MSFC データ パスに達して MSFC データ パスを輻輳させることを防止できます。PFC3 は QoS をハードウェアで実行するので、DoS トラフィックが効果的に制限され(そのトラフィックが識別されている場合)、ルータが MSFC に影響を与えることを防止できます。
たとえば Ping-of-Death 攻撃または smurf 攻撃をネットワークが受けている場合、管理者は ICMP トラフィックをレート制限して DoS 攻撃に対処する必要がありますが、正当なトラフィックがプロセッサを通り、MSFC またはホストに転送されるようにする必要があります。このレート制限設定は、レート制限が必要なフローごとに実行する必要があり、レート制限ポリシー アクションはインターフェイスに適用する必要があります。
次の例では、アクセス リスト 101 が、任意の送信元から任意の宛先への ping(エコー)ICMP メッセージを許可してトラフィックとして識別します。ポリシー マップ内では、ポリシング ルールが特定認定情報レート(CIR)とバースト値(96000 bps および 16000 bps)を定義し、シャーシを経由する ping(ICMP)トラフィックをレート制限します。ポリシー マップはインターフェイスまたは VLAN に適用されます。ポリシー マップが適用されている VLAN またはインターフェイスにおいて ping トラフィックが指定したレートを超えた場合、ping トラフィックはマークダウン マップに指定されたようにドロップされます(通常バースト設定のマークダウン マップは、この例に示していません)。
Router(config)# access-list 101 permit icmp any any echo
Router(config)# class-map match-any icmp_class
Router(config-cmap)# match access-group 101
Router(config-cmap)# exit
Router(config)# policy-map icmp_policer
Router(config-pmap)# class icmp_class
Router(config-pmap-c)# police 96000 16000 conform-action transmit exceed-action policed-dscp-transmit drop
Router(config-pmap-c)# exit
Router(config-pmap)# exit
uRPF チェック
unicast Reverse Path Forwarding(uRPF)チェックをイネーブルにすると、スプーフィングされた IP 送信元アドレスなど、検証可能送信元 IP アドレスがないパケットはドロップされます。送信元アドレス、および受信したインターフェイスが、スーパーバイザ エンジンの FIB テーブルと一致することを確認するために、Cisco Express Forwarding(CEF; シスコ エクスプレス フォワーディング)テーブルが使用されます。
uRPF チェックをインターフェイスで VLAN ごとにイネーブルにすると、着信パケットは逆ルックアップで CEF テーブルと比較されます。いずれかの逆パス ルートからパケットを受信した場合、そのパケットは転送されます。パケットを受信したインターフェイスに逆パス ルートがない場合、パケットは uRPF チェックでエラーになり、uRPF チェック エラー トラフィックに ACL が適用されるかどうかによってドロップされるか転送されます。CEF テーブルで ACL が指定されていない場合、偽造パケットはすぐにドロップされます。
uRPF チェックでエラーになったパケットには、uRPF チェックの ACL だけを指定できます。ACL では、パケットをすぐにドロップする必要があるか転送する必要があるかがチェックされます。ACL を使用した uRPF チェックは、ハードウェアの PFC3 でサポートされません。uRPF ACL で拒否されたパケットは、ハードウェアで転送されます。許可されたパケットは CPU に送信されます。
ハードウェアでは、PFC3 での uRPF チェックがサポートされます。ただし uRPF チェックでエラーになって、適用された ACL のために転送されたすべてのパケットは、MSFC に送信されてレート制限され、ICMP 到達不能メッセージが生成されます。この処理はすべてソフトウェアで行われます。ハードウェアでの uRPF チェックは、最大 2 つのリターン パス(インターフェイス)を持つルートに対してサポートされ、インターフェイス グループが設定された場合は最大 6 つのリターン パス(2 つは FIB テーブルから、4 つはインターフェイス グループから)を持つルートに対してサポートされます。
トラフィック ストーム制御
トラフィック ストームは、パケットが LAN でフラッディングする場合に発生するもので、過剰なトラフィックを生成し、ネットワークのパフォーマンスを低下させます。トラフィック ストーム制御機能では、ネットワーク設定の誤りから、または DoS 攻撃をしているユーザから、物理インターフェイスでのブロードキャスト トラフィック ストーム、マルチキャスト トラフィック ストーム、ユニキャスト トラフィック ストームによって LAN ポートが中断するのを防止します。トラフィック ストーム制御(トラフィック抑制)は、1 秒間のトラフィック ストーム制御インターバルで着信トラフィック レベルをモニタします。インターバル中は、トラフィック ストーム制御により、設定されているトラフィック ストーム制御レベルとトラフィック レベルが比較されます。トラフィック ストーム制御レベルは、ポートの利用可能な帯域幅全体に対する割合です。各ポートには、すべてのタイプのトラフィック(ブロードキャスト、マルチキャスト、およびユニキャスト)用に使用されている単一のトラフィック ストーム制御レベルがあります。
トラフィック ストーム制御はインターフェイスで設定し、デフォルトではディセーブルです。次の設定例では、FastEthernet 2/3 でブロードキャスト アドレス ストーム制御のレベルを 20% にしています。ブロードキャスト トラフィックが、1 秒間のトラフィック ストーム制御インターバル内で、ポートの総使用可能帯域幅の 20% を超えた場合、トラフィック ストーム制御インターバルが終わるまで、トラフィック ストーム制御によってすべてのブロードキャスト トラフィックがドロップされます。
Router(config-if)# storm-control broadcast level 20
Cisco 7600 シリーズ ルータでは、すべての LAN ポートでブロードキャスト ストーム制御がサポートされ、ギガビット イーサネット ポートでマルチキャスト ストーム制御およびユニキャスト ストーム制御がサポートされます。
2 つまたは 3 つの抑制モードが同時に設定されている場合は、同一レベル設定が共有されます。ブロードキャスト抑制をイネーブルにし、マルチキャスト抑制もイネーブルにして 70% のしきい値で設定した場合、ブロードキャスト抑制も 70% の設定になります。
SYN 攻撃を受けているネットワーク
SYN 攻撃を受けているネットワークは容易にわかります。ターゲット ホストは、異常に遅くなったり、クラッシュしたり、処理を中断したりします。MSFC では、ターゲット ホストから返されたトラフィックもトラブルの原因となります。リターン トラフィックは元のパケットからランダムに抽出された送信元アドレスに送信され、「本来の」IP トラフィックの場所が不足して、ルート キャッシュまたは CEF テーブルがオーバーフローすることがあるからです。
ネットワークが SYN 攻撃を受けている場合は、TCP 代行受信機能が攻撃的な保護となります。ルータにおける攻撃的な動作の開始時期と終了時期は、次の 2 つの要因によって決まります。
• 不完全接続の合計
• 最後の 1 分間のサンプル期間における接続要求数
低い値と高い値で両方の要因を設定します。
不完全接続数が 1,100 を超えるか、最後の 1 分間に到着した接続数が 1,100 を超えた場合は、新たに接続が到着するたびに、最も古い部分接続(またはランダム接続)が削除されます。これがデフォルト値ですが、変更できます。どちらかのしきい値を超えた場合、TCP 代行受信は、サーバが攻撃されていると見なし、アグレッシブ モードになって次のように反応します。
• 新たに接続が到着するたびに、最も古い部分(またはランダムな部分)が削除されます。
• 初期再送信タイムアウトが半減して 0.5 秒になり、接続の確立を試す合計時間が半分に短縮されます。
• ウォッチ モードでは、ウォッチ タイムアウトが半減します。
(注) 両方のしきい値が、設定されている低い値を下回ると、攻撃的な動作は終了します(デフォルト値は両方の要因で 900)。
すべての PFC3 タイプで、TCP フローはハードウェアによって処理されます。
MLS プロトコル ポリシング
悪意があるユーザは、攻撃中に、ルーティング プロトコルや ARP パケットなどの制御パケットで MSFC CPU を過負荷にしようとすることがあります。この特殊な制御パケットは、mls qos protocol コマンドで設定可能な特定ルーティング プロトコルおよび ARP ポリシング メカニズムを使用して、ハードウェアでレート制限できます。サポートされているルーティング プロトコルは、RIP、BGP、LDP、OSPF、IS-IS、IGRP、および EIGRP です。たとえば mls qos protocol arp police 32000 コマンドでは、ハードウェアで ARP パケットが 32,000 bps にレート制限されます。このポリシング メカニズムでは、ラインレート ARP 攻撃などの攻撃から MSFC CPU が効果的に保護されますが、ルータへのルーティング プロトコルおよび ARP パケットがポリシングされるだけでなく、CoPP より粒度が低い機器を通過するトラフィックもポリシングされます。
ポリシング メカニズムとポリシング回避メカニズムは、ルート設定を共有します。ポリシング回避メカニズムでは、ルーティング プロトコルと ARP パケットが、QoS ポリサーに達したとき、ネットワークを流れます。このメカニズムは、mls qos protocol protocol pass-through コマンドで設定できます。
次に、ARP ポリシングで使用できるプロトコルを表示する例を示します。
Router(config)# mls qos protocol ?
次に、mls qos protocol arp コマンドで使用できるキーワードを表示する例を示します。
Router(config)# mls qos protocol arp ?
pass-through pass-through keyword
precedence change ip-precedence(used to map the dscp to cos value)
PFC3 におけるハードウェアベースのレート リミッタ
PFC3 では、ハードウェアベースのレート リミッタを追加でサポートします。PFC3 には新しいレート リミッタ用に 8 個のレート リミッタ レジスタがあり、ルータでグローバルに設定されます。このレート リミッタ レジスタはレイヤ 3 フォワーディング エンジン(PFC)に存在し、これにはさまざまな使用可能な設定済みレート リミッタと一致する結果パケットのレート制限情報が含まれます。
8 個のレート リミッタ レジスタが PFC3 に存在するので、このレジスタにより、さまざまなレート制限シナリオで同一レジスタを共有できます。このレジスタは先着順で割り当てられます。すべてのレジスタが使用されている場合は、あるレジスタを解放しないと、別のレート リミッタを設定できません。
PFC3 で使用できるハードウェアベースのレート リミッタは次のとおりです。
• 入力と出力の ACL ブリッジド パケット
• uRPF チェック エラー
• FIB 受信ケース
• FIB 収集ケース
• レイヤ 3 セキュリティ機能
• ICMP リダイレクト
• ICMP 到達不能(ACL ドロップ)
• ルートなし(FIB ミス)
• VACL ログ
• TTL エラー
• MTU エラー
• マルチキャスト IPv4
• マルチキャスト IPv6
共有レート リミッタ
次の共有レート リミッタを Cisco 7600 ルータ上で設定することができます。
• IP RPF エラー
• ICMP 到達不能ルートなし
• ICMP 到達不能 ACL 廃棄
• IP エラー
いずれかの共有レート リミッタをイネーブルまたはディセーブルにすると、その他すべての共有リミッタもイネーブルまたはディセーブルになります。
推奨レート リミッタ設定
推奨レート リミッタ設定は次のとおりです。
• DoS 攻撃によく使用されるトラフィック タイプに対して、レート リミッタをイネーブルにします。
• VACL ロギングを設定しない場合は、VACL ロギングでレート リミッタを使用しないでください。
• リダイレクトをディセーブルにします。Cisco 7600 シリーズ ルータのようにハードウェア転送をサポートするプラットフォームでは、リダイレクトの必要性が少なくなるからです。
• 到達不能をディセーブルにします。Cisco 7600 シリーズ ルータのようにハードウェア到達不能をサポートするプラットフォームでは、到達不能の必要性が少なくなるからです。
• すべてのインターフェイスで MTU が同一である場合は、MTU レート リミッタをイネーブルにしないでください。
• レイヤ 2 PDU レート リミッタを設定する場合は、以下に注意してください。
– 有効な PDU の予想数またはその可能な数を計算し、その数を 2 倍か 3 倍にします。
– PDU には BPDU、DTP、VTP、PAgP、LACP、UDLD などが含まれます。
– レート リミッタでは、優良フレームと不良フレームが区別されません。
• 15.1(1)S1 および 15.0(1)S3a リリース以降、MTU レート リミッタと TTL レート リミッタはデフォルトでイネーブルになります。
– MTU と TTL のデフォルト値は、それぞれ 970 と 97 です。ルータの起動後にデフォルト値を変更することができます。
– ルータ上で MTU と TTL のデフォルト以外の値が設定されている場合は、ユーザ定義の設定が優先されます。
– MTU レート リミッタと TTL レート リミッタのデフォルト値を変更して、設定に保存することができます。
– サポートされている最大レート リミッタが設定されている場合は、起動時に MTU レート リミッタと TTL レート リミッタがデフォルトでイネーブルになりません。ユーザ定義のレート リミッタが優先されます。
入出力 ACL ブリッジド パケット(ユニキャストのみ)
このレート リミッタでは、入出力 ACL ブリッジ結果として、MSFC に送信されたパケットをレート制限します。ルータは、TCAM ブリッジ結果を含む既存および新規 ACL TCAM エントリを MSFC を示すレイヤ 3 リダイレクト結果に変更して、これを達成します。変更されたレイヤ 3 リダイレクト レート制限結果を含む TCAM エントリにヒットしたパケットは、ネットワーク管理者が CLI で設定した指示に従ってレート制限されます。入力値および出力値は、両方とも同じレート リミッタ レジスタを共有するので、同じ値になります。ACL ブリッジ入出力レート制限がディセーブルである場合、レイヤ 3 リダイレクト レート制限結果は、ブリッジ結果に変換されます。
入力または出力の ACL ブリッジド パケット ケースでは、単一のレート リミッタ レジスタが共有されます。この機能がオンに切り替わっている場合、入力および出力の ACL では同一レート リミッタ値が使用されます。
バースト値では、バーストで許容されるパケット数が規制されます。各許容パケットではトークンが消費され、パケットが許容されるには、トークンが使用可能である必要があります。1 つのトークンは 1 ミリ秒ごとに生成されます。パケットが到着しない場合、トークンはバースト値まで累積されます。たとえばバースト値が 50 に設定されている場合、ルータは 50 個までのトークンを累積し、50 個のパケットのバーストを吸収できます。
次に、入力 ACL ブリッジ結果からのユニキャストパケットを 50000 パケット/秒にレート制限し、バーストの場合は 50 パケットにレート制限する例を示します。
Router(config)# mls rate-limit unicast acl input 50000 50
次に、出力 ACL ブリッジ結果において、入力 ACL ブリッジ結果からのユニキャスト パケットを同じレート(50000 pps、バーストの場合は 50 パケット)にレート制限する例を示します。
Router(config)# mls rate-limit unicast acl output 50000 50
入力と出力の両方をイネーブルにしているとき、入力または出力のどちらかでレート リミッタの値を変更すると、両方の値が新しい値に変更されます。次の例では、出力レートが 40000 pps に変更されます。
Router(config)# mls rate-limit unicast acl output 40000 50
show mls rate-limit コマンドを入力すると、ACL ブリッジド インおよび ACL ブリッジド アウトの両方で新しい値 40000 pps が表示されます。
Router# show mls rate-limit
Rate Limiter Type Status Packets/s Burst
--------------------- ---------- --------- -----
MCAST DFLT ADJ On 100000 100
ACL BRIDGED IN On 40000 50
ACL BRIDGED OUT On 40000 50
uRPF チェック エラー
uRPF チェック エラー レート リミッタでは、uRPF チェックでエラーになったために MSFC に送信する必要があるパケットのレートを設定できます。uRPF チェックでは、インターフェイスの着信パケットが有効な送信元からのものであることが検証され、スプーフィングされたアドレスを使用するユーザからの DoS 攻撃の潜在的な脅威を最小限に抑えることができます。スプーフィングされたパケットが uRPF チェックでエラーになると、そのエラーが MSFC に送信されます。uRPF チェック レート リミッタでは、uRPF チェック エラーが発生したとき MSFC CPU にブリッジされる、pps をレート制限できます。
次に、バーストを 100 パケットにして、MSFC に送信される uRPF チェック エラー パケットを 100,000 pps にレート制限する例を示します。
Router(config)# mls rate-limit unicast ip rpf-failure 100000 100
TTL エラー
このレート リミッタでは、TTL チェック エラーのために MSFC に送信されるパケットがレート制限されます。次の例で all キーワードによって示されるように、このレート リミッタは、マルチキャスト トラフィックとユニキャスト トラフィックの両方に適用されます。
(注) TTL エラー レート リミッタは、IPv6 マルチキャストでサポートされません。
次に、バーストを 150 にして TTL エラーを 70000 pps にレート制限する例を示します。
Router(config)# mls rate-limit all ttl-failure 70000 150
ICMP 到達不能(ユニキャストのみ)
ICMP 到達不能攻撃では、フラッディングさせるデバイス(この場合は MSFC)から到達不能な宛先アドレスを含む多数のパケットでデバイスがフラッディングされます。ICMP 到達不能レート リミッタでは、到達不能アドレスを含む、MSFC に送信されるパケットをレート制限できます。
次に、ACL 廃棄のために MSFC に送信されるパケットを 10,000 pps、バーストを 100 にレート制限する例を示します。
Router(config)# mls rate-limit unicast ip icmp unreachable acl-drop 10000 100
次に、FIB ミスのために ICMP 到達不能メッセージの生成が必要となったパケットを 80000 pps、バーストを 70 にレート制限する例を示します。
Router(config)# mls rate-limit unicast ip icmp unreachable no-route 80000 70
4 つのレート リミッタ、ICMP 到達不能ルートなし、ICMP 到達不能 ACL ドロップ、IP エラー、IP RPF エラーでは、単一のレート リミッタ レジスタが共有されます。このリミッタのいずれかをイネーブルにしている場合、このグループのすべてのリミッタでは同じ値が共有され、同じ状態(ON/ON/ON など)が共有されることもあります。レート リミッタの確認時に、別の機能を通してこのレジスタのメンバーがイネーブルになっていた場合は、ON ステータスの代わりに ON-Sharing ステータスが表示されます。TTL エラー レート リミッタは例外であり、その機能を手動でイネーブルにした場合は、この値はレジスタのその他のメンバーと同じ値を共有します。
FIB(CEF)受信ケース(ユニキャストのみ)
FIB 受信レート リミッタでは、MSFC IP アドレスを宛先アドレスとして含むすべてのパケットをレート制限できます。このレート リミッタでは、優良フレームと不良フレームが区別されません。
(注) CoPP を使用している場合は、FIB 受信レート リミッタをイネーブルにしないでください。FIB 受信レート リミッタは、CoPP ポリシーを上書きします。
次に、バーストを 60 にして、トラフィックを 25000 pps にレート制限する例を示します。
Router(config)# mls rate-limit unicast cef receive 25000 60
FIB 収集(ユニキャストのみ)
FIB 収集レート リミッタでは ARP トラフィックが制限されませんが、アドレス解決(ARP)が必要で MSFC に送信する必要があるトラフィックをレート制限する機能が用意されています。この状況は、トラフィックがポートに入り、MSFC にローカルに接続されているサブネットのホストが宛先になっていますが、その宛先ホスト用の ARP エントリが存在しない場合に発生します。この場合は、直接接続されている不明サブネットのホストによって宛先ホストの MAC アドレスが回答されないため、「収集」隣接がヒットし、トラフィックは MSFC に直接送信されて ARP 解決が行われます。このレート リミッタでは、攻撃者がこのような ARP 要求で CPU に過剰な負荷をかけることが制限されます。
次に、このトラフィックが MSFC に送信されるレートを 20,000 pps、バーストを 60 にレート制限する例を示します。
Router(config)# mls rate-limit unicast cef glean 20000 60
レイヤ 3 セキュリティ機能(ユニキャストのみ)
一部のセキュリティ機能は、最初に MSFC に送信されて処理されます。このようなセキュリティ機能の場合は、MSFC に送信されるパケット数をレート制限し、潜在的な過負荷を削減する必要があります。このセキュリティ機能には、認証プロキシ(auth-proxy)、IPSEC、検査が含まれます。
認証プロキシは、入力ユーザか出力ユーザ、またはその両方を認証するために使用されます。このようなユーザは一般的にアクセス リストによってブロックされますが、auth-proxy を使用した場合、ユーザはブラウザを起動してファイアウォールを通過し、Terminal Access Controller Access Control System Plus(TACACS+)または RADIUS サーバ(IP アドレスに基づく)で認証できます。サーバは、アクセス リスト エントリをルータにさらに渡し、ユーザが認証後に通過できるようにします。この ACL はソフトウェアで保存されて処理されます。多くのユーザが auth-proxy を利用している場合は、MSFC に過剰な負荷がかかる場合があります。レート制限を行うとこのような状況で効果的になります。
IPSec および検査も MSFC によって実行され、レート制限が必要になることがあります。レイヤ 3 セキュリティ機能レート リミッタがイネーブルの場合は、auth-proxy、IPSec、検査のすべてのレイヤ 3 レート リミッタが同一レートでイネーブルになります。
次に、MSFC のセキュリティ機能を 100,000 pps に、バーストを 10 パケットにレート制限する例を示します。
Router(config)# mls rate-limit unicast ip features 100000 10
ICMP リダイレクト(ユニキャストのみ)
ICMP リダイレクト レート リミッタを使用すると、ICMP トラフィックをレート制限できます。たとえば最適でないルータでホストがパケットを送信すると、MSFC は ICMP リダイレクト メッセージをホストに送信し、その送信パスを訂正します。このトラフィックが継続的に発生してレート制限されない場合、MSFC は ICMP リダイレクト メッセージを継続的に生成します。
次に、バーストを 20 パケットにして、ICMP リダイレクトを 20000 pps にレート制限する例を示します。
Router(config)# mls rate-limit unicast ip icmp redirect 20000 20
VACL ログ(ユニキャストのみ)
VLAN-ACL ロギングのために MSFC に送信されるパケットをレート制限し、ロギング タスクによって CPU が過負荷にならないようにできます。VACL はハードウェアで処理されますが、MSFC がロギングを行います。VACL ロギングをルータで設定すると、VACL で拒否された IP パケットによってログ メッセージが生成されます。
次に、ロギング要求を 5000 pps にレート制限する例を示します(このレート リミッタの範囲は 10 ~ 5000 pps です)。
Router(config)# mls rate-limit unicast acl vacl-log 5000
MTU エラー
TTL エラー レート リミッタと同じように、MTU エラーのレート リミッタは、ユニキャスト トラフィックおよびマルチキャスト トラフィックの両方でサポートされます。MTU チェックでエラーになったパケットは、MSFC CPU に送信されます。これにより、MSFC に過剰な負荷がかかることがあります。
次に、MSFC に送信される MTU エラー パケットを 10,000 pps に、バーストを 10 にレート制限する例を示します。
Router(config)# mls rate-limit all mtu 10000 10
レイヤ 2 マルチキャスト IGMP スヌーピング
IIGMP スヌーピング レート リミッタでは、スーパーバイザ エンジンを宛先とするレイヤ 2 IGMP パケットの数が制限されます。IGMP スヌーピングは、ホストとスーパーバイザ エンジンの間で IGMP メッセージを待ち受けます。Cisco 7600 シリーズ ルータが truncated モードで動作している場合、レイヤ 2 PDU レート リミッタをイネーブルにはできません。ルータにファブリック対応モジュールとファブリック非対応モジュールが両方とも搭載されている場合は、ファブリック対応モジュール間のトラフィックに対して truncated モードが使用されます。このモードでは、ルータはスイッチ ファブリック チャネルを通じて、切り捨てた形のトラフィック(フレームの最初の 64 バイト)を送信します。
次に、IGMP スヌーピング トラフィックをレート制限する例を示します。
Router(config)# mls rate-limit multicast ipv4 igmp 20000 40
レイヤ 2 PDU
レイヤ 2 プロトコル データ ユニット(PDU)レート リミッタを使用すると、MSFC CPU ではなくスーパーバイザ エンジンを宛先とするレイヤ 2 PDU プロトコル パケット(BPDU、DTP、PAgP、CDP、STP、および VTP パケット)の数を制限できます。Cisco 7600 シリーズ ルータが truncated モードで動作している場合、レイヤ 2 PDU レート リミッタをイネーブルにはできません。ルータにファブリック対応モジュールとファブリック非対応モジュールが両方とも搭載されている場合は、ファブリック対応モジュール間のトラフィックに対して truncated モードが使用されます。このモードでは、ルータはスイッチ ファブリック チャネルを通じて、切り捨てた形のトラフィック(フレームの最初の 64 バイト)を送信します。
次に、バーストを 20 パケットにして、レイヤ 2 PDU を 20,000 pps にレート制限する例を示します。
Router(config)# mls rate-limit layer2 pdu 20000 20
レイヤ 2 プロトコル トンネリング
このレート リミッタでは、スーパーバイザ エンジンを宛先とする制御 PDU、CDP、STP、VTP パケットなど、レイヤ 2 プロトコル トンネリング パケットが制限されます。これらのパケットはソフトウェアでカプセル化され(PDU で宛先 MAC アドレスが書き換えられ)、独自のマルチキャスト アドレス(01-00-0c-cd-cd-d0)に転送されます。Cisco 7600 シリーズ ルータが truncated モードで動作している場合、レイヤ 2 PDU レート リミッタをイネーブルにはできません。ルータにファブリック対応モジュールとファブリック非対応モジュールが両方とも搭載されている場合は、ファブリック対応モジュール間のトラフィックに対して truncated モードが使用されます。このモードでは、ルータはスイッチ ファブリック チャネルを通じて、切り捨てた形のトラフィック(フレームの最初の 64 バイト)を送信します。
次に、バーストを 10 パケットにして、レイヤ 2 プロトコル トンネリング パケットを 10000 pps にレート制限する例を示します。
Router(config)# mls rate-limit layer2 l2pt 10000 10
IP エラー
このレート リミッタでは、IP チェックサムと長さにエラーがあるパケットが制限されます。IP チェックサム エラーまたは長さ矛盾エラーを含むパケットは、PFC3 に到達すると、MSFC に送信してさらに処理する必要があります。攻撃者は、誤った形式のパケットを使用して DoS 攻撃を実行することがありますが、ネットワーク管理者は、このタイプのパケットにレートを設定し、制御パスを保護できます。
次に、バーストを 20 パケットにして、MSFC に送信される IP エラーを 1,000 pps にレート制限する例を示します。
Router(config)# mls rate-limit unicast ip errors 1000 20
IPv4 マルチキャスト
このレート リミッタでは、IPv4 マルチキャスト パケットが制限されます。このレート リミッタでは、ハードウェアのデータ パスからソフトウェアのデータ パスに送信されるパケットをレート制限できます。このレート リミッタでは、ソフトウェアの制御パスを輻輳から保護し、設定レートを超えるトラフィックをドロップします。IPv4 マルチキャスト レート リミッタには、FIB ミス レート リミッタ、マルチキャスト部分スイッチ フロー レート リミッタ、マルチキャスト直接接続レート リミッタという 3 つのレート リミッタがあり、設定することもできます。
FIB ミス レート リミッタでは、mroute テーブルのエントリと一致しないマルチキャスト トラフィックをレート制限できます。
部分的にスイッチングされるフロー レート リミッタを使用すると、転送および複製用に MSFC3 を宛先とするフローをレート制限できます。特定マルチキャスト トラフィック フローでは、最低 1 つの発信レイヤ 3 インターフェイスがマルチレイヤ スイッチングされ、最低 1 つの発信インターフェイスがマルチレイヤ スイッチングされない場合(ハードウェア スイッチング用に H ビットが設定されない)、特定フローは部分的にスイッチングされるか、部分 SC(部分ショートカット)と見なされます。H ビット フラグが設定されている発信インターフェイスはハードウェアでスイッチングされ、残りのトラフィックは MSFC3 によってソフトウェアでスイッチングされます。このため、転送および複製用に MSFC3 を宛先としたフローをレート制限することが望ましいことがあり、レート制限しない場合は CPU 使用率が上がることがあります。
マルチキャスト直接接続レート リミッタでは、直接接続された送信元からのマルチキャスト パケットが制限されます。
次に、バーストを 30 にして、マルチキャスト パケットを 30000 pps にレート制限する例を示します。
Router(config)# mls rate-limit multicast ipv4 connected 30000 30
ip-option キーワードおよび ip-option レート リミッタは、PFC3B モード、PFC3BXL モード、PFC3C モードまたは PFC3CXL モードだけでサポートされます。
次に、uRPF チェックでエラーとなった IPv4 マルチキャスト パケットのレート リミッタを設定する例を示します。
Router(config)# mls rate-limit multicast ipv4 non-rpf 100
次に、バーストを 10 にして、マルチキャスト FIB ミス パケットを 10000 pps にレート制限する例を示します。
Router(config)# mls rate-limit multicast ipv4 fib-miss 10000 10
次に、バーストを 20 パケットにして、部分ショートカット フローを 20000 pps にレート制限する例を示します。
Router(config)# mls rate-limit multicast ipv4 partial 20000 20
次に、バーストを 20 にして、マルチキャスト パケットを 30000 pps にレート制限する例を示します。
Router(config)# mls rate-limit multicast ipv4 connected 30000 20
次に、IGMP スヌーピング トラフィックをレート制限する例を示します。
Router(config)# mls rate-limit multicast ipv4 igmp 20000 40
IPv6 マルチキャスト
このレート リミッタでは、IPv6 マルチキャスト パケットが制限されます。 表 40-1 に、IPv6 レート リミッタ、およびそれぞれのレート リミッタによって処理されるトラフィック クラスを示します。
表 40-1 IPv6 レート リミッタ
|
|
接続 |
直接接続されている送信元トラフィック |
デフォルト ドロップ |
* (*, G/m) SSM * (*, G/m) SSM 非 rpf |
ルート制御 |
* (*, FF02::X/128) |
Starg ブリッジ |
* (*, G/128) SM (*, G) が存在する場合は、* SM 非 RPF トラフィック |
Starg-M ブリッジ |
* (*, G/m) SM * (*, FF/8) (*, G) が存在しない場合は、* SM 非 RPF トラフィック |
次のいずれかの方法を使用し、IPv6 マルチキャスト トラフィックのレート リミッタを設定できます。
• あるトラフィック クラスのレート リミッタの直接関連付け:レートを選択し、そのレートをレート リミッタに関連付けます。次に、1000 pps のレートおよびバーストごとに 20 パケットを選択し、そのレートを default-drop レート リミッタに関連付ける例を示します。
Router(config)# mls rate-limit multicast ipv6 default-drop 1000 20
• 別の設定済みレート リミッタとのレート リミッタのスタティック共有:使用可能な隣接ベースのレート リミッタが十分でない場合は、設定済みレート リミッタ(ターゲット レート リミッタ)とレート リミッタを共有できます。次に、 default-drop ターゲット レート リミッタと route-cntl レート リミッタを共有する例を示します。
Router(config)# mls rate-limit multicast ipv6 route-cntl share default-drop
ターゲット レート リミッタが設定されていない場合は、ターゲット レート リミッタを設定しないと、その他のレート リミッタと共有できないことを示すメッセージが表示されます。
• レート リミッタのダイナミック共有:どのレート リミッタを共有するかわからない場合は、 share auto キーワードを使用してダイナミック共有をイネーブルにします。ダイナミック共有をイネーブルにすると、設定済みレート リミッタが選択され、その設定済みレート リミッタと指定レート リミッタが共有されます。次に、route-cntrl レート リミッタ用にダイナミックな共有を選択する例を示します。
Router(config)# mls rate-limit multicast ipv6 route-cntl share auto
次に、直接接続された送信元からの IPv6 マルチキャスト パケットにレート リミッタを設定する例を示します。
Router(config)# mls rate-limit multicast ipv6 connected 1500 20
次に、あるトラフィック クラスにレート リミッタの直接関連を設定する例を示します。
Router(config)# mls rate-limit multicast ipv6 default-drop 1000 20
次に、別の設定済みレート リミッタとレート リミッタをスタティックに共有することを設定する例を示します。
Router(config)# mls rate-limit multicast ipv6 route-cntl share default-drop
次に、ルート制御レート リミッタでダイナミック共有をイネーブルにする例を示します。
Router(config)# mls rate-limit multicast ipv6 route-cntl share auto
DoS 保護の設定時の注意事項および制約事項
ここでは、次の設定における注意事項および制約事項について説明します。
• 「PFC3」
PFC3
PFC3 で設定したシステムに DoS 保護を設定する場合は、次の CPU レート リミッタの注意事項および制約事項に従ってください。
(注) CoPP の注意事項および制約事項については、「CoPP の設定時の注意事項および制約事項」を参照してください。
• PFC3A で設定したシステムでマルチキャストをイネーブルにしている場合は、次のレート リミッタを使用しないでください。
– TTL エラー
– MTU エラー
• 次のレート リミッタは、PFC3B モード、PFC3BXL モード、PFC3C モードまたは PFC3CXL モードだけでサポートされます。
– ユニキャスト IP オプション
– マルチキャスト IP オプション
• レイヤ 2 レート リミッタは次のとおりです。
– レイヤ 2 PDU
– レイヤ 2 プロトコル トンネリング
– レイヤ 2 マルチキャスト IGMP
• 8 個のレイヤ 3 レジスタおよび 2 個のレイヤ 2 レジスタを CPU レート リミッタとして使用できます。
• CoPP を使用している場合は、CEF 受信リミッタを使用しないでください。CEF 受信リミッタにより、CoPP トラフィックが無効になります。
• レート リミッタは、CoPP トラフィックを上書きします。
• 設定したレート制限は、それぞれのフォワーディング エンジンに適用されます(グローバルに適用されるレイヤ 2 ハードウェア レート リミッタを除く)。
• レイヤ 2 レート リミッタは、truncated モードでサポートされません。
• 入力および出力の ACL ブリッジド パケット レート リミッタの使用時には、次の制約事項が適用されます。
– 入力と出力の ACL ブリッジド パケット レート リミッタは、ユニキャスト トラフィックだけで使用できます。
– 入力および出力の ACL ブリッジド パケット レート リミッタでは、単一のレート リミッタ レジスタが共有されます。ACL ブリッジ入力レート リミッタおよび ACL ブリッジ出力レート リミッタをイネーブルにする場合は、入力 ACL および出力 ACL の両方で同一レート リミッタ値を共有する必要があります。
• ユニキャスト トラフィックをレート制限するには、mls rate-limit unicast コマンドを使用します。
• マルチキャスト トラフィックをレート制限するには、mls rate-limit multicast コマンドを使用します。
• レイヤ 2/3 クラウドの IGMP または PIM パケットのパントを制限するには、mls rate-limit multicast ipv4 igmp/pim rate in pps burst size コマンドを使用します。
パケット廃棄統計情報のモニタ
あるインターフェイスの着信トラフィックまたは発信トラフィックを取り込み、このトラフィックのコピーを外部インターフェイスに送信し、トラフィック アナライザによってモニタできます。トラフィックを取り込んで外部インターフェイスに転送するには、monitor session コマンドを使用します。
トラフィックの取り込み時には、次の制約事項が適用されます。
• 着信取り込みトラフィックはフィルタ処理されません。
• 着信取り込みトラフィックは、取り込み宛先にレート制限されません。
monitor session コマンドを使用したドロップ パケットのモニタ
次に、monitor session コマンドを使用して、トラフィックを取り込んで外部インターフェイスに転送する例を示します。
Router# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)# monitor session 1 source vlan 44 both
Router(config)# monitor session 1 destination interface g9/1
2w0d: %SYS-5-CONFIG_I: Configured from console by console
次に、 show monitor session コマンドを使用して、宛先ポートの場所を表示する例を示します。
Router# show monitor session 1
show tcam interface コマンドを使用したドロップ パケットのモニタ
PFC3B モード、PFC3BXL モード、PFC3C モードおよび PFC3CXL モードでは、ハードウェアにおける ACL ヒット カウンタがサポートされます。ACL TCAM におけるそれぞれのエントリを表示するには、 show tcam interface コマンドを使用できます。
次に、 show tcam interface コマンドを使用して、エントリがヒットした回数を表示する例を示します。
Router# show tcam interface fa5/2 acl in ip detail
-------------------------------------------------------------------------------------------------------------
DPort - Destination Port SPort - Source Port TCP-F - U -URG Pro - Protocol
I - Inverted LOU TOS - TOS Value - A -ACK rtr - Router
MRFM - M -MPLS Packet TN - T -Tcp Control - P -PSH COD - C -Bank Care Flag
- R -Recirc. Flag - N -Non-cachable - R -RST - I -OrdIndep. Flag
- F -Fragment Flag CAP - Capture Flag - S -SYN - D -Dynamic Flag
- M -More Fragments F-P - FlowMask-Prior. - F -FIN T - V(Value)/M(Mask)/R(Result)
X - XTAG (*) - Bank Priority
-------------------------------------------------------------------------------------------------------------
Interface: 1018 label: 1 lookup_type: 0
protocol: IP packet-type: 0
+-+-----+---------------+---------------+---------------+---------------+-------+---+----+-+---+--+---+---+
|T|Index| Dest Ip Addr | Source Ip Addr| DPort | SPort | TCP-F|Pro|MRFM|X|TOS|TN|COD|F-P|
+-+-----+---------------+---------------+---------------+---------------+------+---+----+-+---+--+---+---+
V 18396 0.0.0.0 0.0.0.0 P=0 P=0 ------ 0 ---- 0 0 -- --- 0-0
M 18404 0.0.0.0 0.0.0.0 0 0 0 ---- 0 0
R rslt: L3_DENY_RESULT rtr_rslt: L3_DENY_RESULT
V 36828 0.0.0.0 0.0.0.0 P=0 P=0 ------ 0 ---- 0 0 -- --- 0-0
M 36836 0.0.0.0 0.0.0.0 0 0 0 ---- 0 0
R rslt: L3_DENY_RESULT (*) rtr_rslt: L3_DENY_RESULT (*)
TTL および IP のオプション カウンタを使用し、レイヤ 3 フォワーディング エンジンのパフォーマンスをモニタすることもできます。
次に、 show mls statistics コマンドを使用して、レイヤ 3 フォワーディング エンジンに関連するパケット統計およびエラーを表示する例を示します。
Router# show mls statistics
Statistics for Earl in Module 6
Total packets Switched : 25583421
Total packets L3 Switched : 25433414 @ 24 pps
Total Packets Bridged : 937860
Total Packets FIB Switched : 23287640
Total Packets ACL Routed : 0
Total Packets Netflow Switched : 0
Total Mcast Packets Switched/Routed : 96727
Total ip packets with TOS changed : 2
Total ip packets with COS changed : 2
Total non ip packets COS changed : 0
Total packets dropped by ACL : 33
Total packets dropped by Policing : 0
MAC/IP length inconsistencies : 0
Short IP packets received : 0
IP header checksum errors : 0
<----------------- TTL counters
<------------------MTU failure counters
Total packets L3 Switched by all Modules: 25433414 @ 24 pps
VACL 取り込みを使用したドロップ パケットのモニタ
VACL 取り込み機能では、取り込みトラフィックを転送するように設定されたポートにトラフィックを転送できます。capture アクションを指定すると、転送されたパケットのキャプチャ ビットが設定されて、キャプチャ機能がイネーブルであるポートがパケットを受信できるようになります。キャプチャできるのは、転送されたパケットだけです。
各 VLAN から別のインターフェイスにトラフィックを割り当てるには、VACL 取り込みを使用できます。
VACL 取り込みでは、HTTP などの、あるタイプのトラフィックを 1 つのインターフェイスに、DNS などの別のタイプのトラフィックを別のインターフェイスに送信できません。VACL 取り込み粒度は、ローカルにスイッチングされるトラフィックだけに適用可能です。トラフィックをリモート ルータに転送する場合は、粒度を維持できません。
次に、VACL 取り込みを使用して、トラフィックを取り込んでローカル インターフェイスに転送する例を示します。
Router(config-if)# switchport capture
Router(config-if)# switchport capture allowed vlan add 100
レート リミッタ情報の表示
show mls rate-limit コマンドでは、設定したレート リミッタに関する情報が表示されます。 show mls rate-limit usage コマンドでは、レート リミッタ タイプによって使用されるハードウェア レジスタが表示されます。レジスタが、どのレート リミッタ タイプによっても使用されない場合は、出力に Free と表示されます。レジスタがレート リミッタ タイプによって使用されている場合は、Used と表示されて、レート リミッタ タイプも表示されます。
コマンド出力において、レート制限ステータスは次のうちいずれかになります。
• On は、特定ケースのレートが設定されていることを示します。
• Off は、レート リミッタ タイプが設定されておらず、そのケースのパケットがレート制限を受けないことを示します。
• CPU の使用率が高くなるのは次のような場合です。
– CoPP レートが過剰なトラフィックを制限してドロップしている
– mls qos protocol protocol pass-through が設定されている
これを回避するには、 mls qos protocol ではなく、過剰なトラフィックをドロップする CoPP に依存します。
• On/Sharing は、同一共有グループに属する別のレート リミッタの設定により、特定ケース(手動で設定していない)が影響されることを示します。
• ハイフンは、マルチキャスト部分 SC レート リミッタがディセーブルであることを示します。
コマンド出力において、レート制限共有は次の情報を示します。
• 共有がスタティックであるかダイナミックであるか
• グループ ダイナミック共有コード
設定されているレート リミッタを表示するには、 show mls rate-limit コマンドを使用します。
Router# show mls rate-limit
Sharing Codes: S - static, D - dynamic
Codes dynamic sharing: H - owner (head) of the group, g - guest of the group
Rate Limiter Type Status Packets/s Burst Sharing
--------------------- ---------- --------- ----- -------
MCAST DFLT ADJ On 100000 100 Not sharing
MCAST DIRECT CON Off - - -
ACL BRIDGED OUT Off - - -
ACL VACL LOG On 2000 1 Not sharing
MCAST PARTIAL SC On 100000 100 Not sharing
IP RPF FAILURE On 100 10 Group:0 S
ICMP UNREAC. NO-ROUTE On 100 10 Group:0 S
ICMP UNREAC. ACL-DROP On 100 10 Group:0 S
MCAST IP OPTION Off - - -
UCAST IP OPTION Off - - -
IP ERRORS On 100 10 Group:0 S
MCAST IPv6 DIRECT CON Off - - -
MCAST IPv6 *G M BRIDG Off - - -
MCAST IPv6 *G BRIDGE Off - - -
MCAST IPv6 SG BRIDGE Off - - -
MCAST IPv6 ROUTE CNTL Off - - -
MCAST IPv6 DFLT DROP Off - - -
MCAST IPv6 SECOND. DR Off - - -
ハードウェア レート リミッタの使用状況を表示するには、 show mls rate-limit usage コマンドを使用します。
Router# show mls rate-limit usage
Rate Limiter Type Packets/s Burst
--------------------- --------- -----
MCAST DFLT ADJ 100000 100
ICMP UNREAC. NO-ROUTE 100 10
ICMP UNREAC. ACL-DROP 100 10
RL# 8: Rsvd for capture - - -
ハードウェア制限により、PFC または DFC は、MLS レート リミッタに渡したパケット数またはドロップしたパケット数を報告できません。ただし、 show mls statistics コマンドと terminal exec prompt timestamp コマンドを使用して、一部のエラー パケットのレートを計算できます。
MLS レート リミッタの設定例
ここでは、MLS レート リミッタの設定例を示します。要件を満たすには、この例を適宜変更する必要があります。
この設定例は、Cisco IOS 12.2(33)SRE3、15.0(1)S3、15.1(1)S2、およびそれ以降のリリースに有効です。
Router(config)# mls rate-limit unicast acl input 1000 10
Router(config)# mls rate-limit unicast acl output 1000 10
Router(config)# mls rate-limit multicast ipv4 igmp 1000 10
Router(config)# mls rate-limit multicast ipv4 fib-miss 100 10
Router(config)# mls rate-limit multicast ipv4 partial 100 10
Router(config)# mls rate-limit multicast ipv4 connected 100 250
Router(config)# no mls rate-limit unicast acl vacl-log
Router(config)# mls rate-limit unicast ip options 1000 10
Router(config)# mls rate-limit multicast ipv4 ip-options 1000 10
Cisco IOS 12.2(33)SRE3 よりも前のリリースについては、MLS レート リミッタの設定に次の 2 行を追加してください。
Router(config)# mls rate-limit all ttl-failure 100 10
Router(config)# mls rate-limit all mtu-failure 100 10
この設定では、 show mls rate-limit コマンドの出力例にあるとおり、8 つのレート制限レジスタをすべて使用しています。
Router# show mls rate-limit | exclude - -
Sharing Codes: S - static, D - dynamic
Codes dynamic sharing: H - owner (head) of the group, g - guest of the group
Rate Limiter Type Status Packets/s Burst Sharing
--------------------- ---------- --------- ----- -------
MCAST DFLT ADJ On 100 10 Not sharing
MCAST DIRECT CON On 100 250 Not sharing
ACL BRIDGED IN On 1000 10 Group:1 S
ACL BRIDGED OUT On 1000 10 Group:1 S
MCAST PARTIAL SC On 100 10 Not sharing
IP RPF FAILURE On 100 10 Group:0 S
TTL FAILURE On 97 10 Not sharing
ICMP UNREAC. NO-ROUTE On 100 10 Group:0 S
ICMP UNREAC. ACL-DROP On 100 10 Group:0 S
MTU FAILURE On 997 10 Not sharing
MCAST IP OPTION On 1000 10 Group:3 S
UCAST IP OPTION On 1000 10 Group:2 S
IP ERRORS On 100 10 Group:0 S
Router# show mls rate-limit usage
Rate Limiter Type Packets/s Burst
--------------------- --------- -----
ICMP UNREAC. NO-ROUTE 100 10
ICMP UNREAC. ACL-DROP 100 10
RL# 8: Rsvd for capture - - -
CoPP の設定時の注意事項および制約事項
CoPP を設定するときは、次の注意事項および制約事項に従ってください。
• マルチキャストに一致するクラスはハードウェアで適用されず、ソフトウェアで適用されます。
• CPP は、ハードウェアでブロードキャスト パケット用にサポートされません。ACL、トラフィック ストーム制御、CPP ソフトウェア保護の組み合わせにより、ブロードキャスト DoS 攻撃から保護されます。
• CoPP では ARP ポリシーがサポートされません。ARP ポリシング メカニズムにより、ARP ストームから保護されます。
• CoPP では、デフォルトの非 IP クラスを除いて、非 IP クラスがサポートされません。非 IP クラスの代わりに ACL を使用して非 IP トラフィックを廃棄でき、デフォルトの非 IP CoPP クラスを使用して、RP CPU に到達する非 IP トラフィックに制限できます。
• CoPP ポリシー ACL では log キーワードを使用しないでください。
• PFC3A では、出力 QoS および CoPP を同時に設定できません。この状況では、CoPP がソフトウェアで実行されます。出力 QoS および CoPP を同時に設定できないことを通知する警告メッセージが表示されます。
• QoS 設定が大きい場合は、TCAM スペースが不足することがあります。この場合は、CoPP がソフトウェアで実行される場合があります。
• その他のインターフェイスで QoS 設定が大きい場合は、TCAM スペースが不足することがあります。この状況が発生した場合は、CoPP が全体的にソフトウェアで実行され、パフォーマンスの低下および CPU サイクルの消費という結果になることがあります。
• CoPP ポリシーによって、ルーティング プロトコルまたはルータへの対話型アクセスなどの重要なトラフィックがフィルタリングされないことを確認してください。このトラフィックをフィルタリングすると、ルータへのリモート アクセスが妨害され、コンソール接続が必要になることがあります。
• PFC3 では組み込みの特殊ケース レート リミッタがサポートされます。これは、TTL、MTU、IP のオプションなど、ACL を使用できない状況で役立ちます。特殊ケース レート リミッタをイネーブルにする場合は、この特殊ケース レート リミッタにより、レート リミッタの基準に一致するパケットの CoPP ポリシーが上書きされることに注意してください。
• mls qos コマンドを使用して MMLS QoS をグローバルにイネーブルにしないと、CoPP はハードウェアでイネーブルになりません。mls qos コマンドを入力しない場合、CoPP はソフトウェアだけで動作し、ハードウェアにとって有用にはなりません。
• 出力 CoPP もサイレント モードもサポートされません。CoPP は入力だけでサポートされます(サービス ポリシー出力 CoPP は、制御プレーン インターフェイスに適用できません)。
• ハードウェアの ACE ヒット カウンタは ACL ロジック専用です。ソフトウェア ACE ヒット カウンタ、および show access-list コマンド、show policy-map control-plane コマンド、show mls ip qos コマンドを使用して、CPU トラフィックのトラブルシューティングと評価ができます。
• CoPP は転送エンジンごとに実行され、ソフトウェア CoPP は一括で実行されます。
• CoPP は、ハードウェアでマルチキャスト パケット用にサポートされません。ACL、マルチキャスト CPU レート リミッタ、CoPP ソフトウェア保護の組み合わせにより、マルチキャスト DoS 攻撃から保護できます。
• CoPP では、 log キーワードを使用した ACE がサポートされません。
• CoPP では、ハードウェア QoS TCAM リソースが使用されます。 show tcam utilization コマンドを入力し、TCAM の使用状況を確認してください。
• CoPP が設定されているときに、ユニキャスト トラフィックが CoPP 分類を通過すると、入力ポート上で設定された信頼に関係なく、RP にパントされたパケットが trust DSCP アクションを使用して処理されます。CoPP が設定されており、パントされたパケットを入力ポートに基づいてマーキングまたは信頼する場合は、入力ポート上で platform ip features sequential コマンドを実行します。マルチキャスト トラフィックとブロードキャスト トラフィックはハードウェア Copp 分類を通過しないため、この動作はマルチキャスト トラフィックとブロードキャスト トラフィックに適用されません。
• ポリサー値を設定する場合は、mls qos protocol がサポートされており、ルータ内のトラフィック スイッチが影響を受けることに注意してください。
• 着信制御パケットにコントロール プレーン SPD で優先順位を付けるには、これらのパケットが信頼される必要があります。そうしないと、これらのパケットは、RP にパントされるその他のデータ パケットと競合する場合があり、それによってドロップされる可能性が高まります。
• LAN インターフェイスに入るパケットの場合:
– CoPP がルータで適用されない場合は、 mls qos trust を使用して、入力トラフィック DSCP または precedence が信頼されるようにすることをお勧めします。着信制御プロトコル パケットの precedence 6 未満の precedence 値への再マーキングを回避してください。制御プロトコル パケットは、その precedence 値または DSCP 値に基づいて分類することができます。
– CoPP が適用され、ユニキャスト トラフィックが CoPP 分類に到達した場合、CoPP は着信信頼状態を trust dscp にオーバーライドし、コントロール プレーンにパントされるパケットの DSCP または precedence を維持します。マルチキャスト トラフィックおよびブロードキャスト トラフィックはハードウェア CoPP 分類を通過しないので、これはマルチキャスト トラフィックとブロードキャスト トラフィックには適用されません。
• SIP 400 および ES+ ラインカードなどの WAN インターフェイスに入るパケットについては、着信制御プロトコル パケットの precedence 値が precedence 6 または 7 未満に再マーキングされないようにしてください。制御プロトコル パケットは、その precedence 値または DSCP 値に基づいて識別することができます。
• CoPP がレート制限して過剰なトラフィックをドロップし、さらに、 mls qos protocol コマンドで protocol pass-through モードが設定されていると、CPU の使用率が高くなります。これを回避するには、過剰なトラフィックをドロップするための CoPP は使用して、トラフィックをルート プロセッサに直接ルーティングするための mls qos protocol コマンドは使用しないでください。CoPP トラフィックの分類については、「トラフィック分類の概要」を参照してください。
CoPP ポリシーの作成
CoPP ポリシーを作成する前に、必要なトラフィック量を特定して、複数のクラスに分類する必要があります。相対的な重要度に基づいてトラフィックを分類する方法が推奨されています。
CoPP ポリサーの作成時に使用されるサンプル分類基準を次に示します。
• ポリサーは class-default で使用しないでください。可能性のあるすべてのトラフィックを class-default 以外の特定のクラスに分類する必要があります。
• catch-all トラフィックには、 match ipv4 any class コマンドまたは match ipv6 any class コマンドを使用します。class-default を同じ目的で使用することができますが、次の例で示すように、class-default アクションを使用してトラフィックを最小限に抑えることが推奨されます。
Class MATCH-IPv4-ANY Match all IPv4 traffic which doesn't fall in any of the above mentioned classes
Class MATCH-IPV6-ANY Match all IPV6 traffic which doesn't fall in any of the above mentioned classes
「CoPP ポリシーの例」では、トラフィックが 5 つのクラスに分類されます。実際のクラス数は、5 とは限らないため、ローカルな要件とセキュリティ ポリシーに基づいて選択する必要があります。これらのトラフィック クラスは、CPU またはコントロール プレーンに関して定義されます。
5 つのクラスは次のとおりです。
• Critical
– ルータとネットワークの運用に不可欠なトラフィック。
– 例:Border Gateway Protocol(BGP; ボーダー ゲートウェイ プロトコル)などのルーティング プロトコル
– サイトによっては、必要に応じて、運用に不可欠なトラフィック以外のトラフィックを Critical として分類する場合があります。
• Important
– 日常業務に必要な頻繁に使用されるトラフィック
– 例:リモート ネットワーク アクセスおよび管理(telnet、Secure Shell(SSH; セキュア シェル)、ネットワーク タイム プロトコル(NTP)、および簡易ネットワーク管理プロトコル(SNMP))に使用されるトラフィック
• Normal
– 機能的だが、ネットワーク運用に不可欠ではないトラフィック
– ルータに悪影響を及ぼさない範囲で許可しなければならないため、コントロール プレーン保護スキームの設計時に特に解決が難しい通常のトラフィック。CoPP を使用している場合は、このトラフィックが許可されますが、低レートに制限されます。
– 例:ICMP エコー要求
• Undesirable
– ドロップして、ルータ プロセッサへのアクセスを拒否すべき、明らかに不良な、または悪意のあるトラフィック
– 特に、ルータ宛ての既知のトラフィックを必ず拒否して、デフォルト カテゴリに分類しない場合に便利です。トラフィックを明示的に拒否することによって、エンドユーザは show コマンドを使用してそのトラフィックに関する大まかな統計情報を収集できるため、拒否対象のトラフィックのレートに対して何らかの見識を示すことができます。
• Layer 2 class
– アドレス解決プロトコル(ARP)に使用されるトラフィック。過剰な ARP パケットが RP CPU リソースを独占することによって、その他の重要なプロセス用のリソースが不足する可能性があります。CoPP を使用すれば、ARP パケットをレート制限してこの状況を回避することができます。現在、一致プロトコル分類基準を使用して明確に分類されるレイヤ 2 プロトコルは ARP だけです。
• Match-Any class
– その他のすべての IPv4/IPv6 トラフィック(上述したどのクラスにも属さない)と一致し、必要に応じて、それらをポリシングします。特に、class-default でポリサーが必要とされないように設計されています。
• Default
– ルータ プロセッサ宛てのその他の未確認トラフィック
– デフォルト分類を使用すれば、コントロール プレーン宛ての未確認トラフィックのレートを特定するための統計情報のモニタリングが容易になります。確認されたトラフィックは、分析を通してさらに細かく分類したり、必要に応じて、他の CoPP ポリシー エントリで更新したりすることができます。
– リリース 12.2(18)SXD1 内の Sup720 は、ハードウェアで MQC class-default をサポートしていません。このサポートは、リリース 12.2(18)SXE1 ソフトウェア リリースで追加されました。下の例で "class-default" が通常の class-map に置き換えられていることからもわかるように、これは大きな制限事項ではありません。
– レイヤ 2 キープアライブ、CLNS、その他の非 IP パケットなどのトラフィック タイプは CoPP(class-default 内のみ)で認識されます。これらのトラフィック タイプは MQC for CoPP では分類できないため、必ず、CoPP class-default クラスに分類されます。CoPP が設定されている場合は、レイヤ 2 キープアライブやその他の不可欠なコントロール プレーン トラフィックがドロップされないように、class-default をレート制限しないことが重要です。必ず、class-default の直前にある CoPP policy-map 内で "catch all" IP クラスを設定するのはこのためです。
上記分類スキームでは、よく使用されるトラフィックが一連の ACL を使用して識別されます。
• Class CoPP-CRITICAL:CL 120:critical トラフィック
• Class CoPP-IMPORTANT:ACL 121:important トラフィック
• Class CoPP-NORMAL:ACL 122:normal トラフィック
• Class CoPP-UNWANTED ACL 123:不要なトラフィック(スラマー ワーム トラフィックなど)を明示的に拒否する
• Class CoPP-ARP:ARP プロトコルと一致する
• Class CoPP-Match-all ACL 124:その他のトラフィック
ACL はポリシーの定義に使用されるトラフィックのクラスを編成します。
サンプル CoPP ポリシー
これは、上記 ACL を使用して作成された CoPP ポリシーの例です。
access-list 120 remark *** ACL for CoPP-Critical ***
access-list 120 remark *** LDP ***
access-list 120 permit udp 172.0.0.0 0.0.255.255 eq 646 any
access-list 120 permit udp 172.0.0.0 0.0.255.255 any eq 646
access-list 120 permit tcp 172.0.0.0 0.0.255.255 eq 646 any
access-list 120 permit tcp 172.0.0.0 0.0.255.255 any eq 646
access-list 120 remark *** BGP ***
access-list 120 permit tcp 172.0.0.0 0.0.255.255 eq bgp any
access-list 120 permit tcp 172.0.0.0 0.0.255.255 any eq bgp
access-list 120 remark *** PIM ***
access-list 120 permit pim 172.0.0.0 0.0.255.255 any
access-list 120 permit pim any 172.0.0.0 0.0.255.255
access-list 121 remark *** ACL for CoPP-IMPORTANT
access-list 121 remark *** Telnet ***
access-list 121 permit tcp 172.0.0.0 0.0.255.255 172.0.0.0 0.0.255.255 eq telnet
access-list 121 remark *** SSH ***
access-list 121 permit tcp 172.0.0.0 0.0.255.255 152.0.0.0 0.255.255.255 eq 22
access-list 121 remark *** SNMP ***
access-list 121 permit udp 172.0.0.0 0.0.255.255 152.0.0.0 0.255.255.255 eq snmp
access-list 121 remark *** NTP ***
access-list 121 permit udp 172.0.0.0 0.0.255.255 host 192.168.70.10 eq ntp
access-list 121 permit udp 172.0.0.0 0.0.255.255 host 192.168.70.30 eq ntp
access-list 121 remark *** Syslog ***
access-list 121 permit udp 172.0.0.0 0.0.255.255 152.0.0.0 0.255.255.255 eq syslog
access-list 121 remark *** TACAS+ ***
access-list 121 permit tcp 172.0.0.0 0.0.255.255 152.0.0.0 0.255.255.255 eq tacacs
access-list 122 remark CoPP normal traffic
access-list 122 permit icmp any any ttl-exceeded
access-list 122 permit icmp any any port-unreachable
access-list 122 permit icmp any any echo-reply
access-list 122 permit icmp any any echo
access-list 123 remark *** ACL for CoPP-UNDESIRABLE
access-list 123 permit icmp any any fragments
access-list 123 permit udp any any fragments
access-list 123 permit tcp any any fragments
access-list 123 permit ip any any fragments
access-list 124 remark *** ACL for CoPP-Match-all
access-list 124 permit ip any any
access-list 124 permit ipv6 any any
class-map match-all CoPP-CRITICAL
class-map match-all CoPP-IMPORTANT
class-map match-all CoPP-NORMAL
class-map match-all CoPP-ARP
class-map match-all CoPP-UNWANTED
class-map match-all CoPP-Match-all
パント対象トラフィックのレート制限が推奨されていますが、特に、critical トラフィックの場合は、必要なトラフィック レートが十分把握されていることを確認してください。レートが低すぎると、必要なトラフィックが廃棄またはドロップされる可能性があり、レートが高すぎると、ルータ プロセッサを非 critical パケットの処理に集中させることになりかねません。これらのレートは、サイト固有であり、ローカルなトポロジとルーティング テーブルのサイズに大きく影響します。
ポリシングするレートは、決定された重要度とサイト固有のレート値の両方に依存します。たとえば、「通常の」SNMP レートは環境によって異なります。上記分類スキームを使用すれば、critical トラフィックは無条件で許可されますが、important、normal、および default トラフィックは適切なレート制限を通して許可されます。ただし、この実装ではネットワーク上で undesirable トラフィックが即座にドロップされます。
表 39-3 では、この例を拡張し、サンプル ポリシーを要約しています。表内のレートは説明用として使用されていることに注意してください。環境によって基準値が異なります。たとえば、大規模なサービス プロバイダー トポロジでは、標準的な企業ネットワークに比べて、critical トラフィックのレートを高くする必要があります(BGP ルーティング テーブルが大きいため)。
critical トラフィック クラスを定義する目的は、レートを制限することはでなく、このトラフィックに critical というタグを付け、ルータ プロセッサへの無条件アクセスを許可することです。ポリシーが精緻化されるのに従って、critical トラフィックにより適切なレートを使用する必要があります。また、show コマンドでトラフィック レートの異常な上昇を検出することができます。
表 40-3 サンプル CoPP ポリシー
|
|
|
|
Critical |
N/A |
送信 |
送信 |
Important |
125,000 |
送信 |
ドロップ |
Normal |
64,000 |
送信 |
ドロップ |
Undesirable |
32,000 |
ドロップ |
ドロップ |
ARP |
64,000 |
送信 |
ドロップ |
MATCH-ALL |
96,000 |
送信 |
ドロップ |
Class-default |
- |
- |
- |
CoPP ポリシーの例
police 1000000 31250 31250 conform-action transmit exceed-action transmit violate-action transmit
police 128000 4000 4000 conform-action transmit exceed-action drop violate-action drop
police 64000 2000 2000 conform-action transmit exceed-action drop violate-action drop
police 32000 1500 1500 conform-action transmit exceed-action drop violate-action drop
police 64000 1500 1500 conform-action transmit exceed-action drop violate-action drop
police 96000 3000 3000 conform-action transmit exceed-action drop violate-action drop
トラフィック分類の定義
ここでは、CoPP トラフィックの分類方法について説明します。
• 「トラフィック分類の概要」
• 「トラフィック分類のガイドライン」
• 「CoPP トラフィック分類の基本 ACL 例」
トラフィック分類の概要
任意の数のクラスを定義できますが、一般的にトラフィックは、相対的な重要性に基づいたクラスにグループ化されます。グループ化の例を以下に示します。
• Border Gateway Protocol(BGP; ボーダー ゲートウェイ プロトコル):BGP キープアライブおよびルーティング アップデートなどの BGP ルーティング プロトコルのネイバー関係の維持で重要となるトラフィック。BGP ルーティング プロトコルを維持することは、ネットワーク内の接続を維持するために、またはサービス プロバイダーにとって重要です。BGP を実行しないサイトでこのクラスを使用する必要はありません。
• Interior Gateway Protocol(IGP; 内部ゲートウェイ プロトコル):Open Shortest Path First(OSPF)、Enhanced Interior Gateway Routing Protocol(EIGRP)、Routing Information Protocol(RIP)などの IGP ルーティング プロトコルの維持で重要になるトラフィック。IGP ルーティング プロトコルを維持することは、ネットワーク内の接続を維持するために重要となります。
• 管理:日常業務で必要な、頻繁に使用される必須トラフィック。たとえば、Telnet、Secure Shell(SSH; セキュア シェル)、ネットワーク タイム プロトコル(NTP)、簡易ネットワーク管理プロトコル(SNMP)、Terminal Access Controller Access Control System(TACACS)、ハイパーテキスト転送プロトコル(HTTP)、Trivial File Transfer Protocol(TFTP; 簡易ファイル転送プロトコル)、ファイル転送プロトコル(FTP)など、リモート ネットワーク アクセス、および Cisco IOS イメージのアップグレートと管理に使用されるトラフィック。
• レポート:レポートする目的でネットワーク パフォーマンス統計を生成するために使用されるトラフィック。たとえば、さまざまな QoS データ クラス内の応答時間でレポートするために、Cisco IOS IP Service Level Agreement(SLA; サービス レベル契約)を使用して、さまざまな DSCP 設定で ICMP を生成することなど。
• モニタ:ルータのモニタに使用されるトラフィック。トラフィックを許可する必要がありますが、ルータにリスクがかからないようにする必要があります。CoPP を使用すると、このトラフィックを許可できますが、低レートに制限されます。たとえば、ICMP エコー要求(ping)および traceroute など。
• クリティカル アプリケーション:特定カスタマーの環境に固有で重要なクリティカル アプリケーション トラフィック。このクラスに分類するトラフィックは、ユーザに必要なアプリケーションの要件に合わせて、特別に調整する必要があります。マルチキャストを使用するお客様もいれば、IPSec または Generic Routing Encapsulation(GRE; 総称ルーティング カプセル化)を使用するお客様もいます。たとえば、GRE、ホットスタンバイ ルータ プロトコル(HSRP)、Virtual Router Redundancy Protocol(VRRP; 仮想ルータ冗長プロトコル)、Session Initiation Protocol(SIP)、Data Link Switching(DLSw; データ リンク スイッチング)、Dynamic Host Configuration Protocol(DHCP; ダイナミック ホスト コンフィギュレーション プロトコル)、Multicast Source Discovery Protocol(MSDP)、インターネット グループ管理プロトコル(IGMP)、Protocol Independent Multicast(PIM)、マルチキャスト トラフィック、IPSec など。
• レイヤ 2 プロトコル:アドレス解決プロトコル(ARP)に使用されるトラフィック。過剰な ARP パケットが MSFC リソースを独占し、その他の重要なプロセスで MSFC リソースが足りなくなることがあります。CoPP を使用すると、ARP パケットをレート制限してこの状況を防止できます。現在、一致プロトコル分類基準を使用して明確に分類できるレイヤ 2 プロトコルは、ARP だけです。
• 不要:無条件でドロップして MSFC へのアクセスを拒否する必要がある不良トラフィックまたは悪質トラフィックを明示的に識別します。ルータを宛先とした既知のトラフィックを常に拒否する必要があり、デフォルト カテゴリに配置しない場合は、この不要分類が特に役立ちます。トラフィックを明示的に拒否する場合は、 show コマンドを入力して拒否トラフィックに関する概算統計を収集してレートを見積もることができます。
• デフォルト:識別されなかった、MSFC を宛先とするすべてのトラフィック。MQC はデフォルト クラスを提供するので、ユーザは、その他のユーザ定義クラスで明示的に識別されないトラフィックに適用する処置を指定できます。このトラフィックは、MSFC にアクセスするレートが大幅に制限されます。デフォルト分類を適切に使用すると、統計をモニタし、これを使用しない場合は識別されないコントロール プレーンを宛先とするトラフィックのレートを判断できます。このトラフィックが識別されたあとは、さらに分析を実行して分類し、必要な場合は、その他の CoPP ポリシー エントリを更新してこのトラフィックに対応できます。
トラフィックの分類が完了したら、ポリシーの定義に使用される、トラフィックのクラスを ACL が構築します。CoPP 分類の基本的な ACL の例については、「CoPP トラフィック分類の基本 ACL 例」を参照してください。
トラフィック分類のガイドライン
トラフィック分類を定義するときは、次のガイドラインおよび制約事項に従ってください。
• 実際の CoPP ポリシーを開発する前に、必要なトラフィックを識別してさまざまなクラスに分類する必要があります。トラフィックは、相対的な重要性に基づく 9 個のクラスにグループ化されます。実際に必要となるクラスの数は異なることがあり、ローカルの要件とセキュリティ ポリシーに基づいて選択する必要があります。
• 双方向に一致するポリシーを定義する必要はありません。ポリシーは入力だけで適用されるので、単方向(ネットワークから MSFC へ)でトラフィックを識別する必要しかありません。
CoPP トラフィック分類の基本 ACL 例
ここでは、CoPP 分類の基本的な ACL 例を示します。この例では、一般的に必要なトラフィックが、次の ACL で識別されます。
• ACL 120:クリティカル トラフィック
• ACL 121:重要トラフィック
• ACL 122:通常トラフィック
• ACL 123:不要なトラフィックを明示的に拒否
• ACL 124:その他すべてのトラフィック
次に、クリティカル トラフィック用に ACL 120 を定義する例を示します。
Router(config)# access-list 120 remark CoPP ACL for critical traffic
次に、既知のピアからこのルータの BGP TCP ポートへの BGP を許可する例を示します。
Router(config)# access-list 120 permit tcp host 47.1.1.1 host 10.9.9.9 eq bgp
次に、ピアの BGP ポートからこのルータへの BGP を許可する例を示します。
Router(config)# access-list 120 permit tcp host 47.1.1.1 eq bgp host 10.9.9.9
Router(config)# access-list 120 permit tcp host 10.86.183.120 host 10.9.9.9 eq bgp
Router(config)# access-list 120 permit tcp host 10.86.183.120 eq bgp host 10.9.9.9
次に、重要クラス用に ACL 121 を定義する例を示します。
Router(config)# access-list 121 remark CoPP Important traffic
次に、TACACS ホストからのリターン トラフィックを許可する例を示します。
Router(config)# access-list 121 permit tcp host 1.1.1.1 host 10.9.9.9 established
次に、サブネットからルータへの SSH アクセスを許可する例を示します。
Router(config)# access-list 121 permit tcp 10.0.0.0 0.0.0.255 host 10.9.9.9 eq 22
次に、特定サブネットのホストからルータへの Telnet の完全アクセスを許可し、残りのサブネットをポリシングする例を示します。
Router(config)# access-list 121 deny tcp host 10.86.183.3 any eq telnet
Router(config)# access-list 121 permit tcp 10.86.183.0 0.0.0.255 any eq telnet
次に、NMS ホストからルータへの SNMP アクセスを許可する例を示します。
Router(config)# access-list 121 permit udp host 1.1.1.2 host 10.9.9.9 eq snmp
次に、ルータが既知のクロック ソースから NTP パケットを受信できるようにする例を示します。
Router(config)# access-list 121 permit udp host 1.1.1.3 host 10.9.9.9 eq ntp
次に、通常トラフィック クラス用に ACL 122 を定義する例を示します。
Router(config)# access-list 122 remark CoPP normal traffic
次に、ルータからの traceroute トラフィックを許可する例を示します。
Router(config)# access-list 122 permit icmp any any ttl-exceeded
Router(config)# access-list 122 permit icmp any any port-unreachable
次に、ping を発信したルータに応答の受信を許可する例を示します。
Router(config)# access-list 122 permit icmp any any echo-reply
次に、ルータへの ping を許可する例を示します。
Router(config)# access-list 122 permit icmp any any echo
次に、不要クラス用に ACL 123 を定義する例を示します。
Router(config)# access-list 123 remark explicitly defined "undesirable" traffic
(注) 次の例において、ACL 123 は分類とモニタを目的とした許可エントリであり、トラフィックは CoPP ポリシーの結果としてドロップされます。
次に、UDP 1434 を宛先とするすべてのトラフィックをポリシング用に許可する例を示します。
Router(config)# access-list 123 permit udp any any eq 1434
次に、その他すべてのトラフィック用に ACL 124 を定義する例を示します。
Router(config)# access-list 124 remark rest of the IP traffic for CoPP
Router(config)# access-list 124 permit ip any any