RFC 1074

NSFNET backbone SPF based Interior Gateway Protocol

πŸ“… published October 1988, from ietf

okay bestie, so this one is RFC 1074 πŸŽ€, and the title is The NSFNET Backbone SPF based Interior Gateway Protocol ✨. J. Rekhter wrote it while at the T.J. Watson Research Center, IBM Corporation, and it's dated October 1988 πŸ“…. Its status is an implementation description (more on that in the next part πŸ’…), and the header doesn't say it obsoletes or updates anything πŸ™ˆ.

Status of this Memo πŸ’…

So this memo is an implementation description of the standard ANSI IS-IS and ISO ES-IS routing protocols inside the NSFNET backbone network 🌸. Distribution of this memo is unlimited πŸ¦‹.

Acknowledgements 🫢

Huge thanks to Hans-Werner Braun (MERIT) for his help with this document πŸ’–.


1. Overview ✨

This doc gives you the tea on NSFNET Backbone routing, with extra focus on routing inside the backbone πŸ‘‘.

By the end of 1987, the American National Standardization Institute (ANSI) sent a spec for an Intermediate System to Intermediate System routing protocol over to the International Standardization Organizations (ISO) so it could become an international standard 🌍. This ANSI IS-IS protocol is the interior gateway protocol (IGP) of the NSFNET backbone πŸ”₯. This doc is an implementation description that also adds the extra definitions needed to fit it into an Internet Protocol (IP) environment πŸ’…. So it's basically a continuation of the ANSI IS-IS protocol [1] and the ISO standard End System to Intermediate System (ES-IS) protocol [2] 🧚. ANSI IS-IS is enough to work as an IGP, but extra methods are used to coordinate routing between the backbone and the attached mid-level networks, most notably the Exterior Gateway Protocol (EGP) 🫢. For more on overall NSFNET routing and what's coming up, check out [3], [4], [5] and [6] πŸ“š.

2. A brief overview of the NSFNET backbone πŸ¦‹

The NSFNET backbone is a wide area network that currently connects thirteen sites within the continental United States πŸ‡ΊπŸ‡Έ. All connections are permanent point-to-point links at T1 speed (1.544Mbps) ⚑. These T1 links can hold multiple logical links at sub-T1 speeds and up to the full T1 speed πŸ’–. The end result is a hybrid circuit/packet switching network that can have a more connectivity-rich logical topology than the underlying physical topology would allow by itself 🌈. Each site has a Nodal Switching Subsystem (NSS) that handles packet switching πŸŽ€. Each NSS is a RISC-based multiprocessor system using IBM RT/PC processors, running a modified version of a 4.3BSD kernel πŸ’». For routing, each NSS counts as a single entity with connections to other NSS (through the logical network infrastructure) and to regional networks (through local area network attachments, typically Ethernet) πŸ“.

The routing protocol used for inter-NSS routing inside the NSFNET backbone is an adaptation of the ANSI IS-IS routing protocol [1] πŸ”₯. The routing protocol used between the backbone and the attached mid-level networks is the Exterior Gateway Protocol (EGP) [3] πŸ’…. The information exchange between the backbone and its connected EGP peers is subject to policy based routing restrictions, which are kept in the Policy Based Routing Database [4,5] πŸ™ˆ.

3. An overview of the ANSI IS-IS routing document πŸ’–

The ANSI IS-IS routing protocol does two-level hierarchical routing. Level 1 routing handles routing within an area, and Level 2 routing handles routing between different areas 🧩.

This protocol belongs to the class of so-called "Link State" protocols, where each node keeps a complete topology of the whole network πŸ—ΊοΈ. The route computation is based on a modified version of Dijkstra's Shortest Path First (SPF) algorithm πŸ‘‘.

Both Level 1 and Level 2 routing use two types of Protocol Data Units (PDU) ✨:

  • The Level 1 Router Link PDU lists IS neighbors. The Level 1 End System PDU lists ES neighbors.
  • The Level 2 Router Link PDU lists neighbor Level 2 routes. The Level 2 End System PDU lists address prefixes for systems in other Routing Domains.

The ANSI IS-IS document separates subnetwork independent functions from subnetwork dependent functions πŸ¦‹. Subnetwork independent functions include disseminating Router Link and End System Link PDU's, plus the Routing Algorithm 🧠. Subnetwork dependent functions cover different kinds of subnets, like X.25, permanent point-to-point links, and LANs 🌐.

The IS-IS Protocol is designed to interoperate with the End System to Intermediate System (ES-IS) routing exchange protocol [2] 🫢. The ES-IS protocol is used to figure out connectivity and network layer addresses πŸ”. That info is then used to build the Router Link PDUs 🧚.


4. How the ANSI IS-IS protocol is adapted for the NSFNET backbone routing πŸ”₯

The NSFNET backbone implements a subset of the ANSI IS-IS protocol πŸ’…. For subnetwork independent functions, it only supports Level 2 routing πŸ‘‘. For subnetwork dependent functions, it only supports general topology subnetworks with permanent point-to-point links πŸ”—. Since ANSI IS-IS is designed for ISO Network Service Access Point (NSAP) addresses, IP addresses need to be encapsulated into NSAP addresses πŸŽ€.

For this, the Initial Domain Part (IDP) is unused πŸ™ˆ. The Domain Specific Part (DSP) has nine bytes, split up like this πŸ“:

        2 bytes - administrative domain
        2 bytes - empty
        4 bytes - IP address
        1 byte  - empty

In ANSI IS-IS, each router has its own identifier (ID) that's 6 bytes long 🧩. For the NSFNET implementation, the first 2 bytes of the ID are empty, and the last four bytes hold the IP address of that particular router πŸ’–.

The NSFNET backbone PDUs (both IS-IS and IS-ES) are sent as a protocol on top of IP, with "85" as the assigned protocol number for this purpose 🌈. IS-IS PDUs are told apart from IS-ES PDUs by the Protocol Discriminator Field inside the PDUs πŸ”. The IP fragmentation/reassembly mechanism supports sending up to 64 kilobytes in a single IP packet πŸ“¦. Inside the backbone, it's highly unlikely that IS-IS PDUs will go over that limit, so no IS-IS fragmentation/reassembly is implemented for this environment ✨. This is different from the ISO framework, where ISIS sits directly on top of the Data Link Layer 🧠.

For NSFNET Backbone routing, each Autonomous System (AS) is treated as its own separate Administrative Domain (AD) πŸ‘‘. The list of administrative domains (obtained via EGP and filtered through the Policy Based Routing Database) that connect directly to a particular NSS gets distributed in the set of the partitionAreaAddresses part of the Level 2 Router Links PDU πŸ’…. Each area address is 5 bytes long and has 3 empty bytes (IDP), followed by 2 bytes of the Administrative Domain πŸ¦‹.

Reachability info from regional networks, learned via EGP, gets spread around the backbone by End System PDUs 🌸. To support multi-domain topologies, ANSI IS-IS lets System Management enter a set of Address Prefixes at the boundary IS 🧚. In the NSFNET Backbone, these Address Prefixes come from the Exterior Gateway Protocol instead πŸ”₯. For each network listed in EGP NR packets received from an EGP peer, the network and the administrative domain number of that EGP peer are encapsulated into NSAP addresses (as described above) πŸŽ€. A complete NSAP address is used as an address prefix in the reachable address prefix neighbor part of the End System PDU πŸ’–. The cost field in that reachable address prefix neighbor part comes from the Policy Based Routing Database kept in each NSS πŸ’°.

At each NSS, reachability info from other nodes (via their End System PDUs) gets passed on to the mid-level network EGP peers, after the right processing and filtering according to the Policy Based Routing Database 🌈.

The Network Entity Title (NET), which is used in the IS-ES protocol, is eleven bytes long πŸ“. It's built by first encapsulating an IP address into an NSAP address, then taking the first 11 bytes of that address as the NET 🧩.


5. Current timer parameters ⭐

These timer parameters are currently implemented ⏱️:

        Hello Interval (IS-ES Hello):  10 seconds
        Hold Time (ES-IS protocol):    40 seconds

Other timer parameters for the IS-IS protocol are taken from section 6.3.7 of [1] 🫢.


6. References πŸ“š

     [1]  "Intermediate System to Intermediate System Intra-Domain
          Routing Exchange Protocol", ANSI X3S3.3/87-150R, 1987-10-29.

     [2]  "End System to Intermediate System Routing Exchange Protocol
          for use in conjunction with the Protocol for providing the
          Connectionless-Mode Network Service (ISO8473)", ISO
          JTC1/SC6/N4802R, 1988-03-26.

     [3]  Mills, D., "Exterior Gateway Formal Specification", RFC 904,
          University of Delaware, April 1984.

     [4]  Rekhter, J., "EGP and Policy Based Routing in the New NSFNET
          Backbone", IBM, March 1988.

     [5]  Braun, H-W., "The NSFNET Routing Architecture", Merit Computer
          Network, University of Michigan, April 1988.

     [6]  Braun, H-W., "NSFNET Inter Autonomous System Routing", Merit
          Computer Network, University of Michigan, September 1988.
πŸ“¦ where this page comes from