RFC 3021

Using 31-Bit Prefixes on IPv4 Point-to-Point Links

πŸ“… published December 2000, from ietf

Okay bestie, let's get the basics down first πŸ’…. This is from the Network Working Group, and it's written by A. Retana, R. White (all from Cisco Systems), V. Fuller (GTE Internetworking), and D. McPherson (Amber Networks) πŸ‘‘. It's a Standards Track document, dated December 2000 🌸. The title block doesn't list anything it obsoletes or updates, but Section 3 changes two other documents, RFC1122 and RFC1700, so keep an eye out for that later 🧚.

Status of this Memo ✨

Okay so this document is an Internet standards track protocol for the whole Internet community, and it's literally asking for discussion and suggestions 🫢. If you want the official standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1) πŸ“‹. Distribution of this memo is unlimited πŸ’–.

Copyright (C) The Internet Society (2000). All Rights Reserved. Mine, yours, and everyone else's, but still with the Internet Society's name on it 🌈.

Abstract πŸ¦‹

With IP addresses running low, it makes sense to look at small tweaks to what's already deployed that could make numbering more efficient πŸ₯Ή. This doc proposes one: cut the amount of address space given to point-to-point links (super common all over the Internet infrastructure) in half, by allowing 31-bit subnet masks in a very limited way πŸ’…βœ¨.

1. Introduction and Motivation 🌸

The "we're running out of Internet addresses" problem has pushed people to change how they use address space, and there are a few different approaches they've tried:

  • Stricter address allocation guidelines, enforced by the IANA and the regional address assignment authorities [RFC2050] πŸ“œ.
  • Network Address Translators (NATs) πŸ“¦, where a small number of IANA-compliant addresses gets shared by a much bigger pool of private, non-globally routed addresses sitting topologically behind a NAT box [RFC1631].
  • Deploying a brand new Internet Protocol to make the address space bigger. IPv6 [RFC2460] has been through the IETF process but has yet to see production deployment 😭. Should it be deployed, it will still face a many year transition period.

Until a larger address space shows up, it seems smart to get more out of the address space we already have 🧠.

One (small) opportunity is to change the way point-to-point links get numbered πŸ”—. One option, used today on some parts of the Internet, is to just not number point-to-point links between routers. It may seem like the easy fix at first, but it causes its own pile of problems πŸ™ˆ: you can't consistently manage the unnumbered link or reach a router through it, it's hard to manage and debug those links, and there's no standardization [RFC1812].

Here's the tea β˜•. In current practice, numbered Internet subnets don't use anything longer than a 30-bit subnet mask (in most cases). That means four addresses per link: two host addresses, one all-zeros network, and one all-ones broadcast πŸ’€. It's extra unfortunate for point-to-point links, because they can only ever have two endpoints and don't really support the idea of broadcast. Any packet one end transmits is always received by the other end, so the broadcast addresses are basically wasted 🫠.

A third option is to use host addresses on both ends of a point-to-point link. This gives the same address space savings as a 31-bit subnet mask, but it may only be used on links that use PPP encapsulation [RFC1332] πŸŽ€. Using host addresses lets you assign IP addresses from different networks to each side of the link, which means link and network management isn't exactly straightforward πŸ˜΅β€πŸ’«.

This document is built on the idea that you can conserve IP addresses on point-to-point links (using a subnet mask longer than 30 bits) while still keeping things manageable and interacting with standard systems normally πŸ¦‹. Honestly, the earlier documentation [RFC950] already hinted at using a 1-bit wide host-number field, so this isn't coming out of nowhere πŸ‘€.

The savings from this change are super easy to see 🀩. Each point-to-point link in a large network would use two addresses instead of four. In a network with 500 point-to-point links, for example, that adds up to a savings of 1000 addresses, which is the equivalent of four class C address spaces πŸ“.

2. Considerations of 31-Bit Prefixes πŸ’…

This section talks about the possible effects, on Internet routing and operations, of using 31-bit prefixes on point-to-point links. The stuff considered here is also reflected in Section 3 🧚.

For the rest of this document, an IP address is interpreted as:

<Network-number><Host-number>

The <Host-number> is the unmasked part of the address, and it SHOULD be at least 1 bit wide πŸ’–. The "-1" notation means that the field has all 1 bits. For this discussion, the routing system is treated as capable of classless routing, or CIDR [RFC1519] 🌈.

2.1. Addressing

If you assign a 31-bit subnet mask to a point-to-point link, the <Host-number> only has 1 bit left 😳. That means only two possible addresses can result:

{<Network-number>, 0} and {<Network-number>, -1}

Historically, these addresses were associated with network and broadcast addresses (see Section 2.2) πŸ“š. On a point-to-point link with a 31-bit subnet mask, the two addresses above MUST be interpreted as host addresses 🫢.

2.2. Broadcast and Network Addresses

There are several historically recognized broadcast addresses on IP segments [RFC1812] πŸ“‘:

(a) The directed broadcast:

{<Network-number>, -1}
{<Network-number>, 0}

The network address itself, {<Network-number>, 0}, is an obsolete form of directed broadcast, but older hosts may still use it πŸ¦–.

(b) The link local (or limited) broadcast:

{-1, -1}
{0, 0}

The {0, 0} form of a limited broadcast is obsolete, but it may still be present in a network πŸ‘».

Using a 31-bit prefix length leaves only two numbering possibilities (see Section 2.1), which gets rid of directed broadcast to the link (see Section 2.2.1) πŸ™…β€β™€οΈ. The limited broadcast MUST be used for all broadcast traffic on a point-to-point link with a 31-bit subnet mask assigned to it πŸ“’.

The network administrator assigns the <Network-number>, which is unique to the local routing domain πŸ—ΊοΈ. Whether a destination IP address should be a directed broadcast or not is decided by the router directly connected to the destination segment. Current forwarding schemes and algorithms aren't affected in remote routers 🀝.

This document only looks at the applicability and operation of 31-bit prefixes on point-to-point links. Any effects (if there are any) on other types of interfaces are not considered πŸ™ƒ.

2.2.1. Directed Broadcast

When a device wants to reach all the hosts on a given subnet (a remote one, not directly connected), it can set the packet's destination address to the link's subnet broadcast address πŸ“¬. That's not possible for point-to-point links with a 31-bit prefix 🚫.

As discussed in Section 6, losing directed broadcast might actually be a beneficial side effect, because it slightly boosts the network's resistance to a certain class of DoS Attacks [RFC2644, SMURF] πŸ›‘οΈπŸ”₯.

2.3. Impact on Current Routing Protocols

Networks with 31-bit prefixes have no impact on current routing protocols πŸ™Œ. Most of the routing protocols deployed today were designed for classless routing. Plus, peers communicate using multicast, limited broadcast, or unicast addresses (all on the local network), and none of those are affected by 31-bit subnet masks πŸ’œ.

3. Recommendations πŸŽ€

The considerations from Section 2 affect other published work, so this section details the updates made to other documents πŸ“.

3.1. "Requirements for Internet Hosts -- Communication Layers" [RFC1122]

Section 3.2.1.3 (e) is replaced with:

(e)  { <Network-number>, <Subnet-number>, -1 }

Directed broadcast to the specified subnet. It MUST NOT be used as a source address, except when the originator is one of the endpoints of a point-to-point link with a 31-bit mask 🚦.

A new section (numbered 3.2.1.3 (h)) is added:

(h)  { <Network-number>, <Subnet-number>, 0 }

Subnetwork number. It SHOULD NOT be used as a source address, except when the originator is one of the endpoints of a point-to-point link with a 31-bit mask. For other types of links, a packet with such a destination SHOULD be silently discarded. If these packets are not silently discarded, they MUST be treated as IP broadcasts [RFC1812] 🫠✨.

3.2. "Assigned Numbers" [RFC1700]

Sub-section (e) of the "Special Addresses" section in the "Introduction" is replaced with:

(e)   {<Network-number>, <Subnet-number>, -1}

Directed broadcast to specified subnet. It can only be used as a destination address. However, when the originator is one of the endpoints of a point-to-point link with a 31-bit mask, it can also be used as a source address πŸŒΈπŸ’–.

3.3. "Requirements for IP Version 4 Routers" [RFC1812] πŸ’…

okay so this one replaces the router rules in Section 4.2.2.11 (d) πŸ‘‘

(d) { <Network-prefix>, -1 } πŸŽ€

Directed Broadcast: a broadcast aimed at the specified network prefix. It MUST NOT be used as a source address, except when the originator is one of the endpoints of a point-to-point link with a 31-bit mask. A router MAY originate Network Directed Broadcast packets. A router MAY have a configuration option to allow it to receive directed broadcast packets, however this option MUST be disabled by default, and thus the router MUST NOT receive Network Directed Broadcast packets unless specifically configured by the end user. 🌸

The text above includes the update made by [RFC2644]. ✨

There's also a brand new entry, numbered 4.2.2.11 (f) 🧚

(f) { <Network-number>, <Subnet-number>, 0 } πŸ¦‹

Subnetwork number. It SHOULD NOT be used as a source address, except when the originator is one of the endpoints of a point-to-point link with a 31-bit mask. For other types of links, a packet with such a destination SHOULD be silently discarded. If these packets are not silently discarded, they MUST be treated as IP broadcasts. πŸ”₯

Next up, Sections 4.2.3.1 (1), (2) and (4) all get replaced πŸ’–

(1) A router MUST treat as IP broadcasts packets addressed to 255.255.255.255 or { <Network-prefix>, -1 }. 🌈

In a point-to-point link with a 31-bit mask, a packet addressed to { <Network-prefix>, -1 } corresponds to one of the endpoints of such link, so it MUST be treated as directed to the router on which the address is applied. πŸ‘‘

(2) A router SHOULD silently discard on receipt (i.e., do not even deliver to applications in the router) any packet addressed to 0.0.0.0 or { <Network-prefix>, 0 }. If these packets are not silently discarded, they MUST be treated as IP broadcasts (see Section [5.3.5]). There MAY be a configuration option to allow receipt of these packets. This option SHOULD default to discarding them. πŸ™ˆ

In a point-to-point link with a 31-bit mask, a packet addressed to { <Network-prefix>, 0 } corresponds to one of the endpoints of such link, so it MUST be treated as directed to the router on which the address is applied. πŸ’œ

(4) A router SHOULD NOT originate datagrams addressed to 0.0.0.0 or { <Network-prefix>, 0 }. There MAY be a configuration option to allow generation of these packets (instead of using the relevant 1s format broadcast). This option SHOULD default to not generating them. πŸ“

In a point-to-point link with a 31-bit mask, the configuration of such a mask SHOULD allow for the generation of datagrams addressed to { <Network-prefix>, 0 }. 🫢

Last one! The following text gets added to Section 4.3.3.9 πŸ’…

The 255.255.255.255 IP broadcast address MUST be used for broadcast Address Mask Replies in point-to-point links with 31-bit subnet masks


4. Operational Experience ✨

okay the vibes here are super good 😭 Several router vendors have put the recommendations from this document into beta code. At least three ISPs tested it, and they found no problems. Among the routing protocols tested successfully are OSPF, IS-IS, BGP and EIGRP. πŸ”₯

The implementation is expected to be officially released within the next few months, and other vendors are expected to adopt it. πŸ¦‹

5. Deployment Considerations πŸŽ€

The whole point of this document is to talk about how 31-bit prefixes work on point-to-point links, and whether they're a good fit there. Any effects on other types of interfaces are not considered here πŸ™ˆ Also, a point-to-point link where only one end supports 31-bit prefixes may not operate correctly. Be careful, bestie πŸ’€

6. Security Considerations πŸ’€

ngl this section is serious, so here we go. Denial of service (DoS) attacks have been hitting various networks across the Internet, so security is now a major concern 😭 Using 31-bit subnet masks in the core of the Internet will reduce the number of physical links that a DoS attack relying on packet replication through directed broadcasts can be launched against [RFC2644, SMURF].

Overall, putting this document's recommendation into practice will improve the Internet's resilience to these types of DoS attacks. πŸ›‘οΈβœ¨

7. Acknowledgements 🫢

The authors don't claim originality for the ideas described here. The authors would like to thank Alex Zinin for his comments, and the many people who tested 31 bit subnet masks in their labs and networks. πŸ’–

8. References πŸ“š

[RFC950]  Mogul, J. and J. Postel, "Internet Standard Subnetting
          Procedure", STD 5, RFC 950, August 1985.

[RFC1122] Braden, R., "Requirements for Internet Hosts --
          Communication Layers", STD 3, RFC 1122, October 1989.

[RFC1332] McGregor, G., "The PPP Internet Protocol Control Protocol
          (IPCP)", RFC 1332, May 1992.

[RFC1519] Fuller, V., Li, T., Yu, J. and K. Varadhan, "Classless
          Inter-Domain Routing (CIDR): an Address Assignment and
          Aggregation Strategy", RFC 1519, September 1993.

[RFC1631] Egevang, K. and P. Francis, "The IP Network Address
          Translator (NAT)", RFC 1631, May 1994.

[RFC1700] Reynolds, J. and J. Postel, "Assigned Numbers", STD 2, RFC
          1700, October 1994.

[RFC1812] Baker, F., "Requirements for IP Version 4 Routers", RFC
          1812, June 1995.

[RFC2050] Hubbard, K., Kosters, M., Conrad, D., Karrenberg, D. and J.
          Postel, "Internet Registry IP Allocation Guidelines", BCP
          12, RFC 2050, November 1996.

[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6
          (IPv6) Specification", RFC 2460, December 1998.

[RFC2644] Senie, D., "Changing the Default for Directed Broadcasts in
          Routers", BCP 34, RFC 2644, August 1999.

[SMURF]   Huegen, C., "The Latest in Denial of Service Attacks:
          'Smurfing':  Description and Information to Minimize
          Effects", URL:
          http://users.quadrunner.com/chuegen/smurf.cgi

9. Authors' Addresses 🌸

Alvaro Retana
Cisco Systems, Inc.
7025 Kit Creek Rd.
Research Triangle Park, NC 27709

EMail: aretana@cisco.com


Russ White
Cisco Systems, Inc.
7025 Kit Creek Rd.
Research Triangle Park, NC 27709

EMail: riw@cisco.com


Vince Fuller
GTE Internetworking
3801 E. Bayshore Rd.
Palo Alto, CA, 94303

EMail: vaf@valinor.barrnet.net


Danny McPherson
Amber Networks
2465 Augustine Drive
Santa Clara, CA  95054

EMail: danny@ambernetworks.com
Copyright (C) The Internet Society (2000).  All Rights Reserved.

This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works.  However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.

The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.

This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Acknowledgement 🌈

Funding for the RFC Editor function is currently provided by the Internet Society. πŸ’œ

πŸ“¦ where this page comes from