概要
このドキュメントでは、WAN全体でトラフィックが失われたが、SD-WANエッジでドロップが見られない場合に、データを識別して収集する方法について説明します。
前提条件
要件
次の項目に関する知識があることが推奨されます。
- Cisco Software-Defined Wide Area Network(SD-WAN)
- 組み込みパケットキャプチャまたはvManageパケットキャプチャ
- Wireshark
- Microsoft Excel
使用するコンポーネント
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
- C8000Vバージョン17.03.04
- vManageバージョン20.3.4
- Wiresharkバージョン2.6.3
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
背景
この課題を解決するために、このドキュメントで説明する手順では、特定のトラフィックをDiffServコードポイント(DSCP)でマークして目的のパケットを識別する方法を示します。この値は内部パケットヘッダーからIPsecヘッダーにコピーされるため、DSCPを使用してトラフィックを識別できます。目的のパケットが特定されたら、2つのWANキャプチャ間でトラフィックを照合し、送信元から宛先までのトラフィックを確認する方法を示します。
このトラブルシューティングテクニックを示すために、2つの単一のルータサイトを使用します。この例では、図に示すように、10.0.0.10から10.0.2.10へのICMPトラフィックが100回のpingの形式で送信されます。この例では損失はありませんが、損失を特定するために損失がある場合は、この同じトラブルシューティングテクニックを使用します。
トラブルシューティングプロセス
プロセスの概要
- WAN上でトレースされるトラフィックの場合、未使用のDSCP値を使用してトラフィックをマーキングするには、アクセスリスト(ACL)(または集中型ポリシー)が必要です。この例では、DSCP 27が使用されます。
- トラフィックがマーキングされると、組み込みパケットキャプチャが使用され、送信元ルータと宛先ルータのトランスポートインターフェイス上のパケットがキャプチャされます。
注:vManageパケットキャプチャも使用できますが、データの上限は5 MBまたはランタイムの場合は5分です。
- キャプチャが取得されたら、Wiresharkで開いて表示します。
- Wiresharkでフィルタを適用して、必要なパケットを表示し、比較します。
- Microsoft Excelは、精度を確保するために大きなキャプチャに使用されます。
目的のトラフィックをDSCPでマーキングする
例Isのようなアクセスリストは、送信元ルータ(この例ではcEdge1)で設定され、次に示すようにルータ設定のSD-WAN部分のインターフェイスに適用されます。
オプションのカウンタを適用して、トラフィックが期待どおりにポリシーにヒットすることを確認します。これは、show sdwan policy access-list-countersコマンドで確認できます。
policy
access-list mark_dscp_27
sequence 10
match
source-ip 10.0.0.10/32
destination-ip 10.0.2.10/32
!
action accept
count MARK_DSCP_27_COUNT (optional counter to verify packets that hit the policy)
set
dscp 27
!
!
!
default-action accept
sdwan
interface GigabitEthernet3
access-list mark_dscp_27 in
組み込み型キャプチャによるトラフィックのキャプチャ
注:WANを通過する暗号化パケットをキャプチャするようにCisco IOS XEで埋め込みパケットキャプチャを設定する方法については、「Cisco IOSおよびCisco IOS XEの埋め込みパケットキャプチャの設定例」に移動してください。
注:EPCのレート制限が1000 PPSを超える可能性があるため、WAN上のEPCを制限するにはACLを使用する必要があります。
例
この例では、トラフィックは送信元から宛先への方向でのみチェックされるため、ACLはcEdge1とcEdge3で設定されます。
注:WAN IPアドレスは、キャプチャをフィルタリングするために使用されます。トラフィックが通るパスを特定するために使用できる複数の出力があり、ACLフィルタに対して正しいWAN IPを特定できます。この出力の生成に使用できるコマンドは、show sdwan app-fwd cflowd flowsおよびshow sdwan policy service pathです。デバッグ条件については、「条件付きパケットトレース」に移動してください。
ip access-list extended CAP-Filter
10 permit ip host 192.168.23.149 host 192.168.28.240
この時点で、両方のルータでキャプチャが開始され、100回のpingがオーバーレイ経由で送信されます。
#ping vrf 10 10.0.2.10 rep 100
Type escape sequence to abort.
Sending 100, 100-byte ICMP Echos to 10.0.2.10, timeout is 2 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Success rate is 100 percent (100/100), round-trip min/avg/max = 1/1/4 ms
両方のルータからキャプチャが停止および収集された後、キャプチャを表示するにはWiresharkで開く必要があります。
Wiresharkによる分析
WiresharkでcEdge1キャプチャを開くと、すべてのトラフィックが暗号化されていることが確認でき、どのパケットが送信されたpingであるかを容易に判断できません。
表示フィルタip.dsfield.dscp == 27を使用してこのキャプチャをフィルタリングすると、画面の下部に100個のパケットだけが表示され、DSCP列の値がすべて27であることが分かります。
DSCP値がWAN全体で維持される場合は、宛先キャプチャで同じフィルタを使用できます。
また、パブリックインターネット接続でDSCP値がクリアされる状況など、このような状況は発生しません。
ESPシーケンスによる目的のトラフィックのフィルタリング
いずれの場合も、トラフィックはESPシーケンス番号で識別できます。
パケット内のESPシーケンス番号を表示するには、キャプチャを右クリックし、次に示すように[Decode] を選択します。
[Current field]ドロップダウンメニューを選択し、そのフィールドにUDPENCAPと入力するか、ドロップダウンから選択します。
これが完了したら、[OK] を選択します。
Wiresharkの[Packet Details]セクションで、パケットの[Encapsulating Security Payload] 部分を展開し、ESPシーケンスを表示します。
[ESP Sequence] を右クリックし、[apply as column] を選択します。これにより、Wireshark画面の上部にある[Packet List]セクションに、ESPシーケンスが列として表示されます。
注:cEdge1上のパケットのESP SPIは0x040001dcです。これは、宛先キャプチャのフィルタに使用されます。
宛先キャプチャを開き、UDPENCAPとしてデコードする手順を繰り返し、パケット内のESPシーケンス番号を表示します。
パケットにESPシーケンス番号が表示されると、最初のキャプチャのESP SPIを2番目のキャプチャのフィルタとして使用して、そのSPI内で目的のトラフィックに一致するトラフィックのみを表示できます。
両方とも一致するパケットシーケンス番号にDSCP 27がマークされていることに注意してください。
この比較は、Wiresharkで手動で行うことも、Microsoft Excelを使用して行うこともできます。
Microsoft Excelを使用して比較するには、両方のキャプチャに含まれるパケットだけを含むように両方のキャプチャをスライスする必要があります。
ソースキャプチャでは、最初に関連するパケットにESPシーケンス306が含まれており、これがパケット番号451に対応しています。
ソースキャプチャの最後の関連パケットはESPシーケンス405で、パケット番号550です。
宛先キャプチャでは、最初の関連パケットはESPシーケンス306による送信元キャプチャに対応しますが、このキャプチャではパケット463です。
最後の関連パケットもESPシーケンス405に含まれており、これはパケット564です。
最初のキャプチャは、関連するパケットのみを含むようにスライスする必要があります。
[File] > [Export Packet Dissections] > [As CSV...]に移動します。
CapturedおよびRangeを選択し、Rangeフィールドに、最初に関連するパケットから最後に関連するパケットまでの範囲を入力します。
[File Name] フィールドにファイル名を入力し、[Save] をクリックします。
該当するパケットについて、キャプチャ2で同じプロセスを繰り返します。
両方のCSVファイルをMicrosoft Excelで開きます。
ソースキャプチャCSVで、XLSX形式で保存します。
画面の下部で、+記号を選択して別のシートを追加します。これにCAP2_sliceという名前を付けます。
CAP2 CSVファイルを開き、Ctrl + aを押してすべてを選択し、Ctrl + cを押してコピーします。
CAP1_slice.xlsxファイルに移動し、CAP2_sliceの2番目のタブで、コピーした情報をセルA1に貼り付けます(Ctrl + v)。
CAP1_sliceシートに戻り、COMPARE_ESP_SEQUENCEという名前の新しい列を作成します。
ESPシーケンス番号が列Gにあるため、図に示すようにVLOOKUPコマンドを作成して2つのシートを比較し、送信元の列G内のすべてのデータが宛先の列G内にあることを確認します。
=IF(ISNA(VLOOKUP(G2,CAP2_slice!G:G,1,FALSE)),"MISSING","PRESENT")
[Enter]を選択すると、PRESENTという単語が表示されます。これは、ESPシーケンス306のパケットが2番目のシートに存在することを意味します。これは、パケットが送信元から宛先に到達したことを意味するため、重要です。
[Column O Row 2] を選択し、そのセルを囲む緑色のボックスの右下隅にカーソルを合わせます。
値を持つセルの下部にこの数式をコピーするには、マウスを下にドラッグします。
シートの先頭に戻ってスクロールし、COMPARE_ESP_SEQUENCEをクリックします。次に、[Sort & Filter] を選択します。
ドロップダウンメニューから[Filter] を選択します。
COMPARE_ESP_SEQUENCE列にドロップダウンメニューが表示されます。
COMPARE_ESP_SEQUENCE見出しのドロップダウンメニューをクリックします。この例では、表示されている値はPRESENTだけであることに注意してください。これは、すべてのパケットが両方のキャプチャに存在することを意味します。
問題のある例を作成するには、CAP2_sliceから10個のパケットを削除します。これは、一部のパケットが欠落しているテストでこれが動作する方法を示します。
CAP1_sliceシートに戻ると、10個のパケットが欠落していることが確認できます。
COMPARE_ESP_SEQUENCE列でドロップダウンメニューが選択されると、MISSINGパケットも存在することが確認されます。これは、MISSINGパケットだけを表示するように切り替えることができます。
Excelシートに見つからないパケットだけが表示されるようになりました。
関連情報