<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Network Archives - Tom Barbette</title>
	<atom:link href="https://perso.uclouvain.be/tom.barbette/category/passions/network/feed/" rel="self" type="application/rss+xml" />
	<link>https://perso.uclouvain.be/tom.barbette/category/passions/network/</link>
	<description></description>
	<lastBuildDate>Thu, 04 Dec 2025 09:12:29 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2022/04/cropped-logo-uclouvain-2021-barbette-32x32.png</url>
	<title>Network Archives - Tom Barbette</title>
	<link>https://perso.uclouvain.be/tom.barbette/category/passions/network/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Multi-End QUIC: A Transport Protocol to Enable One-to-Many Communications</title>
		<link>https://perso.uclouvain.be/tom.barbette/multiend/</link>
		
		<dc:creator><![CDATA[Tom Barbette]]></dc:creator>
		<pubDate>Thu, 04 Dec 2025 09:10:51 +0000</pubDate>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Research project]]></category>
		<guid isPermaLink="false">https://perso.uclouvain.be/tom.barbette/?p=5613</guid>

					<description><![CDATA[<p>El Mehdi Makhroute, Quentin De Coninck, Tom Barbette The Internet has shifted from an end-to-end paradigm to an end-to-ends paradigm, i.e. to serve a provider&#8217;s content (e.g. a web page, an app feed, …) the client must connect to many ends to fetch various types of resources like web documents, pictures, scripts, news feed, videos, &#8230; </p>
<p class="link-more"><a href="https://perso.uclouvain.be/tom.barbette/multiend/" class="more-link">Continue reading<span class="screen-reader-text"> "Multi-End QUIC: A Transport Protocol to Enable One-to-Many Communications"</span></a></p>
<p>The post <a href="https://perso.uclouvain.be/tom.barbette/multiend/">Multi-End QUIC: A Transport Protocol to Enable One-to-Many Communications</a> appeared first on <a href="https://perso.uclouvain.be/tom.barbette">Tom Barbette</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">
https://dl.acm.org/doi/10.1145/3769700.3771696
</div></figure>



<p class="wp-block-paragraph"><a href="https://dl.acm.org/doi/10.1145/3769700.3771696#">El Mehdi Makhroute</a>, <a href="https://dl.acm.org/doi/10.1145/3769700.3771696#">Quentin De Coninck</a>, <a href="https://dl.acm.org/doi/10.1145/3769700.3771696#">Tom Barbette</a><a href="https://dl.acm.org/doi/10.1145/3769700.3771696#tab-contributors"></a></p>



<figure class="wp-block-image size-full"><a href="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/12/image.png"><img fetchpriority="high" decoding="async" width="826" height="164" src="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/12/image.png" alt="" class="wp-image-5623" srcset="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/12/image.png 826w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/12/image-300x60.png 300w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/12/image-768x152.png 768w" sizes="(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px" /></a></figure>



<p class="wp-block-paragraph">The Internet has shifted from an end-to-end paradigm to an end-to-ends paradigm, i.e. to serve a provider&#8217;s content (e.g. a web page, an app feed, …) the client must connect to many ends to fetch various types of resources like web documents, pictures, scripts, news feed, videos, etc… However, even the recent QUIC transport protocol failed to catch up with this change of paradigm, and the user is forced to waste many round-trip times to fetch the entire content from multiple servers. In this paper, we propose Multi-End QUIC, an extension of Multipath QUIC that enables the establishment of sub-streams directly to backend servers or third-party servers. Multi-End QUIC alleviates the need for proxies in the edge that re-encode and delay those sub-streams, that is able to bypass the relays entirely. This leads to a ~50% latency improvement in a preliminary experiment.</p>



<div data-wp-interactive="core/file" class="wp-block-file"><object data-wp-bind--hidden="!state.hasPdfPreview" hidden class="wp-block-file__embed" data="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/12/conext25-sw-final14.pdf" type="application/pdf" style="width:100%;height:600px" aria-label="Embed of paper."></object><a id="wp-block-file--media-2f4791c9-e0a3-496c-adb8-291aa1184a7f" href="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/12/conext25-sw-final14.pdf">paper</a><a href="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/12/conext25-sw-final14.pdf" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-2f4791c9-e0a3-496c-adb8-291aa1184a7f">Download</a></div>



<p class="wp-block-paragraph"><a href="https://dl.acm.org/doi/10.1145/3769700.3771696">acm</a></p>
<p>The post <a href="https://perso.uclouvain.be/tom.barbette/multiend/">Multi-End QUIC: A Transport Protocol to Enable One-to-Many Communications</a> appeared first on <a href="https://perso.uclouvain.be/tom.barbette">Tom Barbette</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>OpenDesc at HotNets&#8217;25 !</title>
		<link>https://perso.uclouvain.be/tom.barbette/opendesc/</link>
		
		<dc:creator><![CDATA[Tom Barbette]]></dc:creator>
		<pubDate>Tue, 18 Nov 2025 16:14:42 +0000</pubDate>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Research project]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://perso.uclouvain.be/tom.barbette/?p=5533</guid>

					<description><![CDATA[<p>Our paper &#8220;OpenDesc: From Static NIC Descriptors to EvolvableMetadata Interfaces&#8221; will be presented today at HotNets&#8217;25. In OpenDesc, we propose to use P4 as an interface to define packet descriptors. OpenDesc enables to expose NIC capabilities and match them with application intents. We propose a prototype compiler to generate accessors that can directly extract metadata &#8230; </p>
<p class="link-more"><a href="https://perso.uclouvain.be/tom.barbette/opendesc/" class="more-link">Continue reading<span class="screen-reader-text"> "OpenDesc at HotNets&#8217;25 !"</span></a></p>
<p>The post <a href="https://perso.uclouvain.be/tom.barbette/opendesc/">OpenDesc at HotNets&#8217;25 !</a> appeared first on <a href="https://perso.uclouvain.be/tom.barbette">Tom Barbette</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Our paper <em>&#8220;OpenDesc: From Static NIC Descriptors to Evolvable<br>Metadata Interfaces&#8221;</em> will be presented today at HotNets&#8217;25. </p>



<figure class="wp-block-image size-large"><a href="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/11/Screenshot-2025-11-18-at-17-16-03-OpenDesc-From-Static-NIC-Descriptors-to-Evolvable-Metadata-Interfaces-OpenDesc-5.pdf.png"><img decoding="async" width="1024" height="423" src="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/11/Screenshot-2025-11-18-at-17-16-03-OpenDesc-From-Static-NIC-Descriptors-to-Evolvable-Metadata-Interfaces-OpenDesc-5.pdf-1024x423.png" alt="" class="wp-image-5573" srcset="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/11/Screenshot-2025-11-18-at-17-16-03-OpenDesc-From-Static-NIC-Descriptors-to-Evolvable-Metadata-Interfaces-OpenDesc-5.pdf-1024x423.png 1024w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/11/Screenshot-2025-11-18-at-17-16-03-OpenDesc-From-Static-NIC-Descriptors-to-Evolvable-Metadata-Interfaces-OpenDesc-5.pdf-300x124.png 300w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/11/Screenshot-2025-11-18-at-17-16-03-OpenDesc-From-Static-NIC-Descriptors-to-Evolvable-Metadata-Interfaces-OpenDesc-5.pdf-768x317.png 768w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/11/Screenshot-2025-11-18-at-17-16-03-OpenDesc-From-Static-NIC-Descriptors-to-Evolvable-Metadata-Interfaces-OpenDesc-5.pdf-1536x635.png 1536w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/11/Screenshot-2025-11-18-at-17-16-03-OpenDesc-From-Static-NIC-Descriptors-to-Evolvable-Metadata-Interfaces-OpenDesc-5.pdf.png 1612w" sizes="(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px" /></a></figure>



<p class="wp-block-paragraph">In OpenDesc, we propose to use P4 as an interface to define packet descriptors. OpenDesc enables to expose NIC capabilities and match them with application intents. We propose a prototype compiler to generate accessors that can directly extract metadata from a negotiated NIC descriptor without the need for intermediate data structures like sk_buff, xdp_sock, rte_mbuf &amp; cie.</p>



<p class="wp-block-paragraph"><em>Read more below!</em></p>



<div data-wp-interactive="core/file" class="wp-block-file"><object data-wp-bind--hidden="!state.hasPdfPreview" hidden class="wp-block-file__embed" data="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/11/OpenDesc-5.pdf" type="application/pdf" style="width:100%;height:600px" aria-label="Embed of OpenDesc."></object><a id="wp-block-file--media-e16f8335-8397-41b8-ba8f-f53385cef3b9" href="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/11/OpenDesc-5.pdf">OpenDesc</a><a href="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/11/OpenDesc-5.pdf" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-e16f8335-8397-41b8-ba8f-f53385cef3b9">Download</a></div>
<p>The post <a href="https://perso.uclouvain.be/tom.barbette/opendesc/">OpenDesc at HotNets&#8217;25 !</a> appeared first on <a href="https://perso.uclouvain.be/tom.barbette">Tom Barbette</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Flexicast QUIC: Rethinking Multicast for the QUIC Era in SIGCOMM CCR</title>
		<link>https://perso.uclouvain.be/tom.barbette/flexicast-quic-rethinking-multicast-for-the-quic-era-in-sigcomm-ccr/</link>
		
		<dc:creator><![CDATA[Tom Barbette]]></dc:creator>
		<pubDate>Wed, 03 Sep 2025 13:10:13 +0000</pubDate>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Research project]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://perso.uclouvain.be/tom.barbette/?p=5423</guid>

					<description><![CDATA[<p>Our latest paper with Louis Navarre, Quentin de Coninck, Tom Barbette and Olivier Bonaventure has recently appeared in SIGCOMM CCR! In short: Flexicast QUIC brings multicast back to the Internet by blending it with unicast, all within QUIC. It offers scalability where multicast works, and robustness where it doesn’t — making it a practical transport &#8230; </p>
<p class="link-more"><a href="https://perso.uclouvain.be/tom.barbette/flexicast-quic-rethinking-multicast-for-the-quic-era-in-sigcomm-ccr/" class="more-link">Continue reading<span class="screen-reader-text"> "Flexicast QUIC: Rethinking Multicast for the QUIC Era in SIGCOMM CCR"</span></a></p>
<p>The post <a href="https://perso.uclouvain.be/tom.barbette/flexicast-quic-rethinking-multicast-for-the-quic-era-in-sigcomm-ccr/">Flexicast QUIC: Rethinking Multicast for the QUIC Era in SIGCOMM CCR</a> appeared first on <a href="https://perso.uclouvain.be/tom.barbette">Tom Barbette</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Our latest paper with Louis Navarre, Quentin de Coninck, Tom Barbette and Olivier Bonaventure has recently appeared in SIGCOMM CCR!</p>



<p class="wp-block-paragraph"><strong>In short:</strong> Flexicast QUIC brings multicast back to the Internet by blending it with unicast, all within QUIC. It offers scalability where multicast works, and robustness where it doesn’t — making it a practical transport for the next generation of large-scale applications.</p>



<div data-wp-interactive="core/file" class="wp-block-file"><object data-wp-bind--hidden="!state.hasPdfPreview" hidden class="wp-block-file__embed" data="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/09/Flexicast_QUIC_CCR.pdf" type="application/pdf" style="width:100%;height:600px" aria-label="Embed of Flexicast_QUIC_CCR."></object><a id="wp-block-file--media-c0257b1f-1775-4bab-9ff7-2f911f678927" href="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/09/Flexicast_QUIC_CCR.pdf">Flexicast_QUIC_CCR</a><a href="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/09/Flexicast_QUIC_CCR.pdf" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-c0257b1f-1775-4bab-9ff7-2f911f678927">Download</a></div>



<p class="wp-block-paragraph"><a href="https://dl.acm.org/doi/10.1145/3750832.3750834">acm</a> ;  <a href="https://github.com/IPNetworkingLab/flexicast-quic" target="_blank" rel="noreferrer noopener">code</a></p>



<p class="wp-block-paragraph"><strong>In long:</strong></p>



<p class="wp-block-paragraph">When distributing live video, software updates, or cloud gaming streams, today’s Internet almost exclusively relies on <strong>unicast</strong>: each receiver gets its own copy of the data. This is simple and robust but highly inefficient, especially when thousands of receivers consume the same content. The cost is felt both at the sender — which must generate and encrypt per-receiver packets — and in the network, which carries redundant traffic.</p>



<p class="wp-block-paragraph"><strong>Multicast</strong> was designed decades ago to solve exactly this problem: a source transmits once, and routers replicate packets along a multicast tree. But despite its promise, multicast never became mainstream on the global Internet. It is difficult to deploy across ISPs, hard to monetize, and fragile — applications always need to fall back to unicast anyway. Most content providers gave up and built massive unicast infrastructures instead.</p>



<p class="wp-block-paragraph">With the wide deployment of <strong>QUIC</strong>, a modern transport protocol running above UDP, there is a chance to revisit multicast — not at the IP layer, but directly at the transport layer. This is where <strong>Flexicast QUIC</strong> comes in.</p>



<figure class="wp-block-image size-large"><a href="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/09/fcquic.png"><img decoding="async" width="1024" height="471" src="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/09/fcquic-1024x471.png" alt="" class="wp-image-5463" srcset="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/09/fcquic-1024x471.png 1024w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/09/fcquic-300x138.png 300w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/09/fcquic-768x354.png 768w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/09/fcquic.png 1336w" sizes="(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px" /></a><figcaption class="wp-element-caption">FlexiCast uses a multicast stream shared between users, and individual unicast streams to send feedback or act as a fallback. The feedback is used to send more FEC frame to compensate loss, and if the client can&#8217;t keep up, use unicast as a fallback.</figcaption></figure>



<h2 class="wp-block-heading">The Idea of Flexicast QUIC</h2>



<p class="wp-block-paragraph">Flexicast QUIC, presented in our <em>SIGCOMM CCR 2025</em> paper, extends <strong>Multipath QUIC</strong> to combine the efficiency of multicast with the reliability of unicast. The idea is to make multicast <em>flexible</em>:</p>



<ul class="wp-block-list">
<li>Each receiver gets a <strong>unicast QUIC path</strong> for control and fallback.</li>



<li>The sender also establishes a <strong>flexicast flow</strong>: a shared, unidirectional path encrypted with a common key and intended for all receivers.</li>



<li>If multicast routing is available, this flow is carried efficiently through the network. If not, the sender can still replicate the packets itself and deliver them over unicast.</li>
</ul>



<p class="wp-block-paragraph">Receivers can join or leave the flexicast flow at any time. If multicast fails for one receiver, it automatically falls back to unicast — without affecting others. All this happens within the same QUIC connection, so applications don’t need to juggle two protocols.</p>



<h2 class="wp-block-heading">Key Design Points</h2>



<p class="wp-block-paragraph">Flexicast QUIC builds on QUIC’s extensible design:</p>



<ul class="wp-block-list">
<li><strong>Per-path keys</strong>: unlike regular Multipath QUIC, each unicast path and the flexicast flow use distinct encryption keys.</li>



<li><strong>Reliability</strong>: acknowledgments are sent over unicast paths, aggregated at the sender to avoid the classic <em>ack implosion</em> problem.</li>



<li><strong>Congestion control</strong>: the sender maintains per-receiver congestion states. If one receiver drags the group down, it can be removed from the flexicast flow and served over unicast.</li>
</ul>



<h2 class="wp-block-heading">Implementation and Results</h2>



<p class="wp-block-paragraph">We implemented Flexicast QUIC in <strong>Cloudflare’s quiche</strong> library (Rust), adding ~10,000 lines of code and 5,000 lines of tests. The evaluation was run on CloudLab and emulated networks.</p>



<figure class="wp-block-image size-full"><a href="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/09/fc-perf.png"><img loading="lazy" decoding="async" width="971" height="965" src="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/09/fc-perf.png" alt="" class="wp-image-5483" srcset="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/09/fc-perf.png 971w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/09/fc-perf-300x298.png 300w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/09/fc-perf-150x150.png 150w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/09/fc-perf-768x763.png 768w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2025/09/fc-perf-100x100.png 100w" sizes="auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px" /></a><figcaption class="wp-element-caption">FlexiCast can scale much better than pure QUIC delivery</figcaption></figure>



<h3 class="wp-block-heading">Scalability</h3>



<ul class="wp-block-list">
<li><strong>Unicast QUIC</strong>: saturates at ~200 receivers (~20 Gbps). CPU is the bottleneck, as every packet must be encrypted per receiver.</li>



<li><strong>Flexicast QUIC</strong>: supports <strong>1000 receivers</strong> and delivers <strong>>80 Gbps</strong>, over 4× higher throughput than unicast QUIC, with acceptable CPU usage.</li>



<li>With a small acknowledgment delay (5 ms), Flexicast QUIC perfectly matches the ideal UDP baseline.</li>
</ul>



<p class="wp-block-paragraph">Even without multicast in the network, Flexicast QUIC still helps: the sender can replicate encrypted packets using <code>sendmmsg</code>, which is far cheaper than generating per-receiver packets.</p>



<h3 class="wp-block-heading">Robustness</h3>



<p class="wp-block-paragraph">We tested Flexicast QUIC with a 5 Mbps live video stream under failing multicast trees. Some receivers randomly lost multicast connectivity, forcing fallback to unicast. Results:</p>



<ul class="wp-block-list">
<li>Other receivers were unaffected.</li>



<li>Video quality stayed excellent (SSIM > 0.99 for 99.4% of frames).</li>



<li>Latency remained low, with only small tail increases during recovery.</li>
</ul>



<p class="wp-block-paragraph">This shows Flexicast QUIC provides seamless continuity even when multicast is unreliable.</p>



<h2 class="wp-block-heading">Why It Matters</h2>



<p class="wp-block-paragraph">Flexicast QUIC makes multicast practical again:</p>



<ul class="wp-block-list">
<li><strong>Efficient</strong>: one packet can serve thousands of receivers.</li>



<li><strong>Robust</strong>: unicast fallback is built-in, so failures don’t break the stream.</li>



<li><strong>Practical</strong>: works today, even without multicast routers.</li>



<li><strong>Deployable</strong>: it’s just QUIC — already used by major Internet services.</li>
</ul>



<p class="wp-block-paragraph">This makes it promising for content delivery networks, software updates, and live streaming at scale.</p>



<h2 class="wp-block-heading">What’s Next?</h2>



<p class="wp-block-paragraph">Our future work will explore:</p>



<ul class="wp-block-list">
<li><strong>Forward Erasure Correction</strong> to improve reliability.</li>



<li><strong>Smarter flow control</strong> for heterogeneous receivers.</li>



<li><strong>Source authentication</strong> to defend against spoofed multicast traffic.</li>



<li><strong>Multiple flexicast flows</strong> (e.g., different video bitrates).</li>



<li><strong>Dynamic key rotation</strong> for large, changing groups.</li>



<li><strong>Inter-domain deployment</strong> using AMT and TreeDN.</li>



<li><strong>New use cases</strong> like software updates or gaming.</li>
</ul>



<p class="wp-block-paragraph">The source code and experiment scripts are open-source: <a href="https://github.com/IPNetworkingLab/flexicast-quic" rel="noreferrer noopener" target="_blank">Flexicast QUIC on GitHub</a>.</p>
<p>The post <a href="https://perso.uclouvain.be/tom.barbette/flexicast-quic-rethinking-multicast-for-the-quic-era-in-sigcomm-ccr/">Flexicast QUIC: Rethinking Multicast for the QUIC Era in SIGCOMM CCR</a> appeared first on <a href="https://perso.uclouvain.be/tom.barbette">Tom Barbette</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Creating a VLAN in Netberg 710 P4 switch</title>
		<link>https://perso.uclouvain.be/tom.barbette/creating-a-vlan-in-netberg-710-p4-switch/</link>
		
		<dc:creator><![CDATA[Tom Barbette]]></dc:creator>
		<pubDate>Mon, 15 May 2023 16:34:21 +0000</pubDate>
				<category><![CDATA[Network]]></category>
		<guid isPermaLink="false">https://perso.uclouvain.be/tom.barbette/?p=1863</guid>

					<description><![CDATA[<p>The P4 switch has a “normal switch” mode that is using SONIC and comes with a P4 dataplane compiled and flashed, nothing to compile using Tofino or whatsoever.  This is useful when one of the switch is not used for an experiment and you want to simply wire machines virtually. Creating a L2 bridge or &#8230; </p>
<p class="link-more"><a href="https://perso.uclouvain.be/tom.barbette/creating-a-vlan-in-netberg-710-p4-switch/" class="more-link">Continue reading<span class="screen-reader-text"> "Creating a VLAN in Netberg 710 P4 switch"</span></a></p>
<p>The post <a href="https://perso.uclouvain.be/tom.barbette/creating-a-vlan-in-netberg-710-p4-switch/">Creating a VLAN in Netberg 710 P4 switch</a> appeared first on <a href="https://perso.uclouvain.be/tom.barbette">Tom Barbette</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">The P4 switch has a “normal switch” mode that is using SONIC and comes with a P4 dataplane compiled and flashed, nothing to compile using Tofino or whatsoever.  This is useful when one of the switch is not used for an experiment and you want to simply wire machines virtually.</p>



<p class="wp-block-paragraph"><strong>Creating a L2 bridge or a VLAN</strong>&nbsp;</p>



<p class="wp-block-paragraph">By default, the switch boots with all interface in Router mode. They have (random 10.0&#8230;) IPs. To use those interface as a switch, you must remove the IPs before adding them to&nbsp;a vlan or you will get the error “Ethernet0 is a router interface”&nbsp;</p>



<p class="wp-block-paragraph">$ show ip interfaces&nbsp;</p>



<p class="wp-block-paragraph">Interface&nbsp;&nbsp;&nbsp; Master&nbsp;&nbsp;&nbsp; IPv4 address/mask&nbsp;&nbsp;&nbsp; Admin/Oper&nbsp;&nbsp;&nbsp; BGP Neighbor&nbsp;&nbsp;&nbsp; Neighbor IP&nbsp;</p>



<p class="wp-block-paragraph">&#8212;&#8212;&#8212;&#8211;&nbsp; &#8212;&#8212;&#8211;&nbsp; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&nbsp; &#8212;&#8212;&#8212;&#8212;&nbsp; &#8212;&#8212;&#8212;&#8212;&#8211;&nbsp; &#8212;&#8212;&#8212;&#8212;-&nbsp;</p>



<p class="wp-block-paragraph">…&nbsp;</p>



<p class="wp-block-paragraph">Ethernet8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.0.0.4/31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up/down&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ARISTA03T2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.0.0.&nbsp;</p>



<p class="wp-block-paragraph">Ethernet12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.0.0.6/31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; up/down&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ARISTA04T2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.0.0.7&nbsp;</p>



<p class="wp-block-paragraph">&#8230;&nbsp;</p>



<p class="wp-block-paragraph">Remove all IPv4 IPs from the interface with, for instance&#8230;&nbsp;</p>



<p class="wp-block-paragraph">$ sudo config interface ip remove Ethernet0 10.0.0.0/31&nbsp;</p>



<p class="wp-block-paragraph">Then, disable IPv6 link-local addresses with :&nbsp;</p>



<p class="wp-block-paragraph">$ sudo config ipv6 disable link-local&nbsp;</p>



<p class="wp-block-paragraph">And for each interface :&nbsp;</p>



<p class="wp-block-paragraph">$ sudo config interface ipv6 disable use-link-local-only Ethernet0&nbsp;</p>



<p class="wp-block-paragraph">Then save the config and reboot as the IPv6 link local will stay&nbsp;</p>



<p class="wp-block-paragraph">$ sudo config save –y&nbsp;</p>



<p class="wp-block-paragraph">$ sudo reboot&nbsp;</p>



<p class="wp-block-paragraph">After a reboot, create the Vlan with :&nbsp;</p>



<p class="wp-block-paragraph">$ sudo config vlan add 10&nbsp;</p>



<p class="wp-block-paragraph">And add interfaces with :&nbsp;</p>



<p class="wp-block-paragraph">$ sudo config vlan member add -u 10 Ethernet0&nbsp;</p>



<p class="wp-block-paragraph">Personally, I saved and rebooted again afterward but it might have not be working beforehand due to an interface reset on the machines.</p>
<p>The post <a href="https://perso.uclouvain.be/tom.barbette/creating-a-vlan-in-netberg-710-p4-switch/">Creating a VLAN in Netberg 710 P4 switch</a> appeared first on <a href="https://perso.uclouvain.be/tom.barbette">Tom Barbette</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>A collection of Network Systems icons in SVG</title>
		<link>https://perso.uclouvain.be/tom.barbette/a-collection-of-network-systems-icons-in-svg/</link>
		
		<dc:creator><![CDATA[Tom Barbette]]></dc:creator>
		<pubDate>Mon, 29 Aug 2022 13:02:21 +0000</pubDate>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Research project]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[icons]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[svg]]></category>
		<guid isPermaLink="false">https://www.tombarbette.be/?p=1233</guid>

					<description><![CDATA[<p>You can use mine as you wish, I tried to find the original authors and the appropriate license whenever I could. Don&#8217;t hesitate to send me your own.</p>
<p>The post <a href="https://perso.uclouvain.be/tom.barbette/a-collection-of-network-systems-icons-in-svg/">A collection of Network Systems icons in SVG</a> appeared first on <a href="https://perso.uclouvain.be/tom.barbette">Tom Barbette</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">You can use mine as you wish, I tried to find the original authors and the appropriate license whenever I could. Don&#8217;t hesitate to send me your own.</p>



<figure class="wp-block-image size-large is-resized"><a href="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2022/08/NVMe-redone-6.svg"><img loading="lazy" decoding="async" src="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2022/08/NVMe-redone-6.svg" alt="" class="wp-image-1285" width="130" height="215"/></a><figcaption class="wp-element-caption">NAND SSD (inspired from https://commons.wikimedia.org/wiki/File:NAND-ssd.svg, CC )</figcaption></figure>



<figure class="wp-block-image size-large is-resized"><a href="https://www.tombarbette.be/wp-content/uploads/2022/08/Ram-module-simple-3.svg"><img loading="lazy" decoding="async" src="https://www.tombarbette.be/wp-content/uploads/2022/08/Ram-module-simple-3.svg" alt="" class="wp-image-1284" width="141" height="449"/></a><figcaption class="wp-element-caption">RAM Module ( inspired from https://fr.m.wikibooks.org/wiki/Fichier:Ram-module.svg CC)</figcaption></figure>



<figure class="wp-block-image size-large is-resized"><a href="https://www.tombarbette.be/wp-content/uploads/2022/08/cpu_new-2.svg"><img loading="lazy" decoding="async" src="https://www.tombarbette.be/wp-content/uploads/2022/08/cpu_new-2.svg" alt="" class="wp-image-1261" width="247" height="248" srcset="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/cpu_new-2.svg 150w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/cpu_new-2.svg 300w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/cpu_new-2.svg 1024w" sizes="auto, (max-width: 247px) 100vw, 247px" /></a><figcaption class="wp-element-caption">CPU (absed on https://commons.wikimedia.org/wiki/File:Abstract_i7_CPU_icon.svg, CC)</figcaption></figure>



<figure class="wp-block-image size-large is-resized"><a href="https://www.tombarbette.be/wp-content/uploads/2022/08/dpi-1.svg"><img loading="lazy" decoding="async" src="https://www.tombarbette.be/wp-content/uploads/2022/08/dpi-1.svg" alt="" class="wp-image-1262" width="227" height="293"/></a><figcaption class="wp-element-caption">DPI (unsure but I think it&#8217;s my own. Anyway it&#8217;s standard)</figcaption></figure>



<figure class="wp-block-image size-large is-resized"><a href="https://www.tombarbette.be/wp-content/uploads/2022/08/fast-1.svg"><img loading="lazy" decoding="async" src="https://www.tombarbette.be/wp-content/uploads/2022/08/fast-1.svg" alt="" class="wp-image-1263" width="310" height="169"/></a><figcaption class="wp-element-caption">Fast (own)</figcaption></figure>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-image size-large is-resized"><a href="https://www.tombarbette.be/wp-content/uploads/2022/08/gpu-3.svg"><img loading="lazy" decoding="async" src="https://www.tombarbette.be/wp-content/uploads/2022/08/gpu-3.svg" alt="" class="wp-image-1287" width="346" height="226"/></a><figcaption class="wp-element-caption">GPU (own)</figcaption></figure>



<figure class="wp-block-image size-large is-resized"><a href="https://www.tombarbette.be/wp-content/uploads/2022/08/ipsec-1.svg"><img loading="lazy" decoding="async" src="https://www.tombarbette.be/wp-content/uploads/2022/08/ipsec-1.svg" alt="" class="wp-image-1266" width="446" height="175"/></a><figcaption class="wp-element-caption">IPSEC (unsure)</figcaption></figure>



<figure class="wp-block-image size-large is-resized"><a href="https://www.tombarbette.be/wp-content/uploads/2022/08/lb-1.svg"><img loading="lazy" decoding="async" src="https://www.tombarbette.be/wp-content/uploads/2022/08/lb-1.svg" alt="" class="wp-image-1267" width="295" height="293"/></a><figcaption class="wp-element-caption">Load Balancer (unsure)</figcaption></figure>



<figure class="wp-block-image size-large is-resized"><a href="https://www.tombarbette.be/wp-content/uploads/2022/08/monitor-1.svg"><img loading="lazy" decoding="async" src="https://www.tombarbette.be/wp-content/uploads/2022/08/monitor-1.svg" alt="" class="wp-image-1268" width="316" height="299"/></a><figcaption class="wp-element-caption">Monitoring, monitor, measurements (unsure)</figcaption></figure>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-image size-full"><a href="https://www.tombarbette.be/wp-content/uploads/2022/08/nic-mellanox-1.png"><img loading="lazy" decoding="async" width="375" height="298" src="https://www.tombarbette.be/wp-content/uploads/2022/08/nic-mellanox-1.png" alt="" class="wp-image-1269" srcset="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2022/08/nic-mellanox-1.png 375w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2022/08/nic-mellanox-1-300x238.png 300w" sizes="auto, (max-width: 375px) 100vw, 375px" /></a><figcaption class="wp-element-caption">Mellanox NIC (not SVG, Mellanox)</figcaption></figure>



<figure class="wp-block-image size-large is-resized"><a href="https://www.tombarbette.be/wp-content/uploads/2022/08/nic-redone-4.svg"><img loading="lazy" decoding="async" src="https://www.tombarbette.be/wp-content/uploads/2022/08/nic-redone-4.svg" alt="" class="wp-image-1286" width="222" height="145"/></a><figcaption class="wp-element-caption">100G NIC (inspired from the above, consider my own I guess)</figcaption></figure>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-image size-large is-resized"><a href="https://www.tombarbette.be/wp-content/uploads/2022/08/router-2.svg"><img loading="lazy" decoding="async" src="https://www.tombarbette.be/wp-content/uploads/2022/08/router-2.svg" alt="" class="wp-image-1274" width="148" height="148" srcset="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/router-2.svg 150w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/router-2.svg 300w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/router-2.svg 1024w" sizes="auto, (max-width: 148px) 100vw, 148px" /></a><figcaption class="wp-element-caption">Router (unsure, but this is quite sandard&#8230;)</figcaption></figure>



<figure class="wp-block-image size-large is-resized"><a href="https://www.tombarbette.be/wp-content/uploads/2022/08/vlan-2.svg"><img loading="lazy" decoding="async" src="https://www.tombarbette.be/wp-content/uploads/2022/08/vlan-2.svg" alt="" class="wp-image-1276" width="631" height="248"/></a><figcaption class="wp-element-caption">VLAN (own)</figcaption></figure>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://perso.uclouvain.be/tom.barbette/a-collection-of-network-systems-icons-in-svg/">A collection of Network Systems icons in SVG</a> appeared first on <a href="https://perso.uclouvain.be/tom.barbette">Tom Barbette</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Retina: Analyzing 100 GbE Traffic on Commodity Hardware</title>
		<link>https://perso.uclouvain.be/tom.barbette/retina/</link>
		
		<dc:creator><![CDATA[Tom Barbette]]></dc:creator>
		<pubDate>Tue, 02 Aug 2022 08:03:21 +0000</pubDate>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Research project]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://www.tombarbette.be/?p=1218</guid>

					<description><![CDATA[<p>I&#8217;m pleased to announce Retina has been accepted to appear at SIGCOMM at the end of the month ! It is the result of a pleasant collaboration with Gerry Wan, Fengchen Gong and Zakir Durumeric from Stanford. Retina enables high-speed network forensics by building a binary tailored to a specific experiment written in Rust. It &#8230; </p>
<p class="link-more"><a href="https://perso.uclouvain.be/tom.barbette/retina/" class="more-link">Continue reading<span class="screen-reader-text"> "Retina: Analyzing 100 GbE Traffic on Commodity Hardware"</span></a></p>
<p>The post <a href="https://perso.uclouvain.be/tom.barbette/retina/">Retina: Analyzing 100 GbE Traffic on Commodity Hardware</a> appeared first on <a href="https://perso.uclouvain.be/tom.barbette">Tom Barbette</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I&#8217;m pleased to announce Retina has been accepted to appear at SIGCOMM at the end of the month ! It is the result of a pleasant collaboration with Gerry Wan, Fengchen Gong and Zakir Durumeric from Stanford.</p>



<p class="wp-block-paragraph">Retina enables high-speed network forensics by building a binary tailored to a specific experiment written in Rust. It provides convenient filtering capabilities to easily answer questions such as &#8220;Is the TLS SNI really random?&#8221; or &#8220;How many TLS handshake are destined to Netflix?&#8221;. Tested at up to 160Gbps with a commodity server on a Stanford traffic TAP, it supports 5-100x higher traffic rates than standard &#8220;bloatware&#8221; IDSes.</p>



<p class="wp-block-paragraph"><a href="https://www.tombarbette.be/wp-content/uploads/2022/08/retina.pdf">paper</a> ; <a href="https://github.com/stanford-esrg/retina">github</a> ; the video will follow after SIGCOMM</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://perso.uclouvain.be/tom.barbette/retina/">Retina: Analyzing 100 GbE Traffic on Commodity Hardware</a> appeared first on <a href="https://perso.uclouvain.be/tom.barbette">Tom Barbette</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>MPTCP on Windows with WSL2</title>
		<link>https://perso.uclouvain.be/tom.barbette/mptcp-on-windows-with-wsl2/</link>
		
		<dc:creator><![CDATA[Tom Barbette]]></dc:creator>
		<pubDate>Thu, 28 Apr 2022 14:06:22 +0000</pubDate>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Server management]]></category>
		<category><![CDATA[Unix]]></category>
		<guid isPermaLink="false">https://www.tombarbette.be/?p=1150</guid>

					<description><![CDATA[<p>Limitations It is possible to use MPTCP, but WSL2 uses a virtual interface that prevents advertising multiple paths. There might be a solution using multiple forwarded ports but I haven&#8217;t been able to use it yet. Prerequisite Install Ubuntu in WSL2 (simply look for Ubuntu in the Microsoft Store) Optional: Allow Windows to keep both &#8230; </p>
<p class="link-more"><a href="https://perso.uclouvain.be/tom.barbette/mptcp-on-windows-with-wsl2/" class="more-link">Continue reading<span class="screen-reader-text"> "MPTCP on Windows with WSL2"</span></a></p>
<p>The post <a href="https://perso.uclouvain.be/tom.barbette/mptcp-on-windows-with-wsl2/">MPTCP on Windows with WSL2</a> appeared first on <a href="https://perso.uclouvain.be/tom.barbette">Tom Barbette</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Limitations</h2>



<p class="wp-block-paragraph">It is possible to use MPTCP, but WSL2 uses a virtual interface that prevents advertising multiple paths. There might be a solution using multiple forwarded ports but I haven&#8217;t been able to use it yet.</p>



<h2 class="wp-block-heading">Prerequisite</h2>



<p class="wp-block-paragraph">Install Ubuntu in WSL2 (simply look for Ubuntu in the Microsoft Store)</p>



<h2 class="wp-block-heading">Optional: Allow Windows to keep both Wifi and Ethernet open</h2>



<p class="wp-block-paragraph">Windows will automatically turn off wifi when Ethernet is plugged in. If you want to try MPTCP over Wifi + Ethernet (or 4G through USB, all the same) you must disable this behavior :</p>



<pre class="wp-block-code"><code>1. Open Registry Editor.

2. Go to HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WcmSvc\Local.

3. Create/change the fMinimizeConnections registry DWORD to 0.

4. Close Registry Editor and reboot.

</code></pre>



<h2 class="wp-block-heading">Step 1 : Install an MPTCP-compatible Kernel (easier than it sounds!)</h2>



<pre class="wp-block-code"><code>sudo apt install build-essential flex bison libssl-dev libelf-dev pahole
git clone https://github.com/microsoft/WSL2-Linux-Kernel.git
cd WSL2-Linux-Kernel
cp Microsoft/config-wsl .config</code></pre>



<p class="wp-block-paragraph">Edit .config and change &#8220;#CONFIG_MPTCP is not set&#8221; by CONFIG_MPTCP=y</p>



<pre class="wp-block-code"><code>make -j4
cp arch/x86/boot/vmlinux.bin /mnt/c/vmlinux</code></pre>



<p class="wp-block-paragraph">Then shut down WSL in a CMD window:</p>



<pre class="wp-block-code"><code>wsl --shutdown</code></pre>



<p class="wp-block-paragraph">And to boot in your new kernel add a file in C:\Users\$USER\.wslconfig</p>



<pre class="wp-block-code"><code>&#91;wsl2]
kernel=C:\vmlinux</code></pre>



<h2 class="wp-block-heading">Step 2 : Install mptcpd</h2>



<p class="wp-block-paragraph">This is to get the &#8220;mptcpize&#8221; command to run a legacy TCP application with mptcp</p>



<pre class="wp-block-code"><code>sudo apt install mptcpd</code></pre>



<h2 class="wp-block-heading">Step 3 : Try it out !</h2>



<pre class="wp-block-code"><code>sudo apt install iperf
sudo tcpdump -i  lo -w capture.pcap
mptcpize run iperf -s
mptcpize run iperf -c 127.0.0.1 -b 1k -l 1</code></pre>



<p class="wp-block-paragraph">Then open capture.pcap with wireshark and you should see MPTCP instead of TCP <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<figure class="wp-block-image size-full"><a href="https://www.tombarbette.be/wp-content/uploads/2022/04/image.png"><img loading="lazy" decoding="async" width="957" height="803" src="https://www.tombarbette.be/wp-content/uploads/2022/04/image.png" alt="" class="wp-image-1151" srcset="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2022/04/image.png 957w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2022/04/image-300x252.png 300w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2022/04/image-768x644.png 768w" sizes="auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px" /></a></figure>



<h2 class="wp-block-heading">Step 3 : SSH and failover</h2>



<p class="wp-block-paragraph">[todo!]</p>
<p>The post <a href="https://perso.uclouvain.be/tom.barbette/mptcp-on-windows-with-wsl2/">MPTCP on Windows with WSL2</a> appeared first on <a href="https://perso.uclouvain.be/tom.barbette">Tom Barbette</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>VOO in bridge mode with IPv6 (optional: and prefix delegation!)</title>
		<link>https://perso.uclouvain.be/tom.barbette/voo-in-bridge-mode-with-ipv6-optional-and-prefix-delegation/</link>
		
		<dc:creator><![CDATA[Tom Barbette]]></dc:creator>
		<pubDate>Wed, 27 Apr 2022 17:21:00 +0000</pubDate>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[bridge]]></category>
		<category><![CDATA[ipv6]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[voo]]></category>
		<guid isPermaLink="false">https://www.tombarbette.be/?p=1004</guid>

					<description><![CDATA[<p>Tutorial on configuring a Linux box to do IPv6 prefix delegation from a VOO modem in bridge mode</p>
<p>The post <a href="https://perso.uclouvain.be/tom.barbette/voo-in-bridge-mode-with-ipv6-optional-and-prefix-delegation/">VOO in bridge mode with IPv6 (optional: and prefix delegation!)</a> appeared first on <a href="https://perso.uclouvain.be/tom.barbette">Tom Barbette</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Despite old threads that can be seen on VOO&#8217;s forum, VOO do not seem to use SLAAC in bridge mode (anymore?), but DHCPv6. Also VOO only gives a /64 prefix so you can&#8217;t do internal subnets <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f641.png" alt="🙁" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph"><strong>Important:</strong> my outgoing (WAN) interface directly connected to the VOO modem in bridge mode is <em>enx000ec6ec03b3 </em>. My internal LAN interface is <em>br0 </em>(it&#8217;s a bridge between my actual eth0 LAN interface and a WiFi access point using hostapd, but that&#8217;s for another day).</p>



<p class="wp-block-paragraph">This tutorial assumes Ubuntu 18.04:</p>



<p class="wp-block-paragraph">sudo apt install wide-dhcpv6-client</p>



<p class="wp-block-paragraph">sudo vi /etc/wide-dhcpv6/dhcp6c.conf</p>



<pre class="wp-block-code"><code>interface enx000ec6ec03b3 {
  send ia-na 1;
  send ia-pd 1;
  request domain-name-servers;
  request domain-name;
  script "/etc/wide-dhcpv6/dhcp6c-script";
};

# Only for prefix delegation
id-assoc pd 1 {
  prefix-interface br0 { #internal facing interface (LAN)
    sla-id 0; # subnet. Combined with ia-pd to configure the subnet for this interface.
    ifid 1; #IP address "postfix". if not set it will use EUI-64 address of the interface. Combined with SLA-ID'd prefix to create full IP address of interface.
    sla-len 0; # Number of prefix bits assigned. Sadly this is 0 with voo... 
    };
  };

  id-assoc na 1 {
  # id-assoc for eth1
};</code></pre>



<p class="wp-block-paragraph">sudo vi /etc/default/wide-dhcpv6-client</p>



<pre class="wp-block-code"><code>INTERFACES="enx000ec6ec03b3"</code></pre>



<p class="wp-block-paragraph">sudo service wide-dhcpv6-client restart</p>



<p class="wp-block-paragraph">At this point you should get an IPv6 address:</p>



<pre class="wp-block-code"><code>enx000ec6ec03b3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1500
        inet 109.89.XXX  netmask 255.255.255.0  broadcast 109.89.XXXX
        inet6 2a02:2788:XXXXXXXXX:8458  prefixlen 128  scopeid 0x0&lt;global&gt;
        inet6 fe80::20e:c6ff:feec:3b3  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether 00:0e:c6:ec:03:b3  txqueuelen 1000  (Ethernet)
        RX packets 1358557038  bytes 1701875645905 (1.7 TB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 648168501  bytes 176987273193 (176.9 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0</code></pre>



<h2 class="wp-block-heading">Enable prefix delegation</h2>



<p class="wp-block-paragraph">Actually enable the prefix delegation with radvd:</p>



<p class="wp-block-paragraph">sudo apt-get install radvd</p>



<p class="wp-block-paragraph">sudo vi /etc/radvd.conf</p>



<pre class="wp-block-code"><code>interface br0 # LAN interface
{
  AdvManagedFlag off; # no DHCPv6 server here.
  AdvOtherConfigFlag off; # not even for options.
  AdvSendAdvert on;
  AdvDefaultPreference high;
  AdvLinkMTU 1280;
  prefix ::/64 #pick one non-link-local prefix assigned to the interface and start advertising it
  {
    AdvOnLink on;
    AdvAutonomous on;
  };
};</code></pre>



<p class="wp-block-paragraph">sudo service radvd restart</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"><em>Some configuration is taken and adapted from https://www.ipcalypse.ca/?p=204 </em></p>
<p>The post <a href="https://perso.uclouvain.be/tom.barbette/voo-in-bridge-mode-with-ipv6-optional-and-prefix-delegation/">VOO in bridge mode with IPv6 (optional: and prefix delegation!)</a> appeared first on <a href="https://perso.uclouvain.be/tom.barbette">Tom Barbette</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The extended version of Cheetah: &#8220;A High-Speed Programmable Load-Balancer Framework With Guaranteed Per-Connection-Consistency&#8221; has been published in ACM/IEEE ToN</title>
		<link>https://perso.uclouvain.be/tom.barbette/the-extended-version-of-cheetah-a-high-speed-programmable-load-balancer-framework-with-guaranteed-per-connection-consistency-has-been-published-in-acm-ieee-ton/</link>
		
		<dc:creator><![CDATA[Tom Barbette]]></dc:creator>
		<pubDate>Sun, 07 Nov 2021 21:37:37 +0000</pubDate>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Research project]]></category>
		<category><![CDATA[cheetah]]></category>
		<category><![CDATA[fastclick]]></category>
		<category><![CDATA[load-balancer]]></category>
		<category><![CDATA[quic]]></category>
		<guid isPermaLink="false">https://www.tombarbette.be/?p=985</guid>

					<description><![CDATA[<p>In this journal version, we extended our conference paper with additional, peer-reviewed material: We implemented our system on QUIC using P4 and Picoquic. This demonstrates that our approach does not depend solely on TCP timestamps. The code in ‘bmv2’ and ‘p4-tofino’ has been made publicly available.&#160; All of our code is available at https://github.com/cheetahlb/.&#160; We &#8230; </p>
<p class="link-more"><a href="https://perso.uclouvain.be/tom.barbette/the-extended-version-of-cheetah-a-high-speed-programmable-load-balancer-framework-with-guaranteed-per-connection-consistency-has-been-published-in-acm-ieee-ton/" class="more-link">Continue reading<span class="screen-reader-text"> "The extended version of Cheetah: &#8220;A High-Speed Programmable Load-Balancer Framework With Guaranteed Per-Connection-Consistency&#8221; has been published in ACM/IEEE ToN"</span></a></p>
<p>The post <a href="https://perso.uclouvain.be/tom.barbette/the-extended-version-of-cheetah-a-high-speed-programmable-load-balancer-framework-with-guaranteed-per-connection-consistency-has-been-published-in-acm-ieee-ton/">The extended version of Cheetah: &#8220;A High-Speed Programmable Load-Balancer Framework With Guaranteed Per-Connection-Consistency&#8221; has been published in ACM/IEEE ToN</a> appeared first on <a href="https://perso.uclouvain.be/tom.barbette">Tom Barbette</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In this journal version, we extended our conference paper with additional, peer-reviewed material:</p>



<ul class="wp-block-list"><li>We implemented our system on QUIC using P4 and Picoquic. This demonstrates that our approach does not depend solely on TCP timestamps. The code in ‘bmv2’ and ‘p4-tofino’ has been made publicly available.&nbsp; All of our code is available at <a href="https://github.com/cheetahlb/">https://github.com/cheetahlb/</a>.&nbsp;</li><li>We added an experiment using the Tofino implementation and the QUIC implementation of Cheetah for an HTTP webserver.</li><li>We added an experiment to verify whether today’s OSes support TCP timestamp, have them enabled by default, and correctly echo the TCP timestamp set by a server.</li><li>We added an experiment to verify the granularity of the TCP timestamp units used by some of the largest Alexa top 100 websites.&nbsp;</li><li>We added a proof sketch on the size of the cookies given a number of servers.&nbsp;</li><li>We added an implementation in bmv2 of the “TCP timestamp”-based system. We have also rewritten and published the P4- tofino code of the system. The implementation of the stateful LB is non-trivial as it requires the insertions/lookups/deletions operations to be applied in constant time (and more restrictions apply). We describe our implementation of a stack-based data structure for the Tofino in Section 4.3.&nbsp;</li><li>We added a micro-benchmark of the performance of the Cheetah LB, e.g., compared SYN insertions with cuckoo, normal packets,&nbsp;</li><li>We broke down the benefits of SSE parsing of TCP options instructions.</li><li>We evaluated the packet processing latency overheads of realizing Cheetah on a Tofino for both the TCP timestamp and QUIC implementation.</li><li>We clarified the design challenges in the introduction.</li></ul>



<p class="wp-block-paragraph">Check out the <a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;arnumber=9552525" data-type="URL" data-id="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;arnumber=9552525">paper</a> in open access !</p>
<p>The post <a href="https://perso.uclouvain.be/tom.barbette/the-extended-version-of-cheetah-a-high-speed-programmable-load-balancer-framework-with-guaranteed-per-connection-consistency-has-been-published-in-acm-ieee-ton/">The extended version of Cheetah: &#8220;A High-Speed Programmable Load-Balancer Framework With Guaranteed Per-Connection-Consistency&#8221; has been published in ACM/IEEE ToN</a> appeared first on <a href="https://perso.uclouvain.be/tom.barbette">Tom Barbette</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Our new Journal extension of Metron &#8220;High Performance NFV Service Chaining Even in the Presence of Blackboxes&#8221;</title>
		<link>https://perso.uclouvain.be/tom.barbette/metron-tocs/</link>
		
		<dc:creator><![CDATA[Tom Barbette]]></dc:creator>
		<pubDate>Mon, 02 Aug 2021 09:53:07 +0000</pubDate>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Research project]]></category>
		<category><![CDATA[blackbox]]></category>
		<category><![CDATA[metron]]></category>
		<category><![CDATA[nfv]]></category>
		<category><![CDATA[sfc]]></category>
		<category><![CDATA[tocs]]></category>
		<guid isPermaLink="false">https://www.tombarbette.be/?p=968</guid>

					<description><![CDATA[<p>unning inside virtual machines (VMs) or containers. In this extended journal version published in ACM Transaction on Computer Systems, we put special effort on integrating these important blackbox types into Metron, while maintaining Metron’s hardware-level performance. </p>
<p>The post <a href="https://perso.uclouvain.be/tom.barbette/metron-tocs/">Our new Journal extension of Metron &#8220;High Performance NFV Service Chaining Even in the Presence of Blackboxes&#8221;</a> appeared first on <a href="https://perso.uclouvain.be/tom.barbette">Tom Barbette</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>Georgios P. Katsika, Tom Barbette, Dejan Kostić, JR. Gerald Q. Maguire, Rebecca Steinert</em></p>



<p class="wp-block-paragraph">The NSDI version of Metron supported the integration of blackbox network functions (NFs) using ring buffers. This choice limited Metron’s applicability, as real networks might contain hardware blackboxes (also known as middleboxes) or closed-source blackbox binaries running inside virtual machines (VMs) or containers. In this extended journal version published in ACM Transaction on Computer Systems, we put special effort on integrating these important blackbox types into Metron, while maintaining Metron’s hardware-level performance. </p>



<figure class="wp-block-image size-large"><a href="https://www.tombarbette.be/wp-content/uploads/2021/08/metron-efficiency-100g-thr-min.png"><img loading="lazy" decoding="async" width="1024" height="414" src="https://www.tombarbette.be/wp-content/uploads/2021/08/metron-efficiency-100g-thr-min-1024x414.png" alt="" class="wp-image-969" srcset="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2021/08/metron-efficiency-100g-thr-min-1024x414.png 1024w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2021/08/metron-efficiency-100g-thr-min-300x121.png 300w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2021/08/metron-efficiency-100g-thr-min-768x310.png 768w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2021/08/metron-efficiency-100g-thr-min.png 1039w" sizes="auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px" /></a><figcaption>Metron achieves 100G for a chain of VNF, up to 8* better efficiency than SoTA. Check the paper for more details.</figcaption></figure>



<p class="wp-block-paragraph">This integration was not trivial as it involved tedious low-level system aspects related to (i) efficiently dispatching packets without introducing unnecessary inter-core communication and (ii) techniques to allow high-speed service chaining. These were key principles of Metron that we wanted to maintain. Moreover, we incorporated the latest functionalities of modern 100 GbE NICs, such as single root I/O virtualization (SR-IOV) that enables physical to virtual NIC dispatching, avoiding the need for software switching. Metron instructs the physical NIC to tag the packets according to the core associated with a traffic class by the controller. The tag can then be used to dispatch packets to queues just as a Metron agent does.</p>



<p class="wp-block-paragraph">As appeared in USENIX NSDI 2018, the original Metron system demonstrated an experiment on dynamic scaling at 10 Gbps. 100 GbE deployments are becoming the new commodity. Therefore, we put substantial effort on refining Metron’s scaling algorithm. Part of this algorithm uses our new method for deriving the load of a CPU core even when this core performs NIC polling (e.g., using DPDK poll mode drivers).</p>



<figure class="wp-block-image size-large"><a href="https://www.tombarbette.be/wp-content/uploads/2021/08/scaling-m2-fnt.png"><img loading="lazy" decoding="async" width="1024" height="485" src="https://www.tombarbette.be/wp-content/uploads/2021/08/scaling-m2-fnt-1024x485.png" alt="" class="wp-image-970" srcset="https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2021/08/scaling-m2-fnt-1024x485.png 1024w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2021/08/scaling-m2-fnt-300x142.png 300w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2021/08/scaling-m2-fnt-768x364.png 768w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2021/08/scaling-m2-fnt-1536x728.png 1536w, https://perso.uclouvain.be/tom.barbette/wp-content/uploads/2021/08/scaling-m2-fnt.png 1900w" sizes="auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px" /></a><figcaption>Metron rapidly reacts to change in the input load, see Fig 16 for more details</figcaption></figure>



<p class="wp-block-paragraph">The 100 GbE testbed used in the NSDI version of Metron exhibited hardware limitations that prevented Metron from reaching line-rate performance. In this journal, we repeated the same experiment on two additional testbeds: First we upgraded the 100 GbE NICs of the original testbed (i.e., replacing the Mellanox ConnectX-4 with newer Mellanox ConnectX-5 NICs) and managed to increase the maximum throughput at 85 Gbps (76 Gbps was the previous limit). Then, we also upgraded the servers of the testbed using new workstations with Intel’s Skylake hardware architecture (the old servers used Intel’s Haswell hardware architecture) and managed to achieve line-rate 100 Gbps packet processing.</p>



<p class="wp-block-paragraph">The paper also presents a dozen other novelties compared to the NSDI version, so check it out!</p>



<p class="wp-block-paragraph"><a href="https://dl.acm.org/doi/10.1145/3465628" data-type="URL" data-id="https://dl.acm.org/doi/10.1145/3465628">Paper (open access)</a></p>
<p>The post <a href="https://perso.uclouvain.be/tom.barbette/metron-tocs/">Our new Journal extension of Metron &#8220;High Performance NFV Service Chaining Even in the Presence of Blackboxes&#8221;</a> appeared first on <a href="https://perso.uclouvain.be/tom.barbette">Tom Barbette</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
