Local retransmission enables frames received on one or more network ports to be retransmitted to one network port on the same SmartNIC without involving the host CPU. The frames are transmitted locally on the SmartNIC without being transferred to the host memory.
Purpose
Local retransmission can be used to daisy-chain SmartNICs (to avoid multiple taps) or to load-balance network processing between multiple host servers (spillover).
Features
The latency from RX port to TX port is typically 5 µs.
Normally frames are retransmitted without any changes, except that the FCS is recalculated. However, in NT200A02 SmartNICs running on a capture/replay image and NT100A01 SmartNICs running on a test and measurement image, VLAN tags can be inserted into frames to be locally retransmitted to enable load balancing, and frames can be sliced before being locally retransmitted.
It is possible to retransmit frames received at one line rate on a port running another line rate.
Local retransmission can be applied together with host-based transmission (see Host-Based Transmission) on all SmartNICs supporting both features. In case of oversubscription of a TX port, frames that are locally retransmitted are prioritized over frames from the host.
Limitations
- Local retransmission from a 10 Gbit/s source port to a 1 Gbit/s destination port.
- Local retransmission from several source ports to the one destination port.
- Simultaneous host transmission and local retransmission on the same port.
Frames are retransmitted as soon as possible, there is no traffic control.
Due to the 5 µs latency from RX port to TX port, statistics read from downlink appliances is not synchronized with statistics read from the retransmitting appliance.
Configuration interface
Local retransmission is configured using NTPL.
The NTPL command Assign using the DestinationPort parameter can retransmit traffic from more than one port, and can embed a time stamp in retransmitted traffic.
For NT200A02 SmartNICs running on a capture/replay image and NT100A01 SmartNICs running on a test and measurement image, the Action NTPL command using the DestinationPort parameter can be used together with the Assign NTPL command for advanced load balancing to external servers.
For Napatech SmartNICs other than NT200A02 SmartNICs running on a capture/replay imageand NT100A01 SmartNICs running on a test and measurement image , the legacy NTPL command Retransmit is also supported with unchanged syntax for one source port and one destination port.
Example
In this NTPL example, SMTP traffic is retransmitted on one port, HTTP traffic is retransmitted on another, and the rest of the traffic is retransmitted on a third port, while everything is captured.
DefineMacro("mTcpSrcPort", "Data[DynOffset=DynOffTcpFrame;Offset=0;DataType=ByteStr2;DataMask=[15:0]]") DefineMacro("mTcpPort_HTTP", "80") DefineMacro("mTcpPort_SMTP", "25") Assign[StreamId=0] = Port==0 # Capture all Assign[Priority=0; DestinationPort=1] = (mTcpSrcPort == mTcpPort_SMTP AND Port==0 AND Truncated==False) Assign[Priority=0; DestinationPort=2] = (mTcpSrcPort == mTcpPort_HTTP AND Port==0 AND Truncated==False) Assign[Priority=10;DestinationPort=3] = Port==0 # The remaining traffic
This figure illustrates the example.
Slicing of locally retransmitted frames
In NT200A02 SmartNICs running on a capture/replay image and NT100A01 SmartNICs running on a test and measurement image, frames can sliced before being locally retransmitted using the using the SliceReTx parameter. Since the slicing changes the frames, the CRC is recalculated before the frames are transmitted. The last 4 bytes of each frame contain the new CRC value. Slicing in the TX path is configured using NTPL similarly to slicing in the RX path (see DN-0449).
Load balancing using VLAN tags
In NT200A02 SmartNICs running on a capture/replay image and NT100A01 SmartNICs running on a test and measurement image, VLAN tags can be inserted into frames to be locally retransmitted to enable load balancing to external servers. For more details, see DN-0449.
This example distributes all traffic to the server with the SmartNIC receiving the traffic and to 3 other servers, with 25% of the traffic to each of the external servers (on VLANs 101, 102 and 103) and 25% to 4 streams in the receiving server.
Action[Tag=Example3; Width=16] = {Index=0..3; StreamId=0..3}, {Index=4..15; DestinationPort=1; VLAN=101..103} Assign[Action=Example3] = All