Cisco SD-WAN Packet Capture

Packet capture provides a way of getting a copy of the packets traversing a router. This can be useful for troubleshooting purposes when you want to see if the packets are being received or sent by the router via the expected interface.

There are 2 ways to perform the packet capture – one is using the vManage user interface, and another one is using CLI directly on the router. In this article, we will explain how to use both of them.

Using vManage

Packet capture is reachable via the Device Troubleshooting page – Monitor > Network > Device name > Troubleshooting. By default, there is no Packet Capture option under the Traffic section, as shown in Figure 1.

Figure 1. Packet Capture in vManage before Data Streaming is enabled
Figure 1. Packet Capture in vManage before Data Streaming is enabled

The pop-up alert displays: “Data Stream is disabled. Go to the Settings page to enable Data Stream to use Packet Capture, Speed Test, and Debug Logs”. To run packet captures via vManage we must enable Data Stream.

Navigate to Administration > Settings. Then expand the Data Stream option, as shown in the screenshot below. Click on the “Enabled” radio box, type in the hostname, which is the name or IP address of vManage and VPN that the edge router should use to reach the controller.

Figure 2. Enable Data Stream Configuration in vManage
Figure 2. Enable Data Stream Configuration in vManage

Note that for virtualized platforms, like the one we use for the lab, VPN 512 (out-of-band) cannot be used. To make this work, we are using the public IP of vManage, which is reachable via transport VPN 0. Our lab topology is shown in the figure below.

Figure 3. Data Streaming Topology
Figure 3. Data Streaming Topology

After enabling Data Streaming, the Packet Capture option is now visible in the Troubleshooting section. After clicking on this option, we can define packet capture parameters.

Figure 4. Packet Capture in vManage after Data Streaming is enabled
Figure 4. Packet Capture in vManage after Data Streaming is enabled

Packet capture screen requires VPN and Interface filter selection. You can optionally provide other filters, such as source and destination IPs and protocol information. Traffic is captured in both ingress and egress directions. Let’s change the filter to protocol 1 (ICMP) and start capture by pressing the Start button.

Figure 5. Packet Capture Parameters
Figure 5. Packet Capture Parameters

By default, the capture will run for 5 minutes. You can stop the timer at any time to download packets captured so far. The file in pcap format will be available for download shortly.

Figure 6. Packet Capture Progress
Figure 6. Packet Capture Progress

The content of the file can be viewed in Wireshark, as shown below.

Figure 7. Display Captured Packets in Wireshark
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
CSR01#show monitor capture
Status Information for Capture 71f87e76_847e_4770_8289_56b5242ac115
Target Type:
Interface: GigabitEthernet3, Direction: BOTH
Status : Active
Filter Details:
IPv4
Source IP: any
Destination IP: any
Protocol: 1
Buffer Details:
Buffer Type: LINEAR (default)
Buffer Size (in MB): 5
Limit Details:
Number of Packets to capture: 0 (no limit)
Packet Capture duration: 300
Packet Size to capture: 0 (no limit)
Maximum number of packets to capture per second: 1000
Packet sampling rate: 0 (no sampling)
CSR01#show monitor capture Status Information for Capture 71f87e76_847e_4770_8289_56b5242ac115 Target Type: Interface: GigabitEthernet3, Direction: BOTH Status : Active Filter Details: IPv4 Source IP: any Destination IP: any Protocol: 1 Buffer Details: Buffer Type: LINEAR (default) Buffer Size (in MB): 5 Limit Details: Number of Packets to capture: 0 (no limit) Packet Capture duration: 300 Packet Size to capture: 0 (no limit) Maximum number of packets to capture per second: 1000 Packet sampling rate: 0 (no sampling)
CSR01#show monitor capture  

Status Information for Capture 71f87e76_847e_4770_8289_56b5242ac115
  Target Type: 
 Interface: GigabitEthernet3, Direction: BOTH
   Status : Active
  Filter Details: 
   IPv4 
    Source IP:  any
    Destination IP:  any
   Protocol: 1
  Buffer Details: 
   Buffer Type: LINEAR (default)
   Buffer Size (in MB): 5
  Limit Details: 
   Number of Packets to capture: 0 (no limit)
   Packet Capture duration: 300
   Packet Size to capture: 0 (no limit)
   Maximum number of packets to capture per second: 1000
   Packet sampling rate: 0 (no sampling)

Using CLI on the router

If for some reason you can’t use vManage, you can use IOS-XE Embedded Packet Capture directly on the device (the previous process uses this feature on the backend). Use SSH to connect to the device either via client installed on your computer or via the tools menu in vManage.

The next configuration commands provide an example of running packet capture.

Embedded packet capture commands begin with monitor capture commands. They are available in exec mode, other operational commands, like “show” and “debug”.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
CSR01#monitor capture ?
WORD Name of the Capture
clear Clear all Buffers
start Enable all capture points
stop Disable all capture points
CSR01#monitor capture ? WORD Name of the Capture clear Clear all Buffers start Enable all capture points stop Disable all capture points
CSR01#monitor capture ?
  WORD   Name of the Capture 
  clear  Clear all Buffers
  start  Enable all capture points
  stop   Disable all capture points

Specify a name for the packet capture instance, in our example it is TEST_CAPTURE. The available command options are shown below.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
CSR01#monitor capture TEST_CAPTURE ?
WORD Name of the Capture
access-list access-list to be attached
buffer Buffer options
class-map class name to attached
clear Clear Buffer
control-plane Control Plane
export Export Buffer
interface Interface
limit Limit Packets Captured
match Describe filters inline
start Enable Capture
stop Disable Capture
stop_export Disable Capture and Export Buffer
CSR01#monitor capture TEST_CAPTURE ? WORD Name of the Capture access-list access-list to be attached buffer Buffer options class-map class name to attached clear Clear Buffer control-plane Control Plane export Export Buffer interface Interface limit Limit Packets Captured match Describe filters inline start Enable Capture stop Disable Capture stop_export Disable Capture and Export Buffer
CSR01#monitor capture TEST_CAPTURE ?
  WORD           Name of the Capture
  access-list    access-list to be attached 
  buffer         Buffer options
  class-map      class name to attached 
  clear          Clear Buffer
  control-plane  Control Plane 
  export         Export Buffer
  interface      Interface
  limit          Limit Packets Captured
  match          Describe filters inline
  start          Enable Capture
  stop           Disable Capture 
  stop_export    Disable Capture and Export Buffer

The next commands configure the same options we used in vManage:

  • GigabithEthernet3 as interface
  • ICMP packets only (IP protocol 1)
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
CSR01#monitor capture TEST_CAPTURE interface GigabitEthernet3 both
CSR01#monitor capture TEST_CAPTURE match ipv4 protocol 1 any any
CSR01#monitor capture TEST_CAPTURE interface GigabitEthernet3 both CSR01#monitor capture TEST_CAPTURE match ipv4 protocol 1 any any
CSR01#monitor capture TEST_CAPTURE interface GigabitEthernet3 both
CSR01#monitor capture TEST_CAPTURE match ipv4 protocol 1 any any 

Below are the available options for inline filters.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
CSR01#monitor capture TEST_CAPTURE match ?
any all packets
ipv4 IPv4 packets only
ipv6 IPv6 packets only
mac MAC filter configuration
pktlen-range Packet length range to capture
CSR01#monitor capture TEST_CAPTURE match ipv4 ?
A.B.C.D/nn IPv4 source Prefix <network>/<length>, e.g., 192.168.0.0/16
any Any source prefix
host A single source host
protocol Protocols
CSR01#monitor capture TEST_CAPTURE match ipv4 protocol ?
<0-255> An IP protocol number
tcp Filter by TCP protocol
udp Filter by UDP protocol
CSR01#monitor capture TEST_CAPTURE match ipv4 protocol 1 ?
A.B.C.D/nn IPv4 source Prefix <network>/<length>, e.g., 192.168.0.0/16
any Any source prefix
host A single source host
CSR01#monitor capture TEST_CAPTURE match ipv4 protocol 1 any ?
A.B.C.D/nn IPv4 destination Prefix <network>/<length>, e.g., 192.168.0.0/16
any Any destination prefix
host A single destination host
CSR01#monitor capture TEST_CAPTURE match ? any all packets ipv4 IPv4 packets only ipv6 IPv6 packets only mac MAC filter configuration pktlen-range Packet length range to capture CSR01#monitor capture TEST_CAPTURE match ipv4 ? A.B.C.D/nn IPv4 source Prefix <network>/<length>, e.g., 192.168.0.0/16 any Any source prefix host A single source host protocol Protocols CSR01#monitor capture TEST_CAPTURE match ipv4 protocol ? <0-255> An IP protocol number tcp Filter by TCP protocol udp Filter by UDP protocol CSR01#monitor capture TEST_CAPTURE match ipv4 protocol 1 ? A.B.C.D/nn IPv4 source Prefix <network>/<length>, e.g., 192.168.0.0/16 any Any source prefix host A single source host CSR01#monitor capture TEST_CAPTURE match ipv4 protocol 1 any ? A.B.C.D/nn IPv4 destination Prefix <network>/<length>, e.g., 192.168.0.0/16 any Any destination prefix host A single destination host
CSR01#monitor capture TEST_CAPTURE match ?
  any           all packets
  ipv4          IPv4 packets only
  ipv6          IPv6 packets only
  mac           MAC filter configuration
  pktlen-range  Packet length range to capture
CSR01#monitor capture TEST_CAPTURE match ipv4 ?
  A.B.C.D/nn  IPv4 source Prefix <network>/<length>, e.g., 192.168.0.0/16
  any         Any source prefix
  host        A single source host
  protocol    Protocols
CSR01#monitor capture TEST_CAPTURE match ipv4 protocol ?
  <0-255>  An IP protocol number
  tcp      Filter by TCP protocol
  udp      Filter by UDP protocol
CSR01#monitor capture TEST_CAPTURE match ipv4 protocol 1 ?
  A.B.C.D/nn  IPv4 source Prefix <network>/<length>, e.g., 192.168.0.0/16
  any         Any source prefix
  host        A single source host
CSR01#monitor capture TEST_CAPTURE match ipv4 protocol 1 any ?
  A.B.C.D/nn  IPv4 destination Prefix <network>/<length>, e.g., 192.168.0.0/16
  any         Any destination prefix
  host        A single destination host

To validate capture parameters run the command: show monitor capture TEST_CAPTURE. As shown in the listing below, by default, the capture will run till its buffer will reach 10MB.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
CSR01#show monitor capture TEST_CAPTURE
Status Information for Capture TEST_CAPTURE
Target Type:
Interface: GigabitEthernet3, Direction: BOTH
Status : Inactive
Filter Details:
IPv4
Source IP: any
Destination IP: any
Protocol: 1
Buffer Details:
Buffer Type: LINEAR (default)
Buffer Size (in MB): 10
Limit Details:
Number of Packets to capture: 0 (no limit)
Packet Capture duration: 0 (no limit)
Packet Size to capture: 0 (no limit)
Maximum number of packets to capture per second: 1000
Packet sampling rate: 0 (no sampling)
CSR01#show monitor capture TEST_CAPTURE Status Information for Capture TEST_CAPTURE Target Type: Interface: GigabitEthernet3, Direction: BOTH Status : Inactive Filter Details: IPv4 Source IP: any Destination IP: any Protocol: 1 Buffer Details: Buffer Type: LINEAR (default) Buffer Size (in MB): 10 Limit Details: Number of Packets to capture: 0 (no limit) Packet Capture duration: 0 (no limit) Packet Size to capture: 0 (no limit) Maximum number of packets to capture per second: 1000 Packet sampling rate: 0 (no sampling)
CSR01#show monitor capture TEST_CAPTURE                 

Status Information for Capture TEST_CAPTURE
  Target Type: 
 Interface: GigabitEthernet3, Direction: BOTH
   Status : Inactive
  Filter Details: 
   IPv4 
    Source IP:  any
    Destination IP:  any
   Protocol: 1
  Buffer Details: 
   Buffer Type: LINEAR (default)
   Buffer Size (in MB): 10
  Limit Details: 
   Number of Packets to capture: 0 (no limit)
   Packet Capture duration: 0 (no limit)
   Packet Size to capture: 0 (no limit)
   Maximum number of packets to capture per second: 1000
   Packet sampling rate: 0 (no sampling)

Now we can activate the defined capture.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
CSR01#monitor capture TEST_CAPTURE start
CSR01#monitor capture TEST_CAPTURE start
CSR01#monitor capture TEST_CAPTURE start

After running some pings from a test PC connected to the service side via GigabitEthernet3, we can validate that packets are being captured. The brief format is shown below. Detailed and dump options display truncated and full packet content.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
CSR01#show monitor capture TEST_CAPTURE buffer ?
brief brief display
detailed detailed disaply
dump for dump
| Output modifiers
<cr> <cr>
CSR01#show monitor capture TEST_CAPTURE buffer brief
----------------------------------------------------------------------------
# size timestamp source destination dscp protocol
----------------------------------------------------------------------------
< output omitted >
11 74 83.561967 192.168.11.10 -> 15.15.15.10 0 BE ICMP
12 74 83.561967 15.15.15.10 -> 192.168.11.10 0 BE ICMP
CSR01#show monitor capture TEST_CAPTURE buffer ? brief brief display detailed detailed disaply dump for dump | Output modifiers <cr> <cr> CSR01#show monitor capture TEST_CAPTURE buffer brief ---------------------------------------------------------------------------- # size timestamp source destination dscp protocol ---------------------------------------------------------------------------- < output omitted > 11 74 83.561967 192.168.11.10 -> 15.15.15.10 0 BE ICMP 12 74 83.561967 15.15.15.10 -> 192.168.11.10 0 BE ICMP
CSR01#show monitor capture TEST_CAPTURE buffer ?
  brief     brief display
  detailed  detailed disaply
  dump      for dump
  |         Output modifiers
  <cr>      <cr>


CSR01#show monitor capture TEST_CAPTURE buffer brief
 ----------------------------------------------------------------------------
 #   size   timestamp     source             destination      dscp    protocol
 ----------------------------------------------------------------------------
< output omitted >  
  11   74   83.561967   192.168.11.10    ->  15.15.15.10      0  BE   ICMP
  12   74   83.561967   15.15.15.10      ->  192.168.11.10    0  BE   ICMP

Let’s stop packet capture with the following command.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
CSR01#monitor capture TEST_CAPTURE stop
CSR01#monitor capture TEST_CAPTURE stop
CSR01#monitor capture TEST_CAPTURE stop

To analyze packet capture buffer offline, use export it using the command shown below:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
CSR01#monitor capture TEST_CAPTURE export ?
bootflash: Location of the file
flash: Location of the file
ftp: Location of the file
http: Location of the file
https: Location of the file
pram: Location of the file
rcp: Location of the file
scp: Location of the file
sftp: Location of the file
tftp: Location of the file
CSR01#monitor capture TEST_CAPTURE export bootflash:test_capture.pcap
Exported Successfully
CSR01#monitor capture TEST_CAPTURE export ? bootflash: Location of the file flash: Location of the file ftp: Location of the file http: Location of the file https: Location of the file pram: Location of the file rcp: Location of the file scp: Location of the file sftp: Location of the file tftp: Location of the file CSR01#monitor capture TEST_CAPTURE export bootflash:test_capture.pcap Exported Successfully
CSR01#monitor capture TEST_CAPTURE export ?
  bootflash:  Location of the file
  flash:      Location of the file
  ftp:        Location of the file
  http:       Location of the file
  https:      Location of the file
  pram:       Location of the file
  rcp:        Location of the file
  scp:        Location of the file
  sftp:       Location of the file
  tftp:       Location of the file

CSR01#monitor capture TEST_CAPTURE export bootflash:test_capture.pcap 
Exported Successfully