Internet-Draft | NATSAP | April 2025 |
McLarty | Expires 3 October 2025 | [Page] |
This document defines the NAT Sub-Address Protocol (NATSAP), a Layer 5 encapsulation protocol designed to facilitate seamless bidirectional communication with devices behind Carrier-Grade NAT (CG NAT). NATSAP introduces dynamic sub-addresses assigned by the NAT router, which external clients can use alongside the public IP to route traffic back to internal devices without requiring traditional port forwarding. This document also defines the Dynamic Sub-Address Assignemnt Protocol (DSAAP), to facilitate the acquiring of a NATSAP Sub-Address.¶
The protocol offers backward compatibility with existing IPv4 infrastructure, efficient DNS-based service discovery, and simple, stateless mapping. By encapsulating application-layer traffic, NATSAP enables direct communication with devices behind NATs using a standardized socket notation and DNS records.¶
This note is to be removed before publishing as an RFC.¶
The latest revision of this draft can be found at https://Daniel-McLarty.github.io/NAT-Sub-Address-Protocol/draft-mclarty-nat-sub-address-protocol.html. Status information for this document may be found at https://datatracker.ietf.org/doc/draft-mclarty-nat-sub-address-protocol/.¶
Discussion of this document takes place on the Network Address Translators mailing list (mailto:nat@ietf.org), which is archived at ftp://ftp.ietf.org/ietf-mail-archive/nat/. Subscribe at https://www.ietf.org/mailman/listinfo/nat/.¶
Source for this draft and an issue tracker can be found at https://github.com/Daniel-McLarty/NAT-Sub-Address-Protocol.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 3 October 2025.¶
Copyright (c) 2025 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 (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
The proliferation of Carrier-Grade NAT (CG NAT) in IPv4 networks has made it increasingly difficult for devices behind NATs to host services. Traditional NAT traversal techniques, such as port forwarding, STUN, TURN, and UPnP, are cumbersome, inconsistent, and difficult to automate.¶
NATSAP addresses this issue by introducing:¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
NATSAP: NAT Sub-Address Protocol¶
DSAAP: Dynamic Sub-Address Assignment Protocol¶
CG NAT: Carrier-Grade Network Address Translation¶
Sub-Address: A unique 32-bit identifier assigned by the NAT router to an internal device.¶
NATSAP Table: A mapping table in the NAT router that associates sub-addresses with internal IPs.¶
Client Initialization (DSAAP)¶
Service Advertising (DNS)¶
Third-Party Client Connection¶
NATSAP Encapsulation¶
The external client encapsulates its application-layer traffic inside a NATSAP packet.¶
The CG NAT router receives the packet, extracts the sub-address, and performs a table lookup to route the traffic to the appropriate internal device.¶
The router de-encapsulates the traffic and forwards it to the internal client.¶
On the return path, the router re-encapsulates the response and sends it back to the external client.¶
Field Name |
---|
Version (8 bits) |
Flags (8 bits) |
Sub-Address (32 bits) |
Encapsulated Destination Port (16 bits) |
Encapsulated Data Length in bytes (32 bits) |
Encapsulated Application-Layer Traffic |
Version: NATSAP protocol version (e.g., 0x01).¶
Flags: Reserved for future extensions.¶
Sub-Address: The 32-bit sub-address assigned by the NAT router.¶
Encapsulated Destination Port: The original application port.¶
Encapsulated Data Length: Length of the encapsulated payload.¶
Encapsulated Data: The original application-layer traffic.¶
The CG NAT router should rate-limit DSAAP requests to prevent abuse.¶
This document has no IANA actions.¶
TODO acknowledge.¶