﻿<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[eBPFChirp]]></title><description><![CDATA[eBPFChirp delivers simple, practical insights into eBPF — from code deep-dives and real-world examples to the latest project updates. Perfect for developers who want to level up their eBPF skills without the noise.]]></description><link>https://ebpfchirp.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!ROHf!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81669290-70b8-41e7-931e-cd0d6999ccf6_639x639.png</url><title>eBPFChirp</title><link>https://ebpfchirp.substack.com</link></image><generator>Substack</generator><lastBuildDate>Mon, 08 Jun 2026 07:33:25 GMT</lastBuildDate><atom:link href="https://ebpfchirp.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Teodor J. Podobnik]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[cloudchirps@gmail.com]]></webMaster><itunes:owner><itunes:email><![CDATA[cloudchirps@gmail.com]]></itunes:email><itunes:name><![CDATA[Teodor J. Podobnik]]></itunes:name></itunes:owner><itunes:author><![CDATA[Teodor J. Podobnik]]></itunes:author><googleplay:owner><![CDATA[cloudchirps@gmail.com]]></googleplay:owner><googleplay:email><![CDATA[cloudchirps@gmail.com]]></googleplay:email><googleplay:author><![CDATA[Teodor J. Podobnik]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Building an eBPF/XDP NAT-Based (Weighted) Round Robin Load Balancer from Scratch]]></title><description><![CDATA[In the previous tutorial, we built a NAT-based eBPF/XDP load balancer using (weighted) least-connection backend selection.]]></description><link>https://ebpfchirp.substack.com/p/building-an-ebpfxdp-nat-based-weighted-ebb</link><guid isPermaLink="false">https://ebpfchirp.substack.com/p/building-an-ebpfxdp-nat-based-weighted-ebb</guid><dc:creator><![CDATA[Teodor J. Podobnik]]></dc:creator><pubDate>Tue, 21 Apr 2026 12:04:14 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Sd-G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87dde07c-32a2-49c1-8f94-7e2181f6dd98_1920x874.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the <a href="https://labs.iximiuz.com/tutorials/xdp-nat-least-connections-24036ecd">previous tutorial</a>, we built a NAT-based eBPF/XDP load balancer using (weighted) least-connection backend selection. </p><p>A key benefit of that setup was that client requests were distributed across backends based on their capacity, as well as the number of connections they were handling at that point in time.</p><p>However, least-connection selection is just one of many load-balancing strategies, and it&#8217;s natural to also demonstrate how to implement other algorithms, such as (weighted) round-robin.</p><p>While round-robin is conceptually straightforward&#8212;it simply cycles through available backends&#8212;it provides a solid foundation upon which more complex algorithms can be implemented with eBPF/XDP.</p><p>&#128279; Here&#8217;s the <a href="https://labs.iximiuz.com/tutorials/xdp-nat-round-robin-13b131ac">link to the coding lab</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Sd-G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87dde07c-32a2-49c1-8f94-7e2181f6dd98_1920x874.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Sd-G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87dde07c-32a2-49c1-8f94-7e2181f6dd98_1920x874.png 424w, https://substackcdn.com/image/fetch/$s_!Sd-G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87dde07c-32a2-49c1-8f94-7e2181f6dd98_1920x874.png 848w, https://substackcdn.com/image/fetch/$s_!Sd-G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87dde07c-32a2-49c1-8f94-7e2181f6dd98_1920x874.png 1272w, https://substackcdn.com/image/fetch/$s_!Sd-G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87dde07c-32a2-49c1-8f94-7e2181f6dd98_1920x874.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Sd-G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87dde07c-32a2-49c1-8f94-7e2181f6dd98_1920x874.png" width="1456" height="663" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/87dde07c-32a2-49c1-8f94-7e2181f6dd98_1920x874.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:663,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:151130,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/194684936?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87dde07c-32a2-49c1-8f94-7e2181f6dd98_1920x874.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Sd-G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87dde07c-32a2-49c1-8f94-7e2181f6dd98_1920x874.png 424w, https://substackcdn.com/image/fetch/$s_!Sd-G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87dde07c-32a2-49c1-8f94-7e2181f6dd98_1920x874.png 848w, https://substackcdn.com/image/fetch/$s_!Sd-G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87dde07c-32a2-49c1-8f94-7e2181f6dd98_1920x874.png 1272w, https://substackcdn.com/image/fetch/$s_!Sd-G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87dde07c-32a2-49c1-8f94-7e2181f6dd98_1920x874.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Hope you like it &#128029;</p>]]></content:encoded></item><item><title><![CDATA[11-Second Time to First Token on a Healthy vLLM Server]]></title><description><![CDATA[GPU Debugging using eBPF]]></description><link>https://ebpfchirp.substack.com/p/11-second-time-to-first-token-on</link><guid isPermaLink="false">https://ebpfchirp.substack.com/p/11-second-time-to-first-token-on</guid><dc:creator><![CDATA[Teodor J. Podobnik]]></dc:creator><pubDate>Thu, 16 Apr 2026 12:02:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ajjD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53d67eab-7944-4a05-a61b-f4be21905aa7_1054x416.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>vLLM&#8217;s continuous batching is one of the best things to happen to LLM serving. It lets the engine process multiple requests simultaneously, filling GPU capacity that would otherwise sit idle between sequential requests.</p><p>But continuous batching has a dark side: <strong>when requests compete for GPU resources inside the same batch, one expensive request can silently starve all others.</strong> </p><p>No error. No health check failure. No metric spike. </p><p>Just users waiting 10x-250x longer than expected for their first token.</p><p>We investigated a real vLLM issue reported in the last week (<a href="https://github.com/vllm-project/vllm/issues/37308">#37308</a>) to understand what happens at the kernel level during these silent latency spikes.</p><blockquote><p>&#128640; Special thanks to <a href="https://www.linkedin.com/in/davidmail/">David Mail</a>, Chief Technology Officer at eScribers, for putting together this deep and practical guest post!</p></blockquote><h3>Setup</h3><p>The investigation used the same server configuration:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;3594a8d7-3476-4b5f-b748-d8153489ae0e&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">python -m vllm.entrypoints.openai.api_server \
       --model Qwen/Qwen2.5-0.5B-Instruct \
       --port 8000 \
       --gpu-memory-utilization 0.95 \
       --max-model-len 32768 \
       --enable-prefix-caching</code></pre></div><blockquote><p><em>&#128736;&#65039; Hardware: RTX 4090 (24GB), 4 vCPUs, Ubuntu 22.04, vLLM 0.17.1.</em></p></blockquote><p>We ran <a href="https://ingero.io/">Ingero</a> alongside each test to trace CUDA Runtime/Driver API calls and host kernel events (scheduler context switches, memory allocations) simultaneously.</p><h3>Prefix Caching Head-of-Line Blocking</h3><h4>What happens</h4><p>6 concurrent requests arrive within 40ms:</p><ul><li><p>4 are heavy (2048-token prompts, 128-512 output tokens) and </p></li><li><p>2 are light (128-token prompts, 32-64 output tokens)</p></li></ul><p>All share a 32-token prefix so the prefix cache groups them together.</p><p><strong>The light requests should complete in under 100ms</strong>!</p><p>Instead what happened:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ir25!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9943aa85-ce57-41ac-b53b-0dfd4e421582_1002x232.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ir25!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9943aa85-ce57-41ac-b53b-0dfd4e421582_1002x232.png 424w, https://substackcdn.com/image/fetch/$s_!ir25!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9943aa85-ce57-41ac-b53b-0dfd4e421582_1002x232.png 848w, https://substackcdn.com/image/fetch/$s_!ir25!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9943aa85-ce57-41ac-b53b-0dfd4e421582_1002x232.png 1272w, https://substackcdn.com/image/fetch/$s_!ir25!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9943aa85-ce57-41ac-b53b-0dfd4e421582_1002x232.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ir25!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9943aa85-ce57-41ac-b53b-0dfd4e421582_1002x232.png" width="1002" height="232" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9943aa85-ce57-41ac-b53b-0dfd4e421582_1002x232.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:232,&quot;width&quot;:1002,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:41993,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/193983708?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9943aa85-ce57-41ac-b53b-0dfd4e421582_1002x232.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ir25!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9943aa85-ce57-41ac-b53b-0dfd4e421582_1002x232.png 424w, https://substackcdn.com/image/fetch/$s_!ir25!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9943aa85-ce57-41ac-b53b-0dfd4e421582_1002x232.png 848w, https://substackcdn.com/image/fetch/$s_!ir25!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9943aa85-ce57-41ac-b53b-0dfd4e421582_1002x232.png 1272w, https://substackcdn.com/image/fetch/$s_!ir25!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9943aa85-ce57-41ac-b53b-0dfd4e421582_1002x232.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Run 1 is just catastrophic &#8212; the light requests are 14x over threshold!</p><p>Subsequent runs settle to 2-4x because the prefix cache warms up. But that first cold-cache batch is brutal.</p><p>3 causal chains detected. The most revealing one:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;63f824aa-f752-4823-a55f-7b91f72b8ff6&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">[MEDIUM] cudaLaunchKernel p99=444us (6.4x p50) - 371 sched_switch events
  Timeline:
    [HOST ] 371 context switches (5.9s off-CPU)
    [CUDA ] p99=444us (6.4x p50=70us)</code></pre></div><p>The per-process breakdown tells the full story&#8230;</p><p>VLLM::EngineCore (the GPU scheduling loop):</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;41ea23d3-fcf6-40d1-9f19-65ad99c3fd12&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">24,347 context switches, max stall 2.5 seconds
40,632 cuLaunchKernel calls, avg 29us but max 34ms
34,087 cudaLaunchKernel calls, avg 96us but max 356ms</code></pre></div><p>The engine core process - the single-threaded loop that decides which requests get GPU time - was de-scheduled for 2.5 seconds in the worst case. </p><p>During that stall, the GPU kernel queue drained and the light requests had nothing submitted on their behalf.</p><p>The <strong>356ms cudaLaunchKernel spike (3,700x the average) is the smoking gun</strong>. </p><p>And that&#8217;s not the GPU being slow. That&#8217;s the CPU failing to submit work to the GPU because the scheduling loop was preempted.</p><h4>Why nvidia-smi misses this</h4><p><code>nvidia-smi</code> shows high utilization because the GPU is working - on the heavy requests&#8217; pre-fills. </p><p>The light requests are starving, but from the GPU&#8217;s perspective there&#8217;s always a kernel to run. </p><p>The starvation is in the CPU-side scheduling loop, not on the GPU.</p><h4>What Standard Tools Show vs What Kernel Tracing Shows</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ajjD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53d67eab-7944-4a05-a61b-f4be21905aa7_1054x416.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ajjD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53d67eab-7944-4a05-a61b-f4be21905aa7_1054x416.png 424w, https://substackcdn.com/image/fetch/$s_!ajjD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53d67eab-7944-4a05-a61b-f4be21905aa7_1054x416.png 848w, https://substackcdn.com/image/fetch/$s_!ajjD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53d67eab-7944-4a05-a61b-f4be21905aa7_1054x416.png 1272w, https://substackcdn.com/image/fetch/$s_!ajjD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53d67eab-7944-4a05-a61b-f4be21905aa7_1054x416.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ajjD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53d67eab-7944-4a05-a61b-f4be21905aa7_1054x416.png" width="1054" height="416" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/53d67eab-7944-4a05-a61b-f4be21905aa7_1054x416.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:416,&quot;width&quot;:1054,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:97081,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/193983708?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53d67eab-7944-4a05-a61b-f4be21905aa7_1054x416.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ajjD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53d67eab-7944-4a05-a61b-f4be21905aa7_1054x416.png 424w, https://substackcdn.com/image/fetch/$s_!ajjD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53d67eab-7944-4a05-a61b-f4be21905aa7_1054x416.png 848w, https://substackcdn.com/image/fetch/$s_!ajjD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53d67eab-7944-4a05-a61b-f4be21905aa7_1054x416.png 1272w, https://substackcdn.com/image/fetch/$s_!ajjD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53d67eab-7944-4a05-a61b-f4be21905aa7_1054x416.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The key insight: GPU utilization was high because the GPU was doing work. </p><p>It was just doing the wrong work - processing heavy pre-fills or computation while light requests starved. </p><p>No GPU-side metric can distinguish &#8220;GPU is busy computing my request&#8221; from &#8220;GPU is busy computing someone else&#8217;s request while mine waits.&#8221;</p><h4>Implications for Production vLLM</h4><p>If you&#8217;re running vLLM in production with mixed workloads (different prompt sizes, some requests with logprobs or n_completions), you&#8217;re likely experiencing these silent regressions:</p><ol><li><p>Monitor TTFT per-request, not just aggregate throughput. Aggregate metrics hide the tail - your p99 might be 100x worse than p50 during batch contention.</p></li><li><p>Be careful with n_completions + logprobs. A single request with n=8 and logprobs=20 can block your entire server for 11+ seconds on a cold cache. Consider routing these to dedicated instances.</p></li><li><p>First-request-after-idle is the worst case. This issue showed the most extreme regression on Run 1 (cold prefix cache). If your traffic is bursty, the first batch after a quiet period will hit hardest.</p></li><li><p>GPU utilization is not a proxy for request health. Your dashboards might show 95% utilization while individual users experience 256x TTFT regression.</p></li></ol><h3>Investigate It Yourself</h3><p>The trace database from this investigation is in the <a href="https://github.com/ingero-io/ingero">Ingero repository</a>:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;e2ef85cb-5449-4167-bfd9-5503e90c7fa4&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">git clone https://github.com/ingero-io/ingero.git
cd ingero &amp;&amp; make build

# View the causal chains
./bin/ingero explain --db investigations/vllm-37308-hol-blocking.db --since 5m

# Per-process breakdown
./bin/ingero explain --db investigations/vllm-37308-hol-blocking.db --per-process --since 5m

# Connect your AI assistant for interactive investigation
./bin/ingero mcp --db investigations/vllm-37308-hol-blocking.db</code></pre></div><p>Or even better - you can point any MCP-compatible AI client at the trace database and ask questions directly. No code required. First, create the MCP config file:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;f0da3cd4-d8bd-48e9-803d-02b8cdbc2fd9&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext"># /tmp/ingero-mcp-vllm.json
{
  "mcpServers": {
    "ingero": {
      "command": "./bin/ingero",
      "args": ["mcp", "--db", "investigations/vllm-37308-hol-blocking.db"]
    }
  }
}</code></pre></div><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;aa3d9835-72aa-4ea1-bf60-0f30c96ef9ae&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext"># With Ollama (local &amp; free: no data sent outside):
ollmcp -m qwen3.5:27b -j /tmp/ingero-mcp-vllm.json

# With Claude Code (data sent to Anthropic):
claude --mcp-config /tmp/ingero-mcp-vllm.json</code></pre></div><p>Then type <code>/investigate</code> and let the model explore. </p><p>Follow up with questions like:</p><ul><li><p> What was the root cause?</p></li><li><p>Which kernel calls had the highest latency spikes?</p></li></ul><p>The head-of-line blocking DB (9.6MB) is available as a release asset.</p><div><hr></div><p>I hope you find this resource helpful. Keep an eye out for more updates and developments in eBPF in next week&#8217;s newsletter.</p><p>Until then, keep &#128029;-ing!</p><p>Warm regards, Teodor</p>]]></content:encoded></item><item><title><![CDATA[Building an eBPF/XDP NAT-Based (Weighted) Least Connection Load Balancer from Scratch]]></title><description><![CDATA[It&#8217;s always a great feeling when the eBPF coding labs inspire people to take the code and adapt it for their own use cases.]]></description><link>https://ebpfchirp.substack.com/p/building-an-ebpfxdp-nat-based-weighted</link><guid isPermaLink="false">https://ebpfchirp.substack.com/p/building-an-ebpfxdp-nat-based-weighted</guid><dc:creator><![CDATA[Teodor J. Podobnik]]></dc:creator><pubDate>Tue, 14 Apr 2026 12:02:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!sE28!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab36b040-d55a-4a2d-b107-bc43901f6046_1935x864.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It&#8217;s always a great feeling when the eBPF coding labs inspire people to take the code and adapt it for their own use cases.</p><p>And that&#8217;s exactly what <strong><a href="https://www.linkedin.com/in/sambhavsingh040405/">Sambhav Singh</a></strong>, an Executive Member of ACM, did.</p><p>He came up with an idea to &#8220;<strong>upgrade&#8221;</strong> the eBPF/XDP NAT-based Load Balancer implementation by adding a new feature &#8212; load balancing based on the <strong>least number of active connections</strong> to the backends.</p><p>As is often the case, the theory is simple, but the real learning happens during implementation.</p><p>Together, we prepared this week&#8217;s lab &#8212; which, on top of the basic implementation, also guides you through building an <strong>eBPF/XDP NAT-based Weighted Least Connection Load Balancer</strong>.</p><p>&#128279; Here&#8217;s the <a href="https://labs.iximiuz.com/tutorials/xdp-nat-least-connections-24036ecd">link to the coding lab</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sE28!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab36b040-d55a-4a2d-b107-bc43901f6046_1935x864.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sE28!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab36b040-d55a-4a2d-b107-bc43901f6046_1935x864.png 424w, https://substackcdn.com/image/fetch/$s_!sE28!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab36b040-d55a-4a2d-b107-bc43901f6046_1935x864.png 848w, https://substackcdn.com/image/fetch/$s_!sE28!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab36b040-d55a-4a2d-b107-bc43901f6046_1935x864.png 1272w, https://substackcdn.com/image/fetch/$s_!sE28!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab36b040-d55a-4a2d-b107-bc43901f6046_1935x864.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sE28!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab36b040-d55a-4a2d-b107-bc43901f6046_1935x864.png" width="1456" height="650" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab36b040-d55a-4a2d-b107-bc43901f6046_1935x864.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:650,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:147166,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/194100726?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab36b040-d55a-4a2d-b107-bc43901f6046_1935x864.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sE28!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab36b040-d55a-4a2d-b107-bc43901f6046_1935x864.png 424w, https://substackcdn.com/image/fetch/$s_!sE28!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab36b040-d55a-4a2d-b107-bc43901f6046_1935x864.png 848w, https://substackcdn.com/image/fetch/$s_!sE28!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab36b040-d55a-4a2d-b107-bc43901f6046_1935x864.png 1272w, https://substackcdn.com/image/fetch/$s_!sE28!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab36b040-d55a-4a2d-b107-bc43901f6046_1935x864.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Hope you like it &#128029;</p>]]></content:encoded></item><item><title><![CDATA[Building a Minimal Service Mesh with eBPF and Envoy - Part 3 Now Available]]></title><description><![CDATA[It&#8217;s been almost a month since my last newsletter&#8212;but for good reason.]]></description><link>https://ebpfchirp.substack.com/p/building-a-minimal-service-mesh-with-7e5</link><guid isPermaLink="false">https://ebpfchirp.substack.com/p/building-a-minimal-service-mesh-with-7e5</guid><dc:creator><![CDATA[Teodor J. Podobnik]]></dc:creator><pubDate>Tue, 07 Apr 2026 12:02:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!oJqk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a7e13a4-c1ef-46af-81c1-cbe56ce39951_1725x1324.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It&#8217;s been almost a month since my last newsletter&#8212;but for good reason.</p><p>Just two weeks ago, my colleagues and I gave a talk at KubeCon&#8212;more specifically, we ran an eBPF workshop.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gvFC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24383bed-270f-4bab-88a3-09c8e5b5d0b8_2048x1536.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gvFC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24383bed-270f-4bab-88a3-09c8e5b5d0b8_2048x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gvFC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24383bed-270f-4bab-88a3-09c8e5b5d0b8_2048x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gvFC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24383bed-270f-4bab-88a3-09c8e5b5d0b8_2048x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gvFC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24383bed-270f-4bab-88a3-09c8e5b5d0b8_2048x1536.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gvFC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24383bed-270f-4bab-88a3-09c8e5b5d0b8_2048x1536.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/24383bed-270f-4bab-88a3-09c8e5b5d0b8_2048x1536.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:335029,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/193207795?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24383bed-270f-4bab-88a3-09c8e5b5d0b8_2048x1536.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gvFC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24383bed-270f-4bab-88a3-09c8e5b5d0b8_2048x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gvFC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24383bed-270f-4bab-88a3-09c8e5b5d0b8_2048x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gvFC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24383bed-270f-4bab-88a3-09c8e5b5d0b8_2048x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gvFC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24383bed-270f-4bab-88a3-09c8e5b5d0b8_2048x1536.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If I had to estimate, a little over 200 people joined. That definitely came with its challenges, but overall we were really happy with how it turned out.</p><p>Honestly, doing something like this for the first time at that scale taught me a lot&#8212;small things you only learn by actually getting up there and doing it.</p><p>Anyway, I&#8217;m back home with new challenges ahead and I&#8217;ve already put together a few interesting eBPF lab drafts for the coming weeks.</p><p>Here&#8217;s this week&#8217;s lab.</p><div><hr></div><p>A little over a month ago, I published two labs on building a minimal service mesh using eBPF:</p><ul><li><p><strong><a href="https://labs.iximiuz.com/tutorials/ebpf-envoy-egress-dc77ccd7">Transparent Egress Proxy with eBPF and Envoy</a></strong></p></li><li><p><strong><a href="https://labs.iximiuz.com/tutorials/ebpf-envoy-ingress-e1766f73">Transparent Ingress Proxy with eBPF and Envoy</a></strong></p></li></ul><p>Together, they give a solid overview of how a service mesh operates on both ends of a connection. But there&#8217;s always the question that keeps coming up&#8212;performance. Adding a middleman like Envoy into the network path inevitably introduces overhead.</p><p>So the real question is: how much of that performance cost can we actually eliminate?</p><p>In this lab, we focus on optimizing transparent redirection on the receiving side using eBPF socket acceleration.</p><p>&#128279; Here&#8217;s the <a href="https://labs.iximiuz.com/tutorials/ebpf-envoy-ingress-acceleration-ad8d4111">link to the coding lab</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oJqk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a7e13a4-c1ef-46af-81c1-cbe56ce39951_1725x1324.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oJqk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a7e13a4-c1ef-46af-81c1-cbe56ce39951_1725x1324.png 424w, https://substackcdn.com/image/fetch/$s_!oJqk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a7e13a4-c1ef-46af-81c1-cbe56ce39951_1725x1324.png 848w, https://substackcdn.com/image/fetch/$s_!oJqk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a7e13a4-c1ef-46af-81c1-cbe56ce39951_1725x1324.png 1272w, https://substackcdn.com/image/fetch/$s_!oJqk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a7e13a4-c1ef-46af-81c1-cbe56ce39951_1725x1324.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oJqk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a7e13a4-c1ef-46af-81c1-cbe56ce39951_1725x1324.png" width="1456" height="1118" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7a7e13a4-c1ef-46af-81c1-cbe56ce39951_1725x1324.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1118,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:97311,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/193207795?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a7e13a4-c1ef-46af-81c1-cbe56ce39951_1725x1324.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oJqk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a7e13a4-c1ef-46af-81c1-cbe56ce39951_1725x1324.png 424w, https://substackcdn.com/image/fetch/$s_!oJqk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a7e13a4-c1ef-46af-81c1-cbe56ce39951_1725x1324.png 848w, https://substackcdn.com/image/fetch/$s_!oJqk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a7e13a4-c1ef-46af-81c1-cbe56ce39951_1725x1324.png 1272w, https://substackcdn.com/image/fetch/$s_!oJqk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a7e13a4-c1ef-46af-81c1-cbe56ce39951_1725x1324.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Hope you like it &#128029;</p>]]></content:encoded></item><item><title><![CDATA[Building a Minimal Service Mesh with eBPF and Envoy - Part 2 Now Available]]></title><description><![CDATA[So far, we&#8217;ve seen how egress traffic can be transparently redirected through Envoy. But a minimal service mesh requires more: interception must also happen on the server side.]]></description><link>https://ebpfchirp.substack.com/p/building-a-minimal-service-mesh-with-48e</link><guid isPermaLink="false">https://ebpfchirp.substack.com/p/building-a-minimal-service-mesh-with-48e</guid><dc:creator><![CDATA[Teodor J. Podobnik]]></dc:creator><pubDate>Tue, 03 Mar 2026 13:02:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ke87!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e7959e1-7889-4570-b1fd-2d96e8fcace3_1694x990.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>So far, we&#8217;ve seen <a href="https://labs.iximiuz.com/tutorials/ebpf-envoy-egress-dc77ccd7">how egress traffic can be transparently redirected through Envoy</a>. But a minimal service mesh requires more: interception must also happen on the server side.</p><p>At first, intercepting traffic twice might seem unnecessary. In reality, it&#8217;s what enables consistent security, policy enforcement, and observability on both ends of the connection &#8212; without requiring changes to application code.</p><p>In this lab, we focus on transparent redirection on the receiving Pod. You&#8217;ll see how eBPF makes the server behave as if nothing sits in the network path, even though Envoy is handling the traffic.</p><p>&#128279; Here&#8217;s the <a href="https://labs.iximiuz.com/tutorials/ebpf-envoy-ingress-e1766f73">link to the coding lab</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1X6d!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeaeea0e-9721-476e-b9fc-3a761c91e281_1588x704.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1X6d!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeaeea0e-9721-476e-b9fc-3a761c91e281_1588x704.png 424w, https://substackcdn.com/image/fetch/$s_!1X6d!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeaeea0e-9721-476e-b9fc-3a761c91e281_1588x704.png 848w, https://substackcdn.com/image/fetch/$s_!1X6d!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeaeea0e-9721-476e-b9fc-3a761c91e281_1588x704.png 1272w, https://substackcdn.com/image/fetch/$s_!1X6d!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeaeea0e-9721-476e-b9fc-3a761c91e281_1588x704.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1X6d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeaeea0e-9721-476e-b9fc-3a761c91e281_1588x704.png" width="1456" height="645" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eeaeea0e-9721-476e-b9fc-3a761c91e281_1588x704.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:645,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:145326,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/189480463?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeaeea0e-9721-476e-b9fc-3a761c91e281_1588x704.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1X6d!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeaeea0e-9721-476e-b9fc-3a761c91e281_1588x704.png 424w, https://substackcdn.com/image/fetch/$s_!1X6d!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeaeea0e-9721-476e-b9fc-3a761c91e281_1588x704.png 848w, https://substackcdn.com/image/fetch/$s_!1X6d!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeaeea0e-9721-476e-b9fc-3a761c91e281_1588x704.png 1272w, https://substackcdn.com/image/fetch/$s_!1X6d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeaeea0e-9721-476e-b9fc-3a761c91e281_1588x704.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ke87!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e7959e1-7889-4570-b1fd-2d96e8fcace3_1694x990.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ke87!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e7959e1-7889-4570-b1fd-2d96e8fcace3_1694x990.png 424w, https://substackcdn.com/image/fetch/$s_!ke87!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e7959e1-7889-4570-b1fd-2d96e8fcace3_1694x990.png 848w, https://substackcdn.com/image/fetch/$s_!ke87!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e7959e1-7889-4570-b1fd-2d96e8fcace3_1694x990.png 1272w, https://substackcdn.com/image/fetch/$s_!ke87!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e7959e1-7889-4570-b1fd-2d96e8fcace3_1694x990.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ke87!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e7959e1-7889-4570-b1fd-2d96e8fcace3_1694x990.png" width="1456" height="851" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e7959e1-7889-4570-b1fd-2d96e8fcace3_1694x990.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:851,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:190138,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/189480463?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e7959e1-7889-4570-b1fd-2d96e8fcace3_1694x990.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ke87!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e7959e1-7889-4570-b1fd-2d96e8fcace3_1694x990.png 424w, https://substackcdn.com/image/fetch/$s_!ke87!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e7959e1-7889-4570-b1fd-2d96e8fcace3_1694x990.png 848w, https://substackcdn.com/image/fetch/$s_!ke87!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e7959e1-7889-4570-b1fd-2d96e8fcace3_1694x990.png 1272w, https://substackcdn.com/image/fetch/$s_!ke87!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e7959e1-7889-4570-b1fd-2d96e8fcace3_1694x990.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Hope you like it&#128029;</p>]]></content:encoded></item><item><title><![CDATA[Building a Minimal Service Mesh with eBPF and Envoy - Part 1 Now Available]]></title><description><![CDATA[If you&#8217;ve ever used Istio Service Mesh or Cilium Service Mesh, you&#8217;ve likely seen what feels like &#8220;magic&#8221;: you deploy an app, add an annotation, and suddenly traffic between services is encrypted, L7 observability appears, and fine-grained network policies can be enforced &#8212; all without changing a single line of application code.]]></description><link>https://ebpfchirp.substack.com/p/building-a-minimal-service-mesh-with</link><guid isPermaLink="false">https://ebpfchirp.substack.com/p/building-a-minimal-service-mesh-with</guid><dc:creator><![CDATA[Teodor J. Podobnik]]></dc:creator><pubDate>Tue, 24 Feb 2026 13:02:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!k2e6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F024f328d-9a55-413f-9283-c38b87f5fdb7_1588x704.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you&#8217;ve ever used <a href="https://istio.io/latest/about/service-mesh/">Istio Service Mesh</a> or <a href="https://cilium.io/use-cases/service-mesh/">Cilium Service Mesh</a>, you&#8217;ve likely seen what feels like &#8220;magic&#8221;: you deploy an app, add an annotation, and suddenly traffic between services is encrypted, L7 observability appears, and fine-grained network policies can be enforced &#8212; all without changing a single line of application code.</p><p><strong>But how is this possible?</strong></p><p>I wrestled with this question for a while, so I went down that rabbit hole and built a skill-path that breaks it down so you can understand it too.</p><p>This is the first part of the series &#8212; more are coming soon.</p><p>&#128279; Here&#8217;s the <a href="https://labs.iximiuz.com/skill-paths/ebpf-minimal-service-mesh-1a81fd6d#introduction">link to the coding lab</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!k2e6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F024f328d-9a55-413f-9283-c38b87f5fdb7_1588x704.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!k2e6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F024f328d-9a55-413f-9283-c38b87f5fdb7_1588x704.png 424w, https://substackcdn.com/image/fetch/$s_!k2e6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F024f328d-9a55-413f-9283-c38b87f5fdb7_1588x704.png 848w, https://substackcdn.com/image/fetch/$s_!k2e6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F024f328d-9a55-413f-9283-c38b87f5fdb7_1588x704.png 1272w, https://substackcdn.com/image/fetch/$s_!k2e6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F024f328d-9a55-413f-9283-c38b87f5fdb7_1588x704.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!k2e6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F024f328d-9a55-413f-9283-c38b87f5fdb7_1588x704.png" width="1456" height="645" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/024f328d-9a55-413f-9283-c38b87f5fdb7_1588x704.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:645,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:145326,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/188801200?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F024f328d-9a55-413f-9283-c38b87f5fdb7_1588x704.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!k2e6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F024f328d-9a55-413f-9283-c38b87f5fdb7_1588x704.png 424w, https://substackcdn.com/image/fetch/$s_!k2e6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F024f328d-9a55-413f-9283-c38b87f5fdb7_1588x704.png 848w, https://substackcdn.com/image/fetch/$s_!k2e6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F024f328d-9a55-413f-9283-c38b87f5fdb7_1588x704.png 1272w, https://substackcdn.com/image/fetch/$s_!k2e6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F024f328d-9a55-413f-9283-c38b87f5fdb7_1588x704.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2iu1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c6c0660-7b7a-4efd-ae64-42d10fbfd8e0_1542x882.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2iu1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c6c0660-7b7a-4efd-ae64-42d10fbfd8e0_1542x882.png 424w, https://substackcdn.com/image/fetch/$s_!2iu1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c6c0660-7b7a-4efd-ae64-42d10fbfd8e0_1542x882.png 848w, https://substackcdn.com/image/fetch/$s_!2iu1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c6c0660-7b7a-4efd-ae64-42d10fbfd8e0_1542x882.png 1272w, https://substackcdn.com/image/fetch/$s_!2iu1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c6c0660-7b7a-4efd-ae64-42d10fbfd8e0_1542x882.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2iu1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c6c0660-7b7a-4efd-ae64-42d10fbfd8e0_1542x882.png" width="1456" height="833" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9c6c0660-7b7a-4efd-ae64-42d10fbfd8e0_1542x882.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:833,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:150684,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/188801200?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c6c0660-7b7a-4efd-ae64-42d10fbfd8e0_1542x882.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2iu1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c6c0660-7b7a-4efd-ae64-42d10fbfd8e0_1542x882.png 424w, https://substackcdn.com/image/fetch/$s_!2iu1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c6c0660-7b7a-4efd-ae64-42d10fbfd8e0_1542x882.png 848w, https://substackcdn.com/image/fetch/$s_!2iu1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c6c0660-7b7a-4efd-ae64-42d10fbfd8e0_1542x882.png 1272w, https://substackcdn.com/image/fetch/$s_!2iu1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c6c0660-7b7a-4efd-ae64-42d10fbfd8e0_1542x882.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Hope you like it&#128029;</p>]]></content:encoded></item><item><title><![CDATA[All The Ways To Loop and Iterate in eBPF Coding Lab Now Available]]></title><description><![CDATA[From time to time, I feel like it&#8217;s worth taking a step back from advanced concepts and looking at some fundamentals that help you write better eBPF programs.]]></description><link>https://ebpfchirp.substack.com/p/all-the-ways-to-loop-and-iterate</link><guid isPermaLink="false">https://ebpfchirp.substack.com/p/all-the-ways-to-loop-and-iterate</guid><dc:creator><![CDATA[Teodor J. Podobnik]]></dc:creator><pubDate>Tue, 17 Feb 2026 13:02:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Wtju!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89443268-4f7d-406a-b437-79ae1485434d_1939x441.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>From time to time, I feel like it&#8217;s worth taking a step back from advanced concepts and looking at some fundamentals that help you write better eBPF programs.</p><p>One of the concepts that I feel is rarely talked about&#8212;but is super useful to know&#8212;is loops.</p><p>Yes, loops&#8212;like <code>for</code> and <code>while</code> in Python &#128517;</p><p>It might sound trivial, but there are actually 5+ ways to iterate and loop in eBPF, each with its own pros and cons.</p><p>In this week&#8217;s lab, you will learn all about them&#8212;and, most importantly, give them a try in code.</p><p>&#128279; Here&#8217;s the <a href="https://labs.iximiuz.com/tutorials/ebpf-loops-ab310d68">link to the coding lab</a>. </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Wtju!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89443268-4f7d-406a-b437-79ae1485434d_1939x441.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wtju!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89443268-4f7d-406a-b437-79ae1485434d_1939x441.png 424w, https://substackcdn.com/image/fetch/$s_!Wtju!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89443268-4f7d-406a-b437-79ae1485434d_1939x441.png 848w, https://substackcdn.com/image/fetch/$s_!Wtju!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89443268-4f7d-406a-b437-79ae1485434d_1939x441.png 1272w, https://substackcdn.com/image/fetch/$s_!Wtju!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89443268-4f7d-406a-b437-79ae1485434d_1939x441.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wtju!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89443268-4f7d-406a-b437-79ae1485434d_1939x441.png" width="1456" height="331" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/89443268-4f7d-406a-b437-79ae1485434d_1939x441.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:331,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:13507,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/187878539?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89443268-4f7d-406a-b437-79ae1485434d_1939x441.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Wtju!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89443268-4f7d-406a-b437-79ae1485434d_1939x441.png 424w, https://substackcdn.com/image/fetch/$s_!Wtju!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89443268-4f7d-406a-b437-79ae1485434d_1939x441.png 848w, https://substackcdn.com/image/fetch/$s_!Wtju!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89443268-4f7d-406a-b437-79ae1485434d_1939x441.png 1272w, https://substackcdn.com/image/fetch/$s_!Wtju!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89443268-4f7d-406a-b437-79ae1485434d_1939x441.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Hope you like it&#128029;</p>]]></content:encoded></item><item><title><![CDATA[Different Ways To Deliver Kernel Events from eBPF to User Space Coding Lab Now Available]]></title><description><![CDATA[I usually try to hit your inbox every Tuesday&#8212;and that&#8217;s still the plan going forward.]]></description><link>https://ebpfchirp.substack.com/p/different-ways-to-deliver-kernel</link><guid isPermaLink="false">https://ebpfchirp.substack.com/p/different-ways-to-deliver-kernel</guid><dc:creator><![CDATA[Teodor J. Podobnik]]></dc:creator><pubDate>Wed, 11 Feb 2026 13:01:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9aRE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F144aa696-abb6-41eb-a47f-b6a15b5ea933_1232x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I usually try to hit your inbox every Tuesday&#8212;and that&#8217;s still the plan going forward. This one slipped a bit &#129335;&#8205;&#9794;&#65039;</p><p>This week, we&#8217;re turning another page and zooming in on a feature that pretty much every production-grade eBPF application relies on.</p><p>Not the flashy hooks or clever programs&#8212;but the unglamorous, absolutely critical part: <strong>delivering kernel events into user space</strong>.</p><p>We&#8217;ll go beyond the basics and look at how real production systems actually do this, <em>why</em> they made those choices, and what breaks if you get it wrong.</p><p>And there&#8217;s a small cherry on top at the end&#8212;something I only learned about a year ago, but it completely changed how I think about designing eBPF application stacks at scale.</p><p>&#128279; Here&#8217;s the <a href="https://labs.iximiuz.com/tutorials/user-space-event-delivery-2197d020">link to the coding lab</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9aRE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F144aa696-abb6-41eb-a47f-b6a15b5ea933_1232x512.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9aRE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F144aa696-abb6-41eb-a47f-b6a15b5ea933_1232x512.png 424w, https://substackcdn.com/image/fetch/$s_!9aRE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F144aa696-abb6-41eb-a47f-b6a15b5ea933_1232x512.png 848w, https://substackcdn.com/image/fetch/$s_!9aRE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F144aa696-abb6-41eb-a47f-b6a15b5ea933_1232x512.png 1272w, https://substackcdn.com/image/fetch/$s_!9aRE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F144aa696-abb6-41eb-a47f-b6a15b5ea933_1232x512.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9aRE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F144aa696-abb6-41eb-a47f-b6a15b5ea933_1232x512.png" width="1232" height="512" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/144aa696-abb6-41eb-a47f-b6a15b5ea933_1232x512.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:1232,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:146049,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/183548558?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F144aa696-abb6-41eb-a47f-b6a15b5ea933_1232x512.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9aRE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F144aa696-abb6-41eb-a47f-b6a15b5ea933_1232x512.png 424w, https://substackcdn.com/image/fetch/$s_!9aRE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F144aa696-abb6-41eb-a47f-b6a15b5ea933_1232x512.png 848w, https://substackcdn.com/image/fetch/$s_!9aRE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F144aa696-abb6-41eb-a47f-b6a15b5ea933_1232x512.png 1272w, https://substackcdn.com/image/fetch/$s_!9aRE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F144aa696-abb6-41eb-a47f-b6a15b5ea933_1232x512.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Z5rB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd7d3fb3-143f-44a9-89f7-164d6cc1c40c_1298x1234.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z5rB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd7d3fb3-143f-44a9-89f7-164d6cc1c40c_1298x1234.png 424w, https://substackcdn.com/image/fetch/$s_!Z5rB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd7d3fb3-143f-44a9-89f7-164d6cc1c40c_1298x1234.png 848w, https://substackcdn.com/image/fetch/$s_!Z5rB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd7d3fb3-143f-44a9-89f7-164d6cc1c40c_1298x1234.png 1272w, https://substackcdn.com/image/fetch/$s_!Z5rB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd7d3fb3-143f-44a9-89f7-164d6cc1c40c_1298x1234.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z5rB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd7d3fb3-143f-44a9-89f7-164d6cc1c40c_1298x1234.png" width="1298" height="1234" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cd7d3fb3-143f-44a9-89f7-164d6cc1c40c_1298x1234.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1234,&quot;width&quot;:1298,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:283187,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/183548558?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd7d3fb3-143f-44a9-89f7-164d6cc1c40c_1298x1234.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Z5rB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd7d3fb3-143f-44a9-89f7-164d6cc1c40c_1298x1234.png 424w, https://substackcdn.com/image/fetch/$s_!Z5rB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd7d3fb3-143f-44a9-89f7-164d6cc1c40c_1298x1234.png 848w, https://substackcdn.com/image/fetch/$s_!Z5rB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd7d3fb3-143f-44a9-89f7-164d6cc1c40c_1298x1234.png 1272w, https://substackcdn.com/image/fetch/$s_!Z5rB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd7d3fb3-143f-44a9-89f7-164d6cc1c40c_1298x1234.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Hope you like it&#128029;</p><p></p>]]></content:encoded></item><item><title><![CDATA[Building an eBPF/XDP IP-in-IP Direct Server Return Load Balancer from Scratch Coding Lab Now Available]]></title><description><![CDATA[Last week, we&#8217;ve built an eBPF/XDP L2 Direct Server Return Load Balancer. It was a fun project on its own, improving on several concepts introduced in eBPF/XDP NAT-based Load Balancer.]]></description><link>https://ebpfchirp.substack.com/p/building-an-ebpfxdp-ip-in-ip-direct</link><guid isPermaLink="false">https://ebpfchirp.substack.com/p/building-an-ebpfxdp-ip-in-ip-direct</guid><dc:creator><![CDATA[Teodor J. Podobnik]]></dc:creator><pubDate>Tue, 27 Jan 2026 13:00:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!QOiq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed728338-fb31-4ec0-b400-4d65e8e2a46f_1558x946.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Last week, we&#8217;ve built an<strong> <a href="https://labs.iximiuz.com/tutorials/xdp-dsr-layer2-lb-92b02f3e">eBPF/XDP L2 Direct Server Return Load Balancer</a></strong>. It was a fun project on its own, improving on several concepts introduced in <a href="https://labs.iximiuz.com/tutorials/xdp-load-balancer-700a1d74">eBPF/XDP NAT-based Load Balancer</a>.</p><p>That was great&#8212;but I wanted to take it a step further.</p><p>In the L2 DSR load balancing approach, we were only rewriting MAC addresses, which limited the load balancer to operate within the same L2 network. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NCWQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F318d1def-172f-48fc-8864-81cdf572e60a_1510x738.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NCWQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F318d1def-172f-48fc-8864-81cdf572e60a_1510x738.png 424w, https://substackcdn.com/image/fetch/$s_!NCWQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F318d1def-172f-48fc-8864-81cdf572e60a_1510x738.png 848w, https://substackcdn.com/image/fetch/$s_!NCWQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F318d1def-172f-48fc-8864-81cdf572e60a_1510x738.png 1272w, https://substackcdn.com/image/fetch/$s_!NCWQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F318d1def-172f-48fc-8864-81cdf572e60a_1510x738.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NCWQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F318d1def-172f-48fc-8864-81cdf572e60a_1510x738.png" width="1456" height="712" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/318d1def-172f-48fc-8864-81cdf572e60a_1510x738.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:712,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:196220,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/185829406?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F318d1def-172f-48fc-8864-81cdf572e60a_1510x738.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NCWQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F318d1def-172f-48fc-8864-81cdf572e60a_1510x738.png 424w, https://substackcdn.com/image/fetch/$s_!NCWQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F318d1def-172f-48fc-8864-81cdf572e60a_1510x738.png 848w, https://substackcdn.com/image/fetch/$s_!NCWQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F318d1def-172f-48fc-8864-81cdf572e60a_1510x738.png 1272w, https://substackcdn.com/image/fetch/$s_!NCWQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F318d1def-172f-48fc-8864-81cdf572e60a_1510x738.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Now, we want to make these packets routable across different networks (load balancer &#8594; network-hops &#8594; backend).</p><p>With IPIP DSR Load Balancer, we solve this problem by wrapping the original IP packet inside another IP header where the outer IP header contains routable destination IPs, allowing the packet to traverse different networks.</p><p>&#128279; Here&#8217;s the <a href="https://labs.iximiuz.com/tutorials/xdp-dsr-load-balancer-b701a95a">link to the coding lab</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QOiq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed728338-fb31-4ec0-b400-4d65e8e2a46f_1558x946.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QOiq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed728338-fb31-4ec0-b400-4d65e8e2a46f_1558x946.png 424w, https://substackcdn.com/image/fetch/$s_!QOiq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed728338-fb31-4ec0-b400-4d65e8e2a46f_1558x946.png 848w, https://substackcdn.com/image/fetch/$s_!QOiq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed728338-fb31-4ec0-b400-4d65e8e2a46f_1558x946.png 1272w, https://substackcdn.com/image/fetch/$s_!QOiq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed728338-fb31-4ec0-b400-4d65e8e2a46f_1558x946.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QOiq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed728338-fb31-4ec0-b400-4d65e8e2a46f_1558x946.png" width="1456" height="884" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed728338-fb31-4ec0-b400-4d65e8e2a46f_1558x946.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:884,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:164172,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/185829406?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed728338-fb31-4ec0-b400-4d65e8e2a46f_1558x946.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QOiq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed728338-fb31-4ec0-b400-4d65e8e2a46f_1558x946.png 424w, https://substackcdn.com/image/fetch/$s_!QOiq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed728338-fb31-4ec0-b400-4d65e8e2a46f_1558x946.png 848w, https://substackcdn.com/image/fetch/$s_!QOiq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed728338-fb31-4ec0-b400-4d65e8e2a46f_1558x946.png 1272w, https://substackcdn.com/image/fetch/$s_!QOiq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed728338-fb31-4ec0-b400-4d65e8e2a46f_1558x946.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Hope you like it&#128029;</p>]]></content:encoded></item><item><title><![CDATA[Building an eBPF/XDP L2 Direct Server Return Load Balancer from Scratch Coding Lab Now Available]]></title><description><![CDATA[Last week, we&#8217;ve built an eBPF/XDP NAT-based Layer 4 load balancer. It was a fun project on its own, and it touched several core eBPF concepts: using maps for connection tracking, the bpf_fib_lookup helper, and hashing to select backend servers.]]></description><link>https://ebpfchirp.substack.com/p/building-an-ebpfxdp-l2-direct-server</link><guid isPermaLink="false">https://ebpfchirp.substack.com/p/building-an-ebpfxdp-l2-direct-server</guid><dc:creator><![CDATA[Teodor J. Podobnik]]></dc:creator><pubDate>Tue, 20 Jan 2026 13:02:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Xfhv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63089e95-fc61-4235-b624-a4728281fa6a_1514x1008.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Last week, we&#8217;ve <a href="https://labs.iximiuz.com/tutorials/xdp-load-balancer-700a1d74">built an eBPF/XDP NAT-based Layer 4 load balancer</a>. It was a fun project on its own, and it touched several core eBPF concepts: using maps for connection tracking, the <a href="https://docs.ebpf.io/linux/helper-function/bpf_fib_lookup/">bpf_fib_lookup</a> helper, and hashing to select backend servers.</p><p>That was great&#8212;but I wanted to take it a step further.</p><p>One downside of NAT-based load balancing is that the load balancer sits on the traffic path in both directions. This increases resource usage and can easily turn the load balancer into a bottleneck.</p><p>Think about it: the backend could just reply directly to the client, without sending the response back through the load balancer.</p><p>Another drawback is loss of client visibility. From the backend&#8217;s perspective, every request looks like it came from the load balancer itself.</p><p>To address these issues, I built a second implementation using <strong>Direct Server Return (DSR)</strong>. </p><p>With DSR, backend nodes completely bypass the load balancer on the response path and send replies directly to clients&#8212;reducing load on the balancer and preserving the original client IP.</p><p>&#128279; Here&#8217;s the <a href="https://labs.iximiuz.com/tutorials/xdp-dsr-layer2-lb-92b02f3e">link to the coding lab</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Xfhv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63089e95-fc61-4235-b624-a4728281fa6a_1514x1008.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Xfhv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63089e95-fc61-4235-b624-a4728281fa6a_1514x1008.png 424w, https://substackcdn.com/image/fetch/$s_!Xfhv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63089e95-fc61-4235-b624-a4728281fa6a_1514x1008.png 848w, https://substackcdn.com/image/fetch/$s_!Xfhv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63089e95-fc61-4235-b624-a4728281fa6a_1514x1008.png 1272w, https://substackcdn.com/image/fetch/$s_!Xfhv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63089e95-fc61-4235-b624-a4728281fa6a_1514x1008.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Xfhv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63089e95-fc61-4235-b624-a4728281fa6a_1514x1008.png" width="1456" height="969" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/63089e95-fc61-4235-b624-a4728281fa6a_1514x1008.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:969,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:256781,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/184197092?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63089e95-fc61-4235-b624-a4728281fa6a_1514x1008.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Xfhv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63089e95-fc61-4235-b624-a4728281fa6a_1514x1008.png 424w, https://substackcdn.com/image/fetch/$s_!Xfhv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63089e95-fc61-4235-b624-a4728281fa6a_1514x1008.png 848w, https://substackcdn.com/image/fetch/$s_!Xfhv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63089e95-fc61-4235-b624-a4728281fa6a_1514x1008.png 1272w, https://substackcdn.com/image/fetch/$s_!Xfhv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63089e95-fc61-4235-b624-a4728281fa6a_1514x1008.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ww4X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27c8711e-c5cd-4f18-8fd7-e88d2be5da9e_1530x546.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ww4X!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27c8711e-c5cd-4f18-8fd7-e88d2be5da9e_1530x546.png 424w, https://substackcdn.com/image/fetch/$s_!ww4X!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27c8711e-c5cd-4f18-8fd7-e88d2be5da9e_1530x546.png 848w, https://substackcdn.com/image/fetch/$s_!ww4X!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27c8711e-c5cd-4f18-8fd7-e88d2be5da9e_1530x546.png 1272w, https://substackcdn.com/image/fetch/$s_!ww4X!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27c8711e-c5cd-4f18-8fd7-e88d2be5da9e_1530x546.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ww4X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27c8711e-c5cd-4f18-8fd7-e88d2be5da9e_1530x546.png" width="1456" height="520" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/27c8711e-c5cd-4f18-8fd7-e88d2be5da9e_1530x546.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:520,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:120485,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/184197092?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27c8711e-c5cd-4f18-8fd7-e88d2be5da9e_1530x546.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ww4X!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27c8711e-c5cd-4f18-8fd7-e88d2be5da9e_1530x546.png 424w, https://substackcdn.com/image/fetch/$s_!ww4X!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27c8711e-c5cd-4f18-8fd7-e88d2be5da9e_1530x546.png 848w, https://substackcdn.com/image/fetch/$s_!ww4X!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27c8711e-c5cd-4f18-8fd7-e88d2be5da9e_1530x546.png 1272w, https://substackcdn.com/image/fetch/$s_!ww4X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27c8711e-c5cd-4f18-8fd7-e88d2be5da9e_1530x546.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Hope you like it &#129310;</p>]]></content:encoded></item><item><title><![CDATA[Building an eBPF/XDP NAT-Based Layer 4 Load Balancer Coding Lab Now Available]]></title><description><![CDATA[Building connection tracking, hashing, and packet rewriting from scratch using eBPF]]></description><link>https://ebpfchirp.substack.com/p/building-an-ebpfxdp-nat-based-layer</link><guid isPermaLink="false">https://ebpfchirp.substack.com/p/building-an-ebpfxdp-nat-based-layer</guid><dc:creator><![CDATA[Teodor J. Podobnik]]></dc:creator><pubDate>Tue, 06 Jan 2026 13:02:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!iz2s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a4b65c5-1c59-440a-98c5-83a169c009cc_1470x758.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>First of all, happy new year everyone &#11088;&#65039;</p><p>While many of you have probably set new things to try in 2026, I decided to double down on <strong>hands-on coding labs</strong>.</p><p>The response so far has been amazing. I&#8217;ve also realized that interactive tutorials&#8212;with a terminal right next to the code&#8212;offer huge advantages over traditional text- and image-based guides you&#8217;re supposed to run locally.</p><p>Let&#8217;s be honest: we rarely do that. Out of the box, things often don&#8217;t work, dependencies are missing, and you end up installing and tweaking more than actually learning.</p><p>This week, we continue with <strong>XDP</strong>. Specifically, I&#8217;ll show you how to build an <strong>eBPF/XDP NAT-based Layer 4 load balancer</strong> in roughly <strong>200 lines of code</strong> (plus some boilerplate).</p><p>In the next tutorial, we&#8217;ll build on this foundation and add <strong>DSR (Direct Server Return) Layer 2 load balancing</strong> and <strong>IPIP encapsulation</strong>.</p><p>&#128279; Here&#8217;s the <a href="https://labs.iximiuz.com/tutorials/xdp-load-balancer-700a1d74">link to the coding lab</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iz2s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a4b65c5-1c59-440a-98c5-83a169c009cc_1470x758.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iz2s!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a4b65c5-1c59-440a-98c5-83a169c009cc_1470x758.png 424w, https://substackcdn.com/image/fetch/$s_!iz2s!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a4b65c5-1c59-440a-98c5-83a169c009cc_1470x758.png 848w, https://substackcdn.com/image/fetch/$s_!iz2s!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a4b65c5-1c59-440a-98c5-83a169c009cc_1470x758.png 1272w, https://substackcdn.com/image/fetch/$s_!iz2s!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a4b65c5-1c59-440a-98c5-83a169c009cc_1470x758.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iz2s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a4b65c5-1c59-440a-98c5-83a169c009cc_1470x758.png" width="1456" height="751" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a4b65c5-1c59-440a-98c5-83a169c009cc_1470x758.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:751,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:139683,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/183548572?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a4b65c5-1c59-440a-98c5-83a169c009cc_1470x758.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iz2s!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a4b65c5-1c59-440a-98c5-83a169c009cc_1470x758.png 424w, https://substackcdn.com/image/fetch/$s_!iz2s!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a4b65c5-1c59-440a-98c5-83a169c009cc_1470x758.png 848w, https://substackcdn.com/image/fetch/$s_!iz2s!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a4b65c5-1c59-440a-98c5-83a169c009cc_1470x758.png 1272w, https://substackcdn.com/image/fetch/$s_!iz2s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a4b65c5-1c59-440a-98c5-83a169c009cc_1470x758.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_Eav!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90499446-8aaf-473e-87bf-9d9cc10f6427_1238x444.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_Eav!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90499446-8aaf-473e-87bf-9d9cc10f6427_1238x444.png 424w, https://substackcdn.com/image/fetch/$s_!_Eav!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90499446-8aaf-473e-87bf-9d9cc10f6427_1238x444.png 848w, https://substackcdn.com/image/fetch/$s_!_Eav!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90499446-8aaf-473e-87bf-9d9cc10f6427_1238x444.png 1272w, https://substackcdn.com/image/fetch/$s_!_Eav!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90499446-8aaf-473e-87bf-9d9cc10f6427_1238x444.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_Eav!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90499446-8aaf-473e-87bf-9d9cc10f6427_1238x444.png" width="1238" height="444" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/90499446-8aaf-473e-87bf-9d9cc10f6427_1238x444.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:444,&quot;width&quot;:1238,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:83498,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/183548572?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90499446-8aaf-473e-87bf-9d9cc10f6427_1238x444.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_Eav!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90499446-8aaf-473e-87bf-9d9cc10f6427_1238x444.png 424w, https://substackcdn.com/image/fetch/$s_!_Eav!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90499446-8aaf-473e-87bf-9d9cc10f6427_1238x444.png 848w, https://substackcdn.com/image/fetch/$s_!_Eav!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90499446-8aaf-473e-87bf-9d9cc10f6427_1238x444.png 1272w, https://substackcdn.com/image/fetch/$s_!_Eav!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90499446-8aaf-473e-87bf-9d9cc10f6427_1238x444.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Hope you like it &#129310;</p>]]></content:encoded></item><item><title><![CDATA[eBPF-based Firewall with LPM Trie–Based IP Range Matching Coding Lab Now Available]]></title><description><![CDATA[Another week, another XDP tutorial.]]></description><link>https://ebpfchirp.substack.com/p/ebpf-based-firewall-with-lpm-triebased</link><guid isPermaLink="false">https://ebpfchirp.substack.com/p/ebpf-based-firewall-with-lpm-triebased</guid><dc:creator><![CDATA[Teodor J. Podobnik]]></dc:creator><pubDate>Tue, 23 Dec 2025 01:00:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!AbN9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc530f73a-ee52-472c-8054-1e6791b8e403_1192x834.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Another week, another XDP tutorial. I&#8217;m continuing to look at different network use cases where eBPF makes sense.</p><p>If you missed the last two XDP coding labs, here they are:</p><ul><li><p><strong><a href="https://labs.iximiuz.com/tutorials/ebpf-xdp-fundamentals-6342d24e">Hands-On with XDP: eBPF for High-Performance Networking</a></strong></p></li><li><p><strong><a href="https://labs.iximiuz.com/tutorials/ebpf-ratelimiting-dbc12915">Network Traffic Rate Limiting with eBPF/XDP</a></strong></p></li></ul><p>This week, we&#8217;re building an <strong>XDP-based firewall</strong>. </p><p>But instead of a generic &#8220;drop packets at XDP&#8221; walkthrough, we&#8217;ll zoom in on one feature that most tutorials barely mention &#8212; <strong>CIDR / IP range matching with </strong><code>BPF_MAP_TYPE_LPM_TRIE</code><strong> (longest-prefix match).</strong></p><p>It&#8217;s the difference between &#8220;block this one IP&#8221; and &#8220;block the whole subnet cleanly and efficiently&#8221; &#8212; exactly what you want when IP addresses frequently change inside known ranges.</p><p>&#128279; Here&#8217;s the <a href="https://labs.iximiuz.com/tutorials/ebpf-firewall-ed03d648">link to the coding lab</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AbN9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc530f73a-ee52-472c-8054-1e6791b8e403_1192x834.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AbN9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc530f73a-ee52-472c-8054-1e6791b8e403_1192x834.png 424w, https://substackcdn.com/image/fetch/$s_!AbN9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc530f73a-ee52-472c-8054-1e6791b8e403_1192x834.png 848w, https://substackcdn.com/image/fetch/$s_!AbN9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc530f73a-ee52-472c-8054-1e6791b8e403_1192x834.png 1272w, https://substackcdn.com/image/fetch/$s_!AbN9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc530f73a-ee52-472c-8054-1e6791b8e403_1192x834.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AbN9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc530f73a-ee52-472c-8054-1e6791b8e403_1192x834.png" width="1192" height="834" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c530f73a-ee52-472c-8054-1e6791b8e403_1192x834.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:834,&quot;width&quot;:1192,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:265959,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/182158496?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc530f73a-ee52-472c-8054-1e6791b8e403_1192x834.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AbN9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc530f73a-ee52-472c-8054-1e6791b8e403_1192x834.png 424w, https://substackcdn.com/image/fetch/$s_!AbN9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc530f73a-ee52-472c-8054-1e6791b8e403_1192x834.png 848w, https://substackcdn.com/image/fetch/$s_!AbN9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc530f73a-ee52-472c-8054-1e6791b8e403_1192x834.png 1272w, https://substackcdn.com/image/fetch/$s_!AbN9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc530f73a-ee52-472c-8054-1e6791b8e403_1192x834.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GOpi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8d93a02-da4e-4e4d-8f10-6950ce6e5739_1248x662.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GOpi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8d93a02-da4e-4e4d-8f10-6950ce6e5739_1248x662.png 424w, https://substackcdn.com/image/fetch/$s_!GOpi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8d93a02-da4e-4e4d-8f10-6950ce6e5739_1248x662.png 848w, https://substackcdn.com/image/fetch/$s_!GOpi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8d93a02-da4e-4e4d-8f10-6950ce6e5739_1248x662.png 1272w, https://substackcdn.com/image/fetch/$s_!GOpi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8d93a02-da4e-4e4d-8f10-6950ce6e5739_1248x662.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GOpi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8d93a02-da4e-4e4d-8f10-6950ce6e5739_1248x662.png" width="1248" height="662" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d8d93a02-da4e-4e4d-8f10-6950ce6e5739_1248x662.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:662,&quot;width&quot;:1248,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:933966,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/182158496?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8d93a02-da4e-4e4d-8f10-6950ce6e5739_1248x662.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GOpi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8d93a02-da4e-4e4d-8f10-6950ce6e5739_1248x662.png 424w, https://substackcdn.com/image/fetch/$s_!GOpi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8d93a02-da4e-4e4d-8f10-6950ce6e5739_1248x662.png 848w, https://substackcdn.com/image/fetch/$s_!GOpi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8d93a02-da4e-4e4d-8f10-6950ce6e5739_1248x662.png 1272w, https://substackcdn.com/image/fetch/$s_!GOpi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8d93a02-da4e-4e4d-8f10-6950ce6e5739_1248x662.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Dynamic Runtime Policies in eBPF Using Bitmasks]]></title><description><![CDATA[Whenever one creates runtime security policies in eBPF, it usually looks something like this:]]></description><link>https://ebpfchirp.substack.com/p/dynamic-runtime-policies-in-ebpf</link><guid isPermaLink="false">https://ebpfchirp.substack.com/p/dynamic-runtime-policies-in-ebpf</guid><dc:creator><![CDATA[Teodor J. Podobnik]]></dc:creator><pubDate>Tue, 16 Dec 2025 13:03:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!poDp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1fd0c6e-7d67-4ff3-bf96-d4f389a01302_1371x848.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Whenever one creates runtime security policies in eBPF, it usually looks something like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!poDp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1fd0c6e-7d67-4ff3-bf96-d4f389a01302_1371x848.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!poDp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1fd0c6e-7d67-4ff3-bf96-d4f389a01302_1371x848.png 424w, https://substackcdn.com/image/fetch/$s_!poDp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1fd0c6e-7d67-4ff3-bf96-d4f389a01302_1371x848.png 848w, https://substackcdn.com/image/fetch/$s_!poDp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1fd0c6e-7d67-4ff3-bf96-d4f389a01302_1371x848.png 1272w, https://substackcdn.com/image/fetch/$s_!poDp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1fd0c6e-7d67-4ff3-bf96-d4f389a01302_1371x848.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!poDp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1fd0c6e-7d67-4ff3-bf96-d4f389a01302_1371x848.png" width="1371" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f1fd0c6e-7d67-4ff3-bf96-d4f389a01302_1371x848.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1371,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:24226,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/181032541?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1fd0c6e-7d67-4ff3-bf96-d4f389a01302_1371x848.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!poDp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1fd0c6e-7d67-4ff3-bf96-d4f389a01302_1371x848.png 424w, https://substackcdn.com/image/fetch/$s_!poDp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1fd0c6e-7d67-4ff3-bf96-d4f389a01302_1371x848.png 848w, https://substackcdn.com/image/fetch/$s_!poDp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1fd0c6e-7d67-4ff3-bf96-d4f389a01302_1371x848.png 1272w, https://substackcdn.com/image/fetch/$s_!poDp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1fd0c6e-7d67-4ff3-bf96-d4f389a01302_1371x848.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>When a certain binary runs and tries to access a resource, we check it against an eBPF policy map, enforce the rules, and call it a day&#8212;right?</p><p>Not really.</p><p>Consider the following example:</p><ul><li><p><code>sender.sh</code> is launched to move some files from machine A to machine B.</p></li><li><p>To do that, <code>sender.sh</code> starts <code>readandsend.sh</code> as a child process and passes it the files</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8Q9Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ec8724f-8fb8-4900-abb6-4f3c9a2c4f26_1764x1292.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8Q9Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ec8724f-8fb8-4900-abb6-4f3c9a2c4f26_1764x1292.png 424w, https://substackcdn.com/image/fetch/$s_!8Q9Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ec8724f-8fb8-4900-abb6-4f3c9a2c4f26_1764x1292.png 848w, https://substackcdn.com/image/fetch/$s_!8Q9Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ec8724f-8fb8-4900-abb6-4f3c9a2c4f26_1764x1292.png 1272w, https://substackcdn.com/image/fetch/$s_!8Q9Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ec8724f-8fb8-4900-abb6-4f3c9a2c4f26_1764x1292.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8Q9Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ec8724f-8fb8-4900-abb6-4f3c9a2c4f26_1764x1292.png" width="1456" height="1066" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8ec8724f-8fb8-4900-abb6-4f3c9a2c4f26_1764x1292.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1066,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:43711,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/181032541?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ec8724f-8fb8-4900-abb6-4f3c9a2c4f26_1764x1292.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8Q9Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ec8724f-8fb8-4900-abb6-4f3c9a2c4f26_1764x1292.png 424w, https://substackcdn.com/image/fetch/$s_!8Q9Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ec8724f-8fb8-4900-abb6-4f3c9a2c4f26_1764x1292.png 848w, https://substackcdn.com/image/fetch/$s_!8Q9Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ec8724f-8fb8-4900-abb6-4f3c9a2c4f26_1764x1292.png 1272w, https://substackcdn.com/image/fetch/$s_!8Q9Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ec8724f-8fb8-4900-abb6-4f3c9a2c4f26_1764x1292.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In this case, when <code>readandsend.sh</code> is called by <code>sender.sh</code>, it should be allowed to read the provided files and connect to machine B&#8217;s IP.</p><p>But according to the current (static) policy stored in the eBPF map&#8230; it can&#8217;t.</p><p>So why not simply assign those file and network permissions to <code>readandsend.sh</code> as well?</p><p>The problem is that when permissions are assigned across different entities in a system, each entity should ideally have the minimal set of permissions required to function.</p><p>The primary reason for this is security: if a given entity is compromised, the attacker gains only a limited set of &#8220;powers.&#8221;</p><p>In the example above, we don&#8217;t want to grant <code>readandsend.sh</code> access to all files. Instead, we want it to inherit permissions from its parent <strong>only for the duration of the operation</strong>.</p><p>This may not be a common pattern, but supporting it would allow us to create policies that block certain operations by default and only <em>unlock</em> them when an authorized parent process invokes a child. In other words, capabilities remain restricted unless the correct process chain activates them.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jy9a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1fb583a-7637-4eef-8a98-c4c150da625f_1764x1292.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jy9a!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1fb583a-7637-4eef-8a98-c4c150da625f_1764x1292.png 424w, https://substackcdn.com/image/fetch/$s_!jy9a!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1fb583a-7637-4eef-8a98-c4c150da625f_1764x1292.png 848w, https://substackcdn.com/image/fetch/$s_!jy9a!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1fb583a-7637-4eef-8a98-c4c150da625f_1764x1292.png 1272w, https://substackcdn.com/image/fetch/$s_!jy9a!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1fb583a-7637-4eef-8a98-c4c150da625f_1764x1292.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jy9a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1fb583a-7637-4eef-8a98-c4c150da625f_1764x1292.png" width="1456" height="1066" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e1fb583a-7637-4eef-8a98-c4c150da625f_1764x1292.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1066,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:43262,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/181032541?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1fb583a-7637-4eef-8a98-c4c150da625f_1764x1292.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jy9a!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1fb583a-7637-4eef-8a98-c4c150da625f_1764x1292.png 424w, https://substackcdn.com/image/fetch/$s_!jy9a!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1fb583a-7637-4eef-8a98-c4c150da625f_1764x1292.png 848w, https://substackcdn.com/image/fetch/$s_!jy9a!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1fb583a-7637-4eef-8a98-c4c150da625f_1764x1292.png 1272w, https://substackcdn.com/image/fetch/$s_!jy9a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1fb583a-7637-4eef-8a98-c4c150da625f_1764x1292.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><blockquote><p><em><strong>So how hard to implement can that be?</strong></em></p></blockquote><p>And obviously, we can&#8217;t just invent a completely new structure. Instead, to make this possible, the eBPF map that holds the policy should:</p><ul><li><p>Support taking the <strong>union</strong> of two map entries (for inheriting permissions)</p></li><li><p>Perform that union <strong>quickly</strong> (ideally O(1), or close to it)</p></li><li><p>Fit within the <strong>eBPF verifier&#8217;s limitations</strong></p></li></ul><p>So&#8230; this should be easy, right?</p><h1><strong>The &#8220;Easy&#8221; Solution</strong></h1><p>To achieve this, we represent our policy entries as a <a href="https://en.wikipedia.org/wiki/Mask_(computing)">bitmask</a>, where each bit corresponds to a resource the executable is allowed to access.</p><p>Instead of storing the resource identifiers directly, we store them like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Vpb1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F534f9081-6ce3-48e0-a86b-2ef13f9f8a7e_2098x671.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Vpb1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F534f9081-6ce3-48e0-a86b-2ef13f9f8a7e_2098x671.png 424w, https://substackcdn.com/image/fetch/$s_!Vpb1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F534f9081-6ce3-48e0-a86b-2ef13f9f8a7e_2098x671.png 848w, https://substackcdn.com/image/fetch/$s_!Vpb1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F534f9081-6ce3-48e0-a86b-2ef13f9f8a7e_2098x671.png 1272w, https://substackcdn.com/image/fetch/$s_!Vpb1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F534f9081-6ce3-48e0-a86b-2ef13f9f8a7e_2098x671.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Vpb1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F534f9081-6ce3-48e0-a86b-2ef13f9f8a7e_2098x671.png" width="1456" height="466" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/534f9081-6ce3-48e0-a86b-2ef13f9f8a7e_2098x671.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:466,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:28965,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/181032541?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F534f9081-6ce3-48e0-a86b-2ef13f9f8a7e_2098x671.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Vpb1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F534f9081-6ce3-48e0-a86b-2ef13f9f8a7e_2098x671.png 424w, https://substackcdn.com/image/fetch/$s_!Vpb1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F534f9081-6ce3-48e0-a86b-2ef13f9f8a7e_2098x671.png 848w, https://substackcdn.com/image/fetch/$s_!Vpb1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F534f9081-6ce3-48e0-a86b-2ef13f9f8a7e_2098x671.png 1272w, https://substackcdn.com/image/fetch/$s_!Vpb1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F534f9081-6ce3-48e0-a86b-2ef13f9f8a7e_2098x671.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Instead of a single eBPF map, we use two eBPF maps:</p><ul><li><p>A map that assigns each resource an index (bit position)</p></li><li><p>A map that stores policies as bitmasks</p></li></ul><blockquote><p><em><strong>But why?</strong></em></p></blockquote><p>When checking access for <code>sender.sh</code>, we:</p><ul><li><p>Fetch the resource&#8217;s index</p></li><li><p>Retrieve the binary&#8217;s policy bitmask</p></li><li><p>Allow access if the bit at that index is set</p></li></ul><p>But when <code>sender.sh</code> calls <code>readandsend.sh</code>, we can simply <strong>OR</strong> their policy bitmasks to create a combined policy and apply the same checks.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DDRY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1752e18c-5cbf-42eb-8460-b03c3c0effd9_1523x422.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DDRY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1752e18c-5cbf-42eb-8460-b03c3c0effd9_1523x422.png 424w, https://substackcdn.com/image/fetch/$s_!DDRY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1752e18c-5cbf-42eb-8460-b03c3c0effd9_1523x422.png 848w, https://substackcdn.com/image/fetch/$s_!DDRY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1752e18c-5cbf-42eb-8460-b03c3c0effd9_1523x422.png 1272w, https://substackcdn.com/image/fetch/$s_!DDRY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1752e18c-5cbf-42eb-8460-b03c3c0effd9_1523x422.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DDRY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1752e18c-5cbf-42eb-8460-b03c3c0effd9_1523x422.png" width="1456" height="403" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1752e18c-5cbf-42eb-8460-b03c3c0effd9_1523x422.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:403,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:14341,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/181032541?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1752e18c-5cbf-42eb-8460-b03c3c0effd9_1523x422.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DDRY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1752e18c-5cbf-42eb-8460-b03c3c0effd9_1523x422.png 424w, https://substackcdn.com/image/fetch/$s_!DDRY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1752e18c-5cbf-42eb-8460-b03c3c0effd9_1523x422.png 848w, https://substackcdn.com/image/fetch/$s_!DDRY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1752e18c-5cbf-42eb-8460-b03c3c0effd9_1523x422.png 1272w, https://substackcdn.com/image/fetch/$s_!DDRY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1752e18c-5cbf-42eb-8460-b03c3c0effd9_1523x422.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In other words, we dynamically adjust permissions based on <em>who</em> called the binary&#8212;while still keeping least privilege.</p><p>Here&#8217;s a small pseudocode snippet to wrap it up:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fmte!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc138912-055f-40f4-ac4e-ba5587e06000_1670x2096.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fmte!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc138912-055f-40f4-ac4e-ba5587e06000_1670x2096.png 424w, https://substackcdn.com/image/fetch/$s_!fmte!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc138912-055f-40f4-ac4e-ba5587e06000_1670x2096.png 848w, https://substackcdn.com/image/fetch/$s_!fmte!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc138912-055f-40f4-ac4e-ba5587e06000_1670x2096.png 1272w, https://substackcdn.com/image/fetch/$s_!fmte!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc138912-055f-40f4-ac4e-ba5587e06000_1670x2096.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fmte!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc138912-055f-40f4-ac4e-ba5587e06000_1670x2096.png" width="1456" height="1827" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc138912-055f-40f4-ac4e-ba5587e06000_1670x2096.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1827,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:459348,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/181032541?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc138912-055f-40f4-ac4e-ba5587e06000_1670x2096.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fmte!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc138912-055f-40f4-ac4e-ba5587e06000_1670x2096.png 424w, https://substackcdn.com/image/fetch/$s_!fmte!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc138912-055f-40f4-ac4e-ba5587e06000_1670x2096.png 848w, https://substackcdn.com/image/fetch/$s_!fmte!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc138912-055f-40f4-ac4e-ba5587e06000_1670x2096.png 1272w, https://substackcdn.com/image/fetch/$s_!fmte!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc138912-055f-40f4-ac4e-ba5587e06000_1670x2096.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><p>I hope you find this resource interesting. Keep an eye out for more updates and developments in eBPF in next week&#8217;s newsletter.</p><p>Until then, keep &#128029;-ing!</p><p>Warm regards, Teodor and Neil</p>]]></content:encoded></item><item><title><![CDATA[Interview with Henrik Rexed, CNCF Ambassador, Cloud Native Advocate at Dynatrace]]></title><description><![CDATA[This time I sat down with Henrik Rexed, CNCF Ambassador and Staff Engineer at Dynatrace. Henrik is also the voice behind the popular blog Is It Observable and brings deep expertise from a career spent largely in performance engineering.]]></description><link>https://ebpfchirp.substack.com/p/interview-with-henrik-rexed-cncf</link><guid isPermaLink="false">https://ebpfchirp.substack.com/p/interview-with-henrik-rexed-cncf</guid><dc:creator><![CDATA[Teodor J. Podobnik]]></dc:creator><pubDate>Tue, 02 Dec 2025 13:03:33 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/180319639/2e2b229859b69c7f83568d99b6e9e91f.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>This time I sat down with <strong><a href="https://www.linkedin.com/in/hrexed/">Henrik Rexed</a></strong>, CNCF Ambassador and Staff Engineer at <strong><a href="https://www.dynatrace.com/">Dynatrace</a></strong>. Henrik is also the voice behind the popular blog <em><a href="https://isitobservable.io/">Is It Observable</a></em> and brings deep expertise from a career spent largely in performance engineering.</p><p>Here&#8217;s what we covered:</p><ul><li><p><strong>What does a CNCF Ambassador actually do?</strong> </p><p>It turns out the role is less about status and more about survival for open-source projects. The goal is simple: help the community navigate a landscape flooded with new tools and ensure worthy projects actually get adopted.</p></li><li><p><strong>When &#8220;CPU Usage&#8221; tells you nothing</strong> </p><p>From European League live streams to GPS trackers on police cars in the desert, simulating massive loads used to be the only way to understand system limits. But simply knowing a CPU is &#8220;waiting&#8221; isn&#8217;t enough. Is it waiting on disk? On the network? We discussed why traditional observability fail in modern architectures and how eBPF provides the missing context.</p></li><li><p><strong>Is eBPF always the answer?</strong> </p><p>It&#8217;s tempting to rewrite everything in eBPF, but is it always necessary? Dynatrace takes a &#8220;tactical&#8221; approach. Forcing eBPF onto legacy bare-metal systems with old kernels creates a maintenance nightmare. The argument here is for a hybrid model: use eBPF only where the environment (like Kubernetes) is controlled enough to support it safely.</p></li><li><p><strong>The &#8220;Cross Your Fingers&#8221; Deployment</strong> </p><p>We deploy network policies in Kubernetes or Istio, but do we actually know what they are doing? There is a frustrating gap in observability: when a connection fails, was it the policy or the network? Right now, most of us are just guessing.</p></li><li><p><strong>Security: To block or to listen?</strong> </p><p>If a process acts up, should you kill it immediately? Aggressive blocking often causes more problems than it solves, especially if dependencies break. We discuss the alternative: using &#8220;honeypots&#8221; and fake tokens to let attackers reveal themselves before you take action&#8212;learning the behavior rather than just stopping the process.</p></li></ul><p>I&#8217;ll leave it at that. Hope you enjoy it &#128029;</p>]]></content:encoded></item><item><title><![CDATA[Network Traffic Rate Limiting with eBPF/XDP Coding Lab Now Available]]></title><description><![CDATA[Last week, I released the first eBPF tutorial about XDP, focusing on fundamentals like the attachment point, capturing packets, and parsing them.]]></description><link>https://ebpfchirp.substack.com/p/network-traffic-rate-limiting-with</link><guid isPermaLink="false">https://ebpfchirp.substack.com/p/network-traffic-rate-limiting-with</guid><dc:creator><![CDATA[Teodor J. Podobnik]]></dc:creator><pubDate>Tue, 25 Nov 2025 13:03:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!RPIL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d9c5270-87b6-4333-abc0-5ef5235e3979_716x341.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Last week, I released the first eBPF tutorial about XDP, focusing on fundamentals like the attachment point, capturing packets, and parsing them.</p><p>That was a good starting point, but building useful programs also requires other eBPF features such as maps and helper functions.</p><p>The complexity of real applications naturally depends on the problem, but one of the simplest&#8212;and also one of the first&#8212;examples I built early on was packet rate limiting.</p><p>So here comes the new coding lab: https://labs.iximiuz.com/tutorials/ebpf-ratelimiting-dbc12915</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RPIL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d9c5270-87b6-4333-abc0-5ef5235e3979_716x341.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RPIL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d9c5270-87b6-4333-abc0-5ef5235e3979_716x341.png 424w, https://substackcdn.com/image/fetch/$s_!RPIL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d9c5270-87b6-4333-abc0-5ef5235e3979_716x341.png 848w, https://substackcdn.com/image/fetch/$s_!RPIL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d9c5270-87b6-4333-abc0-5ef5235e3979_716x341.png 1272w, https://substackcdn.com/image/fetch/$s_!RPIL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d9c5270-87b6-4333-abc0-5ef5235e3979_716x341.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RPIL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d9c5270-87b6-4333-abc0-5ef5235e3979_716x341.png" width="716" height="341" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d9c5270-87b6-4333-abc0-5ef5235e3979_716x341.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:341,&quot;width&quot;:716,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:61693,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/179720671?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d9c5270-87b6-4333-abc0-5ef5235e3979_716x341.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RPIL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d9c5270-87b6-4333-abc0-5ef5235e3979_716x341.png 424w, https://substackcdn.com/image/fetch/$s_!RPIL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d9c5270-87b6-4333-abc0-5ef5235e3979_716x341.png 848w, https://substackcdn.com/image/fetch/$s_!RPIL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d9c5270-87b6-4333-abc0-5ef5235e3979_716x341.png 1272w, https://substackcdn.com/image/fetch/$s_!RPIL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d9c5270-87b6-4333-abc0-5ef5235e3979_716x341.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I&#8217;ve received countless nice messages from people following the labs, and I&#8217;m really happy about the positive impact they&#8217;re having on the eBPF community.</p><p>Still, I&#8217;m curious what you think about this:</p><div class="poll-embed" data-attrs="{&quot;id&quot;:409469}" data-component-name="PollToDOM"></div><p>Best, Teodor &#128029;</p>]]></content:encoded></item><item><title><![CDATA[eBPF XDP Fundamentals Coding Lab Now Available]]></title><description><![CDATA[Today, I&#8217;m releasing a new coding lab focused on the eBPF/XDP program type &#8212; specifically used in network-related applications.]]></description><link>https://ebpfchirp.substack.com/p/ebpf-xdp-fundamentals-coding-labs</link><guid isPermaLink="false">https://ebpfchirp.substack.com/p/ebpf-xdp-fundamentals-coding-labs</guid><dc:creator><![CDATA[Teodor J. Podobnik]]></dc:creator><pubDate>Tue, 18 Nov 2025 13:02:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Aorf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f84e76-2984-4f6f-b274-a447c265892d_1005x744.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Today, I&#8217;m releasing a new coding lab focused on the eBPF/XDP program type &#8212; specifically used in network-related applications.</p><p>It&#8217;s a simple intro to XDP, how it works, the different modes it can operate in, and what packet information you can access. But of course, we don&#8217;t stop there &#8212; in the upcoming weeks, we&#8217;ll build on these fundamentals and create an XDP packet rate-limiter, a firewall, and an XDP load balancer.</p><p>Link: https://labs.iximiuz.com/tutorials/ebpf-xdp-fundamentals-6342d24e</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Aorf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f84e76-2984-4f6f-b274-a447c265892d_1005x744.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Aorf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f84e76-2984-4f6f-b274-a447c265892d_1005x744.png 424w, https://substackcdn.com/image/fetch/$s_!Aorf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f84e76-2984-4f6f-b274-a447c265892d_1005x744.png 848w, https://substackcdn.com/image/fetch/$s_!Aorf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f84e76-2984-4f6f-b274-a447c265892d_1005x744.png 1272w, https://substackcdn.com/image/fetch/$s_!Aorf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f84e76-2984-4f6f-b274-a447c265892d_1005x744.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Aorf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f84e76-2984-4f6f-b274-a447c265892d_1005x744.png" width="1005" height="744" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b0f84e76-2984-4f6f-b274-a447c265892d_1005x744.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:744,&quot;width&quot;:1005,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:24373,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/179149033?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f84e76-2984-4f6f-b274-a447c265892d_1005x744.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Aorf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f84e76-2984-4f6f-b274-a447c265892d_1005x744.png 424w, https://substackcdn.com/image/fetch/$s_!Aorf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f84e76-2984-4f6f-b274-a447c265892d_1005x744.png 848w, https://substackcdn.com/image/fetch/$s_!Aorf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f84e76-2984-4f6f-b274-a447c265892d_1005x744.png 1272w, https://substackcdn.com/image/fetch/$s_!Aorf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f84e76-2984-4f6f-b274-a447c265892d_1005x744.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Hope you like it &#9996;&#65039;</p>]]></content:encoded></item><item><title><![CDATA[Interview with Rafael David Tinoco, Senior Software Engineer at Garnet]]></title><description><![CDATA[This time I sat down with Rafael David Tinoco, Engineer at Garnet, where he&#8217;s developing Jibril &#8212; a runtime security engine.]]></description><link>https://ebpfchirp.substack.com/p/interview-with-rafael-david-tinoco</link><guid isPermaLink="false">https://ebpfchirp.substack.com/p/interview-with-rafael-david-tinoco</guid><dc:creator><![CDATA[Teodor J. Podobnik]]></dc:creator><pubDate>Tue, 11 Nov 2025 13:03:23 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/178534749/d5fedc704dfaf8ba14fa6314f21ca2a5.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>This time I sat down with <strong><a href="https://www.linkedin.com/in/rafaeldtinoco/">Rafael David Tinoco</a></strong>, Engineer at <strong><a href="https://www.linkedin.com/company/garnetlabs">Garnet</a></strong>, where he&#8217;s developing <strong>Jibril</strong> &#8212; a runtime security engine.</p><p>Rafael&#8217;s story spans from mainframes and operating system internals to maintaining <strong>Tracee</strong> at Aqua Security, and now, pushing eBPF to its architectural limits at Garnet. Here&#8217;s what we covered:</p><ul><li><p><strong>From CI/CD runtime security to Kubernetes</strong></p><p>Jibril started as a project focused on <strong>GitHub Actions runtime security</strong>, but as users began deploying it in Kubernetes clusters, the transition was natural. After all, GitHub runners are just virtual machines &#8212; Kubernetes simply scales that model across nodes.</p></li><li><p><strong>The context-first vision</strong></p><p>From day one, Garnet&#8217;s founders had a clear thesis: whoever holds the <strong>best context</strong> wins. Jibril&#8217;s engine was built around this &#8212; capturing what&#8217;s happening at the system level without caring whether it&#8217;s running on GitHub, Kubernetes, or even a toaster.</p></li><li><p><strong>A new/unique way to process kernel events</strong></p><p>Unlike traditional runtime security tools like Falco, Tetragon, or Datadog Agent, Jibril <strong>doesn&#8217;t stream events</strong> from kernel to user space. Instead, it uses an <strong>in-kernel data query model</strong> &#8212; treating eBPF maps like a database.<br>Rather than flooding user space with raw events, Jibril stores, indexes, and exposes them <strong>on-demand</strong> through queries. The result: <strong>an order of magnitude reduction in CPU and memory usage</strong> while maintaining full observability.</p></li><li><p><strong>Virtual maps and caching</strong></p><p>To make this model scale, Rafael built what he calls <strong>virtual maps</strong> &#8212; &#8220;maps made of maps&#8221; &#8212; enabling nested lookups and richer data structures entirely in-kernel.<br>A <strong>userland caching layer</strong> further optimizes queries, ensuring repeated lookups don&#8217;t re-hit the kernel unless necessary. The outcome is a smooth balance between <strong>cadence and performance</strong>, with tunable refresh intervals depending on workload.</p></li><li><p><strong>Beyond just detection</strong></p><p>Jibril already supports <strong>in-kernel enforcement</strong>, blocking domains or CIDRs at egress using eBPF &#8212; no proxy, no user-space hop.<br>For broader cluster-wide blocking, it can also hand off to <strong>Cilium</strong> to enforce network policies, rather than competing with it.</p></li></ul><p>At the end, there&#8217;s a short demo of Jibril &#8212; aimed at a more technical audience &#8212; showcasing the concepts we discussed throughout our conversation.</p><p>I&#8217;ll leave it at that &#8212; this was one of the most technical and insightful discussions I&#8217;ve had about eBPF architecture in a while. </p><p>Jibril is shaping up to be a fascinating rethink of how we do runtime security &#8212; not by streaming data faster, but by <strong>rethinking where and how data lives</strong>. &#128029;</p>]]></content:encoded></item><item><title><![CDATA[eBPF CO-RE Skill Path: Coding Labs Now Available]]></title><description><![CDATA[#2 eBPF Skill Path]]></description><link>https://ebpfchirp.substack.com/p/release-of-ebpf-co-re-skill-path</link><guid isPermaLink="false">https://ebpfchirp.substack.com/p/release-of-ebpf-co-re-skill-path</guid><dc:creator><![CDATA[Teodor J. Podobnik]]></dc:creator><pubDate>Tue, 04 Nov 2025 13:00:57 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!cMw-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e5674e8-bd81-4dee-98eb-4a382c74af89_2031x1436.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I must say, creating labs on the Iximiuz Platform has been taking up most of my time &#8212; but I&#8217;m still managing to keep up with the schedule to some extent.</p><p>Today, I&#8217;m releasing a new batch of coding labs focused on comparing different eBPF tracing program types such as <strong>Tracepoints</strong>, <strong>Raw Tracepoints</strong>, <strong>Kprobes</strong>, and <strong>Fprobes</strong>.</p><p>And of course, we don&#8217;t stop there &#8212; I also show you how to make these program types <strong>portable</strong>, discuss the challenges of <strong>depending on BTF</strong>, and explain how to design <strong>truly portable eBPF programs</strong>.</p><p>Link: https://labs.iximiuz.com/skill-paths/core-ebpf-program-e25e0f1c</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cMw-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e5674e8-bd81-4dee-98eb-4a382c74af89_2031x1436.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cMw-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e5674e8-bd81-4dee-98eb-4a382c74af89_2031x1436.png 424w, https://substackcdn.com/image/fetch/$s_!cMw-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e5674e8-bd81-4dee-98eb-4a382c74af89_2031x1436.png 848w, https://substackcdn.com/image/fetch/$s_!cMw-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e5674e8-bd81-4dee-98eb-4a382c74af89_2031x1436.png 1272w, https://substackcdn.com/image/fetch/$s_!cMw-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e5674e8-bd81-4dee-98eb-4a382c74af89_2031x1436.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cMw-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e5674e8-bd81-4dee-98eb-4a382c74af89_2031x1436.png" width="1456" height="1029" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5e5674e8-bd81-4dee-98eb-4a382c74af89_2031x1436.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1029,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:332613,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/177908423?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e5674e8-bd81-4dee-98eb-4a382c74af89_2031x1436.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cMw-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e5674e8-bd81-4dee-98eb-4a382c74af89_2031x1436.png 424w, https://substackcdn.com/image/fetch/$s_!cMw-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e5674e8-bd81-4dee-98eb-4a382c74af89_2031x1436.png 848w, https://substackcdn.com/image/fetch/$s_!cMw-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e5674e8-bd81-4dee-98eb-4a382c74af89_2031x1436.png 1272w, https://substackcdn.com/image/fetch/$s_!cMw-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e5674e8-bd81-4dee-98eb-4a382c74af89_2031x1436.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Hope you like it &#9996;&#65039;</p>]]></content:encoded></item><item><title><![CDATA[Reflecting on 1-ish year of eBPFChirp and all the things I learned along the way]]></title><description><![CDATA[Today marks the 50th edition of this newsletter&#8212;and instead of the usual technical deep dive, I thought I&#8217;d pause for a moment to look back on what the past years of writing has been like.]]></description><link>https://ebpfchirp.substack.com/p/reflecting-on-1-ish-year-of-ebpfchirp</link><guid isPermaLink="false">https://ebpfchirp.substack.com/p/reflecting-on-1-ish-year-of-ebpfchirp</guid><dc:creator><![CDATA[Teodor J. Podobnik]]></dc:creator><pubDate>Tue, 28 Oct 2025 13:03:05 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!mI7G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e48d21c-5281-4c48-a60d-7215607fda28_1756x904.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Today marks the 50th edition of this newsletter&#8212;and instead of the usual technical deep dive, I thought I&#8217;d pause for a moment to look back on what the past years of writing has been like.</p><h2>Starting CloudChirps back in 2022</h2><p>My technical writing journey goes back almost 4 years, to when I published my first Medium post. And it wasn&#8217;t even about eBPF&#8230;</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Mq-J!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107f2c4d-c8e1-4fbc-9440-1936a3d3a40c_708x188.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Mq-J!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107f2c4d-c8e1-4fbc-9440-1936a3d3a40c_708x188.png 424w, https://substackcdn.com/image/fetch/$s_!Mq-J!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107f2c4d-c8e1-4fbc-9440-1936a3d3a40c_708x188.png 848w, https://substackcdn.com/image/fetch/$s_!Mq-J!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107f2c4d-c8e1-4fbc-9440-1936a3d3a40c_708x188.png 1272w, https://substackcdn.com/image/fetch/$s_!Mq-J!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107f2c4d-c8e1-4fbc-9440-1936a3d3a40c_708x188.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Mq-J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107f2c4d-c8e1-4fbc-9440-1936a3d3a40c_708x188.png" width="708" height="188" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/107f2c4d-c8e1-4fbc-9440-1936a3d3a40c_708x188.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:188,&quot;width&quot;:708,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:31002,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/174701863?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107f2c4d-c8e1-4fbc-9440-1936a3d3a40c_708x188.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Mq-J!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107f2c4d-c8e1-4fbc-9440-1936a3d3a40c_708x188.png 424w, https://substackcdn.com/image/fetch/$s_!Mq-J!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107f2c4d-c8e1-4fbc-9440-1936a3d3a40c_708x188.png 848w, https://substackcdn.com/image/fetch/$s_!Mq-J!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107f2c4d-c8e1-4fbc-9440-1936a3d3a40c_708x188.png 1272w, https://substackcdn.com/image/fetch/$s_!Mq-J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107f2c4d-c8e1-4fbc-9440-1936a3d3a40c_708x188.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>At the time, I had just moved to Germany to finish my Bachelor&#8217;s degree at TU Berlin.</p><p>I was working on a lot of cool projects &#8212; like a farming robot and some Kubernetes-related stuff.</p><p>At some point, I thought it might be cool to have a diary or a blog to document all these projects. It could also benefit me in the long run, especially since I saw how others were thriving by sharing their work.</p><p>I still remember writing those first few lines and realizing how much I didn&#8217;t know. It made me think &#8212; there were countless ways I could have approached projects differently, and so many design decisions I hadn&#8217;t thought through carefully enough.</p><p>Writing forced me to rethink them.</p><p>So I started sharing the different projects I worked on, along with whatever else interested me in my free time &#8212; computer was my buddy 24/7, so yeah...</p><p>For about two years, Medium was my go-to platform, and I was actually doing better than I expected.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xP0i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc10d9491-c4b3-4842-832a-1885b3fa8cfb_1975x1180.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xP0i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc10d9491-c4b3-4842-832a-1885b3fa8cfb_1975x1180.png 424w, https://substackcdn.com/image/fetch/$s_!xP0i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc10d9491-c4b3-4842-832a-1885b3fa8cfb_1975x1180.png 848w, https://substackcdn.com/image/fetch/$s_!xP0i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc10d9491-c4b3-4842-832a-1885b3fa8cfb_1975x1180.png 1272w, https://substackcdn.com/image/fetch/$s_!xP0i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc10d9491-c4b3-4842-832a-1885b3fa8cfb_1975x1180.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xP0i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc10d9491-c4b3-4842-832a-1885b3fa8cfb_1975x1180.png" width="1456" height="870" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c10d9491-c4b3-4842-832a-1885b3fa8cfb_1975x1180.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:870,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:100497,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/174701863?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc10d9491-c4b3-4842-832a-1885b3fa8cfb_1975x1180.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xP0i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc10d9491-c4b3-4842-832a-1885b3fa8cfb_1975x1180.png 424w, https://substackcdn.com/image/fetch/$s_!xP0i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc10d9491-c4b3-4842-832a-1885b3fa8cfb_1975x1180.png 848w, https://substackcdn.com/image/fetch/$s_!xP0i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc10d9491-c4b3-4842-832a-1885b3fa8cfb_1975x1180.png 1272w, https://substackcdn.com/image/fetch/$s_!xP0i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc10d9491-c4b3-4842-832a-1885b3fa8cfb_1975x1180.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Khlj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F404626bb-7be1-4664-8d3d-3ba7e22ed42e_2438x1166.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Khlj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F404626bb-7be1-4664-8d3d-3ba7e22ed42e_2438x1166.png 424w, https://substackcdn.com/image/fetch/$s_!Khlj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F404626bb-7be1-4664-8d3d-3ba7e22ed42e_2438x1166.png 848w, https://substackcdn.com/image/fetch/$s_!Khlj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F404626bb-7be1-4664-8d3d-3ba7e22ed42e_2438x1166.png 1272w, https://substackcdn.com/image/fetch/$s_!Khlj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F404626bb-7be1-4664-8d3d-3ba7e22ed42e_2438x1166.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Khlj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F404626bb-7be1-4664-8d3d-3ba7e22ed42e_2438x1166.png" width="1456" height="696" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/404626bb-7be1-4664-8d3d-3ba7e22ed42e_2438x1166.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:696,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:202905,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/174701863?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F404626bb-7be1-4664-8d3d-3ba7e22ed42e_2438x1166.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Khlj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F404626bb-7be1-4664-8d3d-3ba7e22ed42e_2438x1166.png 424w, https://substackcdn.com/image/fetch/$s_!Khlj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F404626bb-7be1-4664-8d3d-3ba7e22ed42e_2438x1166.png 848w, https://substackcdn.com/image/fetch/$s_!Khlj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F404626bb-7be1-4664-8d3d-3ba7e22ed42e_2438x1166.png 1272w, https://substackcdn.com/image/fetch/$s_!Khlj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F404626bb-7be1-4664-8d3d-3ba7e22ed42e_2438x1166.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Stats from one of my posts</figcaption></figure></div><p>By the way, if you&#8217;re wondering about that steep growth just before 2024 &#8212; it&#8217;s because some of my posts were selected for Medium&#8217;s Boost program, which foster authentic and unique posts on other people&#8217;s dashboards.</p><h2>Going away from Medium at the end of 2024</h2><p>In my opinion back then, Medium had gotten a lot worse for many writers in the AI era. </p><p>The platform just couldn&#8217;t filter or deter AI-generated content effectively, and it started to feel more like a competition over who could post more often rather than who could create valuable work.</p><p>And while I did see a lot of traffic on my posts, I just didn&#8217;t enjoy scrolling through the dashboard anymore &#8212; out of 10 posts I saw, more than half were clickbaits with practical non-sense and false assumptions.</p><blockquote><p><em>I don&#8217;t mean to discourage any writers or throw shade on the people who post there &#8212; many share amazing stuff; it&#8217;s just hard to find.</em></p></blockquote><p>I had a feeling others would start to feel the same. So I made a bold move and switched to Substack. Starting from zero, again&#8230;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!plRN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03f13dc3-50ba-43ff-8888-9503a7184ded_1570x490.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!plRN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03f13dc3-50ba-43ff-8888-9503a7184ded_1570x490.png 424w, https://substackcdn.com/image/fetch/$s_!plRN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03f13dc3-50ba-43ff-8888-9503a7184ded_1570x490.png 848w, https://substackcdn.com/image/fetch/$s_!plRN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03f13dc3-50ba-43ff-8888-9503a7184ded_1570x490.png 1272w, https://substackcdn.com/image/fetch/$s_!plRN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03f13dc3-50ba-43ff-8888-9503a7184ded_1570x490.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!plRN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03f13dc3-50ba-43ff-8888-9503a7184ded_1570x490.png" width="1456" height="454" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/03f13dc3-50ba-43ff-8888-9503a7184ded_1570x490.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:454,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:70030,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/174701863?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03f13dc3-50ba-43ff-8888-9503a7184ded_1570x490.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!plRN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03f13dc3-50ba-43ff-8888-9503a7184ded_1570x490.png 424w, https://substackcdn.com/image/fetch/$s_!plRN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03f13dc3-50ba-43ff-8888-9503a7184ded_1570x490.png 848w, https://substackcdn.com/image/fetch/$s_!plRN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03f13dc3-50ba-43ff-8888-9503a7184ded_1570x490.png 1272w, https://substackcdn.com/image/fetch/$s_!plRN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03f13dc3-50ba-43ff-8888-9503a7184ded_1570x490.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I wouldn&#8217;t say Substack has less AI-generated content, but what makes the difference is the ability to reach readers directly &#8212; and I think they appreciate that more personal approach, with less &#8220;AI friction,&#8221; since the posts arrive straight in their inbox.</p><p>And I think this will also be the way forward for any social media platform.</p><p>LinkedIn is great-ish, Medium is great-ish, and so are others &#8212; but for people who want to avoid all the noise just to find something valuable, it&#8217;s becoming a bit too much.</p><p>This in a way also makes it harder for you to reach new subscribers, because each one of them thinks twice before subscribing. No one likes trash in their inbox.</p><p>But that&#8217;s actually not a bad thing at all. Those who subscribe truly want to hear from you, and you don&#8217;t have to worry about casual followers who&#8217;d probably unsubscribe later anyway.</p><div><hr></div><p>During that time I also finished my Bachelor Degree at TU Berlin and pursued my Master Degree at the Computer Science Faculty in Slovenia, Ljubljana and later finishing it in Vienna at TU Wien.</p><p>Besides my studies, I also started working as an intern at a research laboratory.</p><p>I surrounded myself with people at the university who had both diverse industry experience and a strong interest in researching next-generation technologies.</p><p>During one of the courses, my professor briefly mentioned the problem of cold starts in FaaS environments.</p><p>In short, it&#8217;s the time you have to wait for the FaaS platform to spawn a container behind the scenes to serve your request &#8212; think of it, like running <code>docker run</code>, which usually takes about a second or so.</p><p>So I started looking around the web, trying to understand the problem better and the following Cloudflare article popped out to me about <strong><a href="https://blog.cloudflare.com/eliminating-cold-starts-with-cloudflare-workers/">Eliminating cold starts with Cloudflare Workers</a>.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5bJj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F494e1f87-af53-454c-8607-956463a3eca6_1460x838.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5bJj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F494e1f87-af53-454c-8607-956463a3eca6_1460x838.png 424w, https://substackcdn.com/image/fetch/$s_!5bJj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F494e1f87-af53-454c-8607-956463a3eca6_1460x838.png 848w, https://substackcdn.com/image/fetch/$s_!5bJj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F494e1f87-af53-454c-8607-956463a3eca6_1460x838.png 1272w, https://substackcdn.com/image/fetch/$s_!5bJj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F494e1f87-af53-454c-8607-956463a3eca6_1460x838.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5bJj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F494e1f87-af53-454c-8607-956463a3eca6_1460x838.png" width="1456" height="836" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/494e1f87-af53-454c-8607-956463a3eca6_1460x838.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:836,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:228977,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/174701863?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F494e1f87-af53-454c-8607-956463a3eca6_1460x838.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5bJj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F494e1f87-af53-454c-8607-956463a3eca6_1460x838.png 424w, https://substackcdn.com/image/fetch/$s_!5bJj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F494e1f87-af53-454c-8607-956463a3eca6_1460x838.png 848w, https://substackcdn.com/image/fetch/$s_!5bJj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F494e1f87-af53-454c-8607-956463a3eca6_1460x838.png 1272w, https://substackcdn.com/image/fetch/$s_!5bJj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F494e1f87-af53-454c-8607-956463a3eca6_1460x838.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So I pinged Cloudflare maintainers on Discord, without much success &#8212; figuring out later that the code that performs the &#8220;pre-warmup&#8220; of the container isn&#8217;t open-source.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sizu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42e0ec49-fb3b-417d-bcb5-f14666656637_1386x678.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sizu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42e0ec49-fb3b-417d-bcb5-f14666656637_1386x678.png 424w, https://substackcdn.com/image/fetch/$s_!sizu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42e0ec49-fb3b-417d-bcb5-f14666656637_1386x678.png 848w, https://substackcdn.com/image/fetch/$s_!sizu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42e0ec49-fb3b-417d-bcb5-f14666656637_1386x678.png 1272w, https://substackcdn.com/image/fetch/$s_!sizu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42e0ec49-fb3b-417d-bcb5-f14666656637_1386x678.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sizu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42e0ec49-fb3b-417d-bcb5-f14666656637_1386x678.png" width="1386" height="678" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/42e0ec49-fb3b-417d-bcb5-f14666656637_1386x678.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:678,&quot;width&quot;:1386,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:287922,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/174701863?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42e0ec49-fb3b-417d-bcb5-f14666656637_1386x678.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sizu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42e0ec49-fb3b-417d-bcb5-f14666656637_1386x678.png 424w, https://substackcdn.com/image/fetch/$s_!sizu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42e0ec49-fb3b-417d-bcb5-f14666656637_1386x678.png 848w, https://substackcdn.com/image/fetch/$s_!sizu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42e0ec49-fb3b-417d-bcb5-f14666656637_1386x678.png 1272w, https://substackcdn.com/image/fetch/$s_!sizu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42e0ec49-fb3b-417d-bcb5-f14666656637_1386x678.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So I thought &#8212; if this ain&#8217;t open-source, why not try to do it using Docker containers and some &#8220;other technology&#8221;.</p><p>The problem was clear to me that I should be able to capture the 1st TLS packet and somehow spawn the container, while the handshake is still occuring &#8212; consequently reducing cold start.</p><p>And I ended seeing the eBPF word online more often, as a way to capture and parse network packets. And not really quickly, but after some things started to conceptually make sense.</p><p>Although I didn&#8217;t knew much about eBPF, but according to the <a href="https://github.com/xdp-project/xdp-tutorial">xdp-project/xdp-tutorial</a> GitHub repository that I was able to find, capturing and parsing network traffic was possible using eBPF/XDP.</p><p>I eventually ended-up finishing the project above (which I could only post much later due to the research publication constraints) and if you&#8217;re interested - here&#8217;s the link:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;22fd03ff-669b-4ece-835e-044d30a2dc3b&quot;,&quot;caption&quot;:&quot;It was back in 2021, just before the COVID-19 crisis erupted, that I first encountered some personal use cases that could benefit from the concept of Serverless and FaaS.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Reducing Cold Start Delays by 50% in Serverless and FaaS Environments with eBPF&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:97799770,&quot;name&quot;:&quot;Teodor J. Podobnik&quot;,&quot;bio&quot;:&quot;Tech Lead @ Prewave | Master of Science in Computer Science&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/940b6215-817a-4ae6-ac2a-70954973d197_4844x3229.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-03-21T17:55:43.616Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86e4ff85-25c1-4159-9581-0f28bd6e02e4_1548x734.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://ebpfchirp.substack.com/p/reducing-cold-start-delays-by-50&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:158594423,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:10,&quot;comment_count&quot;:5,&quot;publication_id&quot;:2062956,&quot;publication_name&quot;:&quot;eBPFChirp&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!ROHf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81669290-70b8-41e7-931e-cd0d6999ccf6_639x639.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><blockquote><p><em>Why am I mentioning this?</em></p></blockquote><p>Because exactly then was the time, when eBPFChirp idea was born.</p><h2>Starting eBPFChirp in mid-2024</h2><p>When I was tackling the problem of cold starts back then, hardly anyone was writing about eBPF &#8212; except for Bill Mulligan and a few folks speaking about it at conferences.</p><p>Information was scarce. Sometimes, I&#8217;d even end up reading Linux kernel patches just to wrap my head around certain concepts.</p><p>I just couldn&#8217;t find a single blog that explained eBPF in a simple, &#8220;kid-like&#8221; way &#8212; something that said, <em>&#8220;Hey, this is eBPF, here&#8217;s how it works, and here&#8217;s how you can use it.&#8221;</em></p><blockquote><p><em>I wish I could say my newsletter could be read by a kid &#8212; but that&#8217;s kinda hard when it also needs to be appealing for both beginners and advanced eBPF users. So yeah, it&#8217;s a bit of a double-edged sword.</em></p></blockquote><p>So I guess it was the hard way &#8212; but also an exciting one, because writing about something few others do is what sets me apart and gives me joy, knowing I can bring real value.</p><p>Going through different open-source projects, rewriting them, tweaking a few lines of code and observed what was happening was getting me better and better in understanding the ins-and-outs.</p><p>But at the same time, I also wanted to build on all the mistakes I made back when I was writing on Medium. Things like:</p><ul><li><p>Improving post titles to give readers a clear idea of what to expect</p></li><li><p>Design custom images with warm colors</p></li><li><p>Preferring short paragraphs over long unformatted content</p></li><li><p>Breaking down tech buzzwords</p></li></ul><p>And the list goes on...</p><p>I also had to rethink how to market and distribute my content, because let&#8217;s be honest &#8212; readers rarely share a post after reading it, and it&#8217;s kind of impossible to expect a newsletter to grow organically on its own. Especially when you start from zero.</p><p>For that matter, I see LinkedIn as a great platform to connect with people &#8212; and I wanted to capture and redirect as many of them as possible to my newsletter.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!x5sL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff79f1f51-53c8-47d7-bb50-c5dac561a9bd_1638x798.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x5sL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff79f1f51-53c8-47d7-bb50-c5dac561a9bd_1638x798.png 424w, https://substackcdn.com/image/fetch/$s_!x5sL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff79f1f51-53c8-47d7-bb50-c5dac561a9bd_1638x798.png 848w, https://substackcdn.com/image/fetch/$s_!x5sL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff79f1f51-53c8-47d7-bb50-c5dac561a9bd_1638x798.png 1272w, https://substackcdn.com/image/fetch/$s_!x5sL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff79f1f51-53c8-47d7-bb50-c5dac561a9bd_1638x798.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!x5sL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff79f1f51-53c8-47d7-bb50-c5dac561a9bd_1638x798.png" width="1456" height="709" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f79f1f51-53c8-47d7-bb50-c5dac561a9bd_1638x798.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:709,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:487800,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/174701863?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff79f1f51-53c8-47d7-bb50-c5dac561a9bd_1638x798.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!x5sL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff79f1f51-53c8-47d7-bb50-c5dac561a9bd_1638x798.png 424w, https://substackcdn.com/image/fetch/$s_!x5sL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff79f1f51-53c8-47d7-bb50-c5dac561a9bd_1638x798.png 848w, https://substackcdn.com/image/fetch/$s_!x5sL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff79f1f51-53c8-47d7-bb50-c5dac561a9bd_1638x798.png 1272w, https://substackcdn.com/image/fetch/$s_!x5sL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff79f1f51-53c8-47d7-bb50-c5dac561a9bd_1638x798.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><blockquote><p><em>One might say, the number of followers actually made it easier for me to distribute and reach other people &#8212; but it was actually reposting eBPFChirp blog posts on Linkedin that help me grow it.</em></p></blockquote><p>I&#8217;m still working on the <em>marketing side of blogging</em> and learning something new every week &#8212; whether it&#8217;s:</p><ul><li><p>Writing more compelling LinkedIn posts</p></li><li><p>Collaborating with other authors</p></li><li><p>Approaching people at conferences and talking about eBPF</p></li><li><p>Figuring out which eBPF topics people are most interested in</p></li><li><p>Stepping out of my comfort zone to start the <strong>eBPFChirp FM</strong> podcast</p></li><li><p>Speaking at meetups and conferences</p></li></ul><p>&#8230;and the list goes on.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0uKe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b3de958-21eb-447f-a78b-d058ea814f9d_4096x1536.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0uKe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b3de958-21eb-447f-a78b-d058ea814f9d_4096x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0uKe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b3de958-21eb-447f-a78b-d058ea814f9d_4096x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0uKe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b3de958-21eb-447f-a78b-d058ea814f9d_4096x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0uKe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b3de958-21eb-447f-a78b-d058ea814f9d_4096x1536.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0uKe!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b3de958-21eb-447f-a78b-d058ea814f9d_4096x1536.jpeg" width="1200" height="450" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1b3de958-21eb-447f-a78b-d058ea814f9d_4096x1536.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:546,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:1044835,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/174701863?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b3de958-21eb-447f-a78b-d058ea814f9d_4096x1536.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0uKe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b3de958-21eb-447f-a78b-d058ea814f9d_4096x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0uKe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b3de958-21eb-447f-a78b-d058ea814f9d_4096x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0uKe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b3de958-21eb-447f-a78b-d058ea814f9d_4096x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0uKe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b3de958-21eb-447f-a78b-d058ea814f9d_4096x1536.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>And over time, a lot of seemingly unrelated things found their common thread:</p><ul><li><p>Running <strong>eBPFChirp FM Podcasts</strong> helped me build confidence speaking in a foreign language and presenting at conferences.</p></li><li><p>Helping others grow also helped me grow my own brand.</p></li><li><p>Writing pushed me to simplify complex ideas &#8212; it&#8217;s one thing to understand eBPF deeply, and another to explain it clearly.</p></li><li><p>And it opened new doors &#8212; invitations to conferences, collaborations with open-source maintainers, and even new business opportunities.</p></li></ul><p>I also recently became a <strong>Fellow of the eBPF Foundation</strong>, but what felt even more fulfilling to me was being listed as a <strong>judge for the eBPF Hackathon</strong>, alongside some truly renowned names in the eBPF community.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YvMM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F478be524-3c0c-4bc6-a1be-1b30d7e9b1d2_1332x1254.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YvMM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F478be524-3c0c-4bc6-a1be-1b30d7e9b1d2_1332x1254.png 424w, https://substackcdn.com/image/fetch/$s_!YvMM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F478be524-3c0c-4bc6-a1be-1b30d7e9b1d2_1332x1254.png 848w, https://substackcdn.com/image/fetch/$s_!YvMM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F478be524-3c0c-4bc6-a1be-1b30d7e9b1d2_1332x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!YvMM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F478be524-3c0c-4bc6-a1be-1b30d7e9b1d2_1332x1254.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YvMM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F478be524-3c0c-4bc6-a1be-1b30d7e9b1d2_1332x1254.png" width="1332" height="1254" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/478be524-3c0c-4bc6-a1be-1b30d7e9b1d2_1332x1254.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1254,&quot;width&quot;:1332,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:447211,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/174701863?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F478be524-3c0c-4bc6-a1be-1b30d7e9b1d2_1332x1254.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YvMM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F478be524-3c0c-4bc6-a1be-1b30d7e9b1d2_1332x1254.png 424w, https://substackcdn.com/image/fetch/$s_!YvMM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F478be524-3c0c-4bc6-a1be-1b30d7e9b1d2_1332x1254.png 848w, https://substackcdn.com/image/fetch/$s_!YvMM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F478be524-3c0c-4bc6-a1be-1b30d7e9b1d2_1332x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!YvMM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F478be524-3c0c-4bc6-a1be-1b30d7e9b1d2_1332x1254.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>All of these things fulfill me in many ways, but I&#8217;m still far from where I want to be.</p><h2>Present Situation</h2><p>Today, I&#8217;m really happy with how <strong>eBPFChirp</strong> is evolving &#8212; every month, around 50 to 100 new subscribers join, and it&#8217;s grown to the point where I don&#8217;t even keep track anymore.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mI7G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e48d21c-5281-4c48-a60d-7215607fda28_1756x904.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mI7G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e48d21c-5281-4c48-a60d-7215607fda28_1756x904.png 424w, https://substackcdn.com/image/fetch/$s_!mI7G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e48d21c-5281-4c48-a60d-7215607fda28_1756x904.png 848w, https://substackcdn.com/image/fetch/$s_!mI7G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e48d21c-5281-4c48-a60d-7215607fda28_1756x904.png 1272w, https://substackcdn.com/image/fetch/$s_!mI7G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e48d21c-5281-4c48-a60d-7215607fda28_1756x904.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mI7G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e48d21c-5281-4c48-a60d-7215607fda28_1756x904.png" width="1456" height="750" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9e48d21c-5281-4c48-a60d-7215607fda28_1756x904.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:750,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:164100,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://ebpfchirp.substack.com/i/174701863?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e48d21c-5281-4c48-a60d-7215607fda28_1756x904.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mI7G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e48d21c-5281-4c48-a60d-7215607fda28_1756x904.png 424w, https://substackcdn.com/image/fetch/$s_!mI7G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e48d21c-5281-4c48-a60d-7215607fda28_1756x904.png 848w, https://substackcdn.com/image/fetch/$s_!mI7G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e48d21c-5281-4c48-a60d-7215607fda28_1756x904.png 1272w, https://substackcdn.com/image/fetch/$s_!mI7G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e48d21c-5281-4c48-a60d-7215607fda28_1756x904.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Some read often, some less &#8212; but it&#8217;s an incredible feeling knowing people want my posts delivered straight to their inbox whenever I publish.</p><p>Lately, I&#8217;ve also been thinking a lot about how to <strong>monetize</strong> it &#8212; mostly because of how much energy it takes. Not in a bad way, but, well&#8230; something has to pay the bills, you know &#128517;</p><p>I&#8217;m still far from that point, but I&#8217;ve started to allow myself to visualize a future where <strong>eBPFChirp</strong> becomes something I do full-time. It&#8217;s not forbidden to dream, right?</p><p>It&#8217;s almost 3 AM, and I&#8217;m wrapping up this reflection &#8212; but hey, this is what I love to do.</p><p>Best, Teodor</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://ebpfchirp.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">eBPFChirp is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Interview with Avi Lumelsky, AI Security Researcher at Oligo Security]]></title><description><![CDATA[This time I sat down with Avi Lumelsky, AI Security Researcher at Oligo Security, where he works at the intersection of AI and runtime protection.]]></description><link>https://ebpfchirp.substack.com/p/interview-with-avi-lumelsky-ai-security</link><guid isPermaLink="false">https://ebpfchirp.substack.com/p/interview-with-avi-lumelsky-ai-security</guid><dc:creator><![CDATA[Teodor J. Podobnik]]></dc:creator><pubDate>Tue, 21 Oct 2025 12:02:34 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/175982409/5651f1be56b8dad0f8360ccae8ab9cab.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>This time I sat down with <strong><a href="https://www.linkedin.com/in/avi-lumelsky-713111144/">Avi Lumelsky</a></strong>, AI Security Researcher at <strong><a href="https://www.oligo.security/">Oligo Security</a></strong>, where he works at the intersection of AI and runtime protection. Avi&#8217;s story is a perfect example of how curiosity leads to innovation. Here are some of the topics we covered:</p><ul><li><p><strong>From inference to insight</strong><br>Before Oligo, Avi worked at Deci AI, optimizing model inference speed. There, he realized something crucial &#8212; performance isn&#8217;t just about models; it&#8217;s also about how well you understand and leverage the system it runs on.</p></li><li><p><strong>The confinement challenge</strong><br>Imagine a Python model that should <em>only</em> do math, but could also spawn a subprocess or access the network. How do you confine it safely?</p></li><li><p><strong>Discovering eBPF</strong><br>His early experiments with DTrace were too slow and invasive for production, so when eBPF matured, he rebuilt his <a href="https://github.com/avilum/secimport">secimport</a> prototype &#8212; and found a scalable way to trace and enforce what code can (and can&#8217;t) do in real time.</p></li><li><p><strong>Beyond observability</strong><br>Avi&#8217;s big insight: eBPF isn&#8217;t just for monitoring. Combined with Linux Security Modules (LSM) and KRSI, it can <em>actively</em> stop malicious behavior before it completes &#8212; for example, blocking a rogue <code>pickle.load()</code> before it spawns a shell.</p></li><li><p><strong>Language-aware security</strong><br>At Oligo, Avi&#8217;s team extended this concept across languages &#8212; Python, Java, Node, .NET, PHP &#8212; extracting application-level context straight from production without user-space overhead.</p></li><li><p><strong>From CVEs to context</strong><br>Instead of flagging every potential vulnerability, Oligo maps which <em>functions</em> actually run in production, reducing noise and focusing developer effort where it matters most.</p></li><li><p><strong>The AI connection</strong><br>We also discussed how AI agents could soon <em>operate eBPF </em>&#8212; dynamically tuning kernel parameters or deploying probes on demand, creating adaptive, self-healing systems.</p></li><li><p><strong>Looking ahead</strong><br>Avi sees a future where security tooling merges with intelligence &#8212; where production data directly informs code fixes, and AI uses eBPF to keep systems resilient in real time.</p></li></ul><p>&#128029; I&#8217;ll leave it there &#8212; hope you enjoy the conversation.</p>]]></content:encoded></item></channel></rss>