Hi everyone,
I am a beginner of VPP, and I'm trying to use VPP+FRR on KVM VMs as routers. I 
have installed VPP and FRR on Ubuntu 20.04.5 VMs, and made them running in a 
seperated network namespace. I use VPP Linux-cp plugin to synchronize the route 
from kernel stack to VPP. The VPP and FRR seems to work, but when I use iperf3 
to test the throughput, I find the performance of VPP is not good.

I created a very simple topology to test the throughput:
M1 ----- R1(with VPP) ----- M2
M1, M2 are also Ubuntu VMs(without VPP), in different subnets. I ran iperf3 
server on M1 and client on M2, but only got about 2.1Gbps throughput, which is 
significantly worse than using Linux kernel as a router(about 26.1Gbps).

I made another experiment on the topology:
M1 ------ R1(with VPP) ---- R2(with VPP) ------ M2
The iperf3 result is even worse (only 1.6Gbps).

I also noticed that many retransmissions happend during the iperf3 test. If I 
use Linux kernel as router rather than VPP, no retransmission will happen.
Part of iperf3 output:
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   166 MBytes  1.39 Gbits/sec   23    344 KBytes
[  5]   1.00-2.00   sec   179 MBytes  1.50 Gbits/sec   49    328 KBytes
[  5]   2.00-3.00   sec   203 MBytes  1.70 Gbits/sec   47    352 KBytes
[  5]   3.00-4.00   sec   203 MBytes  1.70 Gbits/sec   54    339 KBytes
[  5]   4.00-5.00   sec   211 MBytes  1.77 Gbits/sec   59    325 KBytes


Another phenomenon I found is that when I ran iperf3 directly on the R1 and R2, 
I got 0 throughput at all. The output of iperf3 is like this:
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   324 KBytes  2.65 Mbits/sec    4   8.74 KBytes
[  5]   1.00-2.00   sec  0.00 Bytes  0.00 bits/sec    1   8.74 KBytes
[  5]   2.00-3.00   sec  0.00 Bytes  0.00 bits/sec    0   8.74 KBytes
[  5]   3.00-4.00   sec  0.00 Bytes  0.00 bits/sec    1   8.74 KBytes
[  5]   4.00-5.00   sec  0.00 Bytes  0.00 bits/sec    0   8.74 KBytes
[  5]   5.00-6.00   sec  0.00 Bytes  0.00 bits/sec    0   8.74 KBytes
[  5]   6.00-7.00   sec  0.00 Bytes  0.00 bits/sec    1   8.74 KBytes
[  5]   7.00-8.00   sec  0.00 Bytes  0.00 bits/sec    0   8.74 KBytes
[  5]   8.00-9.00   sec  0.00 Bytes  0.00 bits/sec    0   8.74 KBytes
[  5]   9.00-10.00  sec  0.00 Bytes  0.00 bits/sec    0   8.74 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   324 KBytes   266 Kbits/sec    7             sender
[  5]   0.00-10.00  sec  0.00 Bytes  0.00 bits/sec                  receiver


All my VMs use 4vcpus and 8G RAM. The host machine has 16Cores(32 Threads) and 
32GB RAM.
The VMs are connected by libvirtd networks.
I installed the VPP +FRR following this tutorial: 
https://ipng.ch/s/articles/2021/12/23/vpp-playground.html
The VPP startup.conf is in the attachment.

I want to know why the VPP throughput is worse than Linux kernel, and what can 
I do to improve it (I hope it better than Linux kernel forwarding).  I have 
searched on google for the solution but got nothing helpful. It will be 
appreciated if anyone could give me a help. Please contact me if more 
information or logs are needed.


Sincerely,
Wentian Bu

Attachment: startup.conf
Description: startup.conf

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#21953): https://lists.fd.io/g/vpp-dev/message/21953
Mute This Topic: https://lists.fd.io/mt/94049228/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/leave/1480452/21656/631435203/xyzzy 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to