-
Notifications
You must be signed in to change notification settings - Fork 3
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
Istio and Kuma are not being compared appropriately in the benchmark #2
Comments
A very quick test making them both do HTTP: Istio HTTP:
Kuma HTTP:
Istio TCP:
Kuma TCP:
Istio Ambient ztunnel only (TCP)
Istio ambient w/ waypoint (HTTP)
I didn't run for long enough/with enough samples for that to be reliable, just showing they are in basically identical to eachother when tested apples to apples. |
Hello @howardjohn , we glad that you're interested in the article results.
As I can see, meshes worked correctly through testing. Have you looked into the results? https://github.com/pragmagic/service-mesh-performance-testing/blob/main/scripts/re[…]proper/test-2023-11-14-T17-12-imp-q6000-c1-d60s-05-01-8080.json and Kuma https://github.com/pragmagic/service-mesh-performance-testing/blob/main/scripts/re[…]proper/test-2023-11-14-T18-10-kmz-q6000-c1-d60s-02-01-8080.json Note: Client and Requested Workload (NGINX Server) are located on the different clusters, and we wouldn't get these results with status code 200 if meshes did not work. We've used the default configuration for multi-cluster for Kuma and for Istio (look at the Istio section and Kuma section). If you know how to correct or improve our setup for Kuma and Istio for the multi-cluster setup, could you please help and share how we should change our configuration? We're really interested in having objective results.
Just curious, have you tested this with the single cluster or multi-cluster configuration? |
@denis-tingaikin here you set Istio to use http: service-mesh-performance-testing/istio/multiprimary/configs-k8s/nginx-service.yaml Lines 9 to 11 in f15f783
This could be fixed by adding
Yes, they both work, but are doing totally different things. Which is somewhat fine -- the article points out that NSM and Kuma/Istio are fundamentally different, so there is some caveat to the numbers. A similar caveat isn't mentioned for Kuma/Istio, nor does it make sense. There is no use case to run the same workload with TCP for Kuma but HTTP for Istio; both service meshes can operate in either mode, and a user would make that choice the same regardless of their mesh implementation.
Yes, I have, and they confirm my issue above. You can see kuma uses 55 sockets Line 260 in f15f783
This was just a simple single cluster one. It was not intended to be a robust set of numbers, just to show that "Istio is slower than Kuma" is inaccurate and rather the claim should be "HTTP processing is slower than TCP processing". |
@howardjohn Got it. It seems like you're correct, and patch #3 is merged. Our next step is to retest it. Now @VitalyGushin is going to test it internally, and we'll share the results as soon as we get them. Feel free to share any other thoughts related to testing or setup improvements; we will consider them. Thanks! |
Hi team, Any update on the results, and if you are able to update the original post? |
Hello, @craigbox ! We have testing results on Kind clusters: the difference between Istio and Kuma by all metrics is about 10-20 percent (no x-times now). We will run the tests on AWS and Equinix Metal, and after that will update the article.
|
@howardjohn The purpose of our research is to find out what is the best performance for the chosen service meshes, |
@VitalyGushin I think either are valid as long as they are clearly stated which is which, and comparing apples to apples (or clearly stating when not). Comparing NSM L3 to Istio/Kuma L4 is probably closer to apples-to-apples than L3 to L7, so for that purposes it may make sense. As a general service mesh comparison, the vast majority are running these products in L7 mode, so comparisons outside of that may be a bit confusing to audiences unless clearly stated in the post. FWIW, if you did want a more direct comparison with NSM, comparing Istio ambient mode (https://istio.io/latest/docs/ambient/getting-started/) would probably be more comparable; a user looking to adopt something like NSM would likely favor ambient vs Istio sidecars. Note this is still L3 wireguard vs L4 mTLS, though. |
The best performance is going to have the lowest feature set, which somewhat negates the purpose of running them. If your goal is "show the lowest cost method to get to encryption", that's one thing, but as John points out you need to reflect the other realities, including that you can't get to FIPS compliance with Wireguard. |
@howardjohn @craigbox
Taking into account the comments above, we decided to leave the L7 results for a while. |
@howardjohn Regarding testing the Istio's "ambient mode", it’s better to send a request by email [email protected] with more details |
I've been trying to email you there, and both info@ and nsm@ bounce. nsm@:
(This might be permissions not set to allow posts from the internet) info@:
|
@denis-tingaikin Please fix the @pragmagic.io email permissions |
I also tried to email @denis-tingaikin at his outlook.com address :) |
Hello,
Apologies. Some problems occurred on the server side.
I got confirmation that it’s working now.
If it will not work, feel free to contact [email protected] directly.
|
I was reading through https://dev.to/pragmagic/testing-service-mesh-performance-in-multi-cluster-scenario-istio-vs-kuma-vs-nsm-4agj and was surprised by the results.
Upon deeper inspection, I don't think the test is making an accurate comparison. While the article calls out the NSM and Istio/Kuma are fundamentally different, it is actually testing 3 fundamentally different things:
Per Kuma docs, you need to set
appProtocol: http
to enable HTTP. Istio allows selection by port name or appProtocol.Nginx is configured like so:
ports:
name: http
Which ultimately enables HTTP processing for Istio but not Kuma.
I sent an email to the email listed in the article as the point of contact but it bounced, so figured I would post here.
The text was updated successfully, but these errors were encountered: