Advanced Load Distribution

From Link™ Capture Software 12.5 to Link™ Capture Software 12.6

Platform
Intel® PAC
Napatech SmartNIC
Content Type
Migration Document
Capture Software Version
Link™ Capture Software 12.6

Load balancer module

The advanced load distribution feature is introduced in the Link™ Capture Software 12.6 release. The following figure illustrates, at a high level, how it is implemented in NT200A02 SmartNICs running on a capture/replay image. As shown in the figure, the load balancer module controls distributing received frames to multiple streams in the host as well as retransmitting on physical ports. See DN-0449 for further information in detail regarding the advanced load distribution feature.


Page-1 Sheet.3 SmartNIC SmartNIC Sheet.1 Port 0 Port 0 Sheet.4 Hash Hash Sheet.9 Sheet.10 Sheet.5 Sheet.11 VLAN Tag VLAN Tag Sheet.12 Sheet.13 Sheet.14 Load Balancer Load Balancer Sheet.15 Buffer Buffer Sheet.16 Sheet.17 Sheet.18 Sheet.21 Stream 0 Stream 0 Sheet.25 Sheet.28 Sheet.29 Sheet.30 Sheet.32 Sheet.33 ... ... Sheet.34 Port 1 Port 1 Sheet.35 Stream 1 Stream 1 Sheet.36 Stream 2 Stream 2 Sheet.37 Stream n Stream n

Action command

To utilize the new advanced load distribution feature, a new command Action in combination with the existing Assign command must be used in the NTPL configuration as shown in the example below.
Action[Tag=Test1; Width=8] = {Index=0..3; StreamId=1}, {Index=4..7; StreamId=2}, {Index=0..7; DestinationPort=1; Vlan=101..108}
Assign[Action=Test1] = Port==0 And Layer3Protocol==IP
The above NTPL example will distribute all received IP packets on port 0 to streams in the host and retransmit the same frames on port 1. Using the Action command, it is possible to control the packet distribution. You can define the number of indexes for dividing the received traffic, associate indexes and streams in the host and associate indexes and ports/VLANs for retransmission. As shown in the above command example, the Width parameter is to specify the number of indexes. The packet indexing is controlled by a "table" in the FPGA with 4096 entries. This means that it is possible to divide traffic using 4096 VLAN individual tags. The following figure shows how the Action command is operated in the table.

Page-1 Sheet.1 Sheet.2 Sheet.3 Sheet.4 Sheet.5 Sheet.6 Sheet.7 Sheet.8 Sheet.9 Sheet.10 Sheet.11 Sheet.12 Sheet.13 Sheet.14 Sheet.15 HW table HW table Sheet.17 Action[Tag=Test1, Width=8] = {Index=0..3; StreamId=1}, {Index... Action[Tag=Test1, Width=8] = {Index=0..3; StreamId=1}, {Index=4..7; StreamId=2}, {Index=0..7; DestinationPort=1; Vlan=101..108}Assign[Action=Test1] = Port == 0 And Layer3Protocol == IP Sheet.18 Sheet.19 Width Width Sheet.22 Sheet.23 Sheet.24 Sheet.25 StreamId StreamId Sheet.27 1 1 Sheet.28 1 1 Sheet.29 1 1 Sheet.30 1 1 Sheet.31 2 2 Sheet.32 2 2 Sheet.33 2 2 Sheet.34 2 2 Sheet.35 Sheet.36 VLAN VLAN Sheet.37 101 101 Sheet.38 102 102 Sheet.39 103 103 Sheet.40 104 104 Sheet.41 105 105 Sheet.42 106 106 Sheet.43 107 107 Sheet.44 108 108 Sheet.45 Port Port Sheet.46 1 1 Sheet.47 1 1 Sheet.48 1 1 Sheet.49 1 1 Sheet.50 1 1 Sheet.51 1 1 Sheet.52 1 1 Sheet.53 1 1 Sheet.54 . . . . . . Sheet.55 . . . . . . Sheet.56 . . . . . . Sheet.57 . . . . . . Sheet.70 . . . . . . Sheet.71

Note: The existing syntax Assign[StreamId=0..3] = All is still supported. It can also be converted as below using the new Action command.
Action[Tag=Test2; Width=4] = {Index=0..3; StreamId=0..3}
Assign[Action=Test2] = All

Load distribution to external servers

The advanced load distribution can be used with a VLAN-aware switch to distribute traffic to multiple servers with a standard NIC as shown in the figure below.


Page-1 Sheet.8 VLAN Switch VLAN Switch Sheet.9 Sheet.10 Sheet.11 Sheet.12 Sheet.13 Sheet.14 Sheet.15 Sheet.16 Sheet.17 Sheet.18 Sheet.19 Sheet.20 Sheet.21 Sheet.22 Sheet.23 Sheet.24 Sheet.25 Sheet.26 Sheet.27 Sheet.28 Sheet.29 Sheet.30 Sheet.31 Sheet.32 Sheet.33 Sheet.34 Sheet.35 Sheet.36 Sheet.37 Sheet.38 Sheet.39 Sheet.40 Sheet.41 Server with SmartNIC Server with SmartNIC Sheet.43 Sheet.44 Server with NIC Server with NIC Sheet.45 Server with NIC Server with NIC Sheet.46 Server with NIC Server with NIC Sheet.47 Sheet.48 Sheet.49 Sheet.50 . . . . . . Sheet.51 Sheet.52 Sheet.53 Sheet.54 Sheet.55 . . . . . . Sheet.56 TAP points TAP points

The same result can be achieved using a daisy-chained setup without a VLAN-aware switch. In the figure below, the server with an NT200A02 running on a capture/replay image is placed first. The NT200A02 will filter and distribute traffic with the specified number of indexes after adding VLAN tags as specified. The external servers with a standard NIC will then only filter on one or more matching VLAN tags.


Page-1 Sheet.1 Server with SmartNIC Server with SmartNIC Sheet.2 Server with NIC Server with NIC Sheet.3 Server with NIC Server with NIC Sheet.4 Server with NIC Server with NIC Sheet.5 . . . . . . Sheet.6 Sheet.7 Sheet.8 Sheet.9 Sheet.10 Sheet.11 TAP point TAP point

The NTPL example below can be used to distribute the traffic to external servers. All received frames will obtain 4 VLAN tags (100, 101, 102 and 103) and will be transmitted on port 1.
Action[Tag=Test3; Width=4] = {Index=0..3; DestinationPort=1; Vlan=100..103}
Assign[Action=Test3] = All
The following is another NTPL example to distribute all received frames to the host and 3 other servers. The first four out of 16 indexes are associated to streams in the host, and the last 12 indexes are associated to port 1.
Action[Tag=Test4; Width=16] = {Index=0..3; StreamId=0..3}, {Index=4..15; DestinationPort=1; Vlan=101..103} 
Assign[Action=Test4] = All
Adding VLAN TPIDs is supported in addition to adding VLAN tags. See the NTPL example below.
Action[Tag=Test5; VlanTpid=0x9100; Width=8] = {Index=0..7; StreamId=0..3}, {Index=0..7; DestinationPort=1; Vlan=101..108}
Assign[Action=Test5] = All
Note: TPID 0x8100, 0x88A8 and 0x9100 are supported. Default is 0x8100 if not specified.

Traffic load balancing

To avoid unevenly overloading CPU cores, a different number of indexes can be associated to each stream using the Action command. The following NTPL command example is to deliver received frames to 4 streams associating ten indexes to stream 0, four indexes to stream 1 and six indexes to stream 2 and 3.
Action[Tag=Test6; Width=20] = {Index=0..9; StreamId=0}, {Index=10..13; StreamId=1}, {Index=14..19; StreamId=2,3}
Assign[Action=Test6] = All
Each stream will receive a portion of indexes representing the traffic. Using the above NTPL example, stream 0 will get 50% of indexes, stream 1 will get 20% of indexes and stream 2 and 3 will get 30% of indexes.
Note: A portion of indexes does not necessarily represent the same portion of traffic. Dividing traffic between indexes is based on a hash value which cannot guarantee a perfect distribution.