XDP Virtual Patch (multi-thread)

A demonstation of a virtual patch between two nodes.

  • GitHub Link: https://github.com/packetcord/packetcord.io/tree/main/apps/l2_xdp_patch_workers
  • Topology File: topology_examples/l2_patch.json

Topology diagram

TOP

Steps

Build the project (all examples)

cd packetcord.io
mkdir build
cd build
cmake -DENABLE_XDP_DATAPLANE=ON .. --fresh
make

Start the topology

Load the exampe topology project file.

Then, left click on the Patch container. Inside the Properties panel, set the Network App field to point to the location of the app: /home/ubuntu/packetcord/sdk/packetcord.io/build/apps/l2_xdp_patch_workers/l2_xdp_patch_workers_app

Save the file (overwrite or select new filename and/or new location), Validate, Generate and Launch the topology and open the container shell.

TOP

Inside the container, run the following commands:

cd /root
./l2_xdp_patch_workers_app

Result

Open the shells of Node A and Node B. Try to ping each other (172.16.111.1 and 172.16.111.2).

PING 172.16.111.1 (172.16.111.1): 56 data bytes
64 bytes from 172.16.111.1: seq=0 ttl=64 time=0.049 ms
64 bytes from 172.16.111.1: seq=1 ttl=64 time=0.061 ms
64 bytes from 172.16.111.1: seq=2 ttl=64 time=0.055 ms
64 bytes from 172.16.111.1: seq=3 ttl=64 time=0.068 ms

Let's also run iperf3 between Node A (server) and Node B (client):

On Node A

iperf3 -s

On Node B

iperf3 -c 172.16.111.1
Connecting to host 172.16.111.1, port 5201
[  5] local 172.16.111.2 port 34842 connected to 172.16.111.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   602 MBytes  5.05 Gbits/sec  112    547 KBytes       
[  5]   1.00-2.00   sec   721 MBytes  6.05 Gbits/sec   84    724 KBytes       
[  5]   2.00-3.00   sec   743 MBytes  6.23 Gbits/sec  112    675 KBytes       
[  5]   3.00-4.00   sec   716 MBytes  6.01 Gbits/sec  112    546 KBytes       
[  5]   4.00-5.00   sec   717 MBytes  6.01 Gbits/sec   84    706 KBytes       
[  5]   5.00-6.00   sec   738 MBytes  6.19 Gbits/sec  112    611 KBytes       
[  5]   6.00-7.00   sec   736 MBytes  6.17 Gbits/sec  112    547 KBytes       
[  5]   7.00-8.00   sec   699 MBytes  5.87 Gbits/sec   84    660 KBytes       
[  5]   8.00-9.00   sec   716 MBytes  6.01 Gbits/sec  112    594 KBytes       
[  5]   9.00-10.00  sec   738 MBytes  6.19 Gbits/sec   84    725 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  6.96 GBytes  5.98 Gbits/sec  1008            sender
[  5]   0.00-10.00  sec  6.95 GBytes  5.97 Gbits/sec                  receiver

Terminate

Use the Destroy button to terminate the emulation.