Skip to content
OnlyProjects
M.Tech / M.E. · Information TechnologyFor educational purposes only
Code included

Service Mesh Overhead on Kubernetes: A Measured Benchmark of Istio versus Linkerd against a Meshless Baseline

p50/p95/p99 latency, throughput and proxy resource cost measured with k6 under one declared protocol on a pinned k3s cluster

Mapped to your syllabusVTU M.Tech 2022 Scheme · 22SXX41 Project Work Phase-2 · Semester 4

Overview

1 min read

Service meshes promise mTLS, traffic management and observability for microservices — but every request then passes through extra proxy hops, and nobody's slide deck says what those hops cost in latency, throughput and CPU. This dissertation measures it. On a pinned three-node k3s cluster, the same microservice application — Google's Online Boutique demo, eleven services talking gRPC — is load-tested in three configurations: no mesh, Istio sidecar, and Linkerd, all with mTLS enabled on the meshed runs.

The load comes from k6 in open-model arrival-rate mode at three levels — 25%, 50% and 70% of the baseline's measured capacity — with a 30-minute steady state per run, a discarded warm-up, and five repetitions per configuration. Results are reported as p50/p95/p99 latency per route, throughput, error rate, and per-proxy CPU and memory collected from Prometheus, aggregated as mean ± 95% confidence intervals and compared pairwise with the Mann–Whitney U test, because latency distributions do not owe the t-test normality. Version pinning, node pinning, disabled autoscaling, identical resource requests and a cluster restart between configurations remove the confounders that make most mesh benchmarks anecdotal.

The deliverable is a declared, reproducible protocol plus the harness — manifests, k6 scripts, metric-collection scripts and an analysis notebook — so the next student can rerun the campaign on any cluster. Written for the VTU M.Tech 2022 Project Work Phase-2 (22SXX41), leaning on the Computer Networks & IoT Lab (22SCNL17) and Research Methodology & IPR (22RMI16), it produces a paper-style results section from your own runs.

Relevant for
Karnataka
Level
Advanced · 24 weeks · solo
Common at
Visvesvaraya Technological University, Anna University, JNTU Hyderabad
Updated
Nov 2026

Syllabus alignment

VTU · M.Tech 2022 Scheme

22SXX41 · Project Work Phase-2 · Semester 4 · 18 credits · CIE 100 + SEE 100 (viva)

Subjects this project applies
  • 22SCNL17 Computer Networks & IoT Lab
  • 22RMI16 Research Methodology & IPR
  • 22SXX34 Project Work Phase-1 (literature survey and problem formulation)
  • Python for benchmark-data analysis
How it is evaluated

50 : 25 : 25 (report : presentation : Q&A)

Also fits: Anna University M.E. Regulation 2021, JNTUH M.Tech R22.

What's in the box

11 parts · 5 free · 2 previewed · 4 unlock for ₹2,000

Problem & synopsis

6 min read

Problem statement

Platform teams choosing between Istio and Linkerd — or against a mesh entirely — must decide based on what the extra data-plane hop costs their workload. Vendor pages benchmark each product on its own terms, and community posts rarely pin versions, load profiles or pod resources, so their numbers cannot be compared or reproduced. Meanwhile the cost is real: two proxy processes per pod compete with the application for CPU and memory, and every hop adds queueing and TLS work that surfaces in p95 and p99 latencies — the percentiles users actually feel.

The engineering problem is: on one pinned cluster, one pinned application and one declared workload protocol, how much latency, throughput and resource overhead does the Istio sidecar data plane add relative to a meshless baseline, how much does Linkerd add, and are the observed differences statistically distinguishable rather than run-to-run noise? The answer must come from repeated runs with confidence intervals and non-parametric tests, and must be reproducible from the harness alone by any other student.

Synopsis

Abstract

Organisations adopt service meshes for zero-trust security, traffic control and uniform telemetry, while accepting an extra network hop per call. This dissertation quantifies that acceptance on a pinned three-node k3s cluster running the eleven-service Online Boutique application: no mesh versus Istio sidecar versus Linkerd, under identical declared workloads. Five 30-minute runs per configuration at three load levels yield latency percentiles, throughput, error rates and per-proxy resource costs, analysed with non-parametric statistics and reported with confidence intervals.

Introduction

A sidecar mesh intercepts every call between services: the proxy terminates and re-originates connections, applies mTLS, and exports metrics. The cost is architectural arithmetic — two extra loopback traversals and two proxy processes per pod — yet adoption decisions are routinely made from vendor blogs quoting different workloads, different hardware and no variance. An M.Tech-grade answer needs the opposite: one application, one protocol, many repetitions, honest intervals.

Existing System

  • Vendor benchmarks (Istio's published performance page among them) report each vendor's own workload on their own hardware — useful as reference points, not as decisions.
  • Blog-level comparisons cherry-pick load levels, run once, and rarely state pod resource settings, making results unreproducible.
  • Teams therefore adopt or reject meshes on faith, then discover p99 regressions in production.

Literature Gap

  • Independent studies exist but are scattered across mesh versions, ingress choices and load profiles; several predate current stable releases entirely.
  • Few report resource overhead of the data plane itself (per-proxy CPU/memory) alongside latency, and fewer still state a repetition-and-testing protocol that another student could rerun.
  • Gap: a fully declared benchmarking protocol — pinned versions, pinned nodes, open-model load at capacity-referenced levels, five repetitions, warm-up discard, 95% CIs and Mann–Whitney comparisons — for Istio-sidecar and Linkerd against a meshless baseline on the same pinned k3s cluster, with data-plane resource cost as a first-class result.

Proposed Work

  • A harness: version-pinned cluster provisioning, application manifests, mesh installation profiles, k6 workload scripts and a metric-collection pipeline into Prometheus.
  • A capacity probe to find the baseline's saturation point, fixing the 25/50/70% load levels before any comparison run.
  • The campaign: 3 configurations × 3 load levels × 5 runs × 30 minutes, with warm-ups discarded and environment conditions logged.
  • Analysis: percentile tables, CI plots, Mann–Whitney U pairwise tests with effect sizes, and a cost model translating measured proxy CPU into per-replica infra cost.
  • A robustness section: one perturbed variant (proxy CPU limit halved) to observe throttling behaviour.

Feasibility

Three lab machines or VMs, the free Online Boutique images and open-source meshes keep cost at zero beyond hardware already available. The campaign is scriptable overnight; the real investment is protocol discipline and honest statistics. The full harness ships with this bundle, so a single student can reproduce the campaign inside the 24-week Phase-2 slot with weeks to spare for writing.

Objectives

  1. 01Provision a pinned three-node k3s cluster and deploy the eleven-service Online Boutique application with identical resource requests, disabled autoscaling and node pinning across all configurations.
  2. 02Install Istio (sidecar mode, mTLS strict) and Linkerd (mTLS on) at pinned versions, and verify through packet-level or proxy-log evidence that the data plane is actually intercepting traffic.
  3. 03Design and implement an open-model k6 workload that walks the full purchase path of the application, with arrival-rate executors, declared think times and request assertions.
  4. 04Run a capacity probe on the meshless baseline and fix the comparison load levels at 25%, 50% and 70% of measured saturation before any meshed run.
  5. 05Execute the full campaign — three configurations, three load levels, five 30-minute repetitions each, warm-ups discarded — and collect per-route latency, throughput, error rate and per-pod/proxy CPU and memory into a frozen dataset.
  6. 06Analyse results as mean ± 95% confidence intervals with Mann–Whitney U pairwise tests and effect sizes, so every claimed difference is statistically defensible.
  7. 07Quantify data-plane resource cost per proxy and translate it into a per-replica infrastructure cost model at declared cloud prices.
  8. 08Package the harness, raw logs and analysis notebook so that another student can reproduce every table from the protocol without private knowledge.

Scope

In scope

  • One application (Online Boutique, eleven gRPC microservices) on one pinned k3s cluster of three nodes, in three configurations: no mesh, Istio sidecar, Linkerd.
  • One declared k6 open-model workload walking the purchase path, at three capacity-referenced load levels, five 30-minute repetitions per configuration, with per-proxy CPU/memory captured via Prometheus/cAdvisor.
  • Statistical analysis (CIs, Mann–Whitney U, effect sizes), a proxy-cost model, and one perturbed robustness variant (halved proxy CPU limit).

Out of scope

  • Istio ambient/waypoint mode and other meshes (Consul, Cilium, Kuma) — noted as extensions.
  • Control-plane CPU cost during configuration churn, multi-cluster meshes, and cross-zone topologies.
  • Application-level tuning of Online Boutique itself; comparison of ingress gateways; WebAssembly plugins.
  • Chaos, fault-injection and security-penetration testing; TLS handshake benchmarking in isolation.
  • Production-scale clusters: three nodes bound the absolute numbers, though the protocol transfers unchanged.

Methodology

The research design is a controlled repeated-measures benchmark experiment: the same application and workload are observed under three data-plane configurations, with configuration order and environment controlled and variability quantified rather than ignored. The protocol below is declared before the campaign, in the discipline of the Research Methodology & IPR course (22RMI16).

Declared protocol. (1) Environment: k3s at a pinned version on three pinned nodes (1 server, 2 agents), identical kernel and CPU-governor settings; the campaign runs overnight to limit background load. (2) Application: Online Boutique at a pinned tag, every deployment with identical resource requests/limits, HPA disabled, node-pinned, one ingress route; meshed configurations get sidecar injection namespace-wide with mTLS strict. (3) Workload: k6 open-model arrival-rate executor walking browse→add→checkout with declared request assertions; levels fixed at 25/50/70% of the baseline's capacity probe. (4) Repetitions: 5 runs × 30 minutes per configuration per level; 5-minute warm-up discarded; cluster rebooted between configurations; run order randomised. (5) Metrics: k6 emits per-route latency and error rate; Prometheus scrapes container CPU/memory (cAdvisor) for app pods and proxies; a collector script snapshots per-second series into the frozen dataset. (6) Statistics: mean ± 95% t-interval per metric; pairwise configuration comparisons by Mann–Whitney U with rank-biserial effect size; per-run, not per-request, as the unit of analysis. (7) Robustness: rerun the winning meshed configuration with proxy CPU limit halved and report throttling effects.

PhaseWeeksActivitiesDeliverable
Literature & protocol1–3Survey mesh benchmarks; write the declared protocolProtocol + review chapter
Testbed build4–6Provision k3s, deploy app, baseline smoke testsPinned testbed
Mesh bring-up7–9Install Istio and Linkerd; verify interception; fix versionsMeshed testbeds
Workload & capacity probe10–12k6 scripts, assertions, saturation probe, level fixingFrozen workload
Campaign13–173 configs × 3 levels × 5 runs, collection pipelineCampaign dataset
Analysis & robustness18–20Statistics, cost model, perturbed variantResults chapter
Write-up & viva21–24Dissertation, pre-submission seminar, viva preparationFinal submission

Threats to validity: background load on lab machines is logged and runs with anomalies are repeated; k6's own CPU budget is monitored to confirm the generator is not the bottleneck; all versions are pinned because mesh releases move fast enough to invalidate comparisons across months.

Architecture & tech stack

1 diagram · 8 technologies · 1 min read

  • Python
  • Kubernetes
  • k3s
  • Istio (industry-standard service mesh)
  • Linkerd
  • k6
  • Prometheus
  • Grafana

The testbed is a conventional three-tier benchmark architecture — generator, cluster under test, observability — with the mesh configurations differing only in what sits between the application pods.

flowchart TD
  K6["k6 load generator:<br/>open-model arrival-rate executor"] -->|"HTTP"| IN["Ingress"]
  IN --> FE["Frontend service"]
  FE --> C1["Cart service"]
  FE --> P1["Product catalog service"]
  C1 --> CUR["Currency service"]
  P1 --> CUR
  C1 --> CO["Checkout service"]
  CO --> SH["Shipping service"]
  subgraph MESH["Mesh data plane (configurations)"]
    SP["Istio sidecar proxy per pod"]
    LP["Linkerd proxy per pod"]
    NO["No proxy: baseline pods only"]
  end
  MESH -.->|"intercepts pod-to-pod calls"| C1
  MESH -.-> P1
  PROM["Prometheus + cAdvisor:<br/>per-pod and per-proxy CPU/mem"] --> RES[("Frozen campaign dataset")]
  K6 -->|"per-route latency, errors"| RES
  RES --> AN["Analysis notebook:<br/>CIs, Mann-Whitney U, cost model"]

Two structural decisions carry the study's fairness. First, only the data plane varies: application, resources, ingress and workload stay byte-identical across configurations, so observed differences are attributable to the mesh. Second, measurement is decoupled from the cluster under test: k6 runs from a separate machine and Prometheus scrapes out-of-band, so the observing stack cannot consume the resources being measured. The frozen dataset — one row per run per metric — is written once and never edited; the analysis notebook reads it and produces every table and figure, which is what makes the results auditable in the viva.

Modules

5 modules

  1. Module 01

    Cluster & Application Provisioning

    Scripts that provision the pinned three-node k3s cluster, deploy Online Boutique at a pinned tag with identical resource requests, disabled autoscaling and node pinning, and verify deployment health — so every configuration starts from a bit-identical application state and environment drift is eliminated.

  2. Module 02

    Mesh Installation & Verification

    Installs Istio (sidecar mode, mTLS strict) and Linkerd at pinned versions through declared profiles, injects proxies namespace-wide, and verifies actual interception via proxy logs and mTLS-traffic evidence, because a benchmark that does not prove the mesh is active measures nothing.

  3. Module 03

    Workload & Capacity Probe

    Implements the k6 open-model purchase-path scenario with arrival-rate executors, per-request checks and think times; runs the saturation probe on the baseline to find the throughput knee, and fixes the 25/50/70% load levels used by every later run so comparisons happen below saturation, not in collapse.

  4. Module 04

    Campaign Runner & Collector

    Orchestrates the full campaign — three configurations, three load levels, five 30-minute repetitions with randomised order, warm-up discard and cluster restarts between configurations — while the collector snapshots k6 summary metrics and per-second Prometheus series for application pods and proxies into the frozen dataset.

  5. Module 05

    Statistical Analysis & Cost Model

    The analysis notebook computes mean ± 95% confidence intervals per metric, runs Mann–Whitney U tests with rank-biserial effect sizes on per-run data, produces the percentile and resource figures, and converts measured per-proxy CPU into a per-replica monthly infrastructure cost at declared cloud prices.

Slides

12 slides · titles free · bullets, notes and the .pptx unlock

  1. Slide 1

    Service Mesh Overhead on Kubernetes: Istio vs Linkerd vs None

  2. Slide 2

    What a Service Mesh Actually Does

  3. Slide 3

    Problem Statement

  4. Slide 4

    Objectives

  5. Slide 5

    Testbed Architecture

  6. Slide 6

    The Declared Protocol

  7. Slide 7

    Measurement Framework

  8. Slide 8

    Verification: Is the Mesh Actually On?

  9. Slide 9

    Results: Latency

  10. Slide 10

    Results: Resource Cost

  11. Slide 11

    Threats to Validity

  12. Slide 12

    Conclusion and Future Scope

Bullets, speaker notes and the .pptx · ₹2,000

The titles above are the real outline. The rest is what you present from.

Unlock for ₹2,000

Viva questions & answers

3 of 16 answered free · 13 unlock

Read each answer, close it, and say it in your own words. Your viva will ask. Now you'll know.

  1. 01Concept

    What does a service mesh add over plain Kubernetes networking, and at what structural cost?

    A mesh adds uniform mTLS, retries and timeouts, traffic policy and telemetry without touching application code, by intercepting pod-to-pod calls in a data plane. The structural cost is two extra loopback traversals and two proxy processes per pod, which consume CPU and memory and add queueing to every hop. My dissertation measures exactly that cost side by side with the baseline that pays none of it.

  2. 02Concept

    Why do you report p95 and p99 rather than mean latency?

    Mean latency hides tail behaviour, and user experience degrades along the tail: the checkout that takes two seconds twice in ten requests is the complaint that reaches support. Sidecar queueing shows up disproportionately at the tail, so p95 and p99 are where mesh cost should appear. I still report p50 and the mean for completeness, but the decision-relevant columns are the high percentiles.

  3. 03Concept

    What is the difference between Istio's sidecar mode and ambient mode?

    In sidecar mode every pod carries its own proxy, paying per-pod CPU and memory. Ambient moves interception to node-level ztunnel and waypoint components, so pods hold no proxy at all and the mesh can be adopted per-namespace without restarting pods. My campaign benchmarks the mature sidecar mode and treats ambient as future scope, because comparing both at once would double the campaign within the same slot.

+13 more questions, with answers

Try the free ones out loud first. Your examiner will not accept “it's in the PPT”.

Source code & how to run

7 steps · complete source code · unlocks with the project

Unlocks with the project · ₹2,000

7 steps · source code zip

Prerequisites, install, seed data and tests, written for demo day. Plus the complete source.

Unlock for ₹2,000

READMEFIRST

277 words · unlocks with the project

What to change before it goes anywhere near a submission. Skipping it is how the demo fails live.

Unlocks with the project · ₹2,000

277 words · ~1 min read

The checklist of things to rename, re-seed and re-think so the project reads as yours.

Unlock for ₹2,000

Instructions

301 words · unlocks with the project

How to study it, adapt it and walk your examiner through it, step by step.

Unlocks with the project · ₹2,000

301 words · ~2 min read

Report structure, formatting rules and the submission checklist your department will grade.

Unlock for ₹2,000

References

8 sources

  1. Istio documentation — Performance and Scalability
  2. Istio documentation
  3. Linkerd documentation — Overview
  4. Kubernetes documentation
  5. Grafana k6 documentation
  6. K3s — Lightweight Kubernetes documentation
  7. GoogleCloudPlatform/microservices-demo — Online Boutique cloud-native microservices demo application (GitHub)
  8. Brendan Gregg, Systems Performance: Enterprise and the Cloud, 2nd ed., Addison-Wesley (benchmarking methodology)

Cite this bundle

OnlyProjects. (2026). Service Mesh Overhead on Kubernetes: A Measured Benchmark of Istio versus Linkerd against a Meshless Baseline: M.Tech / M.E. Information Technology project bundle [Educational resource]. https://onlyprojects.online/projects/mtech-it-service-mesh-overhead-istio-vs-linkerd-kubernetes

Future scope

1 min read

  • Ambient mode: extend the comparison to Istio ambient/waypoint mode, where the proxy leaves the pod, and measure whether node-level proxies change the latency and resource story.
  • Scale-out study: grow the cluster to six nodes and two load generators to test whether conclusions at three-node scale extrapolate, and where the generator stops being the bottleneck.
  • Control-plane cost: instrument mesh control planes during configuration churn — virtual-service rollouts, traffic shifts — to price the operational as well as the data-plane overhead.
  • Failure-mode behaviour: inject pod kills and network partitions under each configuration and measure how the mesh's retries and outliers policies alter user-visible latency and error recovery.
  • Protocol generalisation: refactor the harness into a reusable benchmarking toolkit for any Kubernetes workload, and publish the protocol so other colleges can contribute results to a shared, comparable dataset.

Keep browsing

Same degree, same syllabus slot, different idea. Pick the one your guide will actually approve.

M.Tech / M.E.

Aerospace / Aeronautical

NACA 0012 Airfoil CFD Validation Study Against XFOIL with Mesh Convergence

A mesh-converged OpenFOAM study of the NACA 0012 aerofoil validated against XFOIL and NASA's turbulence-modelling reference data

  • OpenFOAM v12 (finite-volume CFD, SA and k-ω SST models)
  • XFOIL 6.99 (panel method with integral boundary layer)
  • Gmsh and blockMesh for structured C-grid generation
  • +3

advanced24 wkSolo