-
Notifications
You must be signed in to change notification settings - Fork 137
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fair Queue NF #254
Fair Queue NF #254
Conversation
CI MessageAborting, need an authorized user to run CI |
The code in the branch works fine as it is now as seen below But upon interchanging the thread functionalities (i.e., applying this patch, the code seems to break as seen below I was not able to figure out why this happens, and it would be great if I could get some help. |
Hi team, is there any update on this? |
Hi @rohit-mp sorry for the delayed response. The team is looking at it now. |
Hi @rohit-mp sorry for the delay and thanks so much for making this PR. When running the fair queue NF, I noticed two bugs:
|
@catherinemeadows - I think from our discussion earlier we decided that point 1 in your comment above is something we can easily fix ourselves and point 2 is expected behavior because this is based on the scaling API. Other than that, was this ready to go? |
prevent failure in destructor Co-authored-by: Catherine Meadows <meadowsc@gwu.edu>
Thanks for the reviews and the fixes! |
Thanks for the contribution @rohit-mp ! |
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:
Review:
(optional) << @-mention people who should review these changes >>
Subscribers: @mohittahiliani