Anuket Project

Internship 2022 - Benchmarking eBPF based solutions

Project Name: XDP performance studies for cloud-native NFV Usecases
Mentor: Sridhar Rao Al Morton 
Mentee: Shivank Chaudhary 
Tenure: 6 Months (Start- 9 June 2022)

Tasks and Progress:

S. NoTaskWeekRelated LInksOutcomesStatus
1Setup VPP(Vector Packet Processing) and run Trex Traffic Gen
to benchmark it. 
week 1 & 2https://medium.com/@shivank1128/vpp-benchmark-with-trex-traffic-generator-6cfcecb931a9Learned the following:
1) How to attach and De-attach 
NIC from DPDK.
2) How to benchmark with Trex 
Traffic gen.
Completed
3Setup Open Virtual Switch and create a loopback between interfaces, benchmarking it with Trex.Week 3

http://solomon.ipv6.club.tw/Course/SDN/howto_install_ovs_on_centos7.html
https://www.linuxtechi.com/install-use-openvswitch-kvm-centos-7-rhel-7/
https://access.redhat.com/documentation/en-us/red_hat_openstack_platform/10/html-single/ovs-dpdk_end_to_end_troubleshooting_guide/index

1) Installed OVS on Node4.
2) Created loopback interface.
Completed
4Upgrade Node4 from Centos 7 to  Fedora 36. or any suitable Operating System to Run eBPF programs.Week 4  & 5https://getfedora.org/en/workstation/download/1) Removed Centos 7 from Node 4 POD12.
2) Tried to install fedora 36 via Redirect ISO (Failed: due to some issue in Jviewer)
3) Got POD 18 (Ubuntu 20) for testing eBPF programs.
Completed
5Attach an eBPF program to Kernel and Benchmark it with Trex.Week 6 & 7https://github.com/Nat-Lab/xdp-router  (Solution XDP Bridge)
https://github.com/xdp-project/xdp-tutorial
https://github.com/torvalds/linux/tree/master/samples/bpf
https://docs.cilium.io/en/latest/bpf/
https://github.com/dpino/xdp_ipv6_filter

1) Tested 3 XDP bridges but rejected them due to many bugs and errors.
2) Compiled and Attached the XDP router to the interface.
3) testing the program (Whether fulfilling the requirements or not). (In Progress)
Completed
6Waiting for Pod12 Node4 to get ready, depends on infra team!Week 8 & 9

Completed
7Automate setting up eBPF programs for Baremetal usecases- similar to OVS-DPDK/VPP.Week 10

ViNePerf Nile Release Planning



Completed

Due to some VPN connectivity issues to POD12.

Proceeding with the following tasks first.
Source Code For Following Tasks: https://github.com/Alt-Shivam/Benchmarking-eBPF-XDP



Status
eBPF Based BridgeComplete lifecycle; including automation
Install, start, configure (add interfaces, add forwarding rules)

Completed

https://github.com/Alt-Shivam/eBPF

Tgen: PROXComplete Lifecycle: Install, Start, start-test, analyse resultsCompleted
Tgen: T-REXComplete Lifecycle: Install, Start, start-test, analyse results

Completed
https://github.com/Alt-Shivam/Benchmarking-eBPF-XDP/tree/main/Tgen:%20TREX

FWD: DPDK-Apps (l2fwd, L3fwd, ..)Complete Lifecycle: Install, Start, collect metrics

Completed

https://github.com/Alt-Shivam/Benchmarking-eBPF-XDP/tree/main/FWD:%20DPDK-Apps(L2%2CL3)

FWD: PROX
FWD: VPP
Complete Lifecycle: Install, Start, collect metrics

Completed

https://github.com/Alt-Shivam/Benchmarking-eBPF-XDP/tree/main/FWD:%20VPP%2C%20PROX

CNI: CiliumComplete lifecycle; including automation
Install, start, configure (add interfaces, add forwarding rules)

Completed

https://github.com/Alt-Shivam/Benchmarking-eBPF-XDP/tree/main/CNI:%20Cilium

CNI: eBPF-Calico (if time permits)Complete lifecycle; including automation
Install, start, configure (add interfaces, add forwarding rules)
Completed

K8S Reference Definitions:
(a) POD defns.
(b) Network Attachment [CNI: Cilium]

(a) https://github.com/opnfv/vineperf/tree/master/tools/k8s/reference-definitions/pod-defs
(b) https://github.com/opnfv/vineperf/tree/master/tools/k8s/reference-definitions/network-attachments
Completed

Some Important links for Centos 7:
https://linuxhint.com/install_llvm_centos7/
https://stackoverflow.com/questions/44219158/how-to-install-clang-and-llvm-3-9-on-centos-7

Learning Resource Section: