RFC 5665
IANA Considerations for Remote Procedure Call (RPC) Network Identifiers and Universal Address Formats
RFC 5665 π IANA Considerations for RPC Network Identifiers and Universal Address Formats π
Okay bestie, this is the RFC that tells IANA how to set up the registries for RPC netids and uaddr formats. β¨ It's by M. Eisler from NetApp π , dated January 2010, and it's a Standards Track doc π₯. It updates RFC 1833 (it doesn't replace it, so 1833 is still around, just with some new stuff added) πΈ. The ISSN is 2070-1721 π§.
Abstract π
This doc lists the IANA Considerations for RPC Network Identifiers (netids) and RPC Universal Network Addresses (uaddrs) π¦. It updates RFC 1833 but does not replace it π .
Status of This Memo π
This is an Internet Standards Track document β.
This document is a product of the Internet Engineering Task Force (IETF) π. It represents the consensus of the IETF community π«Ά. It got public review and was approved for publication by the Internet Engineering Steering Group (IESG) π. If you want more info on Internet Standards, check Section 2 of RFC 5741 π.
For the current status of this document, any errata, and how to send feedback, go to http://www.rfc-editor.org/info/rfc5665 π.
Copyright Notice π
Copyright (c) 2010 IETF Trust and the persons identified as the document authors. All rights reserved π.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as in effect on the date of publication π. Please actually read these docs carefully, because they spell out your rights and restrictions for this document π. Code Components pulled out of this document must include Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions π«Ά. They're provided without warranty, as described in the Simplified BSD License π₯.
Table of Contents ποΈ
1. Introduction and Motivation .....................................3
2. Requirements Language ...........................................3
3. Considerations for the Netid of the Stream Control
Transmission Protocol ...........................................3
4. Security Considerations .........................................3
5. IANA Considerations .............................................3
5.1. IANA Considerations for Netids .............................4
5.1.1. Initial Registry ....................................6
5.1.2. Updating Registrations ..............................8
5.2. IANA Considerations for Uaddr Formats ......................8
5.2.1. Initial Registry ....................................9
5.2.2. Updating Registrations .............................10
5.2.3. Uaddr Formats ......................................10
5.2.3.1. Uaddr Format for System V Release
4 Loopback Transports .....................10
5.2.3.2. Uaddr Format for Netid "-" ................10
5.2.3.3. Uaddr Format for Most IPv4 Transports .....11
5.2.3.4. Uaddr Format for Most IPv6 Transports .....11
5.2.3.5. Uaddr Format for ICMP over IPv4 and IPv6 ..11
5.3. Cross Referencing between the Netid and Format Registry ...12
5.4. Port Assignment for NFS over SCTP .........................12
6. References .....................................................12
6.1. Normative References ......................................12
6.2. Informative References ....................................12
Appendix A. Acknowledgments ......................................14
1. Introduction and Motivation β¨
Okay so RPC has these things called netids and uaddrs π§. A netid is a Network Identifier, and a uaddr is a RPC Universal Address π . They were introduced in RFC 1833 [1] so you could tell apart the network addresses of multiple protocols and write those addresses in one canonical form πΈ. The RFC 5531 [4] doc is where RPC itself is defined π.
RFC 1833 says a netid "is defined by a system administrator based on local conventions, and cannot be depended on to have the same value on every system" π. (The netid lives in the field r_netid of the data type rpcb_entry, and the uaddr lives in the field r_addr of that same data type. rpcb_entry is defined in RFC 1833 π.)
Since RFC 1833 came out, people figured out that protocols like Network File System version 4 (NFSv4.0) [5] and RPC/RDMA (Remote Direct Memory Access) [6] depend on consistent values of netids and representations of uaddrs π. Current practices tend to keep this consistent π«Ά. So this doc figures out what IANA needs to think about in order to set up registries of netids and uaddr formats for RPC, and it specifies what goes in the first version of both registries π.
2. Requirements Language π
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be read as described in RFC 2119 [2] π . These are the BCP 14 words, so pay attention to them, bestie π₯.
3. Considerations for the Netid of the Stream Control Transmission Protocol π
The Stream Control Transmission Protocol (SCTP) is described in RFC 4960 [7]. It's a connection-oriented protocol that supports both byte-streamed and record-oriented data transfer π. When the "sctp" and "sctp6" netids are used, the Open Network Computing (ONC) RPC Record Marking standard is NOT used (see Section 11 of RFC 5531 [4]) π. Instead, SCTP's native record-oriented data transfer does the job π¦.
4. Security Considerations π
Serious bestie moment: this document is only concerned with IANA managing the Network Identifier (netid) and Universal Network Addresses (uaddrs) format registry, so it raises no new security issues π.
5. IANA Considerations πΈ
This section uses terms that are defined in RFC 5226 [8] π§.
5.1. IANA Considerations for Netids π
IANA has created a registry called "ONC RPC Netids" β¨. The rest of this section describes that registry π .
All assignments to the ONC RPC Netids registry are made on one of two bases π₯:
- A First Come First Served basis subregistry per Section 4.1 of RFC 5226.
- A Standards Action basis subregistry per Section 4.1 of RFC 5226.
The eXternal Data Representation (XDR) encoding lets netids be up to 2^32 - 1 octets long, but the registry only allows a much shorter length π. Assignments made on a Standards Action basis should get netids that are 1 to 8 octets long π. Assignments made on a First Come First Served basis should get netids that are 9 to 128 octets long π. Some exceptions are listed in Table 2 π.
Some portion of the netid name space is Reserved π:
- All netids, no matter the length, that start with the prefixes "STDS" or "FCFS" are Reserved, so the name space of either the Standards Action or First Come First Served basis can be extended π.
- So the IESG has flexibility later to permit Private and Experimental Uses, all netids with the prefixes "PRIV" or "EXPE" are Reserved π§.
- To avoid confusion with the control protocol of the same name [9], netids with the prefix "ICMP" are Reserved π.
- Netids aren't built in an explicit hierarchical way, so this document doesn't provide for Hierarchical Allocation of netids π«Ά. Even so, all netids containing the octet "." are Reserved for possible future Hierarchical Allocation π¦.
- The zero length netid is Reserved π.
A recommended convention for netids of transports that work over the IPv6 protocol is to end the netid's name with "6" π .
There are two subregistries of netids: one for Standards Action assignments and one for First Come First Served assignments πΈ. Each registry of netids is a list of assignments, and each assignment has five fields π.
- A US-ASCII string name that is the actual netid. The netid should be 1 to 8 octets long for the Standards Action subregistry, and 9 to 128 octets long for the First Come First Served subregistry. The netid MUST NOT conflict with any other registered netid. Netids are case sensitive, but the netid, when mapped to all upper case, MUST NOT conflict with the value of any other registered netid after that registered netid is mapped to upper case. Also, when mapped to upper case, the prefix of the netid MUST NOT be equal to a Reserved prefix. π₯
- A constant name that software programs can use when they want to use the transport protocol associated with the netid π. The name of the constant typically has the prefix "NC_" plus a suffix equal to the upper-case version of the netid π§. This constant name should be a constant that is valid in the 'C' programming language π . This constant name MUST NOT conflict with any other netid constant name. Constant names with the prefix "NC_STDS", "NC_FCFS", "NC_PRIV", "NC_EXPE", and "NC_ICMP" are Reserved π. Constant names with the prefix "NC_" and a total length of 11 characters or less should be for assignments made on the Standards Action basis π. The constant "NC_" is Reserved π. The constant name can be 1 to 131 octets long π.
Given the typical derivation of the constant name from the netid, registering the constant might seem redundant π€. It's not always true, though π. For example, a netid might use a character that isn't valid in the programming language π. The first entry of Table 1 gives such an example π.
- A description, and/or a reference to a description, of how the netid will be used π. For assignments made on a First Come First Served basis, the description should include, if applicable, a reference to the transport and network protocols that correspond to the netid πΈ. For assignments made on a Standards Action basis, the description field must include the RFC numbers of the protocol associated with the netid, including, if applicable, the RFC numbers of the transport and network protocols π«Ά.
- A point of contact for the registrant. For assignments made on a First Come First Served basis π:
- the point of contact should include an email address.
- subject to authorization by a Designated Expert, the point of contact may be omitted for extraordinary situations, such as the registration of a commonly used netid where the owner is unknown.
For assignments made on a Standards Action basis, the point of contact is always determined by IESG π.
- A numerical value used to cross reference the netid assignment with an assignment in the uaddr format registry (see Section 5.2) π¦. If the registrant is registering a netid that cross references an existing assignment in the uaddr format registry, the registrant provides the actual value of the cross reference, along with the date the registrant retrieved that value from the uaddr format registry π§. If the registrant is registering both a new netid and a new uaddr format, the registrant provides a value of
TBD1in the netid request, and usesTBD1in the uaddr format request π . IANA will then substituteTBD1for the cross reference number IANA allocates π₯. Note that if a document requests multiple netid and uaddr assignments, each additional uaddr format cross reference will be identified asTBD2,TBD3, ..., etc. πβ¨
5.1.1. Initial Registry πΈ
Okay so the starter netid list is split into two subregistries π: the First Come First Served ones in Table 1, and the Standards Action ones in Table 2. IANA is going to keep registering new netids as needed, so these lists will change over time. The authoritative list always lives with IANA π , so if it's not on IANA's list, it's not official, bestie.
+-------------+--------------+---------------------------+-----+----+
| Netid | Constant | Description and/or | PoC | CR |
| | Name | Reference | | |
+-------------+--------------+---------------------------+-----+----+
| "-" | NC_NOPROTO | RFC1833 [1], | | 1 |
| | | Section 5.2.3.2 of RFC | | |
| | | 5665 | | |
| "ticlts" | NC_TICLTS | The loop back | | 0 |
| | | connectionless transport | | |
| | | used in System V Release | | |
| | | 4 and other operating | | |
| | | systems. Although this | | |
| | | assignment is made on a | | |
| | | First Come First Served | | |
| | | basis and is fewer than | | |
| | | nine characters long, the | | |
| | | exception is authorized. | | |
| | | See [10]. | | |
| "ticots" | NC_TICOTS | The loop back | | 0 |
| | | connection-oriented | | |
| | | transport used in System | | |
| | | V Release 4 and other | | |
| | | operating systems. See | | |
| | | [10]. Although this | | |
| | | assignment is made on a | | |
| | | First Come First Served | | |
| | | basis and is fewer than | | |
| | | nine characters long, the | | |
| | | exception is authorized. | | |
| "ticotsord" | NC_TICOTSORD | The loop back | | 0 |
| | | connection-oriented with | | |
| | | orderly-release transport | | |
| | | used in System V Release | | |
| | | 4 and other operating | | |
| | | systems. See [10]. | | |
+-------------+--------------+---------------------------+-----+----+
Table 1: Initial First Come First Served Netid Assignments
PoC: Point of Contact.
CR: Cross Reference to the Uaddr Format Registry.
+---------+----------+----------------------------------+------+----+
| Netid | Constant | RFC(s) and Description (if | PoC | CR |
| | Name | needed) | | |
+---------+----------+----------------------------------+------+----+
| "rdma" | NC_RDMA | RFC 5666 [6], RFC 791 [11] | IESG | 2 |
| "rdma6" | NC_RDMA6 | RFC 5666 [6], RFC 2460 [12] | IESG | 3 |
| "sctp" | NC_SCTP | RFC 4960 [7], RFC 791 [11], | IESG | 2 |
| | | Section 3 of RFC 5665 | | |
| "sctp6" | NC_SCTP6 | RFC 4960 [7], RFC 2460 [12], | IESG | 3 |
| | | Section 3 of RFC 5665 | | |
| "tcp" | NC_TCP | RFC 793 [13], RFC 791 [11], | IESG | 2 |
| | | Section 11 of RFC 5531 [4] | | |
| "tcp6" | NC_TCP6 | RFC 793 [13], RFC 2460 [12], | IESG | 3 |
| | | Section 11 of RFC 5531 [4] | | |
| "udp" | NC_UDP | RFC 768 [14], RFC 791 [11] | IESG | 2 |
| "udp6" | NC_UDP6 | RFC 768 [14], RFC 2460 [12] | IESG | 3 |
+---------+----------+----------------------------------+------+----+
Table 2: Initial Standards Action Netid Assignments
5.1.2. Updating Registrations β¨
Per Section 5.2 of RFC 5226, the registrant is always permitted to update a registration made on a First Come First Served basis "subject to the same constraints and review as with new registrations". π«Ά
The IESG or a Designated Expert is permitted to update any registration made on a First Come First Served basis. That normally happens when the PoC can't be reached to make the necessary updates. Examples where an update would be needed include, but are not limited to:
- the email address or other contact information becomes invalid;
- the reference to the corresponding protocol becomes obsolete or unavailable;
- RFC 1833 is updated or replaced in such a way that the scope of netids changes, requiring additional fields in the assignment.
Only the IESG, on the advice of a Designated Expert, can update a registration made on a Standards Action basis. π
5.2. IANA Considerations for Uaddr Formats π¦
IANA has created a registry called "ONC RPC Uaddr Format Registry" (we'll call it the "format registry" for the rest of this document, bestie). The rest of this section describes that registry. π
All assignments to the format registry are made on one of two bases:
- First Come First Served basis per Section 4.1 of RFC 5226.
- Standards Action per Section 4.1 of RFC 5226.
The registry of formats is a list of assignments, and each assignment contains four fields. π
- The basis for the assignment, which can be either FCFS for First Come First Served assignments or STDS for Standards Action assignments.
- A description and/or reference to a description of the actual uaddr format. Assignments made on a Standards Action basis always have a reference to an RFC.
- For assignments made on a First Come First Served basis, a point of contact, including an email address. Subject to authorization by a Designated Expert, the point of contact may be omitted for extraordinary situations, such as the registration of a commonly used format where the owner is unknown. For assignments made on a Standards Action basis, the point of contact is always determined by the IESG.
- A numerical value, used to cross reference the format assignment with an assignment in the netid registry. The registrant provides a value of TBD1 for the cross reference field when requesting an assignment, and IANA will assign TBD1 to a real value. Note that if a document requests multiple uaddr assignments, each additional uaddr format cross reference will be identified as TBD2, TBD3, ..., etc.
All requests for assignments to the format registry on a Standards Action basis are only for Standards Track RFCs approved by the IESG. π―
5.2.1. Initial Registry π
The initial list of formats is in Table 3. This list will change as IANA registers additional formats as needed, and the authoritative list of registered formats will always live with IANA. π
+-------+-----------------------------------------------+------+----+
| Basis | Description and/or Reference | PoC | CR |
+-------+-----------------------------------------------+------+----+
| FCFS | System V Release 4 loopback transport uaddr | | 0 |
| | format. Section 5.2.3.1 of RFC 5665 | | |
| FCFS | Uaddr format for NC_NOPROTO. Section 5.2.3.2 | | 1 |
| | of RFC 5665 | | |
| STDS | Uaddr format for IPv4 transports. | IESG | 2 |
| | Section 5.2.3.3 of RFC 5665 | | |
| STDS | Uaddr format for IPv6 transports. | IESG | 3 |
| | Section 5.2.3.4 of RFC 5665 | | |
+-------+-----------------------------------------------+------+----+
Table 3: Initial Format Assignments
5.2.2. Updating Registrations π
The registrant is always permitted to update a registration made on a First Come First Served basis "subject to the same constraints and review as with new registrations." π
The IESG is permitted to update any registration made on a First Come First Served basis. That normally happens when the PoC cannot be reached to make necessary updates. Examples where an update would be needed include, but are not limited to: the email address or other contact information becomes invalid; the reference to the format description becomes obsolete or unavailable; RFC 1833 is updated or replaced in such a way that the scope of uaddr formats changes, requiring additional fields in the assignment.
Only the IESG, on the advice of a Designated Expert, can update a registration made on a Standards Action basis. π
5.2.3. Uaddr Formats π§
5.2.3.1. Uaddr Format for System V Release 4 Loopback Transports π
Although RFC 1833 specifies the uaddr as the XDR data type string (hence, limited to US-ASCII), implementations of the System V Release 4 loopback transports will use an opaque string of octets. Thus, the format of a loopback transport address is any non-zero length array of octets. π€
5.2.3.2. Uaddr Format for Netid "-" π
There is no address format for netid "-". This netid is apparently for internal use for supporting some implementations of RFC 1833. π
5.2.3.3. Uaddr Format for Most IPv4 Transports πΈ
Most transport protocols that operate over IPv4 use 16-bit port numbers, including RDMA [6], SCTP [7], TCP [13], and UDP [14]. The format of the uaddr for the above 16-bit port transports (when used over IPv4) is the US-ASCII string:
h1.h2.h3.h4.p1.p2
The prefix "h1.h2.h3.h4" is the standard textual form for representing an IPv4 address, which is always four octets long. Assuming big-endian ordering, h1, h2, h3, and h4 are, respectively, the first through fourth octets each converted to ASCII-decimal. The suffix "p1.p2" is a textual form for representing a service port. Assuming big-endian ordering, p1 and p2 are, respectively, the first and second octets each converted to ASCII-decimal. π§
For example, if a host, in big-endian order, has an address in hexadecimal of 0xC0000207 and there is a service listening on, in big-endian order, port 0xCB51 (decimal 52049), then the complete uaddr is "192.0.2.7.203.81". β¨
5.2.3.4. Uaddr Format for Most IPv6 Transports π
Most transport protocols that operate over IPv6 use 16-bit port numbers, including RDMA [6], SCTP [7], TCP [13], and UDP [14]. The format of the uaddr for the above 16-bit port transports (when used over IPv6) is the US-ASCII string:
x1:x2:x3:x4:x5:x6:x7:x8.p1.p2
The suffix "p1.p2" is the service port, and it is computed the same way as with uaddrs for transports over IPv4 (see Section 5.2.3.3). The prefix "x1:x2:x3:x4:x5:x6:x7:x8" is the preferred textual form for representing an IPv6 address as defined in Section 2.2 of RFC 4291 [3]. Additionally, the two alternative forms specified in Section 2.2 of RFC 4291 are also acceptable. π¦
5.2.3.5. Uaddr Format for ICMP over IPv4 and IPv6 β¨
okay so ICMP isn't a true transport π, which means there's no uaddr format for it. bestie, that's it, that's the whole format situation π
BUT the netid assignments icmp and icmp6 (plus their shared uaddr "format") are still listed! why? to stop anyone from grabbing those netids for something that would likely cause confusion. so think of it as a little "do not touch" sign π§π
5.3. Cross Referencing between the Netid and Format Registry π¦
so the last field of the netids registry is used to cross reference the last field of the format registry. cute, right? π
IANA is under no obligation to keep the same numeric values in those cross references when it updates each registry. in other words, IANA is totally free to "re-number" these corresponding fields π’ ngl that's kinda spicy πΆοΈ
BUT if IANA does re-number, the netid and format registries MUST be updated atomically. no half-updated registries, periodt π«
5.4. Port Assignment for NFS over SCTP π
port 2049 is assigned to NFS over SCTP for the sctp and sctp6 netids. main character port energy π
6. References π
6.1. Normative References π
- [1] Srinivasan, R., "Binding Protocols for ONC RPC Version 2", RFC 1833, August 1995. π
- [2] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. π
- [3] Hinden, R. and S. Deering, "IP Version 6 Addressing Architecture", RFC 4291, February 2006. π
6.2. Informative References πΈ
- [4] Thurlow, R., "RPC: Remote Procedure Call Protocol Specification Version 2", RFC 5531, May 2009. π§
- [5] Shepler, S., Callaghan, B., Robinson, D., Thurlow, R., Beame, C., Eisler, M., and D. Noveck, "Network File System (NFS) version 4 Protocol", RFC 3530, April 2003. π
- [6] Talpey, T. and B. Callaghan, "Remote Direct Memory Access Transport for Remote Procedure Call", RFC 5666, January 2010. β¨
- [7] Stewart, R., Ed., "Stream Control Transmission Protocol", RFC 4960, September 2007. π
- [8] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 5226, May 2008. π
- [9] Postel, J., "Internet Control Message Protocol", STD 5, RFC 792, September 1981. π
- [10] American Telephone and Telegraph Company, "UNIX System V, Release 4 Programmer's Guide: Networking Interfaces, ISBN 0139470786", 1990. π
- [11] Postel, J., "Internet Protocol", STD 5, RFC 791, September 1981. π
- [12] Deering, S. and R. Hinden, "Internet Protocol, Version 6 (IPv6) Specification", RFC 2460, December 1998. π¦
- [13] Postel, J., "Transmission Control Protocol", STD 7, RFC 793, September 1981. π
- [14] Postel, J., "User Datagram Protocol", STD 6, RFC 768, August 1980. π
Appendix A. Acknowledgments π«Ά
Lisa Dusseault, Lars Eggert, Pasi Eronen, Tim Polk, Juergen Schoenwaelder, and Robert Sparks reviewed the document and gave valuable feedback. the reviewers are literally the unsung heroes here ππ«Ά
Author's Address π
Mike Eisler NetApp 5765 Chase Point Circle Colorado Springs, CO 80919 US
Phone: +1-719-599-9026 EMail: mike@eisler.com
π¦ where this page comes from
- ietf: rfc5665 2010-01
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms