You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@
3
3
4
4
_Please let us know if you use OpenNetVM in your research by [emailing us](mailto:[email protected]) or completing this [short survey](https://goo.gl/forms/oxcnGO45Kxq1Zyyi2)._
5
5
6
-
_Want to get started quickly?_ Try using our NSF CloudLab profile: https://www.cloudlab.us/p/GWCloudLab/onvm-18.03
6
+
_Want to get started quickly?_ Try using our NSF CloudLab profile: https://www.cloudlab.us/p/GWCloudLab/onvm
Copy file name to clipboardExpand all lines: docs/Releases.md
+25-15Lines changed: 25 additions & 15 deletions
Original file line number
Diff line number
Diff line change
@@ -13,31 +13,32 @@ use a date based versioning system. Now, a release version can look
13
13
like `17.11` where the "major" number is the year and the "minor" number
14
14
is the month.
15
15
16
-
## DRAFT v18.11 (11/18): Config files, Multi threading, Better Statistics, and bug fixes
17
-
**This release is currently under testing in the `develop` branch.***These notes will continue to be updated until the final release is made later this month.*
This release adds several new features which cause breaking API changes to existing NFs. NFs must be updated to support the new API required for multithreading support. A CloudLab template is available with the latest release here: https://www.cloudlab.us/p/GWCloudLab/onvm
18
18
19
-
This release adds several new features and causes breaking API changes.
20
-
21
-
## Minor improvements
22
-
23
-
**Return packets in bulk**: Adds support for returning packets in bulk instead of one by one by using `onvm_nflib_return_pkt_bulk`. Useful for functions that buffer a group of packets befor returning them for processing or for NFs that create batches of packets in the fast path. *No breaking API changes.*
24
-
25
-
### Multi-Threading:
19
+
### Multithreading:
26
20
NFs can now run multiple threads, each with its own set of rings for receiving and transmitting packets. NFs can either start new threads themselves or the NF Manager can send a message to an NF to cause it to scale up.
27
21
28
22
**Usage:**
29
-
To make an NF start another thread, run the `onvm_nflib_scale(struct onvm_nf_scale_info *scale_info)` function with a struct holding all the information required to start the new NF thread. This can be used to replicate an NF's threads for scalability, or to support NFs that require several threads performing different types of processing (thus each thread has its own service ID). More info about the Multi-Threading can be found in `docs/NF_Dev.md`. Example use of Multithreading NF scaling can be seen in the `scaling_example` NF.
23
+
To make an NF start another thread, run the `onvm_nflib_scale(struct onvm_nf_scale_info *scale_info)` function with a struct holding all the information required to start the new NF thread. This can be used to replicate an NF's threads for scalability (all with same service ID), or to support NFs that require several threads performing different types of processing (thus each thread has its own service ID). More info about the multithreading can be found in `docs/NF_Dev.md`. Example use of multithreading NF scaling can be seen in the `scaling_example` NF.
30
24
31
25
**API Changes:**
32
-
The prior code relied on global data structures that do not work in a multi-threaded environment. As a result, many of the APIs have been refactored to take a`onvm_nf_info` structure, instead of assuming it is available as a global variable.
The prior code relied on global data structures that do not work in a multithreaded environment. As a result, many of the APIs have been refactored to take an`onvm_nf_info` structure, instead of assuming it is available as a global variable.
- Any existing NFs will need to be modified to support this updated API. Generally this just requires adding a reference to the `onvm_nf_info` struct in the API calls.
36
+
37
+
NFs also must adjust their Makefiles to include the following libraries:
-`int onvm_nflib_scale(struct onvm_nf_scale_info *scale_info)` launches another NF based on the provided config
@@ -46,7 +47,8 @@ The prior code relied on global data structures that do not work in a multi-thre
46
47
-`void onvm_nflib_set_setup_function(struct onvm_nf_info* info, setup_func setup)` sets the setup function to be automatically executed once before an NF enters the main packet loop
47
48
48
49
### Stats Display
49
-
The console stats display has been improved to aggregate stats when running multiple NFs with the same service_id and to add 2 additional modes, verbose for all stats in human readable format and raw stats dump for easy script parsing. Changed NF tx stat to also includes tonf traffic.
50
+
The console stats display has been improved to aggregate stats when running multiple NFs with the same service ID and to add two additional modes: verbose for all stats in human readable format and raw stats dump for easy script parsing. The NF TX stat has been updated to also include tonf traffic.
51
+
50
52
51
53
**Usage:**
52
54
- For normal mode no extra steps are required
@@ -63,9 +65,17 @@ ONVM now supports JSON config files, which can be loaded through the API provide
63
65
-`nflib.c` was not changed from an NF-developer standpoint, but it was modified to include a check for the `-F` flag, which indicates that a config file should be read to launch an NF.
64
66
65
67
**API Additions:**
66
-
-`cJSON* onvm_config_parse_file(const char* filename)` - Reads a JSON config and stores the contents in a cJSON struct. For further reference on cJSON, see its [documentation](https://github.com/DaveGamble/cJSON).
68
+
-`cJSON* onvm_config_parse_file(const char* filename)`: Reads a JSON config and stores the contents in a cJSON struct. For further reference on cJSON, see its [documentation](https://github.com/DaveGamble/cJSON).
67
69
-`int onvm_config_create_nf_arg_list(cJSON* config, int* argc, char** argv[])`: Given a cJSON struct and pointers to the original command line arguments, generate a new `argc` and `argv` using the config file values.
68
70
71
+
### Minor improvements
72
+
73
+
-**Return packets in bulk**: Adds support for returning packets in bulk instead of one by one by using `onvm_nflib_return_pkt_bulk`. Useful for functions that buffer a group of packets before returning them for processing or for NFs that create batches of packets in the fast path. *No breaking API changes.*
74
+
-**Updated `corehelper.py` script**: Fixed the `scripts/corehelper.py` file so that it correctly reports recommended core usage instructions. The script assumes a single CPU socket system and verifies that hyperthreading is disabled.
75
+
-**Adjusted default number of TX queues**: Previously, the ONVM manager always started `MAX_NFS` transmit queues on each NIC port. This is unnecessary and causes a problem with SR-IOV and NICs with limited queue support. Now the manager creates one queue per TX thread.
76
+
- Bug fixes were made to [prevent a crash](https://github.com/sdnfv/openNetVM/commit/087891d9fea3b3ab011254dd405ef9e708d2e43d) of `speed_tester` during allocation of packets when there are no free mbufs and to [fix an invalid path](https://github.com/sdnfv/openNetVM/commit/a7978304914670ae9dfd2e3571af21ec7ed29013) causing an error when attempting to use Pktgen with the `run-pktgen.sh` script. Additionally, a few [minor documentation edits](https://github.com/sdnfv/openNetVM/commit/6005be5724552cda3f84b84e39cdc7bee846194c) were made.
77
+
78
+
69
79
## v18.05 (5/31/18): Bug Fixes, Latency Measurements, and Docker Image
70
80
This release adds a feature to the Speed Tester example NF to support latency measurements by using the `-l` flag. Latency is calculated by writing a timestamp into the packet body and comparing this value when the packet is returned to the Speed Tester NF. A sample use case is to run 3 speed tester NFs configured to send in a chain, with the last NF sending back to the first. The first NF can use the `-l` flag to measure latency for this chain. Note that only one NF in a chain should be using the flag since otherwise timestamp information written to the packet will conflict.
0 commit comments