<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>iljitsch.com - network</title>
<link>http://network.iljitsch.com/</link>
<description>Iljitsch van Beijnum's network posts</description>

<item xml:lang="en">
  <title>Upgrading Fiber To The Home to terabit speeds</title>
  <description>Last week, Jaap van Till asked me if BGP would be capable of supporting the terabit class interconnectivity that he foresees we’ll need in the future, possibly due to the rise of artificial intelligence. He explains his reasoning in the blog post &lt;a href=&quot;https://theconnectivist.wordpress.com/2024/03/31/what-link-speeds-will-we-need-for-ai/&quot;&gt;What Link speeds will we need for AI&lt;/a&gt;, where he quotes VAN TILL’s CONJECTURE:
&lt;p&gt;

&lt;blockquote&gt;The network connection Wide Area access speed will grow in time until it matches the internal device BUS speed of the more and more complex processors and datastores.&lt;/blockquote&gt;
&lt;p&gt;

And then concludes that 14 Tbps external links will be required in 2039. Today I can get 4 Gbps where I live. So that means a 70% speed increase per year.
&lt;p&gt;

Let’s first get that BGP question out of the way: I see no problems. 25 years ago I ran BGP over 64 and 128 &lt;b&gt;k&lt;/b&gt;bps links without trouble. Six orders of magnitude later, BGP is still fine, and there is no reason to believe that even faster speeds will be a problem, just as long as the packet loss rates remain minimal.
&lt;p&gt;

But what would terabit class network connectivity at home look like?
&lt;p&gt;

Actually, I think we have all the parts to build this today. With Wavelength Devision Multiplexing (WDM), it’s possible to transmit multiple data streams through a single fiber by using slightly different wavelengths/frequencies of infrared laser light. Coarse WDM (CWDM) is relatively cheap and appropriate over shorter distances, with 18 wavelengths standardized over high performance fiber. (Fewer over most existing fiber.) For long distances, dense WDM (DWDM) can use as many as 160 wavelengths over a single fiber pair.
&lt;p&gt;

Bandwidth per wavelength is now 100 or 200 Gbps, and expected to increase in the future. So anything between say 10 x 100 Gbps = 1 Tbps and the 20 Tbps used by modern seacables &lt;em&gt;should&lt;/em&gt; be possible. The catch is of course the cost.
&lt;p&gt;

The difficulty is with the transmitting side, as this requires a tuned laser per wavelength. On the receiving side, the wavelengths can be split using a prism and hit a set of wideband receivers. As someone who is definitely not in the business of building this equipment, it seems to me that a system with one or a small number of transmitters, a passive optical bus, and a large(r) set of receivers is definitely something that could enjoy radical performance vs cost improvements over time. And it fits perfectly with the most efficient / high speed way to connect homes to the internet that we have today: PON (&lt;a href=&quot;https://en.wikipedia.org/wiki/Passive_optical_network&quot;&gt;passive optical network&lt;/a&gt;). So just add additional wavelengths to existing PON installations to gain more bandwidth in the downstream direction.
&lt;p&gt;

However, now we have a new challenge: TCP/IP is not a good fit for sending the massive data streams that would make good use of such a network. The problem is that TCP tries to adjust its end-to-end data transmission rate to available bandwidth. This means it needs to wait for acknowledgments from the receiving side to know it can increase its transmission rate, maintain it, or slow the transmission rate down. Downloading 100 MB over a 1 Tbps link takes less than a millisecond. But even over PON, the round-trip-time is a millisecond or two. This means that the bottleneck is the number of round trip TCP requires to reach that full terabit speed. Even if that’s an extremely unrealistic 10 RTTs, that means the total transmission time is now 11 ms, effectively only using a tenth of the available bandwidth.
&lt;p&gt;

So we need to overhaul TCP/IP for the super high speed stuff and instead use something more like circuit switching / time division multiplexing / token passing. Yes, everything old is new again! So for instance reserve ten 100 μs timeslots and transmit ten 10 MB “megapackets”.
&lt;p&gt;

So I think all of this is highly doable!
&lt;p&gt;

Well, there is the slight challenge of how to pipe all that bandwidth into your laptop without connecting/disconnecting that fiber all the time. Maybe use eight &lt;a href=&quot;https://en.wikipedia.org/wiki/Thunderbolt_(interface)#Thunderbolt_5&quot;&gt;Thunderbolt 5&lt;/a&gt; interfaces in parallel to reach 960 Gbps?</description>
  <link>http://www.iljitsch.com/2024/04-09-upgrading-fiber-to-the-home-to-terabit-speeds.html</link>
  <guid isPermaLink="true">http://www.iljitsch.com/2024/04-09-upgrading-fiber-to-the-home-to-terabit-speeds.html</guid>
  <pubDate>Tue, 09 Apr 2024 11:16:41 GMT</pubDate>
</item>

<item xml:lang="en">
  <title>Should the datacenter be in the middle?</title>
  <description>The other day, I landed on this article: &lt;a href=&quot;https://www.linkedin.com/pulse/focus-subsea-network-architecture-ixps-maxie-reynolds/&quot;&gt;In Focus: Subsea Network Architecture: IXPs&lt;/a&gt;. The article takes some time to arrive at the point that undersea internet exchanges would be a good idea. The most eyecatching part is a variation on this image:
&lt;p&gt;

&lt;img src=&quot;//www.bgpexpert.com/2023/seadcs.png&quot; width=640 height=331&gt;
&lt;p&gt;

As the article starts out discussing how datacenters have been moving away from large cities to take advantage of opportunities such as space, cheap energy and easier cooling, this image seems to suggest that these blue dots in are good locations for datacenters and/or internet exchanges in general. And that&apos;s definitely not the point of the 
&lt;a href=&quot;https://www.alexwg.org/publications/PhysRevE_82-056104.pdf&quot;&gt;paper&lt;/a&gt;
that the image is from.
&lt;p&gt;

That paper is very specifically about the best locations to place servers for high speed algorithmic trading on multiple markets some distance away from each other. This immediately explains why there is nothing around the western US: there are simply no stock exchanges / markets there (the red dots in the image).
&lt;p&gt;

The math looks more complicated, but presumably, in these cases it helps when the servers executing the trading algorithms are in the middle between the &quot;users&quot;, rather than close to one and further from the other(s).
&lt;p&gt;

If you need data from two places far away from each other, then it&apos;s better when each is 25 milliseconds away, as you can then complete your action in 25 ms plus however long it takes to do your own processing. If you&apos;re close to one so it&apos;s 0 ms for one data source and 50 ms for the other, then the entire action takes at least 50 ms.
&lt;p&gt;

But is that a common situation?
&lt;p&gt;

In general, you can just copy the data beforehand. So this only applies if you&apos;re using &quot;live&quot; data from two or more locations. Videoconferencing with a number of participants could be an example, where a server receives the video from all the participants, mixes it into a single feed and then sends that single feed out to all the participants. If the server is in the middle, this limits the maximum delay. I guess that could be somewhat helpful. But to the degree that it makes sense to have datacenters in the middle of the ocean? I&apos;m not convinced.</description>
  <link>https://www.bgpexpert.com/2023/09-07-should-the-datacenter-be-in-the-middle.html</link>
  <guid isPermaLink="true">https://www.bgpexpert.com/2023/09-07-should-the-datacenter-be-in-the-middle.html</guid>
  <pubDate>Thu, 07 Sep 2023 08:49:00 GMT</pubDate>
</item>

<item xml:lang="en">
  <title>My BGP minilab</title>
  <description>When I wrote &lt;a href=&quot;https://www.oreilly.com/library/view/bgp/9780596002541/&quot;&gt;my first BGP book&lt;/a&gt;
I painstakingly made the config examples on actual Cisco routers. In my opinion, it&apos;s crucial
to make sure that configuration examples that go in a book actually work.
&lt;p&gt;

So when I started writing &lt;a href=&quot;https://www.inet6consult.com/bgpbook/&quot;&gt;my new BGP book&lt;/a&gt;, I did the same. But
this time, I used open source routing software (&lt;a href=&quot;https://frrouting.org/&quot;&gt;FRRouting&lt;/a&gt;)
running in &lt;a href=&quot;https://www.docker.com/&quot;&gt;Docker&lt;/a&gt; containers.
Basically, those &lt;a href=&quot;https://en.wikipedia.org/wiki/OS-level_virtualization&quot;&gt;containers&lt;/a&gt;
are very light-weight virtual machines.
&lt;p&gt;

This makes it possible to run a dozen virtual routers that start up and shut down in just a few seconds.
So it&apos;s very easy to run different examples by starting the required virtual routers with the
configuration for that example.
&lt;p&gt;

This was super useful when I was &lt;em&gt;writing&lt;/em&gt; the book.
&lt;p&gt;

So I thought it would also be very useful for people &lt;em&gt;reading&lt;/em&gt; the book.
&lt;p&gt;

So I&apos;m making the &quot;BGP minilab&quot; with all the config examples from the book available to my readers.
Download version 2022-11 of the minilab that goes with the first version of the book &lt;a href=&quot;2022-11/bgpminilab.zip&quot;&gt;here&lt;/a&gt;.
&lt;p&gt;

You can also run the examples in the minilab if you don&apos;t have the book.
And you can create your own labs based on these scripts.
&lt;p&gt;

The minilab consist of four scripts:
&lt;p&gt;

&lt;ul&gt;
&lt;li&gt;start: to start an example or lab
&lt;li&gt;connectrouter: connect to an already running virtual router
&lt;li&gt;stoprouters: to stop all running routers
&lt;li&gt;run-gortr: runs the &lt;a href=&quot;https://hub.docker.com/r/cloudflare/gortr&quot;&gt;GoRTR&lt;/a&gt; RPKI cache
&lt;/ul&gt;
&lt;p&gt;

There are Mac/Linux shell script and Windows Powershell versions of each script.</description>
  <link>https://www.inet6consult.com/bgpminilab/</link>
  <guid isPermaLink="true">https://www.inet6consult.com/bgpminilab/</guid>
  <pubDate>Fri, 11 Nov 2022 12:15:12 GMT</pubDate>
</item>

<item xml:lang="en">
  <title>Oh SNAP! There is more to Wi-Fi ↔︎ Ethernet than I thought</title>
  <description>The tag line for &lt;a href=&quot;https://www.iljitsch.com/2022/06-06-2012-world-ipv6-launch-the-future-is-forever.html&quot;&gt;World IPv6 Launch ten years ago&lt;/a&gt; was &quot;the future is forever&quot;. You know what else seems to be forever? The past. Let&apos;s talk about IEEE 802 LLC/SNAP encapsulation.
&lt;p&gt;

I always thought when you send IP packets over Wi-Fi, the IP packet would go inside an Ethernet frame, and then the Ethernet frame inside an 802.11 frame. Turns out this is not how it works: there is no Ethernet header inside IEEE 802.11 packets/frames¹.
&lt;p&gt;

What actually happens is that packets are &lt;a href=&quot;https://en.wikipedia.org/wiki/Network_bridge&quot;&gt;bridged&lt;/a&gt; between Ethernet and Wi-Fi. Surprising. But the real shock is that the bridging between Ethernet and Wi-Fi is exactly the same as bridging between Ethernet and &lt;a href=&quot;https://en.wikipedia.org/wiki/Fiber_Distributed_Data_Interface#Frame_format&quot;&gt;FDDI&lt;/a&gt;. (An old 100 Mbps fiber ring technology from when Ethernet was still stuck at 10 Mbps.) It&apos;s all laid out in this ancient RFC from 1988: &lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc1042&quot;&gt;RFC 1042&lt;/a&gt;.
&lt;p&gt;

Bridging is the process of translating one OSI layer 2 frame format to another. In this case, a Wi-Fi access point translates between the Wi-Fi &lt;a href=&quot;https://en.wikipedia.org/wiki/IEEE_802.11#Layer_2_–_Datagrams&quot;&gt;802.11 header&lt;/a&gt; and the &lt;a href=&quot;https://en.wikipedia.org/wiki/Ethernet_frame#Ethernet_II&quot;&gt;Ethernet II&lt;/a&gt; header.
&lt;p&gt;

Most of the stuff in a Wi-Fi header or Ethernet header is only relevant on the Wi-Fi and Ethernet drivers, respectively. But higher layers in the networking stack do need to interact with two things from the Ethernet header: the MAC addresses and the &lt;a href=&quot;https://en.wikipedia.org/wiki/EtherType&quot;&gt;ethertype&lt;/a&gt;. So bridging between two network protocols is possible if the MAC addresses and ethertype are compatible.
&lt;p&gt;

Which creates a bit of a problem, as the 802.x family, including 802.11, doesn&apos;t do ethertypes. So how do they make sure different packets, such as IP, ARP, IPX, AppleTalk, Wake-on-LAN, et cetera are interpreted correctly by the receiver? Their first try was the &lt;a href=&quot;https://en.wikipedia.org/wiki/Logical_link_control&quot;&gt;LLC&lt;/a&gt; header. But that didn&apos;t accommodate a sufficiently large number of possible protocols. So add to LLC the &lt;a href=&quot;https://en.wikipedia.org/wiki/Subnetwork_Access_Protocol&quot;&gt;SNAP&lt;/a&gt; header. The ethertype goes inside the SNAP header. So now we have all the information we need to translate between 802.x protocols (such as 802.11 Wi-Fi) and Ethernet II. The slide below that I copied from &lt;a href=&quot;https://didattica-2000.archived.uniroma2.it//TPI1/deposito/tpi1-1213-03-wlan-v1.pdf&quot;&gt;this presentation&lt;/a&gt; shows how that works:
&lt;p&gt;

&lt;div class=fulldiv&gt;
&lt;img class=fullimg src=&quot;https://www.iljitsch.com/2022/tpi1-1213-03-wlan-v1.png&quot; width=703 height=488&gt;
&lt;/div&gt;
&lt;p&gt;

(Where DEST and SRC are the MAC addresses, type is the ethertype, and AA AA 03 00.00.00 are the values in the LLC and SNAP headers preceding the ethertype. P is the IP packet. Also see the last image &lt;a href=&quot;https://mrncciew.com/2014/09/22/802-11ac-wireless-packet-captures/&quot;&gt;here&lt;/a&gt; for an actual packet dump.)
&lt;p&gt;

But wait... isn&apos;t Ethernet IEEE 802.3, so shouldn&apos;t it use LLC/SNAP, too?
&lt;p&gt;

Well, kinda-sorta-but-not-really. &lt;a href=&quot;https://www.wired.com/2011/07/speed-matters/&quot;&gt;Remember&lt;/a&gt; that Ethernet was developed by the DIX consortium (DEC, Intel, Xerox) and then handed off to the IEEE for further tinkering and standardization. As a result, there is a difference between the old Ethernet II header, which has the ethertype, and the 802.3 header, where the same place in the header is actually a &lt;em&gt;length&lt;/em&gt; field. (Which we don&apos;t need, the Ethernet hardware can tell how long packets are just fine by itself.)
&lt;p&gt;

So for IP over actual IEEE 802.3 you need at least the LLC header (which supports IPv4 and ARP) but in practice IP over 802.x always uses LLC+SNAP.
&lt;p&gt;

So IP over Ethernet II is actually a relic from the past. But still quite alive. Novell did move to LLC and SNAP, but this just meant that there were now &lt;a href=&quot;https://en.wikipedia.org/wiki/Internetwork_Packet_Exchange#Frame_formats&quot;&gt;four different frame formats&lt;/a&gt; to choose from in your IPX network, and having four incompatible ways to do the exact same thing is never helpful when running a network.
&lt;p&gt;

&lt;p style=&quot;font-size: 80%&quot;&gt;
¹ Remember, OSI layer 2 has frames, OSI layer 3 packets and OSI layer 4 segments. So the TCP segment goes inside an IP packet and the IP packet inside an Ethernet frame, each layer adding a header and sometimes a trailer with information relevant to that layer.
</description>
  <link>http://www.iljitsch.com/2022/07-21-oh-snap-there-is-more-to-wi-fi-ethernet-than-i-thought.html</link>
  <guid isPermaLink="true">http://www.iljitsch.com/2022/07-21-oh-snap-there-is-more-to-wi-fi-ethernet-than-i-thought.html</guid>
  <pubDate>Thu, 21 Jul 2022 14:00:06 GMT</pubDate>
</item>

<item xml:lang="en">
  <title>OSPF: time to get rid of the totally not so stubby legacy</title>
  <description>Recently, I was looking through some networking certification material. A very large part of it was about OSPF. That&apos;s fair, OSPF is probably the most widely used routing protocol in IP networks. But the poor students were submitted to a relentless sequence of increasingly baroquely named features: &lt;em&gt;stub areas&lt;/em&gt;, &lt;em&gt;not-so-stubby-areas&lt;/em&gt;, &lt;em&gt;totally stubby areas&lt;/em&gt;, culminating in &lt;em&gt;totally not-so-stubby areas&lt;/em&gt;.
&lt;p&gt;

Can we please get rid of some of that legacy? And if not from the standard documents or the router implementations, then at least from the certification requirements and training materials?
&lt;p&gt;

&lt;h2&gt;Shortest path first, but not so fast&lt;/h2&gt;
&lt;p&gt;

The Open Shortest Path First routing protocol (OSPF, &lt;a href=&quot;https://www.rfc-editor.org/standards&quot;&gt;Internet Standard&lt;/a&gt; 54) was first defined in &lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc1131&quot;&gt;RFC 1131&lt;/a&gt; in 1989. So in internet time, OSPF is truly ancient. The base OSPFv2 specification is over 200 pages, with additional extensions in separate documents spanning the early 1990s to the late 2010s.
&lt;p&gt;

OSPF is powered by Edsgar Dijkstra&apos;s &lt;a href=&quot;https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm&quot;&gt;shortest path first&lt;/a&gt; algorithm. SPF is a relatively efficient algorithm for finding the shortest path between two places, in the real world or in a network. Still, in a large network there&apos;s a lot of paths to check until you can be sure you&apos;ve found the shortest one. The problem here is that for a network that&apos;s 10 times larger, SPF needs 60 times as long to run. So if a router in a network with, say, 100 routers, needs a second to do its SPF calculations after an update, in a network with 1000 routers that takes a minute, and in a network with 10,000 routers an hour.
&lt;p&gt;

So in order to make OSPF useful in large networks, you can split your network into different &lt;em&gt;areas&lt;/em&gt;. The SPF calculations are then contained to the routers within each area. So rather than calculate SPF over a 10,000-router network, you could have 100 areas with 100 routers each. Then routers that connect two areas would have to calculate SPF over 100 routers for two areas, so 2 seconds rather than an hour worth of SPF calculations.
&lt;p&gt;

But if each of those 10,000 routers still injects two, three or four address blocks into OSPF, that means the OSPF database will have something like 30,000 entries. So now updating and remembering all those address blocks becomes a bottleneck. Solution: &lt;em&gt;summarize&lt;/em&gt; link advertisements. So if routers in area 35 advertise address blocks 10.35.1.x, 10.35.2.x, … 10.35.95.x, rather than push out all that information to all 10,000 routers throughout the network, the &lt;em&gt;area border routers&lt;/em&gt; for area 35 simply say “10.35.x.x” to the rest of the network.
&lt;p&gt;

Even better: if an area only connects to the “backbone” area (area 0) and doesn&apos;t learn any routing information from other areas or from outside OSPF, it&apos;s a &lt;em&gt;stub area&lt;/em&gt; that really doesn&apos;t even need to know anything that&apos;s happening in the rest of the network, so let&apos;s give it a &lt;em&gt;default route&lt;/em&gt; to reach the rest of the world.
&lt;p&gt;

&lt;h2&gt;Variations on a stubby theme&lt;/h2&gt;
&lt;p&gt;

Stub areas still have &lt;em&gt;some&lt;/em&gt; OSPF routing information from other areas. We can get rid of that too, and then we have a &lt;em&gt;totally stubby&lt;/em&gt; area.
&lt;p&gt;

On the other hand, maybe we want to import external routing information into OSPF even in our stub area, and then propagate that external information to other areas. This makes for a &lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc1587&quot;&gt;not-so-stubby&lt;/a&gt; area.
&lt;p&gt;

And who said you can&apos;t have your cake and eat it: let&apos;s make our totally stubby area not-so-stubby, and we&apos;ll have a &lt;em&gt;totally not-so-stubby&lt;/em&gt; area, guaranteeing certification income for years to come. (See Wikipedia&apos;s &lt;a href=&quot;https://en.wikipedia.org/wiki/Open_Shortest_Path_First#Totally_stubby_area&quot;&gt;page on OSPF&lt;/a&gt; for more details.)
&lt;p&gt;

&lt;h2&gt;Spring cleaning&lt;/h2&gt;
&lt;p&gt;

As protocol designers, we&apos;re really good at adding more capabilities, more options. As network architects and engineers, we&apos;re really good at adding complexity to make our networks do something they won&apos;t do out of the box. But we can&apos;t just keep adding options and complexity without ever taking any of it away. At least not if we want to have a fighting chance at teaching our craft to the next generation so we can retire at some point.
&lt;p&gt;

Our routers/computers are now 1000 times as fast and have 1000 times the memory as the &lt;a  href=&quot;http://www.iljitsch.com/2020/11-22-the-one-perfect-sorting-algorithm.html&quot;&gt;68030-based routers/computers&lt;/a&gt; back in 1990. OSPF implementations support &lt;a href=&quot;https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/iproute_ospf/configuration/15-sy/iro-15-sy-book/iro-incre-spf.pdf&quot;&gt;incremental SPF&lt;/a&gt;.
&lt;p&gt;

10,000 routers in one area will melt the network operations center long before the SPF calculations melt the router CPUs. I&apos;ve personally worked on a network with 600 routers in area 0 &lt;em&gt;back in 1999&lt;/em&gt;. SPF performance was the least of our concerns.
&lt;p&gt;

So I&apos;m calling it: OSPF areas and summarization are now legacy. New and current OSPF networks should just use a flat area 0 rather than try to micromanage the information flow between areas. Students should no longer have to learn how areas work, and only be informed about the various flavors of stubbiness as an example of humorous naming that doesn&apos;t age well.
</description>
  <link>http://www.iljitsch.com/2022/05-12-ospf-time-to-get-rid-of-the-totally-not-so-stubby-legacy.html</link>
  <guid isPermaLink="true">http://www.iljitsch.com/2022/05-12-ospf-time-to-get-rid-of-the-totally-not-so-stubby-legacy.html</guid>
  <pubDate>Thu, 12 May 2022 10:50:45 GMT</pubDate>
</item>

</channel>
</rss>
