cBPF Virtual Patch (single-thread)
A demonstation of a virtual patch between two nodes with an attached cBPF filter on one of the interfaces.
- GitHub Link: https://github.com/packetcord/packetcord.io/tree/main/apps/l2_patch_cbpf
- Topology File: topology_examples/l2_patch.json
Topology diagram
Steps
Build the project (all examples)
cd packetcord.io
mkdir build
cd build
cmake .. --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_patch_cbpf/l2_patch_cbpf_app
Save the file (overwrite or select new filename and/or new location), Validate, Generate and Launch the topology and open the container shell.
Inside the container, run the following commands:
cd /root
./l2_patch_cbpf_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.2 (172.16.111.2): 56 data bytes
64 bytes from 172.16.111.2: seq=0 ttl=64 time=0.175 ms
64 bytes from 172.16.111.2: seq=1 ttl=64 time=0.330 ms
64 bytes from 172.16.111.2: seq=2 ttl=64 time=0.293 ms
64 bytes from 172.16.111.2: seq=3 ttl=64 time=0.319 ms
Let's also run iperf3 between Node A and Node B:
On Node B
iperf3 -s
On Node A
iperf3 -c 172.16.111.2
Connecting to host 172.16.111.2, port 5201
[ 5] local 172.16.111.1 port 33200 connected to 172.16.111.2 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 98.4 MBytes 824 Mbits/sec 93 126 KBytes
[ 5] 1.00-2.00 sec 114 MBytes 952 Mbits/sec 208 96.2 KBytes
[ 5] 2.00-3.00 sec 105 MBytes 882 Mbits/sec 149 100 KBytes
[ 5] 3.00-4.00 sec 110 MBytes 919 Mbits/sec 160 106 KBytes
[ 5] 4.00-5.00 sec 108 MBytes 907 Mbits/sec 135 93.3 KBytes
[ 5] 5.00-6.00 sec 105 MBytes 879 Mbits/sec 130 100 KBytes
[ 5] 6.00-7.00 sec 112 MBytes 938 Mbits/sec 137 90.5 KBytes
[ 5] 7.00-8.00 sec 106 MBytes 887 Mbits/sec 135 93.3 KBytes
[ 5] 8.00-9.00 sec 110 MBytes 922 Mbits/sec 147 91.9 KBytes
[ 5] 9.00-10.00 sec 111 MBytes 928 Mbits/sec 161 103 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 1.05 GBytes 904 Mbits/sec 1455 sender
[ 5] 0.00-10.00 sec 1.05 GBytes 903 Mbits/sec receiver
Terminate
Use the Destroy button to terminate the emulation.