Open
Conversation
Fixes crashes that would occur due to conflicting memory map regions with NF's/DPDK hugepages. We now use a high default virtual address parameter to avoid this. Commit log: * Added base virtual address * Fixed styling, updated with -z flag * Added comments * Updated documentation
Removes all of the CI files from the openNetVM public repo. They will be moved to a separate repo, in order to modularize functionality. Commit log: * Remove all CI files
When an NF exits, basic stats are printed out to a terminal and saved to a CSV file within the NF directory. * Add statistics call on shutdown, more descriptive stats printing, CSV file output, updating gitignore for CSV files, free allocated filename, replace strcat and strcpy with safer functions
UDP source port and dst port packet headers are converted from Big Endian to CPU order resulting in correct printing. Commit log: * Convert from big endian to CPU order
Updates the documentation for the web based output. * Commit log * Update nettool and nodejs installation, add npm install guide, update install and usage guide
This fixes the invalid port print error message that would occur when an NF attempted to use retrieve the mac address of a port that wasn't bound to DPDK. Developers can now retrieve a fake mac addr for testing purposes or a real mac address in case the request port is bound. Commit log: * Add check for invalid port * Update bound ports detection * Format code * Conform with bash linter * Add onvm_macaddr_get * Remove redundant warning * Update with call to onvm_macaddr_get * Update examples/load_balancer/load_balancer.c * Update onvm_macaddr_get macro to function * Update onvm_macaddr_get usage * Add onvm_get_fake_macaddr * Update onvm_get_macaddr usage * Seperate onvm_get_macaddr and onvm_get_fake_macaddr * Update examples/speed_tester/speed_tester.c * Update style * Try to get real MAC address before using a fake * Remove redundant else statement
This PR integrates Github actions into our main repo. Commit log: * Added Install Script and tested functionality w/o commits * Nit updates
This PR improves the style of our bash shell scripts through ShellCheck. Commit log: * Early termination, return issues * Revert CI changes, update ONVM script * Fix docker script
Previously the advanced rings NF's would enqueue packets onto its TX ring and let that thread decide what to do next with the packet. This pull request changes the logic to directly transmit packets. This fixes NF stats reporting in advanced rings mode. Commit log: * Small fix in load_balancer * Added the nf_setup call before run * Merging * Scaling example adv rings edit, documentation edits * Update docs * Formatting * Check if tx_batch_size < 32 before flushing * Fix typo * Style fixes Co-authored-by: dennisa <dennisa@node1.forprs.gwcloudlab-pg0.wisc.cloudlab.us> Co-authored-by: Dennis Afanasev <dennisafa@nimbnode42.nimbus.seas.gwu.edu> Co-authored-by: Dennis Afanasev <dennisafa@nimbnode17.nimbus.seas.gwu.edu> Co-authored-by: Dennis Afanasev <dennisafa@nimbnode33.nimbus.seas.gwu.edu> Co-authored-by: Dennis Afanasev <dennisafa@nimbnode29.nimbus.seas.gwu.edu>
This PR updates the Github actions CI to no longer check for indentation and naming convention. We also removed the comment bot. Commit log: * Updated verbosity level * Update verbosity * Update verbosity * Removed Comment action * Testing Comment Bot * Testing comment bot * Testing * Testing * Testing * Testing * Removed Comment bot
Updates Docker configuration to be compatible with Ubuntu version 18. Adds output notifying the user that NF's cannot detect a running manager if it is within a container. Commit log: * Remove merging issue and backtrace * Fixes for shellcheck * Add docker tag info for Ubuntu 14.04 * Testing Docker * If we're in docker, ignore check for running manager * Fixed to conform to shellcheck * Warn user about go script conditional
Updates Acorn from 5.7.3 to 5.7.4, used in the react web app. Commit log: * Bump acorn from 5.7.3 to 5.7.4 in /onvm_web/react-app
New Simple Forward Token Bucket Rate Limiter NF that simulates a queue with a token bucket and forwards packets to a specific destination. The NF forwards packets based on a user specified rate (-R) and depth (-D). Commit log: * Add skeleton for NF * Add main NF logic * Add simple_fwd_tb NF to list * Update copyrights * Add go.sh * Add README.md * Minor changes * Change file name * Update burst parameter in dequeue function * Update processing batch size * Fix style errors * Fix style errors * Fix style issues * Advanced rings fix * Change Mbps to MBps * Add warning and check for small values of tb_depth
Release notes for ONVM 20.05 Commit log: * Update Release notes for 20.05 * Update contributors list (#215) * Mention cloudlab and sort contributors
Release of ONVM 20.05
This PR updates our install guide to include Python, needed for many of our scripts. Commit log: * scripts/*.py files updated to use python3 * hashbang reflects use of python3 in .py files * Python dependency noted in Installation guide * Install script edits * syntax errors fixed * scripts/*.py files updated to use python3 * hashbang reflects use of python3 in .py files * Python dependency noted in Installation guide * Install script edits * syntax errors fixed * fixed syntax errors * spacing errors fixed * addressing pylint errors * switched exit(1) to sys.exit(1) given pylint suggestion * cleaned up print statements
Fixes an issue where port mask was being calculated incorrectly. Commit log: * Fixed bug in #228 * Changed dependency checking to be more OS-agnostic * Forcing workflow rerun * Forcing workflow rerun * Improved dependency check * Simplified port counting * Added comments for port conversions * Moved port check to prevent future merge conflict
This PR updates our install guide to include Python, needed for many of our scripts. Commit log: * scripts/*.py files updated to use python3 * hashbang reflects use of python3 in .py files * Python dependency noted in Installation guide * Install script edits * syntax errors fixed * scripts/*.py files updated to use python3 * hashbang reflects use of python3 in .py files * Python dependency noted in Installation guide * Install script edits * syntax errors fixed * fixed syntax errors * spacing errors fixed * addressing pylint errors * switched exit(1) to sys.exit(1) given pylint suggestion * cleaned up print statements * [Bug Fix[ Fix for Manager go.sh Incorrectly Comparing Ports Available Fixes an issue where port mask was being calculated incorrectly. Commit log: * Fixed bug in #228 * Changed dependency checking to be more OS-agnostic * Forcing workflow rerun * Forcing workflow rerun * Improved dependency check * Simplified port counting * Added comments for port conversions * Moved port check to prevent future merge conflict
Adds a note into our documentation reminding users to submit PR's to develop branch. Commit log: * Added reminder for users to submit PR's to develop instead of master * Punctuation
We now fake the mac address where real MAC addresses are not necessary. Commit log: * mac address fix * undoing load balancer change * adding print statement * spacing fix * print statement for speed tester
Updates the tx_burst function to properly account for out stats. Commit log: * Update stats for outgoing packets * Test if perf drop is gone
This PR improves command line argument functionality for our manager go script. Commit log: * Added improvements in #190 * User can now use 1-8 cores with input checking. Updated usage instructions. * Changed message for using default cores from WARNING to INFO * Updated documentation for new manager syntax * Updated dependency information in docs * Flag syntax implemented. Checks for dependency bc. Syntax checking * Updated documentation for new syntax * Ensures flags can be entered out of order in new syntax * Fixed bug in #228 * Changed dependency checking to be more OS-agnostic * Forcing workflow rerun * Forcing workflow rerun * Improved dependency check and stored regex match result in variables * Just learned Bash does not assume false if variable does not exist * Improved dependency check * Simplified port counting * Added comments for port conversions * Moved port check to prevent future merge conflict * Added usage on error and fixed merge conflicts * Added usage on error and fixed merge conflicts * Improved if statement logic, information printing * Fixed syntax checking expression to match switching positions * Fixed logic * Last documentation updates
This PR fixes and improves our Pktgen documentation. Commit log: * Pktgen install guide updated Guide now includes clear instructions on Lua installation and adds reference to the Wiki page for further guidance * clean up revised info, syntax, grammar, minor fixes * proofing checks * spelling/grammar checks * spelling
This PR enhances our platform by replacing libc functions with their equivalent DPDK functions. Commit log: * Removed memory leaks and updated with libc functions. * Conform to linter. * Testing if not using rte_memcpy will increase pkt speed. * Revert changes to main.c to check if for pkt rate loss. * Added dpdk calloc functions to mgr/main.c * Reverted to earlier solution with rte_calloc removed * Reverted to earlier solution with rte_calloc removed * Test whether other rte_calloc has same impact on performance * Revert changes to JSON.c * Test rte_calloc * Update to DPDK functions for onvm/nflib.c * Undo rte_calloc change * Undo last change * Use zmalloc to allocate heap memory * Use goto flag instead of repeatedly calling onvm_free * Edit err msg * Fixed pointer err * Move check to start of for loop
This PR adds a Python script capable of deploying a network function chain based on a JSON configuration. Commit log: * python cfg script working for one nf startup * adding processes for each nf * switching to threading * config.py working for 2 nf's in config * config script working for multiple params * clean up script * added documentation and example config file * switched to subprocesses for better async * working script and example json config * print statement fix * python cfg script working for one nf startup * adding processes for each nf * switching to threading * config.py working for 2 nf's in config * config script working for multiple params * clean up script * added documentation and example config file * switched to subprocesses for better async * working script and example json config * print statement fix * restoring old JSON config and fixing spacing * fixed styling errors * styling and error messages * fixes from PR review * Use 'nf->data' instead of global variables * Fix Mbps to MBps * Replace malloc by rte_malloc and remove unnecessary assignment * NFs output to log files * error statement fixes * try block for invalid JSON syntax * more print statements and extra dir function * user can now specify TTL and dir name in config file * formatting fix for documentation * flushing print statement * kill changes * fixed nf shutdown for timeout and failure * directory-prefix option * fixed formmating on config * formatting + documentation update * undo changes to tb * renaming and documentation
This PR modifies the token bucket NF to use the NF void * field to store data instead of global variables. Commit log: * Use 'nf->data' instead of global variables * Fix Mbps to MBps * Replace malloc by rte_malloc and remove unnecessary assignment
This PR updates DPDK and Pktgen to new versions. This update also ensures compatibility with Ubuntu 20.04. Commit log: * dpdk: Update ONVM to use DPDK v20.05 * onvm: Update onvm to use updated DPDK APIs * Update the onvm manager, nflib and examples to use the updated DPDK APIs. * Update install.sh to enable the igb_uio module build (CONFIG_RTE_EAL_IGB_UIO is disabled by default since v20.02) * switch strncpy to memcpy strncpy raises (precautionary) werrors during onvm compilation with ubuntu 20 compiler (gcc 9); gnu/gcc recommends use of memcpy to avoid warning * update pktgen-dpdk submodule to v20.03 * pktgen submodule updates * pktgen submodule to 807b4d * modify pktgen config args lua pktgen.set_mac() now takes three args: port, src|dst, mac addr * remove pktgen blacklist blacklists outdated as of pktgen v2.7.0 * c linter fixes * shell linter fixes
This PR adds a new network function, l2fwd. Commit log: * TODO: skip non initialized ports. * Ready for initial testing. * Updated port statistics. * Bug fix out stats output * Print mac address of updated packets. * Ready. TODO: Test with pktgen * Testing Done * Revert change to pkt stats * Create README.md Added readme. * Update README.md Update readme title. * Edit Makefile date * Conform to Linter * First PR review. * dpdk: Update ONVM to use DPDK v20.05 * onvm: Update onvm to use updated DPDK APIs * Update the onvm manager, nflib and examples to use the updated DPDK APIs. * Update install.sh to enable the igb_uio module build (CONFIG_RTE_EAL_IGB_UIO is disabled by default since v20.02) * switch strncpy to memcpy strncpy raises (precautionary) werrors during onvm compilation with ubuntu 20 compiler (gcc 9); gnu/gcc recommends use of memcpy to avoid warning * use setup and data * update pktgen-dpdk submodule to v20.03 * Removed colon after n * pktgen submodule updates * pktgen submodule to 807b4d * modify pktgen config args lua pktgen.set_mac() now takes three args: port, src|dst, mac addr * remove pktgen blacklist blacklists outdated as of pktgen v2.7.0 * Update dpdk functions * Rename files * Remove dpdk update files from pr
This PR updates our install guide to reflect changes to DPDK. Commit log: * update install guide to reflect dpdk 20.05 * content edits
Documentation update to resolve linter problem. Commit log: * Update readme.md
Release notes for V20.10 Commit log: * Update Releases.md
Release of ONVM V20.10
This PR introduces a new Makefile and updated documentation. Commit log: * Update readme versions and makefile * Fix issues * Remove make dpdk
Updates our Docker tag and pulls a new Ubuntu image Commit log: * Starting to get a docker container for onvm 20.10 * Finished compiling and updated markdown file
Fixes typos in onvm_pkt_helper.h Commit log: * Fix comment typo
Fixes to the install README Commit log: * Update installation README
Instead of using .. we use the $ONVM_HOME variable in the onvm go script to find the web directory. Commit log: * Fix relative path problem about web
Fixes bug where NF rings would not be cleared after deallocation, as well as an underflow bug in stats. Commit log: * Testing onvm config bug * Fixed instance id stats issue * Added strlenn to account for null terminator * Reverting some linting changes
Add support for ports to send and receive packets with length up to 9600 bytes. Use the -j option when running the manager to enable this support. Commit log: * Add support for jumbo frames
Fixes the NF_TAG of aesdecrypt in openNetVM/examples/aes_decrypt/aesdecrypt.c. Commit log: * Update aesdecrypt.c
Updates Moongen installation guide to work with new DPDK version. Commit log: * updates to moongen install guide * updates for documentation * update dpdk version * add missing dependencies
Fixes a version error in the Github actions pipeline. Commit log: * Updated cppcheck * Updated cppcheck install version * cppcheck updated * cppcheck install version updated * Revert "cppcheck updated" * Updated cppcheck install * Updated GitHub Action Style documentation
…essage Memory Leak (#296) This PR includes a new NF called Basic Message Test that tests the functionality of an NF sending messages to itself. This NF was created in response to Issue #293 where a memory leak was found. The memory leak occurred when a message was trying to be sent and the message queue had been filled; the message was never freed and put back into the shared memory pool. Three tests are ran: the first making sure that one message (with the correct data) can be sent to an NF, next it tests if 10 messages can be sent to an NF, and finally it tests to make sure that even if the ring buffer is overflowed that the appropriate messages are received by the NF. Moreover, there were changes made to onvm_sc_common.c in which if there was no packet sent to the function then we would return the first instance ID associated with the given service ID. Commit log: * [Update] Fixed Issue #293 * [Update] Deleted dead code * [Update] Abstracted SID so that it works with whatever SID given * [Update] Changed name * [Update] Changed dir name * [Update] Changed code in regards to PR #296 comments * [Update] Drop packets * [Update] Sends more than one msg * [Update] Working on making output cleaner as well as creating a struct to hold 'global data' * [Update] Added checking of memory * [Update] Added working struct. Working on cleaner output and automation of test * [Update] Added first Test * [Update] Working on Unit Tests * [Update] Verson 1 of Tests. Looking at messaging code now * [Update] Testing fixed. Changing Verbosity * Delete Makefile * Delete README.md * Delete go.sh * Delete test_messaging.c * [Update] Ready for Review. * debug files * [Update] Test Version 3.0 * restored old go.sh file * [Update] Version 3.1 of Tests. Added destroy funciton * [Update] Fixed destroy function. Added NF to examples/Makefile. Still working on hanging execution. * Hanging occurs when IID != SID * Update launch.json * - Added GDB configuration for VSCode. - Convert from service ID to instance ID when sending message in /examples/test_messaging - Add support to look up instance ID of a message by passing NULL for the packet * Added function comments * [Update] fixed file according to PR comments * Delete launch.json * Delete tasks.json * Delete gdb.sh * [Update] Deleted unnecessary files * Changed test making sure all messages have been dequeued * [Update] cleaned up the tests * [Update] Ran Linter and finalized tests * [Update] Print out socket ID information for manager and network functions * Revert "[Update] Print out socket ID information for manager and network functions" This reverts commit 8ac16b8. * [Update] Print out socket ID information for manager and network functions * [Updated] Fixed tests * [Update] added 4th test phase * Revert "[Update] Print out socket ID information for manager and network func…" * [Update] Changing Workflow * [Update] Fixed Workflow to be cleaner and more organized * Update onvm/onvm_nflib/onvm_nflib.c
Logs the physical socket ID whenever logical core ID is also printed out, and outputs socket ID to CSV in the NF directory. Commit log: * Print out physical socket ID
A l3 forwarding NF based on DPDK's example. There are two modes - longest prefix match table and hash table lookup. There are a few differences between this version and DPDK's. Use of openNetVM's flow API was broadly used. This allows data to be stored with each rule or flow when added to the table. This is in contrast to DPDK's version where it uses the key value to get an index. The index value is then used to perform a lookup in an array. Commit log: * dpdk: Update ONVM to use DPDK v20.05 * onvm: Update onvm to use updated DPDK APIs * Update the onvm manager, nflib and examples to use the updated DPDK APIs. * Update install.sh to enable the igb_uio module build (CONFIG_RTE_EAL_IGB_UIO is disabled by default since v20.02) * switch strncpy to memcpy strncpy raises (precautionary) werrors during onvm compilation with ubuntu 20 compiler (gcc 9); gnu/gcc recommends use of memcpy to avoid warning * Layer 3 switch * Layer 3 switch * Added Readme. * Edit makefile * Edit makefile * Add symbolic link * Free tables upon shutdown * Update free function * Edit readme. * rename handler * update pktgen-dpdk submodule to v20.03 * pktgen submodule updates * pktgen submodule to 807b4d * Table pointers to use global variable. * modify pktgen config args lua pktgen.set_mac() now takes three args: port, src|dst, mac addr * remove pktgen blacklist blacklists outdated as of pktgen v2.7.0 * UPdate dpdk functions to use latest. * Rename files * Remove global variables Co-authored-by: Vivek Jain <jain.vivek.anand@gmail.com> Co-authored-by: Sreya Nalla <sreyanalla@gwu.edu> Co-authored-by: Benjamin De Vierno <bdevierno97@gwu.edu> Co-authored-by: sreyan <sreyan@localhost> Co-authored-by: Dennis Afanasev <dennis.afa@gmail.com>
This PR adds a new example - Fair Queue with Round Robin Scheduler The NF uses the advanced rings mode, classifies IPv4 packets based on the header information, and simulates a round-robin dequeue. The CRC32 hash from the DPDK library has been used to classify the packets. The NF uses a custom implementation of the standard FIFO queuing system. An implementation using the rte_ring structure from the DPDK library failed to scale for large number of queues. Commit log: * Initial import * Update NF list * Update examples/fair_queue/fair_queue.c prevent failure in destructor Co-authored-by: Catherine Meadows <meadowsc@gwu.edu> * Update examples/fair_queue/README.md Co-authored-by: Tim Wood <timwood@gwu.edu> Co-authored-by: Catherine Meadows <meadowsc@gwu.edu> Co-authored-by: Dennis Afanasev <dennis.afa@gmail.com>
Release notes for ONVM 21.09. Commit log: * initial releases doc * Add descriptions Co-authored-by: Lauren Hahn <62489998+Lhahn01@users.noreply.github.com> * Update docs/Releases.md Co-authored-by: Noah Chinitz <62520433+NoahChinitzGWU@users.noreply.github.com> * Update docs/Releases.md Co-authored-by: Elie Henne <63778310+elliotthenne@users.noreply.github.com> * Update Releases.md Co-authored-by: Lauren Hahn <62489998+Lhahn01@users.noreply.github.com> Co-authored-by: Noah Chinitz <62520433+NoahChinitzGWU@users.noreply.github.com> Co-authored-by: Elie Henne <63778310+elliotthenne@users.noreply.github.com>
Changes the source IP address in ARP reply from CPU byte ordering to BE. Commit log: * ARP endianess fixed
Speed tester will no longer crash if you tell it to load a PCAP trace that contains jumbo frames without using the -j flag. Commit log: * [UPDATE] speed_tester jumbo frames crash fix * [UPDTE] speed_tester jumbo frame usability improvement Co-authored-by: aaron <aaron@localhost>
ONVM 21.10 Release
* [Bug Fix] ARP endianess fixed (#317) Changes the source IP address in ARP reply from CPU byte ordering to BE. Commit log: * ARP endianess fixed * change children service id to match parent * update README * update README & fix typo * update README Co-authored-by: Noah Chinitz <62520433+NoahChinitzGWU@users.noreply.github.com> Co-authored-by: CMeadows <CMeadows@localhost>
According to the manual of bc, ibase is used to set the base of input numbers.
* Load Balancer Adjustment * Comment Fix * Finished LB Adjustments * LB Command Line Formatting Adjustments * LB Command Line Formatting Adjustments * Max+1 -> Max * Added IP-Parsing Method, Changed App Args Co-authored-by: jett <jett@localhost>
* [Bug Fix] ARP endianess fixed (#317) Changes the source IP address in ARP reply from CPU byte ordering to BE. Commit log: * ARP endianess fixed * update clock for py 3.8 Co-authored-by: Noah Chinitz <62520433+NoahChinitzGWU@users.noreply.github.com> Co-authored-by: CMeadows <CMeadows@localhost>
Major update to documentation files so that they can work with the readthedocs.org system. This also adds a new tutorial on running a load balancer.
This PR adds 2 new policies to the load balancer: Random and Weighted Random. Co-authored-by: andreaseno <89749710+andreaseno@users.noreply.github.com> Co-authored-by: xwedea
Adds a "skeleton" network function to be used as a template for the creation of future NFs. Illustrates how to use the packet handler, setup, and user callback functions. Co-authored-by: jett <jett@localhost>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
<>
Summary:
Usage:
Merging notes:
TODO before merging :
Test Plan:
Review:
(optional) << @-mention people who should review these changes >>
(optional) Subscribers: << @-mention people who probably care about these changes >>