この製品のドキュメントセットは、偏向のない言語を使用するように配慮されています。このドキュメントセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブ ランゲージの取り組みの詳細は、こちらをご覧ください。
シスコは世界中のユーザにそれぞれの言語でサポート コンテンツを提供するために、機械と人による翻訳を組み合わせて、本ドキュメントを翻訳しています。ただし、最高度の機械翻訳であっても、専門家による翻訳のような正確性は確保されません。シスコは、これら翻訳の正確性について法的責任を負いません。原典である英語版(リンクからアクセス可能)もあわせて参照することを推奨します。
このドキュメントでは、Catalyst 9000シリーズスイッチでSimple Service Discovery Protocol(SSDP)パケットをドロップまたは制限するためのベストプラクティスについて説明します。
次の項目に関する知識があることが推奨されます。
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
一般に、ラップトップや携帯電話などのエンドユーザデバイスは、SSDPプロトコルを使用するユニバーサルプラグアンドプレイ(UPnP)機能を自動的にアドバタイズします。クライアントはIPアドレス239.255.255.250にマルチキャストアドバタイズメントパケットを送信します。これらのアドバタイズメントは、通常、Time to Live(TTL;存続可能時間)が1で送信され、マルチキャストパケットを生成したホストのローカルサブネットを超えることはありません。ネットワーク上の他のデバイスのアドバタイズメントを受信するために、エンドポイントはIGMPメンバーシップレポートも239.255.255.250アドレスに送信します。これは、他のマルチキャスト送信元からこのIPアドレスに送信されるマルチキャストトラフィックもこのクライアントに転送する必要があることをネットワークに伝えます。
数百台または数千台のエンドポイントがすべてソースとして機能し、このグループの受信対象となるエンタープライズ環境では、このクライアントアクティビティをオフにしておくとネットワークデバイスに過大な負荷がかかり、ネットワークリソースが枯渇するとサービスが停止する可能性があります。
この枯渇は主に次の2つの方法のいずれかで発生します。
このドキュメントでは詳しく説明していませんが、SSDPはオープンな性質を持つため、攻撃者がこのサービスを有効にした状態でクライアントのグループに巧妙に細工されたパケットを送信することで、1つまたは複数の宛先ホストに大きな応答が送信される可能性があることに注意してください。また、大量の発信インターフェイスの状態が作成されると、スイッチは特定用途向け集積回路(ASIC)内の発信インターフェイスごとに各フレームのコピーを1つ作成する必要があるため、少量のマルチキャストトラフィックによってスイッチのパフォーマンス容量に大きな負荷がかかる可能性があります。発信インターフェイスのリストでは、その番号が20以上のインターフェイスでは、キャパシティの問題やパケット損失のリスクが高くなります。
Catalyst 9000シリーズスイッチでは、リソースが使い果たされると、「fman_fp_image」または「FMFP」を示すsyslogが出力されます。これらのエラーの一部またはすべてが、スイッチでリソースの枯渇が発生し、さらに調査が必要になった場合に出力される可能性があります。
これらは、リソースの枯渇時によく見られるエラーの一部ですが、包括的なリストではありません。
図1:スイッチのリソース枯渇の証拠となる最も一般的なエラーのサンプル
%FMFP-3-OBJ_DWNLD_TO_DP_STUCK: R0/0: fman_fp_image: AOM download to Data Plane is stuck for more than 1800 seconds for <object details>
%FMFP-3-OBJ_DWNLD_TO_DP_RESUME: R0/0: fman_fp_image: AOM download of objects to Data Plane is back to normal
%FMFP_QOS-6-QOS_STATS_STALLED: R0/0: fman_fp_image: statistics stalled
%FMFP-3-OBJ_DWNLD_TO_DP_FAILED: R0/0: fman_fp_image: adj <hex>, Flags None download to DP failed
%FMFP-3-OBJ_DWNLD_TO_DP_FAILED: R0/0: fman_fp_image: adj <hex>, Flags Midchain download to DP failed
%FED_L3M_ERRMSG-3-RSRC_ERR: Switch <num> R0/0: fed: Failed to allocate hardware resource for group <address> - rc:<number or error>
%FED_L3_ERRMSG-3-RSRC_ERR: Chassis <num> R0/0: fed: Failed to allocate hardware resource for adj entry due to hardware resource exhaustion - rc:<number or error>
すべてのCatalyst 9000シリーズスイッチは、特別なASICを使用して、パケットルーティングの大部分を高スループットで実行します。これらのASICは、容量が限られているさまざまなテーブルと内部リソースを活用します。SSDPクライアントは共通のマルチキャストグループの送信元と受信者の両方として機能するため、ハードウェアは、これらの制限されたリソースを使用して、他の理由(TTL 1)でパケットが送受信されない場合でも、パケットが通過するパスをハードウェアでプログラムする必要があります。ハードウェアリソースを使い果たしてしまうと、SSDPとの関係に関係なく、どのグループに対しても新しいアップデートや追加をインストールできなくなります。インストールされていないSSDPアップデート(状態の変化)が大量にソフトウェアでキューに入り、非マルチキャストトラフィックのハードウェアのアップデートが中断または失敗する可能性もあります。これはユーザトラフィックに影響を与え、ネットワークの停止を引き起こします。
このドキュメントは、ネットワークがPIMで設定され、既知のSSDPグループアドレスに対してレイヤ3マルチキャスト状態である場合にのみ関連します。この基準を確認するには、次のコマンドを実行します。 "show ip mroute 239.255.255.250"
(必要に応じてvrfステートメントを追加します)。グループ239.255.255.250はSSDPプロトコルに固有です。
コマンド出力に多数の発信インターフェイスが含まれているか、この特定のグループに対して多数の一意のソースが含まれている場合、システムおよびネットワークがSSDPによる停止に対して脆弱であることを示しています。発信インターフェイスの数と一意の送信元が多いほど、これがサービスに影響する可能性が高くなります。
図 2: 出力例 "show ip mroute 239.255.255.250"
コマンドを実行します。
Switch#show ip mroute 239.255.255.250 IP Multicast Routing Table Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected, L - Local, P - Pruned, R - RP-bit set, F - Register flag, T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet, X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement, U - URD, I - Received Source Specific Host Report, Z - Multicast Tunnel, z - MDT-data group sender, Y - Joined MDT-data group, y - Sending to MDT-data group, G - Received BGP C-Mroute, g - Sent BGP C-Mroute, N - Received BGP Shared-Tree Prune, n - BGP C-Mroute suppressed, Q - Received BGP S-A Route, q - Sent BGP S-A Route, V - RD & Vector, v - Vector, p - PIM Joins on route, x - VxLAN group Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode (*, 239.255.255.250), 00:08:35/stopped, RP 10.0.0.1, flags: SJC Incoming interface: GigabitEthernet0/0/1.40, RPF nbr 10.0.0.1 Outgoing interface list: GigabitEthernet0/0/1.101, Forward/Sparse, 00:08:35/00:02:40 GigabitEthernet0/0/1.102, Forward/Sparse, 00:08:35/00:02:38 GigabitEthernet0/0/1.100, Forward/Sparse, 00:08:35/00:02:39 (10.1.1.2, 239.255.255.250), 00:01:40/00:01:19, flags: T Incoming interface: Null, RPF nbr 0.0.0.0 Outgoing interface list: GigabitEthernet0/0/1.40, Forward/Sparse, 00:01:40/00:01:40, A GigabitEthernet0/0/1.100, Forward/Sparse, 00:01:40/00:02:39 GigabitEthernet0/0/1.102, Forward/Sparse, 00:01:40/00:02:38 GigabitEthernet0/0/1.101, Forward/Sparse, 00:01:40/00:02:40 (10.1.1.3, 239.255.255.250), 00:02:03/00:00:56, flags: JT Incoming interface: GigabitEthernet0/0/1.40, RPF nbr 10.1.1.1 Outgoing interface list: GigabitEthernet0/0/1.100, Forward/Sparse, 00:02:03/00:02:39 GigabitEthernet0/0/1.102, Forward/Sparse, 00:02:03/00:02:38 GigabitEthernet0/0/1.101, Forward/Sparse, 00:02:03/00:02:40 (10.1.1.4, 239.255.255.250), 00:08:35/00:02:32, flags: T Incoming interface: GigabitEthernet0/0/1.40, RPF nbr 10.1.1.1 Outgoing interface list: GigabitEthernet0/0/1.100, Forward/Sparse, 00:08:35/00:02:39 GigabitEthernet0/0/1.102, Forward/Sparse, 00:08:35/00:02:38 GigabitEthernet0/0/1.101, Forward/Sparse, 00:08:35/00:02:40, A
SSDPが特定の目的で使用されない限り、この出力は空であるか、発信インターフェイスの数が少ないか、一意の送信元の数が少ないかのいずれかであることが予想されます。これは、リソースの枯渇やサービスへの影響を防ぐためです。
多数のマルチキャストグループが見られる場合は、コマンド「show platform software object-manager fp active statistics」または「show platform software object-manager fp switch active statistics」を使用して、ハードウェアリソースが使い果たされているかどうかを確認できます。
注:このコマンドは、マルチキャストトラフィックによってトリガーされるリソース枯渇に固有のものではなく、他の問題によってこれらの値がゼロ以外になる可能性があります。
図 3: 出力 "show platform software object-manager fp active statistics"
問題状態
Switch#show platform software object-manager fp active statistics Forwarding Manager Asynchronous Object Manager Statistics Object update: Pending-issue: 109058, Pending-acknowledgement: 76928 <-- Pending-issue is very high, this Batch begin: Pending-issue: 0, Pending-acknowledgement: 0 is not expected. Batch end: Pending-issue: 0, Pending-acknowledgement: 0 Command: Pending-acknowledgement: 0 Total-objects: 304085 Stale-objects: 0 Resolve-objects: 0 Childless-delete-objects: 530 Error-objects: 1098
Paused-types: 127
図3の出力は、リソースが枯渇したスイッチの症状を示しています。通常の動作時には想定されないコマンド出力行がいくつかあります。
多数の「pending-issue」カウンタまたは「pending-acknowledgement」カウンタがある状態では、ハードウェアが誤ってプログラムされるリスクが高まります。誤ってプログラムされたハードウェアは、ユニキャストおよびマルチキャストトラフィックの停止の一般的な原因です。
"show platform hardware fed switch active fwd-asic resource utilization" or in some models "show platform hardware fed active fwd-asic resource utilization"
を使用して、ASICで使用されている有限のリソースの一部を調べ、内部リソースが使い果たされているかどうかを確認できます。
図 4: 出力例"show platform hardware fed active fwd-asic resource utilization"
1つのリソースがほぼ枯渇しています。
Switch#show platform hardware fed active fwd-asic resource utilization
Resource Info for ASIC Instance: 0
Resource Name Allocated Free
------------------------------------------
RSC_DI 3822 38076
RSC_FAST_DI 0 192
RSC_RIET_0 1 1024
RSC_RIET_1 0 512
RSC_RIET_2 0 512
RSC_RIET_3 0 512
RSC_RIET_4 0 512
RSC_RIET_5 0 512
RSC_RIET_6 0 256
RSC_RIET_7 0 255
RSC_VLAN_LE 116 3976
RSC_L3IF_LE 116 3907
RIM_RSC_DGT 1 255
RSC_VPN_PREFIX_ID 1 32768
RSC_LABEL_STACK_ID 1 65536
RSC_RI 7358 82730
RSC_LI_RI 0 129
RSC_PORT_LE_RI 0 2048
RSC_PORT_LE 0 1827
RSC_RI_REP 10635 120437
RSC_SI 11842 119072
RSC_SI_IND 1 255
RSC_SI_STATS 3550 45602
RSC_RCP1_FID 1 1023
RSC_RCP2_FID 1 1023
RSC_RCP3_FID 1 1023
RSC_RCP4_FID 1 1023
RSC_LV1_ECR 1 63
RSC_LV2_ECR 3 253
RSC_ENH_ECR 1 0
RSC_RPF_MATCH 12 1012
RSC_PLC 1 2047
RSC_PLC_PF 1 255
RSC_MTU_INDEX 6 250
RSC_EGR_REDIRECT_INDEX 2 2046
RSC_RIL_INDEX 131065 7 <-- Free entries extremely low, this is not expected.
RSC_SIF 1 1023
RSC_GROUP_LE 1 1023
RSC_RI_REP_LOCAL 1 0
RSC_EXT_SI 512 65024
図4では、「RSC_RIL_INDEX」の値は、使用中のエントリが131065個あり、空きエントリは7個のみであることを示しています。このリソースは、多数の一意のSSDPグループによって消費されます。SSDPに固有ではありませんが、空きエントリの数が少なく、割り当て済みエントリの数が多いリソースは、スイッチがキャパシティの問題に近づいていることを示しているため、調査する必要があります。
"show platform hardware fed switch active fwd-asic resource tcam utilization" or on some models "show platform hardware fed active fwd-asic resource tcam utilization"
を使用して、ASICごとのリソースごとの使用率の内訳を確認できます。SSDP枯渇のもう1つのシグニチャは、「L3マルチキャストエントリ」の「Used Values」列が「Max Values」に近いか、または「Max Values」に達することです。
図 5: 出力例"show platform hardware fed active fwd-asic resource tcam utilization"
通常の動作時
Switch#show platform hardware fed active fwd-asic resource tcam utilization
CAM Utilization for ASIC [0]
Table Max Values Used Values
--------------------------------------------------------------------------------
Unicast MAC addresses 32768/768 6160/21
L3 Multicast entries 32768/768 3544/8 <-- Normal Utilization, not near Max Values
L2 Multicast entries 2304 181 <-- Normal Utilization, not near Max Values
Directly or indirectly connected routes 212992/1536 11903/39
Input Ipv4 QoS Access Control Entries 5632 17
Input Non Ipv4 QoS Access Control Entries 2560 36
Output Ipv4 QoS Access Control Entries 6144 13
Output Non Ipv4 QoS Access Control Entries 2048 27
Input Ipv4 Security Access Control Entries 7168 12
Input Non Ipv4 Security Access Control Entries 5120 76
Output Ipv4 Security Access Control Entries 7168 11
Output Non Ipv4 Security Access Control Entries 8192 27
Ingress Netflow ACEs 1024 8
Policy Based Routing ACEs 3072 20
Egress Netflow ACEs 1024 8
Flow SPAN ACEs 512 5
Flow Egress SPAN ACEs 512 8
Control Plane Entries 1024 235
Tunnels 2816 26
Lisp Instance Mapping Entries 512 3
Input Security Associations 512 4
SGT_DGT 32768/768 0/1
CLIENT_LE 8192/512 0/0
INPUT_GROUP_LE 1024 0
OUTPUT_GROUP_LE 1024 0
Macsec SPD 256 2
リソースの枯渇を防ぐには、最初のL3ホップとマルチキャスト状態の作成の前にSSDPトラフィックを停止する必要があります。最も迅速なソリューションは、このトラフィックを認識するPIMで設定されたすべてのL3インターフェイスへの入力に適用されるIPv4アクセスコントロールリスト(ACL)を使用することです。「show ip mroute 239.255.255.250」コマンドを使用して確認し、各グループの「着信インターフェイス」を調べます。これは、トラフィックの送信元のL3インターフェイスを示し、複数の一意な送信元インターフェイスが存在する可能性があることを認識します。この設定例では、SSDPがレイヤ2で動作することを許可し、L2隣接ホストがPNPサービスを検出することを許可していますが、クライアントアドバタイズメントがL3境界を越えて転送されるのを防ぎ、すべてのマルチキャストルータまたはスイッチでL3マルチキャスト状態が作成されるのを防ぎます。
拡張ACLを設定します。
ip access-list extended BLOCK_SSDP remark Block SSDP deny ip any host 239.255.255.250 <-- Deny SSDP
permit ip any any
<-- Permit any other group
各L3インターフェイスで設定し、入力方向でACLを適用します。
Switch#configure terminal
Switch(config)#interface vlan100
Switch(config-if)#ip access-group BLOCK_SSDP in
Switch(config-if)#end
SSDPトラフィックからの状態の作成を制限する、または完全に防止する方法は他にもあります。ネットワークはそれぞれ異なるため、すべてのネットワークが同等の効果を持つわけではなく、各環境に固有の利点や欠点が存在する可能性があります。このドキュメントの執筆時点では、SVIでトラフィックをブロックするルーテッドACLは、引き続きローカルVLAN上のサービスを検出するためにこのプロトコルを使用しながら、このトラフィックの状態と量を低減するという目標を達成するために最も推奨され、最も効果的で、最小限の設定集約度を備えています。
それぞれの方法の長所と短所を注意深く理解し、環境に適しているかどうかを判断してください。
この方法は、多数のSVIまたはL3インターフェイス間でACLを作成すると設定に負荷がかかる可能性がある、静的なランデブーポイント(RP)マッピングを使用する環境で役立ちます。
この方法を実装するには、次の手順を使用します。
望ましくないSSDPトラフィックを拒否するACLを設定します。
Switch(config)#ip access-list standard 10
Switch(config-std-nacl)#deny 239.255.255.250 <-- Deny SSDP from registering
Switch(config-std-nacl)#permit 224.0.0.0 15.255.255.255
<-- Permit any other group
RPスタティックマッピングの一部として作成したACLを設定します
Switch#configure terminal
Switch(config)#ip pim rp-address 192.168.1.1 10
Switch(config-if)#end
この方法は、L2またはL3でSSDPが必要ない環境、またはSSDPトラフィックの量がスイッチのIGMPスヌーピングまたは他のL2マルチキャストリソースを使い果たす環境で役立ちます。
2つのACLを設定します。1つはSSDPトラフィックだけに一致する必要があり、もう1つは通常のネットワークトラフィックをすべて識別するために使用するcatch-allである必要があります。
Switch(config)#ip access-list extended match_ssdp
Switch(config-ext-nacl)#permit ip any host 239.255.255.250
Switch(config-ext-nacl)#exit
Switch(config)#ip access-list extended match_all
Switch(config-ext-nacl)#permit ip any any
2つのシーケンス番号を使用してVLANアクセスマップを設定します。1つはSSDPを拒否するトラフィックで、もう1つは他のすべてのトラフィックを許可するトラフィックです。これを目的のVLANに適用します。
Switch#configure terminal
Switch(config)#vlan access-map block_ssdp 10
Switch(config-access-map)#match ip address match_ssdp
Switch(config-access-map)#action drop
Switch(config-access-map)#vlan access-map block_ssdp 20
Switch(config-access-map)#match ip address match_all
Switch(config-access-map)#action forward
Switch(config-access-map)#exit
Switch(config)#vlan filter block_ssdp vlan-list
改定 | 発行日 | コメント |
---|---|---|
1.0 |
01-Jul-2022 |
初版 |