The stedump tool is a packet simulator for host NIC steering solutions. It is supported in 5th generation NIC devices and only when using Python v3.4 and above. The dump output of HW steering is used for debugging and troubleshooting.
Prerequisites
Using the MFT with the --with-pcap option to install stedump utility requires the following third-party dependencies:
- Libraries and header files for the libpcap library
- Libraries and header files for Python development library
- Package Installer for Python (PIP) available
stedump Usage
stedump [-h] --read-file <read_file> [--packet-format <packet_format>] [--output-file <output_file>] [--verbosity <verbosity>] [-v] {live,offline}
Where
-h, --help | Show help message and exit |
--version | Show version information and exit |
--packet-format | Specifies the I/O packet file format (default: hex) |
--output-file | Redirect the output to specific file (default: stdout) |
--verbosity | Increase output verbosity (default: 0) |
--read-file | Specifies the packet(s) filename to read from |
live | Run in live mode. |
offline | Run in offline mode. |
There are three kind of packet formats:
- hex - Represents one or more packets separated by a newline in hexadecimal format.
- pcap - Represents one or more packets in packet capture format.
- raw - Represents a single packet in binary data format.
The pcap packet format is not supported by default, and requires installing MFT with the --with-pcap option.
Offline mode is not supported.
stedump live Usage
stedump live [-h] --device <device> --port <physical_port> {egress,ingress}
Where
-h, --help | Show help message and exit |
-d , --device | Perform operation for a specified MST device |
--port | Specifies the physical port number |
egress | Specifies the packet source to be egress for TX flows |
ingress | Specifies the packet source to be ingress for RX flows |
stedump live egress Usage
stedump live egress [-h] [--reg-a <reg_a_value>] [--virtual-hca-id <virtual_hca_id>] [--sqn <sqn>] [--force-loopback] [--special-root]
Where
-h, --help | Show help message and exit |
--reg-a | Specifies steering register A value (default: 0) |
--virtual-hca-id | Specifies the source virtual HCA ID (default: 0) |
--sqn | Specifies the send queue context number (default: 0) |
--force-loopback | specifies whether to use QP force loopback |
--special-root | specifies whether to use QP special root |
An example of how to run the egress (TX) packet flow:
# stedump --read-file tcp.hex live --device /dev/mst/mt4119_pciconf0 --port 0 egress PACKET_DATA C0 C1 C2 C3 C4 C5 A0 A1 A2 A3 A4 A5 08 00 45 00 00 28 00 00 40 00 40 06 34 CB 01 01 01 01 02 02 02 02 10 E1 22 3D 00 00 BA BA 00 00 DE DA 51 23 FF FF AD 29 00 00 STE_MASKED[1] OUTER: source_qp: 0x40 [HIT] - hit_ix=0x6e polarity STE_MASKED[2] OUTER: encapsulation_type: ROCE [HIT] - hit_ix=0x6d polarity STE_MASKED[3] : Always Hit [HIT] - hit_ix=0x2000001a STE_MASKED[4] : Always Hit [HIT] - hit_ix=0xf0000000 STE_MASKED[5] : Always Hit [HIT] - hit_ix=0xf0000009 STE_MASKED[6] OUTER: dmac: c0:c1:c2:c3:c4:c5, l3_type: IPV4 [HIT] - hit_ix=0xf000000e STE_MASKED[7] OUTER: sip: 1.1.1.1 [ACTION] - COUNT { flow_counter_id=0x801199, gvmi=0x0 } [ACTION] - MODIFY_HEADER { number_of_re_write_actions:11, ix=0x57 } [HIT] - hit_ix=0x1a44c STE_MASKED[8] : Always Hit [ACTION] - COUNT { flow_counter_id=0x2a, gvmi=0x0 } [ACTION] - WIRE { } [HIT] - hit_ix=0x0 [ACTION] - SX TERMINATOR { WIRE } - STEERING_HOPS - 8
An example of how to run the ingress (RX) packet flow:
# stedump --read-file tcp.hex live --device /dev/mst/mt4119_pciconf0 --port 0 ingress PACKET_DATA E0 E1 E2 E3 E4 E5 A0 A1 A2 A3 A4 A5 08 00 45 00 00 5E 00 00 40 00 40 11 34 8A 01 01 01 01 02 02 02 02 04 D2 17 C1 00 4A DC C1 01 80 65 58 CC CE 23 00 61 61 61 61 B0 B1 B2 B3 B4 B5 A0 A1 A2 A3 A4 A5 08 00 45 00 00 28 00 00 40 00 40 06 34 CB 01 01 01 01 02 02 02 02 10 E1 22 3D 00 00 BA BA 00 00 DE DA 51 23 FF FF AD 29 00 00 STE_MASKED[1] OUTER: encapsulation_type: ROCE [ACTION] - COUNT { flow_counter_id=0x29, gvmi=0x0 } [HIT] - hit_ix=0x2000001a polarity STE_MASKED[2] : Always Hit [HIT] - hit_ix=0xf0000000 STE_MASKED[3] : Always Hit [HIT] - hit_ix=0xf0000009 STE_MASKED[4] OUTER: dmac: e0:e1:e2:e3:e4:e5, l3_type: IPV4 [HIT] - hit_ix=0xf000000f STE_MASKED[5] OUTER: sip: 1.1.1.1 [ACTION] - COUNT { flow_counter_id=0x801199, gvmi=0x0 } [ACTION] - DECAP { L2 } [ACTION] - MODIFY_HEADER { number_of_re_write_actions:1, ix=0xd7 } [HIT] - hit_ix=0xa00001a5 STE_MASKED[6] : Always Hit [HIT] - hit_ix=0xa00001a2 STE_MASKED[7] : Always Hit [ACTION] - QP { gvmi=0x0,qp=0x108d } [HIT] - hit_ix=0x0 [ACTION] - RX TERMINATOR { } - STEERING_HOPS - 7