Hierachical Routing in IPv6

Since the killer problem with the IPv4 Internet is backbone routing, the IPng working group has gone to a lot of work to ensure the same problems do not arise in IPv6. The decision that has the potential to cause the most pain is

Sites do not own their IPv6 addresses

A machine's IPv6 address is made up of a network portion and a machine portion. The machine portion should be the 64 bit MAC address which is effectively fixed. The network portion is made up of the site's internal network number, their ISP number, the ISP's ISP number and so on up to the local backbone number. If a site changes its ISP then their IPv6 addresses change, they must renumber everything.

The IPv6 automatic configuration facilities help with renumbering. Machines know their MAC address and they get the network portion from the link local routers. In theory, renumbering simply requires changes to router tables and everything else should follow. In practice, there are implications for services such as DHCP, DNS and firewalls. Work in progress.

There have been several suggestions for creating the network portion of an IPv6 address. All have one thing in common, it must be possible to collapse (aggregate) multiple lower level networks together into a single high level route. Any option that even looked as if it might cause backbone routing problems was dead.

RFC 2073

Until recently, RFC 2073 prescribed the breakdown of the first 64 bits of an IPv6 address. It defined them as :-

      | 3 |  5 bits  |   n bits   |   56-n bits  |        64 bits     |
      |010|RegistryID| ProviderID | SubscriberID |  Intra-Subscriber  |

A Registry is a high level (continental or country wide) organisation that handles the assignment of Provider ID's within that geographical area.

Each Provider within a registry has a unique number.

Each Subscriber (customer) within a provider has a unique number.

The last 64 bits are reserved for the site use. It is recommended that it be used as 16 bit internal network number and 48 bit MAC address, although sites can do what they liked.


Problems arose with RFC 2073. The IEEE wanted to move from 48 to 64 bit MAC addresses which left no room for internal networks. A site with more than one provider would have multiple sets of network numbers, one for each provider. Although automatic configuration would help with multiple providers, for this and other reasons, RFC 2073 has been superseded. The new unicast aggregation draft was issued on June 12, 1997.

draft-ietf-ipngwg-unicast-aggr-01.txt defines the IPv6 address as :-

      | 3 |  13 |    32     |   16   |          64 bits               |
      |FP | TLA |   NLA*    |  SLA*  |         Interface ID           |

      <--Public Topology--->   Site
                                      <------Interface Identifier----->


      FP           Format Prefix (001)
      TLA          Top-Level Aggregator
      NLA*         Next-Level Aggregator(s)
      SLA*         Site-Level Aggregator(s)
      INTERFACE ID Interface Identifier

The Top-Level Aggregator (TLA) and Next-Level Aggregator (NLA) bits define the network down the customer site. There is provision within these bits for the use of "exchanges" where two or more providers meet and use a common number. This allows multi-homed customers to use one network number instead of multiple ones. However the draft also says

"Note that the mechanisms used for this type of provider selection and portability are not discussed in the document."

A 13 bit TLA leaves room for 8,192 top level aggregators. Each of those can have 2**32 providers/customers. Effectively each TLA can have as many sites as there are currently IPv4 hosts.

Each site has 16 bits for internal network addressing, room for 65,536 networks. The Interface ID is based on the 64 bit IEEE MAC address.

Some routing examples for this draft :-


Unicast address (first 3 bits are 001). TLA 0x1FFE (the 6bone). NLA 4C5:3 (imaginary for O. C. Software). Customer network x'1D'. 64 bit MAC address 0200:B4FF:FE32:E6FF (my IPv6 router, router-6.ocs.com.au).

router-6.ocs.com.au actually has a 48 bit MAC address of 00:00:B4:32:E6:FF. Convert to a 64 bit MAC by inserting FF:FE in the middle. Toggle the global/local MAC bit to create the IPv6 identifier.

3FFE:4C5:3:1D:200:B4FF:FE32:E6FF/64 or 3FFE:4C5:3:1D::/64

The network address of router-6.

3FFE:4C5:3:1D:200:B4FF:FE32:E6FF/48 or 3FFE:4C5:3::/48

The routing entry my NLA uses to get to me.

3FFE:4C5:3:1D:200:B4FF:FE32:E6FF/16 or 3FFE::/16

The routing entry another TLA would use to get to TLA 0x1FFE.

© Keith Owens O. C. Software P/L 1997