Skip to content
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

What are the performance limits of UPG-VPP? #299

Open
Rorsachach opened this issue Sep 15, 2022 · 1 comment
Open

What are the performance limits of UPG-VPP? #299

Rorsachach opened this issue Sep 15, 2022 · 1 comment

Comments

@Rorsachach
Copy link

Rorsachach commented Sep 15, 2022

We compiled UPG in the physical server and did not use Docker. In the process of trying to measure the speed, we used a simulator to simulate 10Gbps uplink traffic and sent it through a UE. What we see is that the final reception rate at the receiver is only 2Gbps. Through show run, we found that the vector was much larger than 100, and a large number of RX misses appeared. It is worth mentioning that using non-GTPU packaged UDP packets can easily run up to 10Gbps.

I would like some help with performance tuning. I also have a question about why some nodes choose to handle a single vector. Could these parts of the code be modified to make it more efficient? For example, the upf_input function and the upf_forward function.

@RoadRunnr
Copy link
Member

We compiled UPG in the physical server and did not use Docker. In the process of trying to measure the speed, we used a simulator to simulate 10Gbps uplink traffic and sent it through a UE. What we see is that the final reception rate at the receiver is only 2Gbps. Through show run, we found that the vector was much larger than 100, and a large number of RX misses appeared. It is worth mentioning that using only non-GTPU packaged UDP packets can easily run up to 10Gbps.

Performance heavily depend on the network drivers that you use. The af_packet and af_xdp drivers suck in terms of performance. DPDK drivers might need careful tuning with their queue settings.

Also, the layout of your PDR has a big impact on performance. PDRs and ACLs are both scanned linearly. There is no optimization on that.

Which ones did you use? What PDRs/ACLs did you use?

I would like some help with performance tuning. I also have a question about how some nodes choose to use a single vector. Could this part of the code be modified to make it more efficient? For example, the upf_input function and the upf_forward function.

Sure, patches (and sensible suggestions) are welcome.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants