[ih] Source routing

Jack Haverty jack at 3kitty.org
Mon Feb 3 18:05:25 PST 2025


My recollections about Source Routing.   All IIRC of course:

Source Routing appeared during discussions involved in splitting TCP 
apart into separate TCP and IP components, leading to TCP/IP V4.  I 
don't think that TCP V2 had any provisions for "options".  This all 
occurred around 1979+- a year or so.

The new design was driven by a collection of military scenarios defining 
what the Internet should be able to do for military environments.

Graphical terminals were beginning to replace old hard-copy terminals.  
Computers were getting smaller and cheaper.  Ability to use new 
technology effectively was highly desirable.

One of the military scenarios involved a real-time discussion involving 
everything from observers in jeeps to commanders in field headquarters 
to generals in the Pentagon.  A map might be displayed on each 
participants screen, with discussions using voice, and everyone had use 
of light pens to point at different places on the map.   If you've used 
Zoom, that was the idea, except for today's realtime video.

At the time, the ARPANET was the "backbone" of the Internet.  It used 
mostly 56 kilobit/second circuits.  Despite a rich connectivity, no 
single path between any 2 hosts could achieve more than 56 kb/sec 
throughput.  Traffic always followed the "shortest route", and the IMPs 
had mechanisms to keep track of transit time and change routes as 
conditions changed.

At the same time, ARPA had deployed the Wideband Net, which utilized a 
satellite channel about 50 times higher capacity than the typical 
ARPANET circuit.  However, where the IMPs were connected by terrestrial 
circuits, the satellite was in geosynchronous orbit. The WBNET had much 
higher capacity than the ARPANET, but the ARPANET had much lower transit 
times, aka "latency".

To support the scenario above, the thought was that the satellite path 
might be most useful to transfer large data objects, as long as they 
didn't change frequently.  Graphical images were fine, realtime video 
was not.  The ARPANET might be useful for smaller data objects that had 
to be delivered quickly -- such as data involved in real-time 
conversations and interactions such as light pen pointing.

Unfortunately, the Internet wasn't quite up to that task.  Something had 
to be done.

-----

Unlike the ARPANET IMPs, the Gateways (routers) did not have any 
mechanisms to measure transit time, especially since they were using 
networks rather than circuits to communicate with other routers. Network 
behavior was much less predictable and stable compared to circuits.   
The routing in the Internet was based on "hops" rather than time.  We 
knew that wasn't appropriate, but it was the best available at the time.

The topology of the Internet, at the time, had connections between the 
satellite net and the ARPANET at only a few sites.  Researchers at other 
sites could still experiment with the WBNET if their datagrams would go 
through the ARPANET to a nearby WBNET site, transit the WBNET, and go 
through the ARPANET again at the other end to get to their destination.

But the routing mechanisms of the Internet weren't capable of doing 
that.  Taking the "detour" through the ARPANET to the WBNET would add 2 
hops to the route, so the routing mechanism would never choose it as the 
shortest path.

So one reason for Source Routing was to enable the researchers 
investigating that particular scenario to experiment with the use of two 
different types of networks - high capacity with high delay and 
low-capacity with low delay.  FYI, that was the same motivation for 
"Type Of Service", in order to tell the Internet what characteristics 
were needed, e.g., high capacity or low delay.  Also UDP, to provide a 
service where timely delivery was more important than eventual 
guaranteed delivery.

The expectation was that, while such experimentation was happening, the 
Internet's routing mechanisms would also evolve to provide such 
capabilities directly, and a future version of TCP/IP would no longer 
need Source Routing.

-----

Another motivation for Source Routing was for Internet operations, which 
is probably what Vint remembers.  In the ARPANET, IMPs had many tools 
and techniques that the NOC had developed over almost a decade of 
operating the ARPANET.   One of those tools was the ability for an IMP, 
anywhere in the network, to "loop" one of its circuits when commanded by 
the NOC in Massachusetts.  By looping circuits, it was possible to 
determine the cause of errors, and dispatch the appropriate service call.

IMPs were connected to each other by circuits.  Gateways (routers) were 
connected to each other by networks.  There was no way to "loop" a 
network.   At the time, I ran an ARPA project tasked to make the "core 
gateways a 24x7 reliable service".   The obvious way to do that was to 
mimic what the ARPANET NOC was doing.   Source routing was one of the 
likely tools.

Source Routing was a technique whereby errors could be remotely 
investigated and appropriate corrective actions taken.  When there were 
problems, the routing mechanisms of the Internet would route traffic to 
avoid the problem area.  Using Source Routing, the NOC could force 
traffic into "dead" interfaces, to gather data about what was happening 
that had caused the routing mechanisms to declare that pathway broken.

The IMPs in the ARPANET also had several "fake hosts" which were virtual 
hosts implemented as part of the IMP code to provide certain tools -- 
such as traffic generators.  Using traffic generators and source routing 
in the Internet, diagnostics and performance data could be gathered 
throughout the 'net, and coordinated with similar data from inside the 
ARPANET.  But I don't recall how much of that actually got used, or 
whether or not such tools and techniques were picked up by any of the 
ISPs as they proliferated.   Maybe someone else does.

-----

At the time when TCP and IP were on the operating table to be "split", 
there were lots of debates and arguments about what to put in the two 
new headers.  Size was a concern however.   Much of the traffic at the 
time was using Telnet and such datagrams often contained only a byte or 
two of user data.  Large TCP and IP headers were an embarassing 
overhead, to be minimized.

Someone made the observation that some fields which could be in the IP 
header were actually not always going to be there.  Unless the 
particular traffic flow needed a service, the associated header space 
would be wasted.  That led to the definition of "IP Options", which was 
an obvious place for things like Source Routing.  Options were possible 
in any datagram, but they weren't needed in every datagram.  They were 
"optional", if whatever you were doing needed them.

Sadly, some implementors assumed that "options" meant such technical 
mechanisms that were optional to implement.  If they didn't see a need 
for them, they sometimes just didn't implement them.  In addition, the 
TCP and IP standards didn't set standards for the APIs that enabled user 
programs to do things like send options, set type-of-service bits, set 
the TCP "urgent pointer",  and such.   So it was difficult to actually 
use some of such "optional" facilities even when they were implemented.

That's what I remember, all from the late 1970s or early 1980s. It's 
possible that things like Source Routing are no longer needed.   But 
AFAIK routing is still based on hops.  Maybe there is such a glut of 
fiber now that many of the old concerns are no longer relevant.  But 
ISPs set "data caps", so ... maybe not?

Wherever we are today, how did we get here from those early days? 
Perhaps Historians will eventually sort it all out.

Jack Haverty








On 2/3/25 09:43, Greg Skinner via Internet-history wrote:
> On Feb 2, 2025, at 10:37 AM, Dave Crocker via Internet-history<internet-history at elists.isoc.org>  wrote:
>> My recollection is that mechanisms for source routing were common in the early days, but lost favor.
>>
>> UUCP networking (!) was a version.  SMTP originally supported it.  I don't think Arpanet packets did, though I have a vague sense there was some selectivity allowed.  And I don't think IP did.
>>
>> I'm curious about a rough summary of when and how it was used and when and why it lost favor.
>>
>> d/
>>
>> -- 
>> Dave Crocker
>>
>> Brandenburg InternetWorking
>> bbiw.net
>> bluesky: @dcrocker.bsky.social
>> mast: @dcrocker at mastodon.social
>>
>> -- 
>> Internet-history mailing list
>> Internet-history at elists.isoc.org
>> https://elists.isoc.org/mailman/listinfo/internet-history
> I found a couple of mentions of the use of IP source routing in the tcp-ip digest using the following query at Google Groups:
>
> https://groups.google.com/g/fa.tcp-ip/search?q="source route”<https://groups.google.com/g/fa.tcp-ip/search?q=%22source%20route%22>
>
> One of those was part of Jon Postel’s TCP Bakeoff.  One got 15 points for doing the source route option.
>
> --gregbo
>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 665 bytes
Desc: OpenPGP digital signature
URL: <http://elists.isoc.org/pipermail/internet-history/attachments/20250203/ff07120c/attachment.asc>


More information about the Internet-history mailing list