RFC 1706

DNS NSAP Resource Records

πŸ“… published October 1994, from ietf

RFC 1706: DNS NSAP Resource Records πŸŽ€

Okay bestie, this one is from the Network Working Group 🧚 and it's labeled Informational, so it's useful info and not a standard. It was written by B. Manning of ISI and R. Colella of NIST, and it's dated October 1994 πŸ“…. It obsoletes RFC 1637 and RFC 1348, so those two are officially retired 🫢


Status of this Memo πŸ“œ

This memo is info for the Internet community, not a spec. It does not define an Internet standard of any kind πŸ’… And you can share it as much as you want, since distribution is unlimited 🌈

Abstract πŸ¦‹

Okay so OSI lower layer protocols (that's the connectionless network protocol, CLNP, plus its routing protocols) are running in some corners of the global Internet 🌍 Debugging and keeping CLNP connections healthy is way easier when the Domain Name System (DNS) can map names to NSAP addresses and back πŸ’–

This doc defines one brand new Resource Record (RR) for mapping a domain name to an NSAP πŸŽ€ It works with any NSAP address format, which is so iconic πŸ‘‘

Going the other way, NSAP to name, is done with the PTR RR. You can read about it in STD 13, RFC 1035. This paper explains how PTR RRs get used for that translation ✨

Also: this document obsoletes RFC 1348 and RFC 1637. πŸ“


1. Introduction ✨

OSI lower layer protocols, which are CLNP [5] and their supporting routing protocols, are deployed in parts of the global Internet 🌏 Keeping CLNP connectivity healthy gets a huge boost from the Domain Name System (DNS) [7] [8], since it can map names to NSAP (network service access point) addresses [6] πŸ’… [Note: NSAP and NSAP address are used interchangeably throughout this memo].

So this document defines one new Resource Record (RR) for the DNS that maps domain names to NSAPs, and it works with any NSAP address format πŸ¦‹ NSAP-to-name translation uses the PTR RR (see RFC 1035 for a description of the PTR RR), and this paper walks through how PTR RRs support that 🫢

Heads up: this memo assumes you already know your way around the DNS 🧠 Some familiarity with NSAPs helps too. Check out [1] or Annex A of [6] for more info 🌸

2. Background 🌷

The whole reason for defining DNS mappings for NSAPs is to support the CLNP deployment we already have on the Internet 🫧 Debugging with CLNP ping and traceroute got harder as deployments grew, because the addresses were only numeric NSAPs 😭

Right now, people debug by keeping and swapping a config file with name/NSAP mappings. It works kind of like hosts.txt πŸ™ˆ The problem? There's no central coordinator for that file, and it doesn't scale well. The lack of a coordinator is the most serious short-term problem, and a hosts.txt-style solution has well-known long-term scaling difficulties πŸ’€

3. Scope 🧚

The methods in this paper apply to all NSAP formats πŸ’–

Quick reference, because the distinction matters: registration and publication of addresses are different things. For IP addresses, the IANA is the root registration authority and the DNS is the publication method 🌈 For NSAPs, Annex A of the network service definition, ISO8348 [6], describes the root registration authority, and this memo defines how the DNS is used as a publication method πŸ‘‘

4. Structure of NSAPs πŸ’…

NSAPs have a hierarchical structure, which allows distributed administration and efficient routing 🌳 With distributed administration, subdelegated addressing authorities can further structure the part of the NSAP space they control, as long as the delegator allows it 🫢 That means DNS resolvers and servers should need little or no prior knowledge of how NSAPs are structured. Otherwise the whole distributed setup breaks, and that is not it 😀

For this memo, you can picture an NSAP as a tree of identifiers ✨ The root of the tree is ISO8348 [6], and its immediate subordinates are the one-octet Authority and Format Identifiers (AFIs) defined there πŸ“ The size of later fields depends on which branch of the tree you take, and how deep the tree goes depends on the authority responsible for defining those later fields 🧚

Here's a great example: the authority behind U.S. GOSIP NSAPs [2] πŸ‡ΊπŸ‡Έ Under AFI 47, NIST got the value 0005. (AFI 47 says the next field is two octets made of four BCD digits from the International Code Designator space [3].) NIST defined the later fields in [2], as shown in Figure 1 πŸŽ€ The field right after 0005 is a format identifier for the rest of the U.S. GOSIP NSAP structure, with hex value 80. After that comes a three-octet field whose values get allocated to network operators. The registration authority for that field has been delegated to GSA (General Services Administration) πŸ’Ό

The last octet of the NSAP is the NSelector (NSel). Here's the tea β˜• In practice, the NSAP minus the NSel identifies the CLNP protocol machine on a given system, and the NSel identifies the CLNP user. Since there can be more than one CLNP user (so multiple NSel values for one "base" NSAP), the representation of the NSAP should be CLNP-user independent 🫧 To get that, an NSel value of zero shall be used with all NSAP values stored in the DNS. An NSAP with NSel=0 identifies the network layer itself. It's up to the application retrieving the NSAP to figure out the right value to use for that particular communication πŸ’–

When CLNP supports TCP and UDP services, the NSel value used is the appropriate IP PROTO value registered with the IANA 🌈 For "standard" OSI, picking NSel values is left to local administration πŸ¦‹ Administrators of systems that run the OSI transport protocol [4] alongside TCP/UDP must choose NSels for OSI Transport that don't clash with the IP PROTO values. Don't skip this one, bestie πŸ™ˆ

Here's Figure 1, the GOSIP Version 2 NSAP structure πŸ‘‡

              |--------------|
              | <-- IDP -->  |
              |--------------|-------------------------------------|
              | AFI |  IDI   |            <-- DSP -->              |
              |-----|--------|-------------------------------------|
              | 47  |  0005  | DFI | AA |Rsvd | RD |Area | ID |Sel |
              |-----|--------|-----|----|-----|----|-----|----|----|
       octets |  1  |   2    |  1  | 3  |  2  | 2  |  2  | 6  | 1  |
              |-----|--------|-----|----|-----|----|-----|----|----|

                    IDP    Initial Domain Part
                    AFI    Authority and Format Identifier
                    IDI    Initial Domain Identifier
                    DSP    Domain Specific Part
                    DFI    DSP Format Identifier
                    AA     Administrative Authority
                    Rsvd   Reserved
                    RD     Routing Domain Identifier
                    Area   Area Identifier
                    ID     System Identifier
                    SEL    NSAP Selector

Figure 1: GOSIP Version 2 NSAP structure. πŸŽ€

Now, the way NSAPs get written in Master Files and in this memo's text is as a string of "."-separated hex values 🧁 Those values line up with convenient chunks of the NSAP so it's easier to read. For example, the fields could match the NSAP fields defined by whichever authority (RARE, U.S. GOSIP, ANSI, etc.) is in charge. The dots are purely for readability πŸ’… They never show up in DNS packets, and DNS servers can ignore them when reading Master Files ✨

For instance, the first four fields of a U.S. GOSIP NSAP might look like 47.0005.80.005a00, and a full U.S. GOSIP NSAP might look like this:

47.0005.80.005a00.0000.1000.0020.00800a123456.00.

Other NSAP formats have different lengths and different administratively defined field widths, to meet different needs 🌸 For more on the NSAP formats in use, see RFC 1629 [1] 🫢


6. NSAP-to-name Mapping Using the PTR RR πŸ¦‹

okay so the PTR RR is from RFC 1035 πŸ’… and people usually use it under "IN-ADDR.ARPA" to go from IPv4 addresses to domain names. 🌸

same energy for NSAPs! the PTR RR maps NSAPs to domain names under the "NSAP.INT" domain. ✨ you generate a domain name from the NSAP using the rules below, then the resolver sends a query asking for a PTR RR for that name. it's giving reverse lookup, fr fr πŸ”₯

to make the domain name, you reverse the hex nibbles of the NSAP, treat each nibble as its own subdomain, and tack "NSAP.INT" on the end. 🧚 for example, the reverse lookup name for this NSAP:

47.0005.80.005a00.0000.0001.e133.ffffff000162.00

would look like this:

0.0.2.6.1.0.0.0.f.f.f.f.f.f.3.3.1.e.1.0.0.0.0.0.0.0.0.0.a.5.0.0. \
                    0.8.5.0.0.0.7.4.NSAP.INT.
πŸ’€ implementation note, bestie: for sanity's sake, user interfaces should let people type NSAPs in their natural order, the way they're usually written on paper πŸ“ 🫢 and arbitrary "."s should be allowed (and ignored) on input. no stress, just vibes ✨

7. Master File Format πŸŽ€

the format of NSAP RRs (and NSAP-related PTR RRs) in Master Files follows Section 5, "Master Files," of RFC 1035. πŸ“– below are some examples of how these RRs get used in Master Files to support name-to-NSAP and NSAP-to-name mapping. πŸ’œ

the NSAP RR adds a new hex string format for the RDATA field. 🌈 it starts with "0x" (a zero followed by an 'x' character) and then a variable-length string of hex characters (0 to 9, a to f). the hex string is case-insensitive, so no judging πŸ™ˆ you can put "."s (periods) anywhere after the "0x" to make it readable. the "."s don't mean anything beyond readability, and they aren't sent over the protocol (like in queries or zone transfers). πŸ“

;;;;;;
;;;;;; Master File for domain nsap.nist.gov.
;;;;;;


@      IN     SOA    emu.ncsl.nist.gov.  root.emu.ncsl.nist.gov. (
                                  1994041800   ; Serial  - date
                                  1800         ; Refresh - 30 minutes
                                  300          ; Retry   - 5 minutes
                                  604800       ; Expire  - 7 days
                                  3600 )       ; Minimum - 1 hour
       IN     NS     emu.ncsl.nist.gov.
       IN     NS     tuba.nsap.lanl.gov.
;
;
$ORIGIN nsap.nist.gov.
;
;     hosts
;
bsdi1    IN  NSAP  0x47.0005.80.005a00.0000.0001.e133.ffffff000161.00
         IN  A     129.6.224.161
         IN  HINFO PC_486    BSDi1.1
;
bsdi2    IN  NSAP  0x47.0005.80.005a00.0000.0001.e133.ffffff000162.00
         IN  A     129.6.224.162
         IN  HINFO PC_486    BSDi1.1
;
cursive  IN  NSAP  0x47.0005.80.005a00.0000.0001.e133.ffffff000171.00
         IN  A     129.6.224.171
         IN  HINFO PC_386    DOS_5.0/NCSA_Telnet(TUBA)
;
infidel  IN  NSAP  0x47.0005.80.005a00.0000.0001.e133.ffffff000164.00
         IN  A     129.6.55.164
         IN  HINFO PC/486    BSDi1.0(TUBA)
;
;     routers
;
cisco1   IN  NSAP  0x47.0005.80.005a00.0000.0001.e133.aaaaaa000151.00
         IN  A     129.6.224.151
         IN  A     129.6.225.151
         IN  A     129.6.229.151
;
3com1    IN  NSAP  0x47.0005.80.005a00.0000.0001.e133.aaaaaa000111.00
         IN  A     129.6.224.111
         IN  A     129.6.225.111
         IN  A     129.6.228.111




;;;;;;
;;;;;; Master File for reverse mapping of NSAPs under the
;;;;;;     NSAP prefix:
;;;;;;
;;;;;;          47.0005.80.005a00.0000.0001.e133


@      IN     SOA    emu.ncsl.nist.gov.  root.emu.ncsl.nist.gov. (
                                  1994041800   ; Serial  - date
                                  1800         ; Refresh - 30 minutes
                                  300          ; Retry   - 5 minutes
                                  604800       ; Expire  - 7 days
                                  3600 )       ; Minimum - 1 hour
       IN     NS     emu.ncsl.nist.gov.
       IN     NS     tuba.nsap.lanl.gov.
;
;
$ORIGIN 3.3.1.e.1.0.0.0.0.0.0.0.0.0.a.5.0.0.0.8.5.0.0.0.7.4.NSAP.INT.
;
0.0.1.6.1.0.0.0.f.f.f.f.f.f  IN    PTR  bsdi1.nsap.nist.gov.
;
0.0.2.6.1.0.0.0.f.f.f.f.f.f  IN    PTR  bsdi2.nsap.nist.gov.
;
0.0.1.7.1.0.0.0.f.f.f.f.f.f  IN    PTR  cursive.nsap.nist.gov.
;
0.0.4.6.1.0.0.0.f.f.f.f.f.f  IN    PTR  infidel.nsap.nist.gov.
;
0.0.1.5.1.0.0.0.a.a.a.a.a.a  IN    PTR  cisco1.nsap.nist.gov.
;
0.0.1.1.1.0.0.0.a.a.a.a.a.a  IN    PTR  3com1.nsap.nist.gov.

8. Security Considerations πŸ”

okay, security. 😭 this memo does not discuss security issues at all. πŸ’€ that does NOT mean there's nothing to think about, so keep your guard up and don't assume you're safe just because it's not in here πŸ™ˆ


9. Authors' Addresses 🌸

these are the lovely humans who wrote it 🫢

Bill Manning
USC/Information Sciences Institute
4676 Admiralty Way
Marina del Rey, CA. 90292
USA

Phone: +1.310.822.1511
EMail: bmanning@isi.edu


Richard Colella
National Institute of Standards and Technology
Technology/B217
Gaithersburg, MD 20899
USA

Phone: +1 301-975-3627
Fax: +1 301 590-0932
EMail: colella@nist.gov

10. References πŸ“š

[1] Colella, R., Gardner, E., Callon, R., and Y. Rekhter, "Guidelines for OSI NSAP Allocation inh the Internet", RFC 1629, NIST, Wellfleet, Mitre, T.J. Watson Research Center, IBM Corp., May 1994.

[2] GOSIP Advanced Requirements Group. Government Open Systems Interconnection Profile (GOSIP) Version 2. Federal Information Processing Standard 146-1, U.S. Department of Commerce, National Institute of Standards and Technology, Gaithersburg, MD, April 1991.

[3] ISO/IEC. Data interchange - structures for the identification of organization. International Standard 6523, ISO/IEC JTC 1, Switzerland, 1984.

[4] ISO/IEC. Connection oriented transport protocol specification. International Standard 8073, ISO/IEC JTC 1, Switzerland, 1986.

[5] ISO/IEC. Protocol for Providing the Connectionless-mode Network Service. International Standard 8473, ISO/IEC JTC 1, Switzerland, 1986.

[6] ISO/IEC. Information Processing Systems -- Data Communications -- Network Service Definition. International Standard 8348, ISO/IEC JTC 1, Switzerland, 1993.

[7] Mockapetris, P., "Domain Names -- Concepts and Facilities", STD 13, RFC 1034, USC/Information Sciences Institute, November 1987.

[8] Mockapetris, P., "Domain Names -- Implementation and Specification", STD 13, RFC 1035, USC/Information Sciences Institute, November 1987.

πŸ“¦ where this page comes from