Dell Unity: How to capture a TCP/IP network trace from the array. (User Correctable)
Summary: This article provides the commands to capture network data on the array's front-end ports. This article also works with VNX2e arrays.
Instructions
VNXe and Unity arrays have an integrated service script to take TCP/IP network traces that do not require root access to run.
The following steps guide you through the capture process.
Preparation
First, you must determine the interface that you will be capturing the traffic from. The easiest way to determine this is by searching for the IP address in the command ip addr or ip a.
The output shows a list of devices and their related interfaces. These devices are listed as: mgmt/mgmt_vdev, eth#, lo, and bond (LACP interfaces). (See Notes for more details.)
Notice that some of these devices, although listed, do not have an ipv4 interface (inet) listed under them. These devices can be ignored for this KB article.
Find the IP address that you want to monitor, and take note of the device it is listed under.
For example, in a lab box, we can see the Management Port that is listed with its device name and interface:
5: mgmt_vdev: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:9e:af:69 brd ff:ff:ff:ff:ff:ff
inet 5.6.7.11/24 scope global mgmt_vdev
valid_lft forever preferred_lft forever
NOTE: Using a bond with a VLAN configured is shown with a dot VLAN ID at the end. Be sure to capture the trace on the VLAN interface as using the non-VLAN interface may result in an empty capture.
Once the device is found, we are ready to perform the trace.
For best results of a TCP/IP packet trace analysis, it is encouraged to take a concurrent trace from the Host or Client side as well.
This is done using a free trace software such as Wireshark.
Command Syntax
The syntax for the command, with its minimum specifications, is as follows:
svc_tcpdump -i <DeviceName> -w <SaveName>
NOTE: The only place where files should be saved to is /cores/service (or /home/service - same place).
Along with others, here are some helpful options that may be run with the command:
-h|--help : Display usage information.
-p|--path [path] : Path for the output file storage
-W|--rotations [number] : Number of files for output use
-C|--size [size] : Size of each output file (in MB)
-s|--snaplen [bytes] : Capture this specified number of byte of data from each packet rather than the default 65535. 0 means the default value.
A prefix of "vnxe-tcpdump-" or "unity-tcpdump-" is added to output filenames.
Running the command without options defaults to running:
svc_tcpdump -i mgmt_vdev -w dump.out -p /home/service -C 500 -W 5
NOTE: For Unity code 4.5.1, the path to store the traces should always be /home/service/user.
The command requires the Ctrl + C combination to stop the trace. For this reason, it is advised to prepare multiple sessions when taking a trace. One for the trace, the other for testing.
Taking the Trace
Now that we have the command ready to go, it is time to take the trace while re-creating the issue. For the best results, follow the process below:
- Start the trace on both the Host or Client (using any network trace software) and the Array (using the above command).
- Ping with modified ping from the Host or Client to the Array or from the Array to the Host or Client (using the second terminal session).
- Attempt to access the share and perform the failing task that we are tracing for.
- Ping with a modified ping from the Host or Client to the Array or from the Array to the Host or Client.
- Stop the trace on both the Host or Client and the Array.
- Document the timestamp for each of the above actions. (Including, at the least, steps Start and Stop, 1 and 5.)
Again, note: In Unity code 4.5.1 and later, the path to store the traces should always be /home/service/user.
Additional Information
To determine which Ethernet (ethx) interface to capture the data on, run command: ip a
This command provides information about what Ethernet value is assigned to the interface.
EXAMPLE FOR TRACE RUNNING ON MANAGEMENT:
apture mgmt_vdev, save 2 100MB files called vnxe-tcpdump-tcpdump.out[0-1] (or unity-tcpdump-tcpdump.out[0-1]) to /home/service (/home/service is the same as /cores/service):
svc_tcpdump -i mgmt_vdev -p /home/service -w tcpdump.out -W 2 -C 100
EXAMPLE FOR TRACE RUNNING ON DATA INTERFACE:
svc_tcpdump -i eth2 -p /home/service -w tcpdump.out -W 2 -C 100
svc_tcpdump -i eth23 -p /cores/service -w tcpdump.out -W 2 -C 100 (ethernet I/O module ports)
Embedded Ethernet ports on the storage processor are single digit values such as eth2, eth3, eth4, and so forth.
Ethernet ports on the first Ethernet I/O module have a double digit value starting with 10, such as eth10, eth11, and so forth.
Ethernet ports on the second Ethernet I/O module have a double digit value starting with 20 (most units do not have a second Ethernet I/O module), such as eth20, eth21, and so forth.
EXAMPLE FOR TRACE RUNNING ON LAG GROUP (BONDED INTERFACES):
svc_tcpdump -i bond3 -p /cores/service -w tcpdump.out -W 2 -C 100
This command only runs on the storage processor that the command is run on. If you are connected to SPA and must run traces on an interface on SPB, then you must run "ssh peer" to go to SPB and then run the svc_tcpdump command.