aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorToni Uhlig <matzeton@googlemail.com>2025-06-16 17:09:43 +0200
committerToni Uhlig <matzeton@googlemail.com>2025-06-18 15:16:30 +0200
commit0730e77eb4aa9841e90a17f190b9ae7d80565054 (patch)
treeb214414fb23070fcfcbfc880f78eb7b4cef987c8 /Makefile
Initial commitmain
Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile53
1 files changed, 53 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..3edcf37
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,53 @@
+CC=clang-20
+IF=lo
+ifneq ($(DEBUG),)
+BPF_CFLAGS+=-DXDP_DEBUG=1
+endif
+
+all: xdp_udp_handler.o xdp_loader user_server user_client
+
+run: all
+ sudo ./xdp_loader $(IF)
+
+clean:
+ rm -f ./xdp_udp_handler.o ./xdp_loader ./user_server ./user_client
+ rm -f ./fit.log ./rtt.dat ./rtt_tmp.dat
+
+detach:
+ sudo bpftool net detach xdp dev $(IF)
+
+benchmark: all
+ @echo 'Running benchmark in user space..'
+ ./user_server &
+ ./user_client >./rtt_tmp.dat
+ cp ./rtt_tmp.dat ./rtt.dat
+ ./gnuplot.script
+ mv -v rtt.png benchmark-user-with-burst.png
+ # use only the last 90 data points
+ tail -n90 ./rtt_tmp.dat >./rtt.dat
+ ./gnuplot.script
+ mv -v rtt.png benchmark-user.png
+ @echo 'Running benchmark with XDP..'
+ $(MAKE) detach
+ $(MAKE) run
+ ./user_client >./rtt_tmp.dat
+ cp ./rtt_tmp.dat ./rtt.dat
+ ./gnuplot.script
+ mv -v rtt.png benchmark-xdp-with-burst.png
+ # use only the last 90 data points
+ tail -n90 ./rtt_tmp.dat >./rtt.dat
+ ./gnuplot.script
+ mv -v rtt.png benchmark-xdp.png
+ $(MAKE) detach
+
+xdp_udp_handler.o: xdp_udp_handler.c xdp_parser.h xdp_checksum.h
+ $(CC) -Wall -Wextra -O3 -g -target bpf -D__TARGET_ARCH_x86 $(BPF_CFLAGS) -c xdp_udp_handler.c -o xdp_udp_handler.o
+
+xdp_loader: xdp_loader.c
+ $(CC) -Wall -Wextra -O3 -g $(CFLAGS) xdp_loader.c -o xdp_loader $(shell pkg-config --cflags --libs libbpf) $(LDFLAGS)
+
+user_server: user_server.c
+ $(CC) -Wall -Wextra -O3 -g $(CFLAGS) user_server.c -o user_server
+
+user_client: user_client.c
+ $(CC) -Wall -Wextra -O3 -g $(CFLAGS) user_client.c -o user_client