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