aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: 3edcf37d2ed5e2bbbf4fb81ec9459b8e6b06ff87 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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