Skip to content

Commit

Permalink
[Release] ONVM V20.10
Browse files Browse the repository at this point in the history
Release of ONVM V20.10
  • Loading branch information
dennisafa authored Oct 1, 2020
2 parents 27d9ed5 + 24dc3e7 commit 38c5915
Show file tree
Hide file tree
Showing 58 changed files with 1,609 additions and 459 deletions.
2 changes: 2 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
<!-- Hey, thanks for contributing to openNetVM! When submitting your Pull Request, please make sure you're submitting to the sdnfv:develop branch. Once we have a good set of merged PR's on develop, we'll merge everything to sdnfv:master for a release. -->

<<Replace this line with a short description of the changes>>

<!-- Add detailed description and provide running instructions -->
Expand Down
3 changes: 2 additions & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@
path = tools/Pktgen/pktgen-dpdk
url = http://dpdk.org/git/apps/pktgen-dpdk
branch = master
commit = 4199555481cd08fe08e32986c94e59836ca1cd4f
commit = 807b4d2cfcc8ded46ece85353cefe5d655674de3

9 changes: 6 additions & 3 deletions docs/Examples.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,12 @@ command line. The general structure for launching an NF from a config file is
Any args specified in `<DPDK args>` or `<ONVM ARGS>` will replace the
corresponding args in the config file. **An important note:** If no DPDK
or ONVM args are passed, **but** NF args are required, the `-- --` is
still required. For documentation on developing with config files, see
still required. Additionally, launching multiple network functions at once, including circular or linear chains, from a JSON config file is supported.
For documentation on developing with config files, see
[NF_Dev](NF_Dev.md)



NF Starting Scripts
--
The example NFs can be started using the `start_nf.sh` script. The script can run any example NF based on the first argument which is the NF name(this is based on the assumption that the name matches the NF folder and the build binary).
Expand Down Expand Up @@ -75,7 +78,7 @@ In this example, we will be setting up a chain of NFs. The length of the chain
The manager needs three cores, one for NIC RX, one for statistics, and one for NIC TX.
2. Run Manager:
- Run the manager in dynamic mode with the following command. We are using a corelist here to manually pin the manager to specific cores, a portmask to decide which NIC ports to use, and configuring it display manager statistics to stdout:
- `# onvm/go.sh 0,1,2 1 0x3F8 -s stdout`
- `# onvm/go.sh -k 1 -n 0xF8 -s stdout -m 0,1,2`
3. Start NFs:
- First, start at most `n-1` simple_forward NFs, where `n` corresponds to the total number of NFs that the system can handle. This is determined from the `scripts/coremask.py` helper script. We will only start two NFs for convenience.
- Simple forward's arguments are core to pin it to, service ID, and
Expand Down Expand Up @@ -128,7 +131,7 @@ In this example, we can set up a circular chain of NFs. Here, traffic does not
The manager needs three cores, one for NIC RX, one for statistics, and one for NIC TX.
2. Run Manager:
- Run the manager in dynamic mode with the following command. We are using a corelist here to manually pin the manager to specific cores, a portmask to decide which NIC ports to use, and configuring it display manager statistics to stdout:
- `# onvm/go.sh 0,1,2 1 0x3F8 -s stdout`
- `# onvm/go.sh -k 1 -n 0x3F8 -s stdout -m 0,1,2`
3. Start NFs:
- First, start up to n-1 simple_forward NFs. For simplicity, we'll start one simple_forward NF.
- The NF will have service ID of 2. It also forwards packets to the NF with service ID 1.
Expand Down
23 changes: 14 additions & 9 deletions docs/Install.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Check System

Install the Linux Kernel headers package for your kernel version.
```sh
sudo apt-get install build-essential linux-headers-$(uname -r) git
sudo apt-get install build-essential linux-headers-$(uname -r) git bc
```
If your distribution didn't come with Python or came with an earlier version, you will need to install Python 3 v3.4+.
Expand Down Expand Up @@ -116,7 +116,7 @@ Set up Environment

7. Disable ASLR since it makes sharing memory with NFs harder:
```sh
sudo sh -c "echo 0 > /proc/sys/kernel/randomize_va_space"
sudo sh -c "echo 0 > /proc/sys/kernel/randomize_va_space"
```

Configure and compile DPDK
Expand Down Expand Up @@ -163,6 +163,11 @@ Make and test openNetVM
make
cd ..
```
Note: You may see the errors below upon compilation. Please ignore.
```
cat: ../openNetVM/onvm/lib/ABI_VERSION: No such file or directory found
cat: ../openNetVM/onvm/onvm_nflib/ABI_VERSION: No such file or directory found
```

2. Compile example NFs

Expand All @@ -174,10 +179,10 @@ Make and test openNetVM

3. Run openNetVM manager

Run openNetVM manager to use 3 cores (1 for displaying statistics, 1 for handling TX queues, 1 for handling manager RX queues), to use 1 NIC port (hexadecimal portmask), 0xF8 for the NF coremask (cores 3, 4, 5, 6, 7), and to use stdout for the statistics console:
Run openNetVM manager to use 3 cores (1 for displaying statistics, 1 for handling TX queues, 1 for handling manager RX queues; set to cores 0, 1 and 2, respectively, by default), to use 1 NIC port (hexadecimal portmask), 0xF8 for the NF coremask (cores 3, 4, 5, 6, 7), and to use stdout for the statistics console:

```sh
./onvm/go.sh 0,1,2 1 0xF8 -s stdout
./onvm/go.sh -k 1 -n 0xF8 -s stdout
```

You should see information regarding the NIC port that openNetVM is using, and openNetVM manager statistics will be displayed.
Expand Down Expand Up @@ -211,15 +216,15 @@ Troubleshooting
Run `dpdk/usertools/dpdk-setup.sh` then:
- Press [15] to compile x86_64-native-linuxapp-gcc version
- Press [38] to compile x86_64-native-linuxapp-gcc version
- Press [18] to install igb_uio driver for Intel NICs
- Press [45] to install igb_uio driver for Intel NICs
- Press [22] to setup 1024 2MB hugepages
- Press [49] to setup 1024 2MB hugepages
- Press [24] to register the Ethernet ports
- Press [51] to register the Ethernet ports
- Press [35] to quit the tool
- Press [62] to quit the tool
After these steps, it should be possible to compile and run onvm.
Expand Down
Loading

0 comments on commit 38c5915

Please sign in to comment.