Internship 2022 - Benchmarking eBPF based solutions

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. No

Task

Week

Related LInks

Outcomes

Status

S. No

Task

Week

Related LInks

Outcomes

Status

1

Setup VPP(Vector Packet Processing) and run Trex Traffic Gen
to benchmark it. 

week 1 & 2

https://medium.com/@shivank1128/vpp-benchmark-with-trex-traffic-generator-6cfcecb931a9

Learned the following:
1) How to attach and De-attach 
NIC from DPDK.
2) How to benchmark with Trex 
Traffic gen.

Completed

3

Setup 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

4

Upgrade Node4 from Centos 7 to  Fedora 36. or any suitable Operating System to Run eBPF programs.

Week 4  & 5

https://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

5

Attach an eBPF program to Kernel and Benchmark it with Trex.

Week 6 & 7

https://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

6

Waiting for Pod12 Node4 to get ready, depends on infra team!

Week 8 & 9

 

 

Completed

7

Automate 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

 

 

Status

eBPF Based Bridge

Complete lifecycle; including automation
Install, start, configure (add interfaces, add forwarding rules)

Completed

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

Tgen: PROX

Complete Lifecycle: Install, Start, start-test, analyse results

Completed

Tgen: T-REX

Complete 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: Cilium

Complete 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: