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

Adding support of P-UDN using VMs #159

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

capolrik
Copy link
Collaborator

@capolrik capolrik commented Dec 6, 2024

Based on #158

Needs to be run on OCP 4.18 and above.

@capolrik
Copy link
Collaborator Author

I was able to generate some results using the l2bridge binding method in OCP 4.18 but passt method is not stable for this version. I keep this PR as a draft until this feature becomes stable.

@capolrik capolrik marked this pull request as ready for review January 21, 2025 16:38
@capolrik capolrik changed the title [WIP] Adding support of UDN l2 primary using VMs Adding support of UDN l2 primary using VMs Jan 21, 2025
@capolrik
Copy link
Collaborator Author

I have added an option for switching from l2bridge and passt binding method. The l2bridge has still the best performance on 4.18.rc5 but passt performance and stability is improving.

@capolrik capolrik requested a review from jtaleric January 21, 2025 16:43
@capolrik capolrik force-pushed the cnv-udn branch 2 times, most recently from 19043f1 to 7b72ba8 Compare February 5, 2025 16:21
@capolrik capolrik changed the title Adding support of UDN l2 primary using VMs Adding support of P-UDN using VMs Feb 5, 2025
@capolrik
Copy link
Collaborator Author

@jtaleric is it ok to merge this one?

@smalleni
Copy link
Collaborator

@jtaleric is it ok to merge this one?

@capolrik hey, got a link to the results from running this?

@smalleni smalleni closed this Feb 19, 2025
@smalleni smalleni reopened this Feb 19, 2025
@jtaleric
Copy link
Member

@capolrik can you rebase? sorry!

Needed to be run on 4.18 and above, support l2bridge or passt binding method
@capolrik
Copy link
Collaborator Author

capolrik commented Mar 5, 2025

@jtaleric do you have the time for a little review?

@capolrik
Copy link
Collaborator Author

@jtaleric @smalleni @venkataanil, someone has few minutes to review this?

@josecastillolema
Copy link

josecastillolema commented Mar 18, 2025

Thanks for adding the documentation @capolrik

@capolrik
Copy link
Collaborator Author

here is an example of an output:

$ ./bin/amd64/k8s-netperf --udnl2 --vm --udnPluginBinding=l2bridge --vm-image=quay.io/openshift-cnv/qe-cnv-tests-fedora:36
INFO[2025-03-19 10:41:13] Starting k8s-netperf (cnv-udn@6a2fadde14a2cb64469c4eda590d873504ef8279)
INFO[2025-03-19 10:41:13] 📒 Reading netperf.yml file.
INFO[2025-03-19 10:41:13] 📒 Reading netperf.yml file - using ConfigV2 Method.
INFO[2025-03-19 10:41:13] Cleaning resources created by k8s-netperf
INFO[2025-03-19 10:41:13] ⏰ Waiting for netperf Namespace to be deleted...
INFO[2025-03-19 10:42:21] 🔬 prometheus discovered at openshift-monitoring
INFO[2025-03-19 10:42:21] 🔨 Creating namespace: netperf
INFO[2025-03-19 10:42:21] 🔨 Creating service account: netperf
INFO[2025-03-19 10:42:21] Deploying L2 Primary UDN in the NS : netperf
WARN[2025-03-19 10:42:21] ⚠️  No zone label
WARN[2025-03-19 10:42:21] ⚠️  Single node per zone and/or no zone labels
INFO[2025-03-19 10:42:21] 🚀 Creating service for iperf-service in namespace netperf
INFO[2025-03-19 10:42:21] 🚀 Creating service for uperf-service in namespace netperf
INFO[2025-03-19 10:42:22] 🚀 Creating service for netperf-service in namespace netperf
W0319 10:42:22.242683 1030729 warnings.go:70] metadata.finalizers: "foregroundDeleteVirtualMachine": prefer a domain-qualified finalizer name to avoid accidental conflicts with other finalizer writers
INFO[2025-03-19 10:42:22] 🚀 Creating service for client-across-svc in namespace netperf
INFO[2025-03-19 10:42:22] ⏰ Wating for VMI (client-across) to be in state running
INFO[2025-03-19 10:43:44] Looking for pods with label app=client-across
W0319 10:43:44.740242 1030729 warnings.go:70] metadata.finalizers: "foregroundDeleteVirtualMachine": prefer a domain-qualified finalizer name to avoid accidental conflicts with other finalizer writers
INFO[2025-03-19 10:43:44] ⏰ Wating for VMI (server) to be in state running
INFO[2025-03-19 10:44:09] Looking for pods with label app=server
INFO[2025-03-19 10:44:14] Connecting via ssh to the VMI
INFO[2025-03-19 10:44:14] 🗒️  Running netperf TCP_STREAM (service false) for 10s
INFO[2025-03-19 10:46:58] 🗒️  Running netperf TCP_STREAM (service false) for 10s
INFO[2025-03-19 10:47:11] 🗒️  Running netperf TCP_STREAM (service false) for 10s
INFO[2025-03-19 10:47:24] 🗒️  Running netperf TCP_STREAM (service false) for 10s
INFO[2025-03-19 10:47:37] 🗒️  Running netperf TCP_STREAM (service false) for 10s
INFO[2025-03-19 10:47:51] 🗒️  Running netperf TCP_STREAM (service false) for 10s
INFO[2025-03-19 10:48:04] 🗒️  Running netperf UDP_STREAM (service false) for 10s
INFO[2025-03-19 10:48:17] 🗒️  Running netperf UDP_STREAM (service false) for 10s
INFO[2025-03-19 10:48:31] 🗒️  Running netperf UDP_STREAM (service false) for 10s
INFO[2025-03-19 10:48:44] 🗒️  Running netperf TCP_CRR (service false) for 10s
INFO[2025-03-19 10:48:59] 🗒️  Running netperf TCP_CRR (service false) for 10s
INFO[2025-03-19 10:49:14] 🗒️  Running netperf TCP_CRR (service false) for 10s
INFO[2025-03-19 10:49:30] 🗒️  Running netperf TCP_RR (service false) for 10s
INFO[2025-03-19 10:49:43] 🗒️  Running netperf TCP_RR (service false) for 10s
INFO[2025-03-19 10:49:56] 🗒️  Running netperf TCP_RR (service false) for 10s
+-------------------+---------+------------+-------------+--------------+---------+-----------------+--------------+-------+-----------+----------+---------+--------------------+---------------------------------+
|    RESULT TYPE    | DRIVER  |  SCENARIO  | PARALLELISM | HOST NETWORK | SERVICE | EXTERNAL SERVER | MESSAGE SIZE | BURST | SAME NODE | DURATION | SAMPLES |     AVG VALUE      |     95% CONFIDENCE INTERVAL     |
+-------------------+---------+------------+-------------+--------------+---------+-----------------+--------------+-------+-----------+----------+---------+--------------------+---------------------------------+
| 📊 Stream Results | netperf | TCP_STREAM | 1           | false        | false   | false           | 1024         | 0     | false     | 10       | 3       | 4185.950000 (Mb/s) | 3678.497289-4693.402711 (Mb/s)  |
| 📊 Stream Results | netperf | TCP_STREAM | 1           | false        | false   | false           | 8192         | 0     | false     | 10       | 3       | 8717.226667 (Mb/s) | 6743.795535-10690.657799 (Mb/s) |
| 📊 Stream Results | netperf | UDP_STREAM | 1           | false        | false   | false           | 1024         | 0     | false     | 10       | 3       | 1662.896667 (Mb/s) | 1182.860093-2142.933241 (Mb/s)  |
+-------------------+---------+------------+-------------+--------------+---------+-----------------+--------------+-------+-----------+----------+---------+--------------------+---------------------------------+
+---------------+---------+----------+-------------+--------------+---------+-----------------+--------------+-------+-----------+----------+---------+---------------------+----------------------------------+
|  RESULT TYPE  | DRIVER  | SCENARIO | PARALLELISM | HOST NETWORK | SERVICE | EXTERNAL SERVER | MESSAGE SIZE | BURST | SAME NODE | DURATION | SAMPLES |      AVG VALUE      |     95% CONFIDENCE INTERVAL      |
+---------------+---------+----------+-------------+--------------+---------+-----------------+--------------+-------+-----------+----------+---------+---------------------+----------------------------------+
| 📊 Rr Results | netperf | TCP_CRR  | 1           | false        | false   | false           | 1024         | 0     | false     | 10       | 3       | 4066.773333 (OP/s)  | 3773.107469-4360.439198 (OP/s)   |
| 📊 Rr Results | netperf | TCP_RR   | 1           | false        | false   | false           | 1024         | 0     | false     | 10       | 3       | 10492.870000 (OP/s) | 10188.762502-10796.977498 (OP/s) |
+---------------+---------+----------+-------------+--------------+---------+-----------------+--------------+-------+-----------+----------+---------+---------------------+----------------------------------+
+--------------------+---------+----------+-------------+--------------+---------+-----------------+--------------+-------+-----------+----------+---------+-------------------+
|    RESULT TYPE     | DRIVER  | SCENARIO | PARALLELISM | HOST NETWORK | SERVICE | EXTERNAL SERVER | MESSAGE SIZE | BURST | SAME NODE | DURATION | SAMPLES | AVG 99%TILE VALUE |
+--------------------+---------+----------+-------------+--------------+---------+-----------------+--------------+-------+-----------+----------+---------+-------------------+
| RR Latency Results | netperf | TCP_CRR  | 1           | false        | false   | false           | 1024         | 0     | false     | 10       | 3       | 333.000000 (usec) |
| RR Latency Results | netperf | TCP_RR   | 1           | false        | false   | false           | 1024         | 0     | false     | 10       | 3       | 156.333333 (usec) |
+--------------------+---------+----------+-------------+--------------+---------+-----------------+--------------+-------+-----------+----------+---------+-------------------+
+---------------------+---------+------------+-------------+--------------+---------+-----------------+--------------+-------+-----------+----------+---------+-------------+
|        TYPE         | DRIVER  |  SCENARIO  | PARALLELISM | HOST NETWORK | SERVICE | EXTERNAL SERVER | MESSAGE SIZE | BURST | SAME NODE | DURATION | SAMPLES |  AVG VALUE  |
+---------------------+---------+------------+-------------+--------------+---------+-----------------+--------------+-------+-----------+----------+---------+-------------+
| TCP Retransmissions | netperf | TCP_STREAM | 1           | false        | false   | false           | 1024         | 0     | false     | 10       | 3       | 456.333333  |
| TCP Retransmissions | netperf | TCP_STREAM | 1           | false        | false   | false           | 8192         | 0     | false     | 10       | 3       | 2099.666667 |
| UDP Loss Percent    | netperf | UDP_STREAM | 1           | false        | false   | false           | 1024         | 0     | false     | 10       | 3       | 0.004336    |
+---------------------+---------+------------+-------------+--------------+---------+-----------------+--------------+-------+-----------+----------+---------+-------------+
INFO[2025-03-19 10:50:10] Cleaning resources created by k8s-netperf

@@ -275,6 +297,7 @@ ssh_deletekeys: false
password: fedora
chpasswd: { expire: False }
runcmd:
- export HOME=/home/fedora

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do you need this export?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added it when I was troubleshooting the cloudinit process but it should have been remove. Deleting it

Copy link
Member

@jtaleric jtaleric left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see is adding any metadata to let us know the binding in the results. Lets add that to the output of both the CSV and the JSON/ES document.

@capolrik
Copy link
Collaborator Author

@jtaleric I have added 'UDN info' which is the udn layer + Binding method as an output, it looks like this:

+---------------------+---------+------------+-------------+--------------+---------+-----------------+-------------------+--------------+-------+-----------+----------+---------+-------------+
|        TYPE         | DRIVER  |  SCENARIO  | PARALLELISM | HOST NETWORK | SERVICE | EXTERNAL SERVER |     UDN INFO      | MESSAGE SIZE | BURST | SAME NODE | DURATION | SAMPLES |  AVG VALUE  |
+---------------------+---------+------------+-------------+--------------+---------+-----------------+-------------------+--------------+-------+-----------+----------+---------+-------------+
| TCP Retransmissions | netperf | TCP_STREAM | 1           | false        | false   | false           | layer2 - l2bridge | 1024         | 0     | false     | 10       | 3       | 360.333333  |
| TCP Retransmissions | netperf | TCP_STREAM | 1           | false        | false   | false           | layer2 - l2bridge | 8192         | 0     | false     | 10       | 3       | 3313.000000 |
| UDP Loss Percent    | netperf | UDP_STREAM | 1           | false        | false   | false           | layer2 - l2bridge | 1024         | 0     | false     | 10       | 3       | 0.004719    |
+---------------------+---------+------------+-------------+--------------+---------+-----------------+-------------------+--------------+-------+-----------+----------+---------+-------------+

For pod UDN, it displays only the layer.

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

Successfully merging this pull request may close these issues.

4 participants