<?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[The Hypervisor: Networking]]></title><description><![CDATA[A series of posts on the topic of Networking]]></description><link>https://www.thehypervisor.blog/s/networking</link><image><url>https://substackcdn.com/image/fetch/$s_!eCSK!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf7f1646-9248-40c8-a717-6f1ed8bb8d61_800x800.png</url><title>The Hypervisor: Networking</title><link>https://www.thehypervisor.blog/s/networking</link></image><generator>Substack</generator><lastBuildDate>Tue, 30 Jun 2026 05:30:55 GMT</lastBuildDate><atom:link href="https://www.thehypervisor.blog/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Matthew Leone]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[thehypervisor@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[thehypervisor@substack.com]]></itunes:email><itunes:name><![CDATA[Matthew Leon]]></itunes:name></itunes:owner><itunes:author><![CDATA[Matthew Leon]]></itunes:author><googleplay:owner><![CDATA[thehypervisor@substack.com]]></googleplay:owner><googleplay:email><![CDATA[thehypervisor@substack.com]]></googleplay:email><googleplay:author><![CDATA[Matthew Leon]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Using Tcpdump to Observe Linux Networking]]></title><description><![CDATA[Networking is a core functionality of any operating system, including Linux.]]></description><link>https://www.thehypervisor.blog/p/using-tcpdump-to-observe-linux-networking</link><guid isPermaLink="false">https://www.thehypervisor.blog/p/using-tcpdump-to-observe-linux-networking</guid><dc:creator><![CDATA[Matthew Leon]]></dc:creator><pubDate>Tue, 14 Jan 2025 23:02:39 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/0e635f2d-3000-4dce-b011-5b349ed1416c_1280x720.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Networking is a core functionality of any operating system, including Linux. It enables us to connect with other systems that people are operating and are building on. One of my current projects is building a hyperscaler, and I figure that sharing my knowledge of some of the tools that I am using and will use to implement the networking for the scaler would be valuable for others to read. I want to build up to my scaler&#8217;s full functionality by laying the groundwork of the existing systems that I rely on, and it starts with getting basic networking working on Linux and understanding the debugging and troubleshooting tools that I rely on.<br><br>This leads up to tcpdump, which is a networking interface monitoring tool. This tool allows us to inspect the traffic that is flowing across networking interfaces on Linux. A networking interface in any operating system is the means by which we can connect our physical machine to the network and operate it at the software, userspace level.</p><p>This post is a walkthrough of how we can use Linux networking interfaces and tcpdump to observe the traffic going across our host. For this example, we are going to show different ways to use tcpdump to observe traffic:</p><p></p><p>The first example is to just dump all the traffic going through our physical NIC. First we need to figure out what our external-facing NIC is, and we do the following:</p><pre><code>ip route show</code></pre><p>We should see a default entry that looks like the following:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hq11!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61ab25f9-6cb2-4ca2-b40d-e9fb113e1707_717x31.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hq11!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61ab25f9-6cb2-4ca2-b40d-e9fb113e1707_717x31.png 424w, https://substackcdn.com/image/fetch/$s_!Hq11!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61ab25f9-6cb2-4ca2-b40d-e9fb113e1707_717x31.png 848w, https://substackcdn.com/image/fetch/$s_!Hq11!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61ab25f9-6cb2-4ca2-b40d-e9fb113e1707_717x31.png 1272w, https://substackcdn.com/image/fetch/$s_!Hq11!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61ab25f9-6cb2-4ca2-b40d-e9fb113e1707_717x31.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hq11!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61ab25f9-6cb2-4ca2-b40d-e9fb113e1707_717x31.png" width="717" height="31" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/61ab25f9-6cb2-4ca2-b40d-e9fb113e1707_717x31.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:31,&quot;width&quot;:717,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5269,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Hq11!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61ab25f9-6cb2-4ca2-b40d-e9fb113e1707_717x31.png 424w, https://substackcdn.com/image/fetch/$s_!Hq11!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61ab25f9-6cb2-4ca2-b40d-e9fb113e1707_717x31.png 848w, https://substackcdn.com/image/fetch/$s_!Hq11!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61ab25f9-6cb2-4ca2-b40d-e9fb113e1707_717x31.png 1272w, https://substackcdn.com/image/fetch/$s_!Hq11!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61ab25f9-6cb2-4ca2-b40d-e9fb113e1707_717x31.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>This tells us our NIC for accessing the internet is enp14s0. Next run the following command:</p><pre><code>sudo tcpdump -i enp14s0</code></pre><p>We should see all of our traffic running across the NIC. This is a straight dump of all the traffic and it helps us understand what our network is doing. For the next example, open 2 terminals and run these in separate terminals:</p><pre><code><code>sudo tcpdump -i enp14s0 -n icmp</code></code></pre><p>and in another terminal run:</p><pre><code><code>ping 192.168.1.29</code></code></pre><p>Go back to your tcpdump terminal and should see traffic that looks like this:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0xgK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a509fad-eda8-4efa-8cc7-8d7e78ba6492_1152x112.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0xgK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a509fad-eda8-4efa-8cc7-8d7e78ba6492_1152x112.png 424w, https://substackcdn.com/image/fetch/$s_!0xgK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a509fad-eda8-4efa-8cc7-8d7e78ba6492_1152x112.png 848w, https://substackcdn.com/image/fetch/$s_!0xgK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a509fad-eda8-4efa-8cc7-8d7e78ba6492_1152x112.png 1272w, https://substackcdn.com/image/fetch/$s_!0xgK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a509fad-eda8-4efa-8cc7-8d7e78ba6492_1152x112.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0xgK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a509fad-eda8-4efa-8cc7-8d7e78ba6492_1152x112.png" width="1152" height="112" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a509fad-eda8-4efa-8cc7-8d7e78ba6492_1152x112.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:112,&quot;width&quot;:1152,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:37858,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0xgK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a509fad-eda8-4efa-8cc7-8d7e78ba6492_1152x112.png 424w, https://substackcdn.com/image/fetch/$s_!0xgK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a509fad-eda8-4efa-8cc7-8d7e78ba6492_1152x112.png 848w, https://substackcdn.com/image/fetch/$s_!0xgK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a509fad-eda8-4efa-8cc7-8d7e78ba6492_1152x112.png 1272w, https://substackcdn.com/image/fetch/$s_!0xgK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a509fad-eda8-4efa-8cc7-8d7e78ba6492_1152x112.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>We can run tcpdump and specify a specific protocol like ICMP that we want to capture the traffic on. This makes it really useful for observing and debugging network configurations as ICMP is used for validating and testing network functionality. Finally, run the following:</p><pre><code><code>sudo tcpdump -i enp14s0 -n -v port 443</code></code></pre><p>and in another terminal run:</p><pre><code><code>curl https://www.thehypervisor.blog &gt; /dev/null</code></code></pre><p>Go to the tcpdump terminal, and you should see something like this:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PXx4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec3c6617-2768-4436-9399-644d6f4409fb_3370x244.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PXx4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec3c6617-2768-4436-9399-644d6f4409fb_3370x244.png 424w, https://substackcdn.com/image/fetch/$s_!PXx4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec3c6617-2768-4436-9399-644d6f4409fb_3370x244.png 848w, https://substackcdn.com/image/fetch/$s_!PXx4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec3c6617-2768-4436-9399-644d6f4409fb_3370x244.png 1272w, https://substackcdn.com/image/fetch/$s_!PXx4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec3c6617-2768-4436-9399-644d6f4409fb_3370x244.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PXx4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec3c6617-2768-4436-9399-644d6f4409fb_3370x244.png" width="1456" height="105" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ec3c6617-2768-4436-9399-644d6f4409fb_3370x244.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:105,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:127398,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PXx4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec3c6617-2768-4436-9399-644d6f4409fb_3370x244.png 424w, https://substackcdn.com/image/fetch/$s_!PXx4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec3c6617-2768-4436-9399-644d6f4409fb_3370x244.png 848w, https://substackcdn.com/image/fetch/$s_!PXx4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec3c6617-2768-4436-9399-644d6f4409fb_3370x244.png 1272w, https://substackcdn.com/image/fetch/$s_!PXx4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec3c6617-2768-4436-9399-644d6f4409fb_3370x244.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>This shows that we can specify the specific networking port that we want to capture traffic on as well. In this case, we are tracking port 443 because that is the port used for HTTPS traffic, and curl allows us to initiate an HTTPS connection using the network transport protocol: TCP.</p><p>In summary, we can use tcpdump for observing and debugging issues at any level of our networking stack, which corresponds to the OSI model. Network software engineers use this tool frequently to verify that their software and networking configurations work properly.<br></p>]]></content:encoded></item></channel></rss>