Closed Shashwatha-Mitra closed 4 years ago
In response to PR creation
Aborting, need an authorized user to run CI
@onvm test
@onvm test
Your results will arrive shortly
The python lint is a result of the recent merge to develop that has yet been merged into this PR. @kevindweb I'll take a look again sometime soon at how we are using git diff.
Hey, @Shashwatha-Mitra, thanks for working on this! Looks like you found it, but we normally request our PR's onto develop before merging them to master in major releases. This looks pretty good, though! Thanks for contributing!
@Shashwatha-Mitra - I have added a checklist to the bottom of your PR message. Can you verify that you follow all of these and mark them off / fix them as needed?
Please correct me if I'm wrong, but I don't think advanced rings mode uses function_table
as mentioned here. Is it still possible to use function_table along with advanced rings mode?
@rohit-mp yes, I think you are correct (this is a general set of questions we will be using for all NFs, so they may not apply in some cases)
@Shashwatha-Mitra one more thing... it looks like you're seeing some errors with the Python linter. After investigating this, it seems that the errors that you're seeing are not present on either the master or develop branches. This leads me to believe you might have an old fork that doesn't have the most recent ONVM release. Please make sure you pull the master branch from the main repo onto your branch. Once you make a commit after that, you should be fine.
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.
Summary:
Usage:
Merging notes:
TODO before merging :
Test Plan:
An equal number of flows and queues are created to test the NF. The packets are generated by Pktgen and have same headers values except destination port with a 1000B packet size. An example:
A 1G NIC was used to send the packets to the NF. As can be seen from the image, each queue gets approximately 15MBps throughput which is 1/8th of the total link speed. A maximum of 35% hash collision probability is observed when the NF is tested with a large number of flows and queues (up to 1024).
NF Checklist:
nf->data
function_table->setup
function and frees dynamic memory before exitingReview:
(optional) << @-mention people who should review these changes >>
(optional) Subscribers: @rohit-mp, @NishanthSubramanian, @archit-p, @mohittahiliani