TOE100G-IP on Silicom NIC card Demo Instruction

Rev1.0 15-Jun-23

 

1       Introduction.. 2

2       Setup 100G Standard NIC on the Target system (PC) 3

2.1       Windows 10 OS.. 3

2.2       Ubuntu 20.04.1 OS.. 7

3       Test result when using TOE100G-IP on Silicom NIC and 100G NIC on PC.. 8

3.1       Display TCPIP parameters. 8

3.2       Reset TCPIP parameters. 10

3.3       Half-duplex test 12

3.4       Full duplex Test 22

4       Test result when using TOE100G-IPs on the host and the target 25

4.1       Display TCPIP parameters. 25

4.2       Reset TCPIP parameters. 27

4.3       Half-duplex test 29

4.4       Full duplex Test 36

5       Revision History. 39

 


 

1       Introduction

 

This document shows the example to run TOE100G-IP demo on Silicom NIC by using two test environments. First is run by using Silicom NIC with TOE100G-IP transferring TCP payload data with the target system which is the PC with the standard NIC. The test application must be run on the PC and the performance result is limited by the PC resource. Second is run by using TOE100G-IP on Silicom NIC transferring TCP payload data to TOE100G-IP on another FPGA platform to be the target system which may be Silicom NIC or FPGA standalone board. The second test environment can achieve the best performance for transferring TCP payload data via 100Gb Ethernet.

 

In the document, topic 2 shows the example to set up 100Gb standard NIC on the PC to get the good performance for transferring data via 100Gb Ethernet under the first test environment, TOE100G-IP on Silicom NIC and the PC by 100G standard NIC. Topic 3 shows the example console and test result when running under the first test environment. Topic 4 shows the example console when running the second test environment, TOE100G-IPs on both the host system and the target system by using FPGA platforms. More details of each topic are described as follows.


 

2       Setup 100G Standard NIC on the Target system (PC)

 

This topic shows the example setting of the 100G standard NIC on the PC to enable Jumbo frame and accelerate the network performance on two OSes (Windows10 OS and Ubuntu 20.04.1 OS).

 

2.1      Windows 10 OS

 

1)    Checking the IP address of the 100G Ethernet card, as shown in Figure 2‑1.

 

Figure 21 Setting IP address on Windows OS

 

                  i.       Open Local Area Connection Properties of 100-Gb connection, as shown in the left window of Figure 2‑1.

                 ii.       Select “TCP/IPv4” and then click Properties.

                iii.       Set IP address = 192.168.100.25 and Subnet mask = 255.255.255.0, as shown in the right window of Figure 2‑1.

 

 


 

2)    Enable jumbo frame to the Ethernet card, as shown in Figure 2‑2.

 

Figure 22 Set frame size = Jumbo frame

 

                  i.       On Local Area Connection Properties window, click “Configure” as shown in the left window of Figure 2‑2.

                 ii.       On Advanced Tab, select “Jumbo Packet”. Set Value to “9014 Bytes” for Jumbo Frame support, as shown in the right window of Figure 2‑2.

Note: If setting “Disabled”, Jumbo frame is not supported and the performance may be reduced.

 


 

3)    Disable the flow control and interrupt moderation of the Ethernet card, as shown in Figure 2‑3.

 

Figure 23 Disable Flow Control and Interrupt Moderation

 

                  i.       Select “Flow Control” and set value to “Disabled”, as shown in the left window of Figure 2‑3.

                 ii.       Select “Interrupt Moderation” and set value to “Disabled”, as shown in the right window of Figure 2‑3.

                iii.       Click “OK” button to save and exit all setting windows.

 

 


 

4)    Check the plan of Power options to get the better performance on Windows 10 OS.

 

Figure 24 Power options

 

                  i.       Open Control Panel and select Power Options, as shown in the left window of Figure 2‑4.

                 ii.       Change setting to High Performance, as shown in the right window of Figure 2‑4.

 


 

2.2      Ubuntu 20.04.1 OS

 

1)    Open the terminal to start Ethernet interface configuration.

2)    To list the logical name of 100G Ethernet port on Linux terminal, use following command.

>> sudo lshw -C network

 

Figure 2‑5 shows the results when running the command. “enp1s0f0” is the used 100Gb Ethernet interface.

Figure 25 Display logical name of 100G Ethernet port

 

Figure 26 IP address and Ethernet interface setting

 

3)    Type “ifconfig <interface> <ipaddr_value> netmask <netmask_value>” to set target IP address and Subnet mask to the desired port of the Ethernet card.

a)  Desired (interface) port of Ethernet card = “enp1s0f0”

b)  Set IP address = 192.168.100.25, Subnet mask = 255.255.255.0

 

>> sudo ifconfig enp1s0f0 192.168.100.25 netmask 255.255.255.0

 

4)    Type “ifconfig <interface > mtu <mtu_value>” to set maximum transfer unit over TCP/IP. It needs to set mtu_value = 9000 to support jumbo frame packet.

 

>> sudo ifconfig enp1s0f0 mtu 9000

 

5)    Turn off Rx-Tx latency improvement algorithm by “sudo ethtool -C <interface> adaptive-rx off adaptive-tx off”.

 

>> sudo ethtool -C enp1s0f0 adaptive-rx off adaptive-tx off

 

6)    Set the highest rate of Rx interrupt by “sudo ethtool -C <interface> rx-usecs 0 rx-frames 1”. This setting executes PC interrupt every time that PC receives a packet.

 

>> sudo ethtool -C enp1s0f0 rx-usecs 0 rx-frames 1


 

3       Test result when using TOE100G-IP on Silicom NIC and 100G NIC on PC

 

This topic shows the results captured by using the standard NIC plugged-in to the target PC for transferring data with the host system that uses Silicom NIC with TOE100G-IP. Up to two TCP sessions can be transferred at the same time for both half-duplex test and full-duplex test.

 

3.1      Display TCPIP parameters

 

Select ‘0’ to check current parameters in the demo. There are two TOE100G-IPs on Silicom NIC for handling two TCP sessions. The results of this menu show the parameters that are set to two TCP sessions by two TOE100G-IPs. There are two groups of the parameters. First is common parameters which are shared for all TCP sessions. Another is the target parameters which are set to each TCP session individually.

 

Figure 31 Display current parameter result

 

There are five parameters of the common parameters which are displayed above the table.

1)  Window Update Gap: Set threshold value to transmit Window update packet. Valid value is 0x00 – 0x3F (0-63). The unit size of threshold value is 1 Kbyte. Default value is 16 (Window update packet is sent after receiving every 16-Kbyte data).

2)  Reverse Packet: This flag is enabled to allow the IP sending the retransmitted packet when IP waits Windows update packet returned from the target until timeout. Default value is ENABLE.

3)  MAC address: 48-bit hex value to be MAC address of the Silicom NIC.

4)  IP address: IPv4 address of the Silicom NIC.

Note: This value is used to be Server IP address parameter of the application on Test PC.

5)  Number of target: Display total number of targets. Default value is 1.


 

The example shows the test with one target, so the same target parameters are assigned to all TCP sessions, described as follows.

1)  Target MAC address: 48-bit hex value to be MAC address of the target device. “Undefined” is displayed instead when it is not yet initialized.

2)  Target IP address: IP address of the target device (100G NIC on PC). Default value is 192.168.100.25.

 

The unique parameters that are assigned for each TCP session are port numbers. Two port numbers are displayed - FPGA port number in the left side and Target port number in the right side.

1)  FPGA port number: The port number of TOE100G-IP on FPGA. Default value of the first session and the second session are 60000 and 60001, respectively.

Note: Port number of FPGA is used to be server port for test application on PC.

2)  Target port number: The port number of target. Default value of the first session and the second session are 61000 and 61001, respectively.

 

To change some parameters, user can set by using menu [1] (Reset TCPIP parameters).


 

3.2      Reset TCPIP parameters

 

Select ‘1’ to reset the IP and change IP parameters.

This menu is used to change IP parameters or send reset to TOE100G-IPs. After user selects this menu, the current parameters are displayed on the terminal. User enters ‘x’ to use the same parameters while other keys are entered to change some parameters. After the parameters are fixed, TOE100G-IPs are reset and start the initialization process.

 

The description of each parameter is shown in topic 3.1 (Display TCPIP parameters). The menu to set each parameter are split to two phases. First is to set the common parameters that share to all TCP sessions. Second is to set the target parameters for each TCP session or TOE100G-IP individually. The range of each parameter is described as follows.

 

Note: The FPGA IP address and MAC address of TOE100G-IP on Silicom NIC are configured by the value of “feth0” network interfaces on Silicom NIC host system.

 

Common parameters

1)   Reverse Packet: Set ‘0’ to disable or ‘1’ to enable this feature.

2)   Window Update Gap: Set threshold value to transmit window update packet. Valid value is 0x00 – 0x3F (0-63). The unit size of threshold value is 1 Kbyte. Default value is 16 (Window update packet is sent after receiving every 16-Kbyte data).

3)   Number of targets: The total number of targets in the test system. Valid range is 1-2. (The variable in this demo supports up to 2 targets).

 

Target parameters

1)   Target IP address: A set of four decimal digits, similar to FPGA IP address. This value is IP address of Test PC.

Note: Target IP address of each target device (when number of targets is more than one) must be set by the unique value.

2)   Number of sessions: The total number of TCP sessions in this target device. Valid range depends on the number of targets. For one target device system, the number of sessions can be set to 1 - 2.

3)   FPGA port number of the current session: Valid range is 0-65535.

4)   Target port number of the current session: Valid range is 0-65535.

Note: When the host and the target are connected by multiple sessions, the port number of each session (source or destination port number) must be assigned by different value.

 

Each parameter is verified before loading to TOE100G-IPs. If the input is not valid, the parameter does not change except the number of sessions which must be valid.

 

After finishing parameter assignment, the updated parameters are displayed on the terminal. Next, the reset signal is sent to all IPs to initialize the IPs by using new parameters. Finally, “IP initialization complete” is shown after the IP initialization process is done, as shown in Figure 3‑2.

 


 

Figure 32 Change IP parameter and reset

 


 

3.3      Half-duplex test

 

To transfer data in single direction, select ‘2’ to run half-duplex test on Silicom NIC host terminal and run “tcpdatatest” on PC to send or receive data. The half-duplex test allows user to disable or enable to send/receive data of each TCP session (TOE100G-IP), set by three values, i.e., ‘0’-No operation, ‘1’-Send test, and ‘2’-Receive test. Also, the test parameters of each TCP session are assigned individually. The details when running by Send test and Receive test are shown as below.

 

3.3.1    Send Test

When Send test is selected, PC must run “tcpdatatest” to receive the data by using the recommend parameters for that session. The sequence to run Send test is shown as follows.

 

1)  On Silicom NIC host terminal, input test parameters of each session.

a)  Input test mode: ‘0’-Disable and skip to assign the next session, ‘1’-Send test.

b)  Input transfer size: Unit of transfer size is byte. Valid value is 0x40 - 0x3F_FFFF_FFC0. The input must be aligned to 64. The input is decimal unit when input only digit number. User adds “0x” to be a prefix for hexadecimal unit.

c)  Input packet size: Unit of packet size is byte. Valid value is 64 – 8960. The input must be aligned to 64. The input is decimal unit when input only digit number. User adds “0x” to be a prefix for hexadecimal unit.

Note: If packet size is more than 1408, the packet output from TOE100G-IP is jumbo frame. In this case, the target PC must support jumbo frame.

d)  Input data generation mode: ‘1’ – Use 32-bit incremental value, ‘0’ – Use null value.

e)  Input connection mode: Input ‘1’ to open connection by Server mode (Passive open).

2)   If all inputs are valid, the recommended parameters to run test application on Test PC are displayed. After that, the parameters of the active sessions and “Wait connection” are displayed to wait until the application is run on Test PC.

3)   On Command prompt/Terminal, input test parameters following the recommended value. There are six parameters for “tcpdatatest”.

For Windows OS,

>> tcpdatatest <mode> <dir> <server IP> <server port> <bytelen> <pattern>

For Ubuntu OS,

>> ./tcpdatatest <mode> <dir> <server IP> <server port> <bytelen> <pattern>

 

a)  Mode: Input ‘c’ to run Test PC as a client.

b)  Dir: Input ‘r’ to run Test PC for receiving and verifying test data from Silicom NIC Host

c)  Server IP: Input the same value as IP address of Silicom NIC Host

d)  Server port: Input the same value as port number of Silicom NIC Host

e)  Bytelen: Input the same value as “Input transfer size” of step 1b)

f)   Pattern: Input ‘1’ to verify data from Silicom NIC Host or ‘0’ to not verify data


 

4)   After running the application on Target PC, the port is created. Current amount of transferred data is displayed on Silicom NIC host terminal (transmitted data) and Command prompt/Terminal (received data) every second.

Note: “Closed” is displayed on Silicom NIC host terminal after all data in that session is completely transferred but the remaining session does not complete transferring.

5)   “Half-duplex test complete” is displayed after all connections are closed. Finally, total amount of transferred data and performance of all active sessions are displayed on Silicom NIC host terminal (transmit performance) and Command prompt/Terminal (receive performance). Also, “Total performance” is displayed on Silicom NIC host terminal if multiple sessions are run.

Note: Total performance may be less than the sum of each session performance because time usage is measured from the start time of the first session to the end time of the last session.

 

Figure 3‑3 shows the example of one-session Send data test when using normal packet size with enabling data verification on Command prompt/Terminal. The left window is Silicom NIC host terminal operating as Server and the right window is Command prompt/Terminal on Test PC operating as Client.

 

Figure 33 One-session Send data test by using normal packet size with data verification

 


 

Figure 3‑4 shows the example of one-session Send data test when using jumbo frame size with enabling data verification on Command prompt/Terminal. Comparing with Figure 3‑2, the performance is significantly increased, about two times higher, because the packet size is set to Maximum payload size (Jumbo frame). In some systems, the performance may not be improved from increasing packet size.

 

Figure 34 One-session Send data test by using jumbo frame size with data verification


 

Figure 3‑5 shows the example performance when running by using two-session test. The result of this test and result from the test in Figure 3‑4 shows that running with two-session test archives higher performance than one-session test. The improvement entirely depends on how OS handles its task and the TCP/IP stack.

 

Figure 35 Two-session send data test by using jumbo frame size with data verification


 

If the input is invalid, “[INVALID INPUT]” or “[OUT-OF-RANGE INPUT]” is displayed. After that, the operation is cancelled, as shown in Figure 3‑6 - Figure 3‑8.

 

Figure 36 Error from invalid input

 

Figure 37 Error from out-of-range input

 

Figure 38 Error from no active session


 

3.3.2    Receive Test

When Receive test is selected, PC must run “tcpdatatest” to send the data by using the recommend parameters for that session. The sequence to run Receive test is shown as follows.

 

1)  On Silicom NIC host terminal, input test parameters of each session.

a)  Input test mode: ‘0’-Disable and skip to assign the next session, ‘2’-Receive test.

b)  Input transfer size: Unit of transfer size is byte. Valid value is 0x40 - 0x3F_FFFF_FFC0. The input must be aligned to 64. The input is decimal unit when input only digit number. User adds “0x” to be a prefix for hexadecimal unit.

c)  Input data verification mode: Set ‘0’ to disable data verification or ‘1’ to enable data verification sent from Test PC.

d)  Input connection mode: The connection mode of Silicom NIC Host. Input ‘1’ to open connection by Server mode (Passive open).

2)  If all inputs are valid, the recommended parameters to run test application on Test PC are displayed. After that, the parameters of the active sessions and “Wait connection” are displayed to wait until the application is run on Test PC.

3)  On Command prompt/Terminal, input test parameters following the recommended value. There are six parameters for “tcpdatatest”.

For Windows OS,

>> tcpdatatest <mode> <dir> <server IP> <server port> <bytelen> <pattern>

For Ubuntu OS,

>> ./tcpdatatest <mode> <dir> <server IP> <server port> <bytelen> <pattern>

 

a)  Mode: Input ‘c’ to run Test PC as a client.

b)  Dir: Input ‘t’ to run Test PC for sending test data to Silicom NIC Host

c)  Server IP: Input the same value as IP address of Silicom NIC Host

d)  Server port: Input the same value as port number of Silicom NIC Host

e)  Bytelen: Input the same value as “Input transfer size” of step 1b)

f)   Pattern: Input the same value as “Input data verification mode” of step 1c). Select ‘0’ to send dummy data or ‘1’ to send incremental data.

4)  After running the application on Target PC, the port is created. Current amount of transferred data is displayed on Silicom NIC host terminal (received data) and Command prompt/Terminal (transmitted data) every second.

Note: “Closed” is displayed on Silicom NIC host terminal after all data in that session is completely transferred but the remaining session does not complete.

5)  “Half-duplex test complete” is displayed after all connections are closed. Finally, total amount of transferred data and performance of all active sessions are displayed on Silicom NIC host terminal (receive performance) and Command prompt/Terminal (transmit performance). Also, “Total performance” is displayed on Silicom NIC host terminal if multiple sessions are run.

Note: Total performance may be less than the sum of all session performance because time usage is measured from the start time of the first session to the end time of the last session.

 


 

Figure 3‑9 shows the example of one-session Receive data test when data verification mode on Silicom NIC Host is enabled and incremental data is sent by Test PC. The left window is test result on the Silicom NIC host terminal while the right window is test result on Command prompt/Terminal on Test PC.

 

Figure 39 One-session Receive data test with data verification


 

Figure 3‑10 shows the example of one-session Receive data test when data verification mode on Silicom NIC Host is disabled and dummy data is sent by Test PC. Comparing to Figure 3‑9, the performance in the test environment is slightly increased when running by sending the dummy data instead of incremental data.

 

Figure 310 One-session Receive data test without data verification


 

Figure 3‑11 shows the example of error when data verification is failed. In the example, the error is caused from mismatch verification mode value. The Silicom NIC Host enables data verification while “tcpdatatest” sends dummy data. The error message is displayed on Silicom NIC host terminal.

 

Figure 311 One-session Receive data test when data verification is failed


 

Figure 3‑12 shows the example of two-session receive data test when data verification mode on Silicom NIC Host is disabled and dummy data is sent by Test PC. From the test result of Figure 3‑10, it can be concluded that the performance of running two-session receive data test is much more than running one-session receive data test.

 

Figure 312 Two-session Receive data test without data verification

 


 

3.4      Full duplex Test

 

Select ‘3’ to run full duplex test to transfer data between Silicom NIC Host and Test PC in both directions. After that, it will enter the full-duplex mode and test parameters of each session can be individually assigned. User can enable or disable each session by test mode parameters. User inputs test parameters of the active session on FPGA console and then opens Command prompts (Windows OS) or Terminal (Ubuntu OS) on TestPC to run “tcp_client_txrx_single” application. Multiple applications are run to support multi-session test. The sequence to run the test is shown as below.

 

1)    On Silicom NIC host terminal, input test parameters of each session.

a)    Input test mode: ‘0’-Disable and skip to assign the next session, ‘1’-Full duplex test.

b)    Input transfer size: Unit of transfer size is byte. Valid value is 0x40 - 0x3F_FFFF_FFC0. The input must be aligned to 64. The input is decimal unit when input only digit number. User adds “0x” to be a prefix for hexadecimal unit. This value must be equal to total transfer size, set on test application.

c)    Input packet size: Unit of packet size is byte. Valid value is 64 – 8960. The input must be aligned to 64. The input is decimal unit when input only digit number. User adds “0x” to be a prefix for hexadecimal unit.

d)    Input data verification/generation mode: ‘0’ to disable data verification and pattern data generation, ‘1’ to enable data verification and pattern data generation.

e)    Input connection mode: The connection mode of Silicom NIC Host. Input ‘1’ to open connection by Server mode (Passive open).

2)    If all inputs are valid, the recommended parameters to run test application on Test PC are displayed. Next, the parameters of the active sessions are displayed. “Wait connection” is displayed to wait until the application is run on Test PC.

3)    On Test PC Command prompt/Terminal, input test parameters following the recommended value. There are four parameters for “tcp_client_txrx_single”.

For Windows OS,

>> tcp_client_txrx_single <server IP> <server port> <bytelen> <pattern>

For Ubuntu OS,

>> ./tcp_client_txrx_single <server IP> <server port> <bytelen> <pattern>

a)    Server IP: Input the same value as IP address of Silicom NIC Host

b)    Server port: Input the same value as port number of Silicom NIC Host

c)    ByteLen: Total transfer size in byte unit. Input the same value as “Input transfer size” of step 1b).

d)    Pattern: Input the same value as “Input data verification/generation mode” of step 1d).


 

4)    After running the test application, the port is created. While transferring data, current transfer size is displayed on Silicom NIC host terminal and Test PC Command prompt/Terminal every second.

Note: “Closed” is displayed on Silicom NIC host terminal after all data in that session is completely transferred but the remaining session does not complete.

5)    Full-duplex test complete” is displayed after all connection are closed. Finally, total amount of transferred data and performance of all active sessions in both transferred directions are displayed on Silicom NIC host terminal (receive performance) and Command prompt/Terminal (transmit performance). Also, “Total performance” is displayed on Silicom NIC host terminal if running the test more than one session.

 

Figure 3‑13 shows the example when running one-session full duplex with data verification and using jumbo frame size. The left window is the test result on the Silicom NIC host terminal while the right window is the test result on Test PC Command prompt/Terminal.

 

Note: The performance when running the full duplex test is much reduced, compared to the half-duplex test (Send/Receive), because there are more tasks for OS handling. Also, there is an issue when running tcp_client_txrx_single application without data verification on new version of Windows10 OS. The performance is much reduced on new version.

 

Figure 313 One-session Full duplex test with data verification


 

Figure 3‑14 shows the example when running two-session full duplex with data verification and using jumbo frame size. When comparing to Figure 3‑13, the performance of two-session test is also increased about 58%.

 

Figure 314 Two-session Full duplex test with data verification

 

From the half-duplex and full-duplex test result, the performance when using multi-session is increased from one session. However, the bandwidth of the result is still limited, not full-bandwidth from OS handling. To achieve the best performance, both the host system and the target system should integrate TOE100G-IP which will be described in the next topic.

 


 

4       Test result when using TOE100G-IPs on the host and the target

 

This topic shows the results captured by using TOE100G-IP operated on the host system and the target system. The host system is the PC with Silicom NIC while the target system is the FPGA standalone board that runs TOE100G-IP multiple-session demo. Therefore, two-session operating can be shown. However, it is possible to use Silicom NIC with TOE100G-IP for both the host system and the device system. The details to use TOE100G-IP demo on FPGA platform are described in following document.

 

TOE100G-IP 4 Session Demo Instruction

https://dgway.com/products/IP/TOE100G-IP/dg_toe100gip_4ss_instruction.pdf

 

4.1      Display TCPIP parameters

 

Select ‘0’ to check the current parameters used in the demo. As shown in Figure 4‑1, the terminal from the Silicom NIC Host with TOE100G-IP is displayed on the left window while the right window shows the console of TOE100G-IP multi-session demo on FPGA standalone board. Only the left window is described in more details.

 

The parameters of two TCP sessions that are operated by two TOE100G-IPs are displayed. There are two groups of the parameters, i.e., common parameters which are shared for all TCP sessions and target parameters which are set to each TCP session individually.

 

Figure 41 Display current parameter result


   There are five parameters of the common parameters which are displayed above the table.

1)  Window Update Gap: Set threshold value to transmit window update packet. Valid value is 0x00 – 0x3F (0-63). The unit size of threshold value is 1 Kbyte. Default value is 16 (Window update packet is sent after receiving every 16-Kbyte data).

2)  Reverse Packet: This flag is enabled to allow the IP sending the retransmitted packet when IP waits Windows update packet returned from the target until timeout. Default value is ENABLE.

3)  MAC address: 48-bit hex value to be MAC address of the Silicom NIC.

4)  IP address: IPv4 address of the Silicom NIC.

5)  Number of target: Display total number of targets. Default value is 1.

 

The example shows the test with one target, so the same target parameters are assigned to all TCP sessions, described as follows.

1)  Target MAC address: 48-bit hex value to be MAC address of the target device. “Undefined” is displayed instead when it is not yet initialized.

2)  Target IP address: IP address of the target device. Default value is 192.168.100.25

 

The unique parameters that are assigned for each TCP session are port numbers. Two port numbers are displayed - FPGA port number in the left side and Target port number in the right side.

1)  FPGA port number: The port number of TOE100G-IP on FPGA. Default value of the first session and the second session are 60000 and 60001, respectively.

2)  Target port number: The port number of target. Default value of the first and the second session are 61000 and 61001, respectively.

 

To change some parameters, user can set by using menu [1] (Reset TCPIP parameters).

 


 

4.2      Reset TCPIP parameters

 

Select ‘1’ to reset the IP and change IP parameters. Figure 4‑2 shows the result on Silicom NIC Host with TOE100G-IP on the left window while the right window shows the console of TOE100G-IP multi-session demo on FPGA standalone board.

 

This menu is used to change IP parameters or send reset to TOE100G-IPs. After user selects this menu, the current parameters are displayed on the terminal. User enters ‘x’ to use the same parameters while other keys are entered to change some parameters. After the parameters are fixed, reset signals are sent to TOE100G-IPs to start the initialization process.

 

The description of each parameter is shown in topic 4.1 (Display TCPIP parameters). The menu to set each parameter are split to two phases. First is to set the common parameters that share to all TCP sessions. Second is to set the target parameters for each TCP session individually. The range of each parameter is described as follows.

 

Note:

1)  When the target system is TOE100G-IP on FPGA standalone board and the target system is also reset by this menu, the user needs to run reset menu on the target system firstly. If the target system is initialized as Server mode that requires ARP request packet, the user needs to open the new terminal to run “arping” on the Silicom Host for sending ARP request packet to the target.

2)  Parameter on the host and the target must be matched, as following list.

i)     Target port number of device#1 = FPGA port number of device#2

ii)    FPGA port number of device#1 = Target port number of device#2

3)  The FPGA IP address and MAC address of TOE100G-IP on Silicom NIC are configured by the value of “feth0” network interfaces on Silicom NIC host system.

 

Common parameters

1)   Reverse Packet: Set ‘0’ to disable or ‘1’ to enable this feature.

2)   Window Update Gap: Set threshold value to transmit window update packet. Valid value is 0x00 – 0x3F (0-63). The unit size of threshold value is 1 Kbyte. Default value is 16 (Window update packet is sent after receiving every 16-Kbyte data).

3)   Number of targets: The total number of targets in the test system. Valid range is 1-2. (The variable in this demo supports up to 2 targets).

 

Target parameters

1)   Target IP address: A set of four decimal digits, similar to FPGA IP address. This value is IP address of Test PC.

Note: Target IP address of each target device (when number of targets is more than one) must be set by the unique value.

2)   Number of sessions: The total number of TCP sessions in this target device. Valid range depends on the number of targets. For one target device system, the number of sessions can be set to 1 - 2.

3)   FPGA port number of the current session: Valid range is 0-65535.

4)   Target port number of the current session: Valid range is 0-65535.

Note: When the host and the target are connected by multiple sessions, the port number of each session (source or destination port number) must be assigned by different value.


 

Each parameter is verified before loading to TOE100G-IPs. If the input is not valid, the parameter does not change except the number of sessions which must be valid.

 

After finishing parameter assignment, the updated parameters are displayed on the terminal. Next, the reset signal is sent to all IPs to initialize the IPs by using new parameters. Finally, “IP initialization complete” is shown after the IP initialization process is done, as shown in Figure 4‑2.

 

Figure 42 Change IP parameter result


 

4.3      Half-duplex test

 

To transfer data in single direction, select ‘2’ to run half-duplex test on Silicom NIC Host terminal. On the target system, the transfer direction must be inversed from the host system. Each session can be set to enable/disable and transfer direction individually. The details to run each transfer direction on Silicom NIC Host are shown as below.

Note: The connection mode set before starting transferring data is applied to specify how to open and close the connection. It can be selected to be active mode (Client) or passive mode (Server).

 

4.3.1    Send Test

This topic transfers the data from Silicom NIC Host to TOE100G-IP on the target device. Therefore, Silicom NIC Host runs Send data test while the target device runs Receive data test. User needs to set the parameters to the device that selects to open the connection by Server mode (Passive open) before the Client device (Active open). The example sets the Silicom NIC Host to open connection as Server mode, so the parameters of Silicom NIC Host is set as the first step. The test sequence is shown as follows.

 

1)   On Silicom NIC host terminal, input test parameters of each session.

a)  Input test mode: ‘0’-Disable and skip to assign the next session, ‘1’-Send test.

b)  Input transfer size: Unit of transfer size is byte. Valid value is 0x40 - 0x3F_FFFF_FFC0. The input must be aligned to 64. The input is decimal unit when input only digit number. User adds “0x” to be a prefix for hexadecimal unit.

c)  Input packet size: Unit of packet size is byte. Valid value is 64 – 8960. The input must be aligned to 64. The input is decimal unit when input only digit number. User adds “0x” to be a prefix for hexadecimal unit.

d)  Input data generation mode: Mode of pattern data generation. Set ‘1’ to use 32-bit incremental data or ‘0’ to use null value.

e)  Input connection mode: Input ‘1’ to open connection by Server mode (Passive open).

2)    If inputs are valid, “Wait connection” is displayed to wait until the target device sends the request for the new connection.

Note: If some inputs are invalid, “[OUT-OF-RANGE INPUT]” or “[INVALID INPUT]” is displayed and then the operation is cancelled, as shown in Figure 3‑6 - Figure 3‑8 (similar to the test with Test PC).

3)    On target device console, input three or four test parameters in receive data test menu.

a)  Input test mode (available only multiple session design): ‘0’-Disable and skip to assign the next session, ‘2’-Receive test.

b)  Input transfer size: Unit of transfer size is byte. Valid value is 0x40 - 0x3F_FFFF_FFC0. The input must be aligned to 64. The input is decimal unit when input only digit number. User adds “0x” to be a prefix for hexadecimal unit. Set the same value as “transfer size” of step 1b).

c)  Input data verification mode: Set ‘0’ to disable data verification or ‘1’ to enable data verification to verify data from Silicom NIC Host. Set the same value as “data generation mode” of step 1d).

d)  Input Mode: The connection mode. Input ‘0’ to open connection by Client mode (Active open). Set the different value from “Connection mode” of step 1e).

After all inputs are valid, the operation begins.

Note: Step 1) and 3) must be swapped if the connection mode of Silicom NIC Host is Client while the connection mode of TOE100G-IP demo on FPGA standalone board is Server.


 

4)    After running the target device, the port is created. Some TOE100G-IP demo designs require the user input to start the operation. Next, the current amount of transferred data is displayed on the terminal and the console every second. “Closed” is displayed on Silicom NIC host terminal on the session that is completely transferred while the remaining session does not complete transferring.

5)    “Half-duplex test complete” message is displayed after the connections are closed. Finally, total amount of transferred data and performance are displayed on the terminal and the console.

 

Figure 4‑3 shows the example of one-session Send data test when using jumbo frame size with enabling pattern data generation. The left window is Silicom NIC host terminal operating as Server and the right window is console of TOE100G-IP demo operating as Client.

 

Figure 43 One-session Send data test by using jumbo frame

with enabling pattern data generation


 

Figure 4‑4 shows the example of one-session Send data test when using jumbo frame size without pattern data generation. Comparing to Figure 4‑3, the performance is significantly increased and almost closed to line rate at 100G Ethernet. When the pattern data generation is disabled, it uses less CPU resource on Silicom NIC Host. Therefore, the 100G Ethernet performance depends on how CPU handles the task to process the data in its memory.

 

Figure 44 One-session Send data test by using jumbo frame without pattern data generation


 

Figure 4‑5 shows the example of two-session Send data test when using jumbo frame size without pattern data generation. Comparing to Figure 4‑4, the performance is almost similar because one-session test has already shown the peak performance of 100G Ethernet.

 

Figure 45 Two-session Send data test by using jumbo frame without pattern data generation

 


 

4.3.2    Receive Test

This topic transfers the data from TOE100G-IP on the target device to Silicom NIC Host. Therefore, Silicom NIC Host runs Receive data test while the target device runs Send data test. User needs to set the parameters to the device that selects to open the connection by Server mode (Passive open) before the Client device (Active open). The example sets the Silicom NIC Host to open connection as Server mode, so the parameters of Silicom NIC Host is set as the first step. The test sequence is shown as follows.

 

1)  On Silicom NIC host terminal, input test parameters of each session.

a)  Input test mode: ‘0’-Disable and skip to assign the next session, ‘2’-Receive test.

b)  Input transfer size: Unit of transfer size is byte. Valid value is 0x40 - 0x3F_FFFF_FFC0. The input must be aligned to 64. The input is decimal unit when input only digit number. User adds “0x” to be a prefix for hexadecimal unit.

c)  Input data verification mode: Set ‘0’ to disable data verification or ‘1’ to enable data verification sent from target device.

d)  Input connection mode: Input ‘1’ to open connection by Server mode (Passive open).

2)  If inputs are valid, “Wait connection” is displayed to wait until the target device sends the request for the new connection.

Note: If some inputs are invalid, “[OUT-OF-RANGE INPUT]” or “[INVALID INPUT]” is displayed and then the operation is cancelled, as shown in Figure 3‑6 - Figure 3‑8 (similar to the test with Test PC).

3)  On target device console, input test parameters in send data test menu.

a)  Input test mode (available only multiple session design): ‘0’-Disable and skip to assign the next session, ‘1’-Send test.

b)  Input transfer size: Unit of transfer size is byte. Valid value is 0x40 - 0x3F_FFFF_FFC0. The input must be aligned to 64. The input is decimal unit when input only digit number. User adds “0x” to be a prefix for hexadecimal unit. Set the same value as “transfer size” of step 1b).

c)  Input packet size: Unit of packet size is byte. Valid value is 64 – 8960. The input must be aligned to 64. The input is decimal unit when input only digit number. User adds “0x” to be a prefix for hexadecimal unit.

d)  Input Mode: The connection mode. Input ‘0’ to open connection by Client mode (Active open). Set the different value from “Connection mode” of step 1d).

After all inputs are valid, the operation begins.

Note: Step 1) and 3) must be swapped if the connection mode of Silicom NIC Host is Client while the connection mode of TOE100G-IP demo on FPGA standalone board is Server.

4)  After running the target device, the port is created. Some TOE100G-IP demo designs require the user input to start the operation. Next, the current amount of transferred data is displayed on the terminal and the console every second. “Closed” is displayed on Silicom NIC host terminal on the session that is completely transferred while the remaining session does not complete transferring.

5)   “Half-duplex test complete” message is displayed after the connections are closed. Finally, total amount of transferred data and performance are displayed on the terminal and the console.


 

Figure 4‑6 shows the example of one-session Receive data test with data verification and the transmit packet size is normal packet size. The left window is Silicom NIC host terminal operating as Server and the right window is console of TOE100G-IP demo operating as Client.

 

Figure 46 One-session Receive data test by using normal packet size on target

 


 

Figure 4‑7 shows the example of one-session Receive data test with data verification and the transmit packet size is jumbo frame size. The performance of receive data test is increased and closed to the maximum performance when setting jumbo frame size on the target, comparison with the normal packet size performance in Figure 4‑6. Therefore, it is recommended to use jumbo frame size to achieve the maximum performance of 100Gb Ethernet speed. From the result, data verification off is not required to reach the maximum performance.

 

Figure 47 One-session Receive data test by using jumbo packet size on target

 

 

4.4      Full duplex Test

 

Select ‘3’ to run full duplex test to transfer data between Silicom NIC Host and TOE100G-IP demo system in both directions. User needs to set the parameters to the device that selects to open the connection by Server mode (Passive open) before the Client device (Active open). The example sets the Silicom NIC Host to be the Server mode, so the parameters of Silicom NIC Host is set as the first step. The test sequence is shown as follows.

Note: Some TOE100G-IP demo designs run the full-duplex test as forever loop. Please manually close the operation after finishing the test.

 

1)  On Silicom NIC host terminal, input test parameters of each session.

a)  Input test mode: ‘0’-Disable and skip to assign the next session, ‘1’-Full duplex test.

b)  Input transfer size: Unit of transfer size is byte. Valid value is 0x40 - 0x3F_FFFF_FFC0. The input must be aligned to 64. The input is decimal unit when input only digit number. User adds “0x” to be a prefix for hexadecimal unit.

c)  Input packet size: Unit of packet size is byte. Valid value is 64 – 8960. The input must be aligned to 64. The input is decimal unit when input only digit number. User adds “0x” to be a prefix for hexadecimal unit.

d)  Input data verification/generation mode: Set ‘0’ to disable data verification and pattern data generation or ‘1’ to enable data verification and pattern data generation.

e)  Input connection mode: Input ‘1’ to open connection by Server mode (Passive open).

2)  If inputs are valid, “Wait connection” is displayed to wait until the target device sends the request for the new connection.

Note: If some inputs are invalid, “[OUT-OF-RANGE INPUT]” or “[INVALID INPUT]” is displayed and then the operation is cancelled, as shown in Figure 3‑6 - Figure 3‑8 (similar to the test with Test PC).

3)  On target device console, input four or five test parameters in full duplex test.

a)  Input test mode (available only multiple session design): ‘0’-Disable and skip to assign the next session, ‘1’- Full duplex test.

b)  Input transfer size: Unit of transfer size is byte. Valid value is 0x40 - 0x3F_FFFF_FFC0. The input must be aligned to 64. The input is decimal unit when input only digit number. User adds “0x” to be a prefix for hexadecimal unit. Set the same value as “transfer size” of step 1b).

c)  Input packet size: Unit of packet size is byte. Valid value is 64 – 8960. The input must be aligned to 64. The input is decimal unit when input only digit number. User adds “0x” to be a prefix for hexadecimal unit.

d)  Input data verification mode: Set ‘0’ to disable data verification or ‘1’ to enable data verification sent from Silicom NIC Host. Set the same value as “data verification/generation mode” of step 1d).

e)  Input Mode: The connection mode. Input ‘0’ to open connection by Client mode (Active open). Set the different value from “Connection mode” of step 1e)

After all inputs are valid, the operation begins.

4)  After running the target device, the port is created. Some TOE100G-IP demo designs require the user input to start the operation. Next, the current amount of transferred data is displayed on the terminal and the console every second. “Closed” is displayed on Silicom NIC host terminal on the session that is completely transferred while the remaining session does not complete transferring.

5)  “Full-duplex test complete” is displayed after the connections are closed. Finally, total amount of transferred data and performance are displayed on the terminal and the console.


 

Figure 4‑8 shows full duplex test with enabling the data generation and verification on Silicom NIC Host. The left window is Silicom NIC terminal which is run as Server. The right window is console from the target device running as Client.

 

Figure 48 One-session Full duplex test with enabling the data verification/generation


 

Figure 4‑9 shows full duplex test with disabling the data generation and verification on Silicom NIC Host. Comparing to Figure 4‑8, the performance of disabling data verification is improved from the enabling data verification test. Also, both results show unbalance performance between Send and Receive process, simultaneously. There are many factors that have an effect to the performance of full-duplex test by using one TCP session such as “Window Update Gap” and “packet size” parameters. It needs to tune the parameters to meet the system requirement.

 

Figure 49 One-session Full duplex test with disabling the data verification/generation

 


 

5       Revision History

 

Revision

Date

Description

1.0

25-Oct-22

Initial version release