Textual Conventions for Transport Addresses
Extracted elements (27)
DISPLAY-HINTs for the address textual conventions are aligned with the formats used in URIs (RFC 2396, RFC 3291) to provide consistent human-readable representations across management and non-management contexts.
SNMPv2-TM transport domain values were originally for SNMP-only use but were later applied to non-SNMP endpoints and are incomplete (lacking IPv6 support). This memo defines protocol-independent transport domain values to fill that gap.
TransportAddress uses SIZE (0..255) rather than SIZE (1..255) as in TAddress, to allow representation of unknown transport addresses. The sub-type TransportAddress (SIZE (1..255)) is intentionally identical to TAddress for backward compatibility.
TransportAddressIPv4z and TransportAddressIPv6z are provided to support scoped Internet addresses that include a zone index, required on devices connecting multiple zones where addresses are not necessarily unique across zones.
Two mechanisms for adding new transport domains are provided: updating this MIB module (which also updates the TransportAddressType enumeration) or defining new OIDs in other MIB modules (which cannot extend TransportAddressType). MIB designers choose between compact/limited-extensibility or verbose/fully-extensible approaches.
Existing MIB modules may be updated to use the definitions in this memo by replacing TDomain with TransportDomain and TAddress with TransportAddress (SIZE (1..255)), preserving full semantic equivalence.
Programs that interpret transport domain values should accept both the SNMPv2-TM domain values (for SNMP-specific endpoints) and the domain values defined in this memo, to provide interoperability in cases where distinguishing the protocol running over a transport endpoint is not possible or desirable.
Attempts to set a TransportAddress object to a value inconsistent with the associated TransportAddressType or TransportDomain must fail with an inconsistentValue error.
Every usage of the TransportAddress textual convention MUST specify the TransportAddressType or TransportDomain object that provides the context for interpreting the address value.
MIB authors SHOULD define a separate TransportDomain or TransportAddressType object for each TransportAddress object to support arbitrary combinations of scoped Internet transport addresses.
New MIB modules SHOULD use the generic TransportDomain, TransportAddressType, and TransportAddress definitions from this memo rather than TDomain/TAddress from SNMPv2-TC.
SNMP transport endpoints SHOULD continue to use definitions from the SNMPv2-TM MIB module where applicable, and SHOULD use the transport domain values from this memo for SNMP transports not defined in SNMPv2-TM (e.g., SNMP over UDP over IPv6).
The specific address-format textual conventions (TransportAddressIPv4, TransportAddressIPv6, etc.) SHOULD NOT be used directly in object definitions since they restrict addresses to a specific format; when used, they MAY be used alone or with TransportAddressType/TransportDomain.
Transport domain values from this memo SHOULD be used for all transport endpoints not carrying SNMP traffic; programs interpreting transport domain values should also accept SNMPv2-TM domain values for interoperability with existing implementations.
TransportAddressDns names SHOULD be fully qualified whenever possible; objects using this convention must fully describe in their DESCRIPTION clause how and when names are resolved to IP addresses.
When TransportAddress (or TransportAddressLocal or TransportAddressDns) is used as the syntax of an index object, the OBJECT-TYPE declaration MUST include a 'SIZE' clause to limit the number of potential instance sub-identifiers, due to the SMIv2 limit of 128 sub-identifiers.
TransportAddress is a generic transport address textual convention with SYNTAX OCTET STRING (SIZE (0..255)). Its value is always interpreted within the context of an associated TransportAddressType or TransportDomain object.
TransportAddressType is an enumerated INTEGER textual convention representing the well-known transport domains: unknown(0), udpIpv4(1) through sctpDns(16). It provides a compact, index-friendly alternative to TransportDomain but cannot be extended outside this MIB module.
TransportDomain is a textual convention with SYNTAX OBJECT IDENTIFIER that represents a transport domain. Values such as transportDomainUdpIpv4 are defined in this module; additional values may be defined in other MIB modules, making it fully extensible.
This document registers 16 transport domain OIDs under transportDomains (transportAddressMIB 1): transportDomainUdpIpv4(1) through transportDomainSctpDns(16), covering UDP, TCP, and SCTP over IPv4, IPv6, scoped IPv4z/IPv6z, POSIX Local IPC, and DNS-based addressing.
This MIB module defines only textual conventions, not concrete management objects. Because meaningful security considerations apply only to modules that define management objects, this document has no direct security impact on the Internet.
TransportAddressDns encodes a DNS domain name followed by a colon ':' (0x3A) and an ASCII port number as an OCTET STRING (SIZE 1..255). Values require runtime resolution and are not directly usable as transport-layer addressing information.
TransportAddressIPv4 encodes an IPv4 transport address as a 6-octet string: octets 1-4 carry the IPv4 address in network-byte order, octets 5-6 carry the port number in network-byte order. DISPLAY-HINT is '1d.1d.1d.1d:2d'.
TransportAddressIPv4z encodes a scoped IPv4 transport address as a 10-octet string: octets 1-4 IPv4 address, 5-8 zone index, 9-10 port number, all in network-byte order. Used with transportDomainUdpIpv4z, transportDomainTcpIpv4z, or transportDomainSctpIpv4z.
TransportAddressIPv6 encodes an IPv6 transport address as an 18-octet string: octets 1-16 carry the IPv6 address in network-byte order, octets 17-18 carry the port number in network-byte order. DISPLAY-HINT is '0a[2x:2x:2x:2x:2x:2x:2x:2x]0a:2d'.
TransportAddressIPv6z encodes a scoped IPv6 transport address as a 22-octet string: octets 1-16 IPv6 address, 17-20 zone index, 21-22 port number, all in network-byte order. DISPLAY-HINT is '0a[2x:2x:2x:2x:2x:2x:2x:2x%4d]0a:2d'.
TransportAddressLocal encodes a POSIX Local IPC (UNIX domain socket) address as an OCTET STRING (SIZE 1..255) with DISPLAY-HINT '1a', carrying the socket path as a string.