Skip to content

Commit

Permalink
Moving all changes we have made from the dpdk-2011-focal branch to …
Browse files Browse the repository at this point in the history
…the `master` branch (#21)

* Upgrade DPDK to 20.11

- address memseg and mbuf changes
- move to meson/ninja build system

Signed-off-by: Saikrishna Edupuganti <[email protected]>

* Update DPDK version to 20.11.3

ice ddp loading seems reliable when using a PF with this version

Signed-off-by: Saikrishna Edupuganti <[email protected]>

* Allow override of base image with IMAGE

IMAGE="ghcr.io/omec-project/upf-epc/bess_build" \
./container_build.py shell

Signed-off-by: Saikrishna Edupuganti <[email protected]>

* Use focal base image

Signed-off-by: Saikrishna Edupuganti <[email protected]>

* 0001-Add-2-workers-support-to-Nat-module

* 0002-Use-same-rss-key-across-interfaces

* 0003-Add-FIB-routing-support-in-IPLookup-module

* 0004-IOVA-mode-correction

* 0005-Expose-PMDPort-socket-memory-allocation

* 0006-Add-switch-for-promiscuous-mode

* 0008-Enable-hardware-checksum-offload

* 0009-Adding-value-attributes-to-ExactMatch-WildcardMatch

* 0010-Add-hardware-rx-checksum-offload-option-for-checksum

* 0011-Protobuf-update-to-new-module-messages

* 0012-Dpdk-concurrent-hash-support-pipeline-improvement

* 0013-Use-rte_flow_create-to-do-GTPU-RSS

* 0014-Add-ice-iavf-to-list-of-drivers-need-SW-port-stats

* 0015-Protobuf-changes-for-Qos

* 0016-Newer-versions-require-go_package-stated-in-proto

* 0017-Make-table-sizes-configurable

* 0017-QoS-Measure

* 0018-Increase-max-tuple-num

* 0019-GUI-dot-module-name-quote

* Removed deprecated DPDK options/functions

* Remove unnecesary `endl`

* Fix a couple typos

* Remove unused variables

* No need to use `move`

* Improve code

* Fix Doxygen for AddMetadataAttr method

* Bring DPDK patch from UPF

* Move BESS-related files to BESS repo

* Bring BESS scripts from UPF repo

* Update links to reference ONF's BESS

* Remove unnecesary `endl` in loggings

* Fix stringstream

* Fix format in files

* Add override keyword and remove unused attribute

* Ubuntu Focal includes this package

* Update CXXFLAGS to work with g++ and clang

* Explicitily include server_builder.h

* Temporarily disabling some tests due to changes made in UPF.
Need to address the issues one by one

* Add missing header file <linux/ethtool.h>

* Use `bytes` for the scapy packets due to problems when using `str`

* Moving to python3 due to Python2 EOL
These changes are needed to be able to build and test bess with GitHub Actions

* Use ghcr.io/omec-project/upf-epc/bess_build for the BESS dependencies
This bess_build includes the changes needed to build DPDK 20.11

* Add GitHub Action that will trigger the Build and Test process
Additionally, remove Travis.yml file that is not needed anymore

* Create pull_request.yaml

* Update README.md

test the workflow

* Remove unnecessary file

* Update sugar.py

* Action for dependabot and check license/copyright (#14)

* Action for dependabot and check license/copyright

* Remove empty line

* Add empty line at end of file

* Add GitHub Action for checking code format (C/C++ and Protobuf) (#15)

* Add GitHub Action for checking code format (C/C++ and Protobuf)

* Update GitHub Action to only remove the OS from the matrix

* Address issues with format compliance for protobuf files

* Add missing file that was not formatted

* Update parameters for GitHub Action

* Add missing license/copyright header and add an exception

* Refactor define for the GTPu header (#16)

* Update GitHub Action to build docker image locally (#18)

- Update GitHub Actions to build docker image locally during pull request
- Use protobuf version 3.20 to fix errors in generated _pb2.py file

Signed-off-by: Manoj Gopalakrishnan <[email protected]>

* Add support for CNDP(Cloud Native Data Plane) port in BESS. (#2)

- CNDP BESS port to send/receive n/w packets using AF_XDP socket.
- Modify Bess core Makefile to build CNDP port driver.
- Dockerfile to build BESS with CNDP.
- Add "CndpPortArg" in port_msg.proto file to initialize Bess CNDP port.
- Use external BESS PacketPool (rte_mempool/rte_mbuf) with CNDP xskdev.
- Example scripts to test Bess CNDP port.
- ReadMe file to build docker image and run BESS CNDP example scripts.
- GitHub Action for running CNDP tests.

Signed-off-by: Manoj Gopalakrishnan <[email protected]>

* Build new image taking into account new dependencies (e.g., CNDP) (#22)

* Fix typo (#17)

* Enable GTPu path monitoring (#19)

* Enable GTPu path monitoring

* Update pktbatch.h (#24)

---------

Signed-off-by: Saikrishna Edupuganti <[email protected]>
Signed-off-by: Manoj Gopalakrishnan <[email protected]>
Co-authored-by: Saikrishna Edupuganti <[email protected]>
Co-authored-by: Ajay Lotan Thakur <[email protected]>
Co-authored-by: Ajay Lotan Thakur <[email protected]>
Co-authored-by: Amol Jaikar <[email protected]>
Co-authored-by: Badhrinath <[email protected]>
Co-authored-by: manojgop <[email protected]>
  • Loading branch information
7 people authored Jun 20, 2023
1 parent c05085f commit 0190223
Show file tree
Hide file tree
Showing 457 changed files with 9,658 additions and 1,850 deletions.
File renamed without changes.
15 changes: 15 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# SPDX-License-Identifier: Apache-2.0
# Copyright 2023 Intel Corporation

version: 2
updates:

- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"

- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "daily"
30 changes: 30 additions & 0 deletions .github/workflows/clang-format-check.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# SPDX-License-Identifier: Apache-2.0
# Copyright 2023 Intel Corporation

name: C++/C/Protobuf Format Check
on:
- pull_request
jobs:
format-check:
runs-on: '${{ matrix.os }}'
strategy:
matrix:
os:
- ubuntu-20.04
path:
- check: 'core'
exclude: '(kmod)' # Exclude "kmod" dir because of different format
- check: 'protobuf'
exclude: '' # Nothing to exclude
- check: 'sample_plugin/modules'
exclude: '' # Nothing to exclude
- check: 'sample_plugin/protobuf'
exclude: '' # Nothing to exclude
steps:
- uses: actions/checkout@v3
- name: Run clang-format style check for C/C++/Protobuf programs.
uses: jidicula/[email protected]
with:
clang-format-version: '12'
check-path: ${{ matrix.path['check'] }}
exclude-regex: ${{ matrix.path['exclude'] }}
45 changes: 45 additions & 0 deletions .github/workflows/pull_request.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# SPDX-License-Identifier: Apache-2.0
# Copyright 2022 Intel Corporation

name: Build and Test process
on:
- pull_request
jobs:
build:
runs-on: '${{ matrix.os }}'
strategy:
matrix:
os:
- ubuntu-20.04
env:
BESS_DPDK_BRANCH: "dpdk-2011-focal"
steps:
- uses: actions/checkout@v2
- run: sudo sysctl -w vm.nr_hugepages=512
- run: sudo apt-get update
- run: sudo apt-get install -y python3-pip python3-setuptools python3-coverage python3-pyelftools ccache
- run: sudo pip3 install -r requirements.txt
- run: '[[ ${COVERAGE:-0} == 0 ]] || sudo apt-get install -y gcc-7'
- run: '[[ ${SANITIZE:-0} == 0 ]] || sudo apt-get install -y llvm-3.9'
- name: Install CNDP packages
run: |
sudo apt-get update && sudo apt-get install -y \
build-essential libbsd-dev libelf-dev libbpf-dev libjson-c-dev \
libnl-3-dev libnl-cli-3-dev libnuma-dev libpcap-dev meson \
pkg-config libgflags2.2
- run: |
cd env
yes n | ./rebuild_images.py focal64
- run: sudo mkdir -p /mnt/huge
- run: sudo mount -t hugetlbfs nodev /mnt/huge
- run: export CXX="ccache $VER_CXX"
- run: ccache -s
- run: sudo ./container_build.py bess
- run: sudo ./container_build.py kmod_buildtest
- run: (cd core && ./all_test --gtest_shuffle)
- run: python3-coverage run -m unittest discover -v
- run: python3 bessctl/run_module_tests.py
- run: sudo python3 bessctl/run_module_tests.py --test_dir bessctl/module_tests/cndp
- run: ccache -s
- run: bessctl/bessctl daemon stop
- run: '[[ ${COVERAGE:-0} == 0 ]] || { sleep 3; codecov --gcov-exec gcov-7; }'
18 changes: 18 additions & 0 deletions .github/workflows/reuse.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# SPDX-License-Identifier: Apache-2.0
# Copyright 2023 Intel Corporation

name: REUSE Compliance Check

on: [push, pull_request]

jobs:
check:
runs-on: '${{ matrix.os }}'
strategy:
matrix:
os:
- ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: REUSE Compliance Check
uses: fsfe/reuse-action@v1
28 changes: 28 additions & 0 deletions .github/workflows/stale.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# SPDX-License-Identifier: Apache-2.0
# Copyright 2023 Intel Corporation

name: Close stale issues and PRs

on:
schedule:
- cron: '30 1 * * *'

jobs:
stale:
runs-on: '${{ matrix.os }}'
strategy:
matrix:
os:
- ubuntu-latest
steps:
- uses: actions/stale@v7
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: 'This issue has been stale for 30 days and will be closed in 5 days. Comment to keep it open.'
stale-pr-message: 'This pull request has been stale for 30 days and will be closed in 5 days. Comment to keep it open.'
stale-issue-label: 'Stale/issue'
stale-pr-label: 'Stale/pr'
exempt-issue-labels: 'awaiting-approval,work-in-progress'
exempt-pr-labels: 'awaiting-approval,work-in-progress'
days-before-stale: 30
days-before-close: 5
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,8 @@ compile_commands.json

# virtualenv
venv/

# Keep GitHub Actions, reuse, and clang-format file
!.github
!.reuse
!.clang-format
9 changes: 9 additions & 0 deletions .reuse/dep5
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: bess
Upstream-Contact: OMEC Developers <[email protected]>
Source: https://github.com/omec-project/bess

Files: .codecov.yml .gitattributes .gitignore CONTRIBUTING.md README.md requirements.txt .hooks/pre-commit bessctl/server.py bessctl/conf/port/vhost/README.md bessctl/conf/samples/mpls_test.bess bessctl/conf/samples/tc/wfs_double.bess bessctl/module_tests/*.pcap bessctl/static/*.* .clang-format core/.gitignore core/coverage core/*.suppress core/memory*.* core/packet_pool.* core/kmod/.clang-format core/kmod/.gitignore core/kmod/install core/pb/.gitignore core/resume_hooks/README.md core/testdata/test-pktcaptures/*.bytes core/testdata/test-pktcaptures/*.pcap deps/bpf_validate.patch deps/ethdev_include.patch doxygen/README.md doxygen/bess.dox env/*.yml env/Dockerfile env/README.md env/Vagrantfile pybess/**/__init__.py pybess/**/.gitignore sample_plugin/README.md
Copyright: 2016-2017, Nefeli Networks, Inc.
Copyright: 2017, The Regents of the University of California.
License: BSD-3-Clause
98 changes: 0 additions & 98 deletions .travis.yml

This file was deleted.

39 changes: 39 additions & 0 deletions CNDP_README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<!--
SPDX-License-Identifier: Apache-2.0
Copyright 2020 Intel Corporation
-->

# Cloud Native Data Plane (CNDP) BESS Port

Cloud Native Data Plane (CNDP) is a collection of user space libraries for accelerating packet processing for cloud applications. It aims to provide better performance than that of standard network socket interfaces by using an I/O layer primarily built on AF_XDP, an interface that delivers packets directly to user space, bypassing the kernel networking stack. For more details refer https://cndp.io/

CNDP BESS port enables sending/receiving packets to/from network interface using AF-XDP.

Following are the steps required to build BESS CNDP docker image:

### Step 1: Build the BESS CNDP docker image.

> Note: If you are behind a proxy make sure to export/setenv http_proxy and https_proxy
From the top level BESS directory call:

```
$ docker build -t besscndp --build-arg http_proxy=${http_proxy} --build-arg https_proxy=${http_proxy} -f env/Dockerfile-cndp .
```

### Step 2: Run the besscndp docker container

From the top level BESS directory call:

```
$ docker run --network=host -e http_proxy=${http_proxy} -e https_proxy=${http_proxy} --privileged --cap-add=ALL -v /dev/hugepages:/mnt/huge -v /sys/bus/pci/devices:/sys/bus/pci/devices -v /sys/devices/system/node:/sys/devices/system/node -v /lib/modules:/lib/modules -v /dev:/dev -v /usr/src:/usr/src -it besscndp bash
```

### Step 3: Run example CNDP BESS script

1. Modify the jsonc file in "/build/bess/bessctl/conf/cndp/fwd.jsonc" to use the network device in your system used to send and receive n/w packets.
2. Configure ethtool filter rules as required to send/recv packets via a specified queue id. Ensure that same netdev and queue id is configured in fwd.jsonc file.
3. Run bessctl controller from container shell: `./bessctl/bessctl`
4. From bessctl shell , run bess daemon: `daemon start -log_dir /build/bess/log`
5. Run sample BESS CNDP script: `run cndp/cndpfwd_coreid`. This will run cndpfwd BESS pipeline in a core id specified in "/build/bess/bessctl/conf/cndp/cndpfwd_coreid.bess" script. Before running the script, edit the script to update core in line `bess.add_worker(wid=0, core=28)` to a core id in CPU socket where the network device is attached to get better performance.
6. If everything works fine, then you should see BESS pipeline logs when you run: `monior pipeline`
8 changes: 4 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@
Thank you for your interest in BESS! We welcome new contributions.

## Contributor License Agreement
We ask that all contributors agree to a contributor license agreement (CLA); all new contributions should be under a BSD3 license (as the core of BESS is). We use CLAHub for signing CLAs; to get started, please visit [CLAHub for BESS here](https://www.clahub.com/agreements/NetSys/bess).
We ask that all contributors agree to a contributor license agreement (CLA) found [here](https://cla.opennetworking.org/).

## Sending Patches
You are welcome to [make a GitHub Pull Request](https://github.com/NetSys/bess/pulls) (PR) for new features and bug fixes. All PRs will be reviewed to maintain high code quality. Everyone is welcome to join the process of reviewing code. Please understand that we may ask for further changes to your PRs to address any errors, coding style issues, etc.
You are welcome to [make a GitHub Pull Request](https://github.com/omec-project/bess/pulls) (PR) for new features and bug fixes. All PRs will be reviewed to maintain high code quality. Everyone is welcome to join the process of reviewing code. Please understand that we may ask for further changes to your PRs to address any errors, coding style issues, etc.

### Coding Style
Please respect the following coding styles. Let's not be too dogmatic, though.

* C++: [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html)
* There is a [`.clang_format`](https://github.com/NetSys/bess/blob/master/core/.clang-format) file that you can utilize directly with [`clang-format`](https://clang.llvm.org/docs/ClangFormat.html) or integrate with your favorite editor ([Vim](https://github.com/rhysd/vim-clang-format), [Emacs](https://llvm.org/svn/llvm-project/cfe/trunk/tools/clang-format/clang-format.el), [Atom](https://atom.io/packages/clang-format), etc.)
* There is a [`.clang_format`](https://github.com/omec-project/bess/blob/master/.clang-format) file that you can utilize directly with [`clang-format`](https://clang.llvm.org/docs/ClangFormat.html) or integrate with your favorite editor ([Vim](https://github.com/rhysd/vim-clang-format), [Emacs](https://llvm.org/svn/llvm-project/cfe/trunk/tools/clang-format/clang-format.el), [Atom](https://atom.io/packages/clang-format), etc.)
* C: [Linux kernel coding style](https://github.com/torvalds/linux/blob/master/Documentation/process/coding-style.rst)
* Currently C is only used for the Linux kernel module.
* Python: [PEP 8 -- Style Guide for Python Code](https://www.python.org/dev/peps/pep-0008/)
Expand All @@ -24,7 +24,7 @@ For C++ and Python code updates, we recommend adding unit tests with [Google Tes
Great. You can use GitHub Issues for any questions, suggestions, or issues. Please do not email individuals.

## Contributions to the Wiki
[The GitHub Wiki](https://github.com/NetSys/bess/wiki) is open to everyone for edit. Feel free to add any changes, it can be a big help for others!
[The GitHub Wiki](https://github.com/omec-project/bess/wiki) is open to everyone for edit. Feel free to add any changes, it can be a big help for others!

# List of Contributors
Please add your name to the end of this file and include this file to the PR, unless you want to remain anonymous.
Expand Down
Loading

0 comments on commit 0190223

Please sign in to comment.