Textual Conventions for Internet Network Addresses
obsoleted by
- rfc-4001 — Textual Conventions for Internet Network Addresses
obsoletes
- rfc-2851 — Textual Conventions for Internet Network Addresses
Extracted elements (25)
InetAutonomousSystemNumber uses Unsigned32 without a range restriction (rather than 0..65535) in order to forward-compatibly support a future expansion of the AS number space to 32 bits, even though current AS numbers are limited to 16 bits.
The InetAddressIPv6 textual convention was split into InetAddressIPv6 (global) and InetAddressIPv6z (non-global with zone index), and InetAddressIPv4z was added. The motivations are: enabling a TC for non-global IPv4 addresses, alignment with transport address TCs, simpler compliance statements when zone index support is not required, and simpler host implementations that never need zone indices.
The SMIv2 IpAddress base type is limited to 4-byte IPv4 addresses and is incompatible with IPv6. This document introduces a two-object pattern (InetAddressType + InetAddress) to provide a version-neutral, extensible address representation compatible with both SMIv1 and SMIv2.
The zone index in InetAddressIPv4z and InetAddressIPv6z is 4 octets (Unsigned32) to be consistent with the numerical zone index architecture and the sin6_scope_id field of the sockaddr_in6 structure defined in RFC 2553. A zone index value of 0 refers to the default zone for each scope.
Because InetAddressIPv6 represents both global and (when no zone index is needed) non-global IPv6 addresses, MIB designers using InetAddressType/InetAddress pairs do not need to define additional objects to support non-global addresses on nodes connecting multiple zones — they use InetAddressIPv6z (ipv6z(4)) for that case.
The MIB module is compliant with SMIv2 but can be translated to SMIv1. The resulting translated MIB is semantically equivalent except where objects are omitted because no translation is possible (e.g., Counter64). Machine-readable information in SMIv2 becomes textual descriptions in SMIv1, which is not considered a semantic change.
DNS names MUST be resolved to IP addresses when communication with the named host is required. The DESCRIPTION clause of objects that may have DNS name values SHOULD precisely define how and when name-to-address resolution (and reverse lookup) is performed.
Implementations must ensure that InetAddressType objects and dependent InetAddress objects are consistent. An inconsistentValue error MUST be generated if a Set operation on InetAddressType would lead to an undefined InetAddress value. InetAddressType/InetAddress pairs must be changed together when the address type changes.
MIB developers SHOULD NOT use these textual conventions to represent generic transport layer addresses; the SMIv2 TAddress textual convention should be used for that purpose instead.
MIB modules of the first type (version-neutral management information) SHOULD provide object definitions (e.g., tables) that work with all versions of IP. When revising IPv4-specific MIB modules, old version-specific tables SHOULD be deprecated while new version-neutral tables are defined as 'current'. Multiple parallel tables for different IP versions are strongly discouraged.
New MIB definitions that need to express network layer Internet addresses SHOULD use the textual conventions defined in this memo. New MIB modules SHOULD NOT use the SMIv2 IpAddress base type anymore.
The InetAddressType object SHOULD NOT be sub-typed in object type definitions to preserve extensibility for future address types. It MAY be sub-typed in compliance statements to require only a subset of address types.
When a generic Internet address is used as a table index, both InetAddressType and InetAddress objects MUST be used, and InetAddressType MUST be listed before InetAddress in the INDEX clause. The IMPLIED keyword MUST NOT be used for an InetAddress object in an INDEX clause.
When InetAddress is used as an index object, the object definition MUST include a 'SIZE' clause to limit the number of potential instance sub-identifiers, due to the 128 sub-identifier limit in SMIv2.
InetAddress is an opaque textual convention (OCTET STRING, SIZE 0..255) representing a generic Internet address whose interpretation is always determined by an associated InetAddressType object. Every usage must specify which InetAddressType object provides the context.
InetAddressPrefixLength is an Unsigned32 textual convention denoting the number of contiguous leading 1-bits in an address mask. Maximum significant values are 32 for ipv4/ipv4z, 128 for ipv6/ipv6z, and 0 for dns. Must always be interpreted in the context of an InetAddressType.
InetAddressType is a textual convention enumerating address types: unknown(0), ipv4(1), ipv6(2), ipv4z(3), ipv6z(4), and dns(16). It serves as a discriminator that determines the encoding of an accompanying InetAddress object.
InetAutonomousSystemNumber is an Unsigned32 textual convention (without range restriction) representing an AS number. The unrestricted range is intentional to accommodate a future expansion from 16-bit to 32-bit AS number space.
InetPortNumber is a textual convention using Unsigned32 (0..65535) to represent a 16-bit Internet transport-layer port number. Zero is object-specific and must be defined in the DESCRIPTION of any object using this syntax.
This module defines only textual conventions and does not define any management objects. Meaningful security considerations can only be written in MIB modules that define management objects using these TCs. This document therefore has no direct impact on Internet security.
InetAddressDNS encodes a DNS domain name as an OCTET STRING of SIZE 1..255 (DISPLAY-HINT '255a'). The name SHOULD be fully qualified whenever possible. Corresponds to InetAddressType dns(16).
InetAddressIPv4 encodes an IPv4 address as a 4-octet OCTET STRING in network-byte order (DISPLAY-HINT '1d.1d.1d.1d'). Corresponds to InetAddressType ipv4(1).
InetAddressIPv4z encodes a non-global IPv4 address with zone index as an 8-octet OCTET STRING: octets 1-4 are the IPv4 address in network-byte order, octets 5-8 are the zone index in network-byte order. Corresponds to InetAddressType ipv4z(3).
InetAddressIPv6 encodes a global IPv6 address as a 16-octet OCTET STRING in network-byte order (DISPLAY-HINT '2x:2x:2x:2x:2x:2x:2x:2x'). Corresponds to InetAddressType ipv6(2).
InetAddressIPv6z encodes a non-global IPv6 address with zone index as a 20-octet OCTET STRING: octets 1-16 are the IPv6 address in network-byte order, octets 17-20 are the zone index in network-byte order. Corresponds to InetAddressType ipv6z(4).