2

According to this answer, it's because computers read addresses in binary.

Fine. That explains why the fe80 address does not need to be /12 or /16--it's because everything after the 10th bit is a zero anyways.

fe80::/16 = 1111 1110 1000 0000

fe80::/12 = 1111 1110 1000

fe80::/10 = 1111 1110 10

But if that's the case, then why not go further and strip that last zero and get:

fe80::/9  = 1111 1110 1

EDIT: corrected formatting of IPv6 addresses, from fe80/16 to fe80::/16.

  • The tenth bit needs to be zero, so that's why it's a /10 – Ron Trunk Sep 13 '19 at 12:03
  • Thanks @RonTrunk. But that is exactly my question--why does there need to be a tenth bit that is zero? – Nadim Hussami Sep 13 '19 at 12:08
  • 3
    The designers of the addressing scheme designed it that way. The tenth bit is zero so you can distinguish it from a specific /11. They could have picked a different scheme, but this is what they chose. – Ron Trunk Sep 13 '19 at 12:28

2 Answers2

6

It goes back to the original IPv6 addressing RFC. That 10th bit was used to distinguish between Link-Local and the (now obsolete) Site-Local addressing. If the bit was 0, then it was a Link-Local address, and if the bit was 1, it was a Site-Local address. Site-Local addresses were deprecated in favor of Unique-Local addresses to avoid the problems of companies merging or trying to create extranets with overlapping addressing.

RFC 1884, IP Version 6 Addressing Architecture was the original RFC where the Site-Local addressing was defined and carried through two subsequent RFCs (RFC 2373 and RFC 3513):

2.4.8 Local-use IPv6 Unicast Addresses

There are two types of local-use unicast addresses defined. These are Link-Local and Site-Local. The Link-Local is for use on a single link and the Site-Local is for use in a single site. Link-Local addresses have the following format:

|   10     |
|  bits    |        n bits           |       118-n bits           |
+----------+-------------------------+----------------------------+
|1111111010|           0             |       interface ID         |
+----------+-------------------------+----------------------------+

Link-Local addresses are designed to be used for addressing on a single link for purposes such as auto-address configuration, neighbor discovery, or when no routers are present.

Routers MUST not forward any packets with link-local source addresses.

Site-Local addresses have the following format:

|   10     |
|  bits    | n bits  |    m bits     |       118-n-m bits         |
+----------+---------+---------------+----------------------------+
|1111111011|    0    |   subnet ID   |       interface ID         |
+----------+---------+---------------+----------------------------+

Site-Local addresses may be used for sites or organizations that are not (yet) connected to the global Internet. They do not need to request or "steal" an address prefix from the global Internet address space. IPv6 site-local addresses can be used instead. When the organization connects to the global Internet, it can then form global addresses by replacing the site-local prefix with a subscriber prefix.

Routers MUST not forward any packets with site-local source addresses outside of the site.

The latest version is RFC 4291, IP Version 6 Addressing Architecture, which obsoleted the previous RFCs, and it deprecated the Site-Local addressing:

2.5.6. Link-Local IPv6 Unicast Addresses

Link-Local addresses are for use on a single link. Link-Local addresses have the following format:

|   10     |
|  bits    |         54 bits         |          64 bits           |
+----------+-------------------------+----------------------------+
|1111111010|           0             |       interface ID         |
+----------+-------------------------+----------------------------+

Link-Local addresses are designed to be used for addressing on a single link for purposes such as automatic address configuration, neighbor discovery, or when no routers are present.

Routers must not forward any packets with Link-Local source or destination addresses to other links.

2.5.7. Site-Local IPv6 Unicast Addresses

Site-Local addresses were originally designed to be used for addressing inside of a site without the need for a global prefix. Site-local addresses are now deprecated as defined in [SLDEP].

Site-Local addresses have the following format:

|   10     |
|  bits    |         54 bits         |         64 bits            |
+----------+-------------------------+----------------------------+
|1111111011|        subnet ID        |       interface ID         |
+----------+-------------------------+----------------------------+

The special behavior of this prefix defined in [RFC3513] must no longer be supported in new implementations (i.e., new implementations must treat this prefix as Global Unicast).

Existing implementations and deployments may continue to use this prefix.

Ron Maupin
  • 98,218
  • 26
  • 115
  • 191
4

Simple answer:

Because link-local addresses are not the only addresses starting with 111111101:

The no-longer used "site-local" addresses (`fec0::/10 ) also started with this sequence.

So the range fe80::/9 covers both link-local and site-local addresses.

Martin Rosenau
  • 2,326
  • 6
  • 10