revised draft, accordin to RELAY-MTA terminology.

ALLOCCHIO@elettra-ts.infn.it Wed, 24 March 1993 14:52 UTC

Received: from ietf.nri.reston.va.us by IETF.CNRI.Reston.VA.US id aa18904; 24 Mar 93 9:52 EST
Received: from CNRI.RESTON.VA.US by IETF.CNRI.Reston.VA.US id aa18900; 24 Mar 93 9:52 EST
Received: from mhs-relay.cs.wisc.edu by CNRI.Reston.VA.US id aa08106; 24 Mar 93 9:52 EST
X400-Received: by mta mhs-relay.cs.wisc.edu in /PRMD=XNREN/ADMD= /C=US/; Relayed; Wed, 24 Mar 1993 08:50:19 +0000
Date: Wed, 24 Mar 1993 08:50:19 +0000
X400-Originator: cargille@cs.wisc.edu
X400-Recipients: non-disclosure:;
X400-MTS-Identifier: [/PRMD=XNREN/ADMD= /C=US/; mhs-relay..314:24.02.93.14.50.19]
Priority: Non-Urgent
DL-Expansion-History: ietf-osi-x400ops@cs.wisc.edu ; Wed, 24 Mar 1993 08:50:17 +0000;
Sender: ietf-archive-request@IETF.CNRI.Reston.VA.US
From: ALLOCCHIO@elettra-ts.infn.it
Message-ID: <"10345142303991/17329 INFN*"@MHS>
To: ietf-osi-x400ops@cs.wisc.edu
Subject: revised draft, accordin to RELAY-MTA terminology.

Network Working Group                                         March 1993
Request for Comments: Internet-DRAFT v4.2

 

   Using the Internet DNS to maintain X.400 MHS Routing Informations


 
             Claudio Allocchio (Allocchio@elettra.trieste.it)
               Antonio Blasco Bonito (bonito@cnuce.cnr.it)
                       Bruce Cole (bcole@cisco.com)
                    Silvia Giordano (giordano@cscs.ch)
                      Robert Hagens (hagens@ans.net)

                               GARR-Italy
                           Cisco Systems Inc.
                  Centro Svizzero Calcolo Scientifico
                      Advanced Network & Services


0. Status of this memo
 
   This memo proposes a method of storing in the Internet Domain Name 
   System the routing information needed by X.400 MTAs within an X.400 
   MHS. Routing information can be managed in a distributed rather than 
   a centralized way. MTAs located on Internet hosts can retrieve the 
   routing information querying the DNS instead of having fixed tables 
   which need to be centrally updated and distributed. This document 
   specifies a prototype standard proposal. This memo is a joint effort
   of X400 operation working group and RARE Mail and Messaging working
   group.

   Distribution of this memo is unlimited.
 
   Another document by the same authors describes a method to store and 
   distribute the RFC1327 mapping information using the Internet DNS.

   This document is an Internet Draft. Internet Drafts are working 
   documents of the Internet Engineering Task Force (IETF), its Areas, 
   and its Working Groups. Note that other groups may also distribute 
   working documents as Internet Drafts. 

   Internet Drafts are draft documents valid for a maximum of six 
   months. Internet Drafts may be updated, replaced, or obsoleted 
   by other documents at any time. It is not appropriate to use 
   Internet Drafts as reference material or to cite them other than 
   as a "working draft" or "work in progress."

   Please check the I-D abstract listing contained in each Internet 
   Draft directory to learn the current status of this or any other 
   Internet Draft.




Allocchio et. al.      (Doc. expiration date: August 1993)      [Page 1]

I-d v4.2      Internet DNS for X.400 MHS routing data         March 1993


1. Introduction
 
   The routing informations are an essential element to implement an 
   efficient e-mail service within any community. In the Internet Domain 
   Name System the "A" and "MX" records are used to store and distribute 
   dynamically the routing information used by mailers to transport and 
   deliver e-mail messages. In X.400 MHS usually static tables contain 
   the routing data.

   In the early X.400 times, the MHS configurations were quite simple: 
   a few well managed MTAs (often called "Well known Entry Point" or 
   "WEP") were taking care of the whole routing for one or more 
   communities; all the traffic was managed by static point-to-point 
   connections among the WEPs, and often there was only one network 
   transport available (usually X.25 or TCP with RFC1006). In this 
   situation static tables proved to be enough to run such initial 
   service.

   The rapid growth of X.400 Message Handling Systems, however, made
   very soon inadequate the use of a simple statically defined database:
   in fact the X.400 addresses tree grows daily adding new branches and 
   many new MTAs show up either. More over a large number of X.400 
   implementations now support multiple transport stacks, allowing a 
   real and global connectivity.

   Many efforts have been done in order to take in account this new 
   situation, and a document defining the X.400 MHS routing strategy has 
   been defined by Urs Eppenberger from SWITCH/COSINE MHS project team 
   [EPPEN V3]. In that document the approach to the routing problem is 
   again table driven, using the so called "DOMAIN" and "RELAY-MTA" 
   tables (section 4). Two additional tables, "COMMUNITY" and "PERSON", 
   complete the data about the X.400 MHS. That document, however, has 
   been carefully designed to allow easily the store of the information
   it defines in distributed databases like DNS or X.500: our aim is to
   define the use of DNS to store those routing information.

   A first proposal to use the Internet DNS to store, to retrieve and to 
   maintain X.400 related information (the RFC1327 mapping tables) was 
   introduced by two of the authors (B. Cole and R. Hagens). However it 
   required modifications to the actual Internet DNS nameservers and, 
   due to the large variety of currently available implementations, this 
   was unfeasible within a reasonable time.

   A different approach, using already defined, commonly available DNS 
   resource-record types to store the information is proposed now. In 
   addition, the use of a new domain name space is envisaged in order to 
   fully implement a distributed X.400 routing information tree: again 
   the MX resource-records will be used, jointly with some other ones 
   needed to store the more complex X.400 routing data.

   The creation of the new domain name space also provides the chance to 
   use the DNS to distribute dynamically the X.400 to/from RFC822 


Allocchio et. al.      (Doc. expiration date: August 1993)      [Page 2]

I-d v4.2      Internet DNS for X.400 MHS routing data         March 1993


   mapping information described in RFC1327, thus solving another 
   efficiency problems currently affecting the X.400 MHS
   implementations. 

   In this paper we will adopt the DOMAIN and RELAY-MTA document 
   definitions from [EPPEN V3] routing coordination document.
 
1.1 Definitions syntax

   The definitions in this document is given in BNF-like syntax, using 
   the following conventions:

     |     means choice
     \     is used for continuation of a definition over several lines
     []    means optional
     {}    means repeated one or more times

   The definitions, however, are detailed only until a certain level, 
   and below it self-explaining character text strings will be used.

2.  Motivation

   The implementation of a fully meshed connectivity among MTAs, and the 
   ability to use at best the available network transport stacks require 
   to disseminate complete and up to date routing data to all MTAs. In  
   the Internet community, the DNS has proven to be a practical mean for 
   providing a distributed name service. Advantages of using a DNS based 
   system over a table based approach for mapping between O/R  addresses  
   and domain names are:

     - It avoids fetching and storing of entire routing tables by every 
       MTA wishing to use full connectivity.

     - Modifications to the DNS based routing information can be made  
       available in a more timely manner than with a table driven 
       approach.

     - Table management is not necessarily required for DNS-based X.400 
       MTAs.

     - One can determine the routing in use by a remote MTA by querying 
       the DNS (remote debugging).

   Routing decisions taken by the MTAs involved in delivering an X.400 
   message will also be more likely to result correct, if the routing 
   information is updated in real time.

3. Proposal: the new "X400.ARPA" domain space
 
   Usual domain names (the ones normally used as the global part of an 
   RFC822 e-mail address) and their associated information, i.e. host IP 
   addresses, mail exchanger names, etc., are stored in the DNS as a 


Allocchio et. al.      (Doc. expiration date: August 1993)      [Page 3]

I-d v4.2      Internet DNS for X.400 MHS routing data         March 1993


   distributed database under a number of top-level domains (EDU, COM, 
   countries like UK, IT, FR, etc.). The special top-level/second-level 
   couple IN-ADDR.ARPA is used to store the IP address to domain name 
   relationship.
 
   Our proposal, which closely resembles the above model, is to store 
   the X.400 routing data in a new branch of the DNS name space (under 
   the already defined top-level domain "ARPA") using the MX and HINFO 
   resource records. In particular in this new name space "X400.ARPA" 
   we will have a complete set of existing resource records available 
   to store any other useful information concerning X.400, like 
   RFC1327 mappings, responsible people, etc.
 
   This name space is thus used to contain completely the information: 
   the data required by an MTA to route an X.400 message to destination 
   can be easily found with a simple query to the nearest nameserver. 
   Moreover there is no more any need to store, maintain and distribute 
   manually those tables.
 
   The special name space begins at the top-level "X400.ARPA" and should 
   have a structure following the X.400 hierachical structure (country, 
   ADMD, PRMD, organisation, ...). The fully qualified MX and HINFO 
   resource-records are constructed starting from the information 
   contained in the DOMAIN and RELAY-MTA documents.
 
   The construction of the new domain space tree will follow the same 
   procedures used when organising at first the already existing DNS 
   space: authoritative information about the X400.ARPA top-level domain 
   is maintained by the root servers while a central nameserver in each 
   country is delegated by the root servers to hold the national part of 
   the routing tables. At first, however, the information will be 
   stored in a quite centralised way, and distribution of authority will
   be gradually achieved. A separate document will describe the 
   implementation phase.

4. Storing X.400 routing information

   In the usual domain name space the MX records are used to store 
   information for SMTP mailers; their content is a list of possible 
   Mail eXchanger and a pure number stating the preferred order of these
   mailers (priority). The creation of a new domain space under 
   X400.ARPA top level domain, enables now us to use the MX resource 
   records in it to store information about routing in the X.400 MHS,
   using the same principles adopted by SMTP mailers. Some other DNS 
   resource records will then be used to store the additional data 
   present in the RELAY-MTA and DOMAIN documents described in sect. 
   5.3 and 5.4 of [EPPEN V3] document.

   The syntax form of the usual MX record in DNS is:

      <domain>  <class>  MX  <prio>  <dest-host-domain>



Allocchio et. al.      (Doc. expiration date: August 1993)      [Page 4]

I-d v4.2      Internet DNS for X.400 MHS routing data         March 1993


   where <dest-host-domain> is then resolved via an "A" resource record 
   into an IP host address: in fact the only transport foreseen in DNS 
   for SMTP protocol is TCP/IP, and the socket number 25 is already 
   reserved. Also  NJE, DDCMP and X.25 transports  are used for SMTP 
   (BSMTP, DSMTP and XSMTP), but their connection data are not included 
   and distributed via DNS.

   In the X.400 MHS routing document we can identify these elements:

   <OR-matching><MHS-subtree> <RELAY-MTA-Priority> <UniqueRELAY-MTAkey>

   which can be somehow equivalenced to the usual DNS elements. However 
   the routing can be done on different protocol stacks, and each stack 
   can have a different priority. Thus we have additional data for each 
   specific stack like <Service-type>, <P-address>, <Service-priority>, 
   <MTS>.

   On the other hand, the MTA connection data are much more complex 
   than a simple 4-byte IP address. We have in fact <RTS>, <password>, 
   <called-connection>, <calling connection>, etc. and many of these 
   elements are themselves a set of complex data. Thus we will need 
   additional resource records to store these data.

4.1 Detailed storage proposal for routing information in DNS

   To implement in the most convenient way the storage of X.400 MHS 
   routing data we can take advantage of the DNS MX records; in fact 
   they already provide wildcard support and a priority mechanism.
   Other available DNS resource record types will be then used for the 
   remaining RELAY-MTA data; in particular the HINFO resource record 
   can be used for the RELAY-MTA connection and system data.

   Let us define the <MHS-route-record> object which can be inserted 
   into a DNS MX resource record:

    <MHS-route-record> ::= <MHS-ORdomain> "IN" "MX" <RELAY-MTA-priority> \
                           <RELAY-MTA-data>

   where:

    <MHS-ORdomain> ::= DNS translation of <OR-matching><MHS-subtree>
                       (sect. 4.3.1)

    <RELAY-MTA-priority> ::= <Number 0..99>  (see [EPPEN V3] sect. 5.4)

    <RELAY-MTA-data> ::= {<DNS-Service-key> ["-" <DNS-Priority>] "."} \
                         <DNS-RELAY-MTAkey>

    <DNS-Service-key> ::= A unique keyword to identify a 
                          <RELAY-MTA-call-data> and 
                          <RELAY-MTA-clng-data> record (sect. 4.3.5)



Allocchio et. al.      (Doc. expiration date: August 1993)      [Page 5]

I-d v4.2      Internet DNS for X.400 MHS routing data         March 1993


    <DNS-Priority> ::= DNS translation of <Service-priority> 
                       (sect. 4.3.4)

    <DNS-RELAY-MTAkey> ::= DNS translation of 
                        <UniqueRELAY-MTAkey><local-domain> (sect. 4.3.2)

   The presence of <OR-matching> element in the DOMAIN document 
   determines the distinction between wildcard and exact matching of an 
   O/R address with <MHS-subtree>: in DNS this will be implemented with 
   the provided MX wildcard mechanism (see an example in section 4.3.1).

   The <DNS-RELAY-MTAkey>, as you can see, is the translation of the 
   combination of <UniqueRELAY-MTAkey> and <local-domain>; this requires
   the mandatory presence of the <local-domain> information, even if 
   this information is defined as optional in [EPPEN V3]. The 
   <DNS-RELAY-MTAkey> must in fact be located in the correct branch of 
   the X400.ARPA DNS tree, i.e. exactly where the authority managing the
   RELAY-MTA lies. A similar situation occurs also for the location of 
   the MTA object within the X.500 tree. As a consequence, for a 
   community wishing to distribute its routing information via DNS, the
   <local-domain> element becomes mandatory.

   The additional data for a RELAY-MTA connection are stored into HINFO DNS 
   resource records. In particular we need to store information about 
   the RELAY-MTA itself (<status>, <password>, <RTS>, <system>) and 
   about the network connectivity (<service-type>, <MTS> and 
   <P-address>). We define thus three records, which will be stored into
   three different DNS HINFO records:

   <RELAY-MTA-host-data> ::= <DNS-RELAY-MTAkey>  "IN" "HINFO" \
                       "<status> <password> <DNS-RTS> [<system>]" \
                       "<DNS-Service-key> { [ "." <DNS-Service-key> ] }"

   <RELAY-MTA-call-data> ::= "C."<DNS-Service-key>"."<DNS-RELAY-MTAkey>\
                         "IN" "HINFO" "<password> <DNS-RTS> <MTS>" \
                          "<P-address>"

   <RELAY-MTA-clng-data> ::= "R."<DNS-Service-key>"."<DNS-RELAY-MTAkey>\
                          "IN" "HINFO" "<password> <DNS-RTS>" \
                          "<P-address>"
   where:

     <DNS-RTS> ::= DNS translation of <RTS> (sect. 4.3.3)

   and <status>, <password>, <system>, <MTS>, <P-address> are defined in 
   [EPPEN V3], sect. 5.1 and 5.3.

   Note that the <DNS-Service-key> list contained into the 
   <RELAY-MTA-host-data> record must contain exactly the same elements 
   used for any couple of <RELAY-MTA-call-data> and 
   <RELAY-MTA-clng-data> records, i.e. is we have 3 couples of 
   connection information records using "XX0", "RX0" and "IT6" keys, 
   then this list must be present in the <RELAY-MTA-host-data> record.

Allocchio et. al.      (Doc. expiration date: August 1993)      [Page 6]

I-d v4.2      Internet DNS for X.400 MHS routing data         March 1993


   The HINFO resource record can hold up to twice 256 octet strings, 
   allowing thus enough available space even for complex <P-address> 
   data.

   We can understand better the reason of the three HINFO resource 
   records defined previously if we think of the multiple stacks 
   available for an X.400 MHS: an MTA has some data which are 
   independent from the network stack being used (stored into 
   <RELAY-MTA-host-data>) and on the contrary some other information 
   depending upon it (stored into <RELAY-MTA-call-data> and 
   <RELAY-MTA-clng-data>).

4.2 Basic mappings

   The formal definition of an MX resource record is (RFC1035, sect. 
   3.3.9):

           +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
           |                  PREFERENCE                   |
           +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
           /                   EXCHANGE                    /
           /                                               /
           +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

   where:

   PREFERENCE   A 16 bit integer which specifies the preference given 
                to this RR among others at the same "owner name". 

   EXCHANGE     A <domain-name> which specifies a host willing to act 
                as a mail exchange for the "owner name".

   and also the "owner name" is a <domain-name> element. 

   At the same time the formal definition of an HINFO resource record 
   is (RFC1035, sect. 3.3.2)

           +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
           /                      CPU                      /
           +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
           /                       OS                      /
           +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

   where:

   CPU and OS area both of <character-string> type and the "owner name" 
   is a <domain-name> element.

   In our proposal, <MHS-ORdomain>, <RELAY-MTA-data>, 
   <RELAY-MTA-host-data>, <RELAY-MTA-call-data> and 
   <RELAY-MTA-clng-data> must thus be conformant with 



Allocchio et. al.      (Doc. expiration date: August 1993)      [Page 7]

I-d v4.2      Internet DNS for X.400 MHS routing data         March 1993


   the <domain-name> syntax rules, i.e.

     <domain-name> ::= <subdomain> | " " 
     <subdomain> ::= <label> | <label>.<subdomain>
     <label> ::= <alphanum> {<alphanumhyphen>} <alphanum>
     <alphanum> ::= "0".."9" | "A".."Z" | "a".."z"
     <alphanumhyphen> ::= "0".."9" | "A".."Z" | "a".."z" | "-"

   The definition of <character-string> is simpler: a contiguous set
   of characters without interior spaces, or a 'quoted string', i.e. 
   beginning and ending with " (double quotes). Inside a quoted 
   string any character can occur, except for a " itself, which must
   be quoted using \ (backslash).

   As you will notice, the legal character set for <label> does not 
   correspond to the IA5 Printablestring one which is used in 
   <MHS-subtree>; even worse for <uniqueRELAY-MTAkey> which can use any 
   ASCII character from (032) up to (126) decimal. However a very 
   simple "escape mechanism" can be applied in order to bypass the 
   problem.

4.3 IA5 Printablestring and ASCII to <alphanumhyphen> mappings

   The problem of unmatching character set definition is solved by a 
   simple character mapping rule: whenever a character does not belong 
   to <alphanumhyphen>, then it is mapped using its 3 digit decimal 
   ASCII code, enclosed in hyphens. A small set of special rules is 
   also defined for the most frequent cases. Moreover some frequent 
   characters combinations are also mapped as special cases.

   In <MHS-subtree> and <uniqueREALYkey> we can identify a common 
   structure: a sequence of <addr-element>

     <addr-element> ::= <attr-label> "=" <attr-value>
     <attr-label> ::= "C" | "A" | "P" | "O" | \
                      "OU1" | "OU2" | "OU3" | "OU4" | \
                      "MTAname"
     <attr-value> ::= IA5-Printablestring | ASCII(032)..ASCII(127)

   The label values differ from those defined in RFC1327 for the mapping 
   rules. However both the mapping and routing rules share the same 
   X400.ARPA name space, and thus the sub-trees must have consistent and 
   coherent definitions. For this reason in the following table we also 
   define the appropriate equivalencies.










Allocchio et. al.      (Doc. expiration date: August 1993)      [Page 8]

I-d v4.2      Internet DNS for X.400 MHS routing data         March 1993


   Let's then define the following simple rules:

   Original syntax               DNS translation   conditions
   --------------------------------------------------------------------
   missing <attr-label>          <attr-label>      missing seq. element
   <attr-label>"="<blank>        <attr-label>"b"   blank attribute
   "C="                          "C-"              country code
   "A="                          "ADMD-"           administration domain
   "P="                          "PRMD-"           private domain
   "O="                          "O-"              organization
   "OU1=" "OU2=" "OU3=" "OU4="   "OU-"             organization unit
   "MTAname="                    "MTA-"            MTA name

   Non <alphanumhyphen> characters in <attr-value>:

   Original character      DNS translation      conditions
   --------------------------------------------------------------------
   -                       -h-                  hyphen
   .                       -d-                  quoted dot
   <blank>                 -b-                  blank
   non A/N character       -<3digit-decimal>-   elsewhere

   If the DNS store translation of <attr-value> happens to end with an 
   hyphen, then this last hyphen is omitted.

   Let's now have some examples:

   Original syntax   DNS store translation   condition
   ------------------------------------------------------------------
   missing PRMD      PRMD                    missing attribute
   A=<blank>         ADMDb                   blank attribute
   A=400-net         ADMD-400-h-net          hyphen mapping
   P=UB.AC           PRMD-UB-d-AC            quoted dot mapping
   O=ACME Inc.       O-ACME-b-Inc-d          blank & final hyphen
   P=main-400-a      PRMD-main-h-400-h-a     hyphen mapping
   O=-123-b          O--h-123-h-b            hyphen mapping
   OU1=123-x         OU-123-h-x              hyphen mapping

   More complete examples are shown in sect 4.3.1 and 4.3.2

   In order to achieve the proper DNS store translations of the X.400 
   routing data some software tools will be used. It is in fact evident 
   that the above conversion rules are not user friendly enough to think 
   of a human made conversion. 

   In the next paragraphs we will show for each translation a "step by 
   step" procedure which can be interpreted as a small flow chart to 
   help in designing the tools. The fundamental rule to be applied 
   during translation is, however, the following:

   "A string must be parsed from left to right, moving appropriately the 
   pointer in order not to consider again the already translated left 
   section of the string in subsequent analysis."

Allocchio et. al.      (Doc. expiration date: August 1993)      [Page 9]

I-d v4.2      Internet DNS for X.400 MHS routing data         March 1993


4.3.1 DNS translation of <OR-matching><MHS-subtree>

   The syntax for <MHS-ORdomain> corresponds in DNS to a <domain-name> 
   element, while the <OR-matching> can fit into the wildcard 
   specification preceding the <domain-name>. Thus we will follow the 
   approach described in the previous section for non <alphanumhypehn> 
   elements, and a similar solution for the general translation. 

   The definition of <MHS-subtree>  in [EPPEN V3] sect. 5.1 is:

   <MHS-subtree> ::= ["O=" 'Organization-name' "; "] \
                         [[[["OU1="'OrganizationalUnit-name'"; "]\
                         "OU2=" 'OrganizationalUnit-name' "; "] \
                         "OU3=" 'OrganizationalUnit-name' "; "] \
                         "OU4=" 'OrganizationalUnit-name' "; "] \
                         ["P=" 'PRMDname' "; "] \
                         "A=" 'ADMDname' "; " \
                         "C=" 'Two Character Country Code ISO-3166' ";"

   i.e. a string made up by Attribute Labels ("C", "A", "P", "O", "OU1", 
   "OU2", "OU3", "OU4") plus Attribute-Values and ";" as separators. 

   This definition allows in its syntax to skip eventually missing 
   intermediate address elements, instead of substituting them with a 
   standard placeholder ("@") as defined in RFC1327 for mapping rules 
   syntax. The new DNS tree under top level domain "X400.ARPA", however, 
   must be coherent in order to allow a correct distribution of 
   authority and a correct sequence of queries along its branches. Thus
   we will insert again the skipped attributes into our DNS translation
   of <MHS-subtree> and <UniqueRELAY-MTAkey>.

   An equivalent definition of <MHS-subtree> is:

   <MHS-subtree> ::= <addr-element> [ { ";" <addr-element> } ]
   <addr-element> ::= <attr-label> "=" <attr-value>
   <attr-label> ::= "C" | "A" | "P" | "O" | \
                    "OU1" | "OU2" | "OU3" | "OU4"
   <attr-value> ::= IA5-Printablestring

   To obtain our <DNS-ORdomain> we will use the above translation tables 
   and use the rules described hereunder, along with a detailed example.

   Let us suppose:

      <MHS-subtree> = OU1=NYC; OU2=saled dpt.; P=AC-me; A= ; C=it;
      <OR-matching> = "* "

   1) insert the missing attribute elements in <MHS-subtree> and reorder
      them as OU4, OU3, OU2, OU1, O, P, A, C:

      OU2=saled dpt.; OU1=NYC; O; P=AC-me; A= ; C=it;



Allocchio et. al.      (Doc. expiration date: August 1993)     [Page 10]

I-d v4.2      Internet DNS for X.400 MHS routing data         March 1993


   2) translate <attr-label> as defined above:

      OU=saled dpt.; OU=NYC; O; PRMD=AC-me; ADMD= ; C=it;

   3) translate <attr-value> as defined above and convert = into -:

      OU-saled-b-dpt-d; OU-NYC; O; PRMD-AC-h-me; ADMDb; C-it;

   4) replace ";" separators and eventual remaining blanks into ".":

      OU-saled-b-dpt-d.OU-NYC.O.PRMD-AC-h-me.ADMDb.C-it.

   5) add the top level domain "X400.ARPA" at the end:

      OU-saled-b-dpt-d.OU-NYC.O.PRMD-AC-h-me.ADMDb.C-it.X400.ARPA.

   6) if <OR-matching> is "* ", then add "*." in front of the string:

      *.OU-saled-b-dpt-d.OU-NYC.O.PRMD-AC-h-me.ADMDb.C-it.X400.ARPA.

   The final result is then used in DNS as selector to find the 
   appropriate X.400 routing RELAY-MTA on a best match basis, exactly 
   as for the RFC822 domains.

   Let's have some other examples:

      <MHS-subtree>   =  P=WHY;A=mycom;C=ch;
      <OR-matching>   =  "* "

   is translated in <DNS-ORdomain> as

      *.PRMD-WHY.ADMD-mycom.C-ch.X400.ARPA.

   Another one:

      <MHS-subtree>  =  OU1=ACME Inc.;P=UB.AC;A= ;C=GB;
      <OR-matching>  =  "= "

   is translated in <DNS-ORdomain> as

      OU-ACME-b-Inc-d.O.PRMD-UB-d-AC.ADMDb.C-GB.X400.ARPA.

4.3.2 DNS translation of <UniqueRELAY-MTAkey><local-domain>

   The character set and syntax allowed for a <DNS-RELAY-MTAkey> is 
   again the one corresponding in DNS to a <domain-name> element. Thus 
   we will approach the problem as we did for <MHS-subtree>.

   Before looking into the translation algorhytm, we must point out 
   again that the <DNS-RELAY-MTAkey> need to be placed into the correct 
   branch of the X400.ARPA tree. <UniqueRELAY-MTAkey> contains already 
   some keys which could help us in this definition; however they are 


Allocchio et. al.      (Doc. expiration date: August 1993)     [Page 11]

I-d v4.2      Internet DNS for X.400 MHS routing data         March 1993


   not detailed enough to assure the correct result. Thus we need to 
   make compulsory the presence of <local-domain> which locates fully 
   and unambiguously the RELAY-MTA in the DNS tree.

   The <UniqueRELAY-MTAkey> and <local-domain> elements are defined in 
   sect. 5.1 and 5.3 of [EPPEN V3]: 

   <UniqueRELAY-MTAkey> ::= (["P="'PRMDname'"; "]["A="'ADMDname'"; "] \
                       "C=" 'Two Character Country Code ISO-3166' "; " \
                       "MTAname=" 'MTAname' | <DirectoryName> )

   <local-domain> ::= "LocalDomain: " <MHS-subtree>
                      The <MHS-subtree> is local to the RELAY-MTA.

   Note that <UniqueRELAY-MTAkey> can also be a <DirectoryName>; however
   we need to specify completely the information in DNS, avoiding 
   queries to other directory services like X.500. We will thus use the
   actual data in place of the <DirectoryName> distinguished object to 
   define our <DNS-RELAY-MTAkey>.

   To define <DNS-RELAY-MTAkey> we will take "MTAname=" 'MTAname' from 
   <UniqueRELAY-MTAkey> joining it with <MHS-subtree> from 
   <local-domain>:

   "MTAname=" 'MTAname' "; " <MHS-subtree>

   Let us see in details the steps to obtain <DNS-RELAY-MTAkey>. We 
   suppose:

     <UniqueRELAY-MTAkey> = P=ninf;A=rdnet;C=it;MTAname=int-gw.ninf.it
     <MHS-subtree>        = OU1=int-gw;P=ninf;A=rdnet;C=it;  

   1) add MTAname in front of <MHS-subtree>:

      MTAname=int-gw.ninf.it; OU1=int-gw; P=ninf; A=rdnet; C=it; 

   2) insert the missing attribute elements in <MHS-subtree>:

      MTAname=int-gw.ninf.it; OU1=int-gw; O; P=ninf; A=rdnet; C=it;

   3) translate <attr-label> as defined above:

      MTA=int-gw.ninf.it; OU=int-gw; O; PRMD=ninf; ADMD=rdnet; C=it; 

   4) translate <attr-value> as defined above and convert = into -:

      MTA-int-h-gw-d-ninf-d-it; OU-cosine-h-gw; O; PRMD-ninf; \
      ADMD-rdnet; C-it; 

   5) replace ";" separators and eventual remaining blanks into ".":

      MTA-int-h-gw-d-ninf-d-it.OU-cosine-h-gw.O.PRMD-ninf.ADMD-rdnet.\
      C-it. 

Allocchio et. al.      (Doc. expiration date: August 1993)     [Page 12]

I-d v4.2      Internet DNS for X.400 MHS routing data         March 1993


   6) add the top level domain "X400.ARPA" at the end:

      MTA-int-h-gw-d-ninf-d-it.OU-cosine-h-gw.O.PRMD-ninf.\
      ADMD-rdnet.C-it.X400.ARPA.

   This element is then ready to be used into DNS resource records.

   Let us have another example:

     <UniqueRELAY-MTAkey> = P=UB.AC;A= ;C=GB;MTAname=UB.AC.mhs-relay
     <MHS-subtree>        = P=UB.AC;A= ;C=GB;  

   is translated in <DNS-RELAY-MTAkey> as

      MTA-ub-d-ac-d-mhs-h-relay.PRMD-UB-d-AC.ADMDb.C-GB.X400.ARPA.

4.3.3 DNS translation of <RTS>

   The definition of <RTS> in [EPPEN V3], sect. 5.3 is

      <RTS> ::= <dialogue-mode> [<checkpoint-size> <window-size>]
      
      <dialogue-mode> ::= "RTS-dialog-mode: " ("TWA" | "MONOLOGUE")
      <checkpoint-size> ::= "RTS-checkpoint-size: " 'checkpoint size'
      <window-size> ::= "RTS-window-size: " 'window size'

   These data will be stored in DNS into HINFO resource records, and 
   thus there is no limitation to the format or character set to use. 
   However the information stored in DNS are for machine use; 
   therefore we will define <DNS-RTS> as a short encoding of these data.
   In particular:

      <DNS-RTS> ::= <k-dialogue> [ <k-checkpoint> <k-window> ]

   with:

      <k-dialogue> ::= "T" | "M"
      <k-checkpoint> ::= "C" 'checkpoint size'
      <k-window> ::= "W" 'window size'

   Some examples:

   A connection with dialogue=TWA, checkpoint=19 and window=10 will
   result into TC19W10;

   A connection with dialogue=MONOLOGUE, checkpoint=5 and window=20
   will result into MC5W20.

4.3.4 DNS translation of <Service-priority>

   As <Service-priority> is a pure number, we need to apply a label to 
   it in order to be conformant with RFC1034 and also to distinguish it


Allocchio et. al.      (Doc. expiration date: August 1993)     [Page 13]

I-d v4.2      Internet DNS for X.400 MHS routing data         March 1993


   from the other elements. Thus our definition of <DNS-priority> is

     <DNS-priority> ::= "P" <Service-priority>

   If <Service-priority> is defined as "5", then its DNS translation 
   will be "P5".

4.3.5 Defining the <DNS-Service-key>

   The <DNS-Service-key> is just a label to identify a DNS resource 
   record where the relevant MTA connection data are stored. Thus its 
   only requirement is to be unique within an MTA identified by 
   <DNS-RELAY-MTAkey>. However it could be very useful to define some 
   criteria and common abbreviations in order to have short keys and 
   also some "guessable" keys for the most common cases. Our suggestion
   is to adopt a three characters key:

     <DNS-Service-key> ::= <k-name> <k-service> <k-protocol>

     <k-name> ::= one A/N character identifying the network name,
                  adopting the following abbreviations:

                       'X' Public-X.25
                       'I' Internet
                       'R' EMPB-X25
                       'L' Int-CLNS

     <k-service> ::= "X" | "O" | "L" | "T"
                     standing respectively for X.25, CONS, CLNS, TCP

     <k-protocol> ::= "0" | "2" | "4" | "6"
                      standing respectively for TP0, TP2, TP4, RFC1006


   Thus "Internet/TCP/RFC1006" will produce a <DNS-Service-key> = IT6, 
   while "EMPB-X25/CONS/TP0" produces <DNS-Service-key> = RO0.

4.4 An example of DNS stored DOMAIN and RELAY-MTA documents

   As said in the previous sections, the X.400 MHS routing data can be 
   stored in DNS using MX and HINFO reseouce records and the set of 
   defined mapping rules. Let's see an example containing the routing 
   data of a management domain. In particular we will consider a DOMAIN 
   document with 2 RELAY-MTAs.










Allocchio et. al.      (Doc. expiration date: August 1993)     [Page 14]

I-d v4.2      Internet DNS for X.400 MHS routing data         March 1993

  
   DOMAIN document (part):

     Community: MY-MHS
     #
     Domain: *   P=INT-Co;  A=RDnet; C=CH;
     Domain: =      P=WHY;  A=RDnet; C=CH;
     Domain: *  P=Net Lab; A=Pub400; C=CH;
     #
     RELAY-MTA: P=INT-Co; A=RDnet; C=CH; MTAname=mta.one; 10
     RELAY-MTA: P=Nat Sa; A=RDnet; C=CH; MTAname=bck-relay.ch; 60

   RELAY-MTA document 1 (part):
  
     Community: MY-MHS
     #
     RELAY-MTA: P=INT-Co; A=RDnet; C=CH; MTAname=mta.one
     #
     Status:              primary
     Password:            none
     RTS-dialog-mode:     TWA
     RTS-checkpoint-size: 10
     RTS-window-size:     19
     #
     Called-address:  Public-X.25/X.25/TP0;
                      Int-X25(80)=22225971014110; MTS-TP-84; 30
     Calling-address: Public-X.25/X.25/TP0;
                      Int-X25(80)=22225971014
     #
     Called-address:  Internet/TCP/RFC1006;
                      Internet-RFC-1006=140.105.1.1; MTS-TP-84; 10
     Calling-address: Internet/TCP/RFC1006;
                      Internet-RFC-1006=140.105.1.1
     #
     System: HW=DEC VAX3100; OS=VMS 5.5; SW=EAN V2.2+
     LocalDomain: O=LocDpt; P=INT-Co; A=RDnet; C=CH;
     #

   RELAY-MTA document 2 (part):
  
     Community: MY-MHS
     #
     RELAY-MTA: P=Nat Sa; A=RDnet; C=CH; MTAname=bck-relay.ch
     #
     Status:          secondary
     Password:        value="call-me"
     RTS-dialog-mode: MONOLOGUE
     #
     Called-address:  EMPB-X25/X.25/TP0;
                      Int-X25(80)=20432240004110; MTS-TP-84
     Calling-address: EMPB-X25/X.25/TP0;
                      Int-X25(80)=20432240004
     #


Allocchio et. al.      (Doc. expiration date: August 1993)     [Page 15]

I-d v4.2      Internet DNS for X.400 MHS routing data         March 1993


     Called-address:  Int-CLNS/CLNS/TP4;
                      "88"/NS+39756f11112222223333aa00040005e100; MTS-TP
     Calling-address: Int-CLNS/CLNS/TP4;
                      "88"/NS+39756f11112222223333aa00040005e100
     #
     System: HW=Sun 3; OS=SunOS 5-2; SW=PP 6.0
     LocalDomain: O=managment; P=Nat Sa; A=RDnet; C=CH; 
     #

   The routing information contained in the above DOMAIN document will 
   result into 3 couples of MX record, 2 couples with a wildcard 
   specification and one couple with exact matching only.

    ;
    ; Domain: * P=INT-Co;  A=RDnet; C=CH;  ---------------------------
    ;
    *.P-INT-h-Co.A-RDnet.C-CH.X400.ARPA.   IN MX 10 \
                                           XX0-P30.IT6-P10.\
    MTA-mta-d-one.O-LocDpt.P-INT-h-Co.A-RDnet.C-CH.X400.ARPA.
    ;
    *.P-INT-h-Co.A-RDnet.C-CH.X400.ARPA.   IN MX 60 \
                                           RX0.LL4.\
    MTA-bck-h-relay-d-ch.O-managment.P-Nat-b-Sa.A-RDnet.C-CH.X400.ARPA.
    ;
    ; Domain: = P=WHY;  A=RDnet; C=CH;  ------------------------------
    ;
    P-WHY.A-RDnet.C-CH.X400.ARPA.          IN MX 10 \
                                           XX0-P30.IT6-P10.\
    MTA-mta-d-one.O-LocDpt.P-INT-h-Co.A-RDnet.C-CH.X400.ARPA.
    ;
    P-WHY.A-RDnet.C-CH.X400.ARPA.          IN MX 60 \
                                           RX0.LL4.\
    MTA-bck-h-relay-d-ch.O-managment.P-Nat-b-Sa.A-RDnet.C-CH.X400.ARPA.
    ;
    ; Domain: * P=Net Lab; A=Pub400; C=CH;  --------------------------
    ;
    *.P-Net-b-Lab.A-Pub400.C-CH.X400.ARPA. IN MX 10 \
                                           XX0-P30.IT6-P10.\
    MTA-mta-d-one.O-LocDpt.P-INT-h-Co.A-RDnet.C-CH.X400.ARPA.
    ;
    *.P-Net-b-Lab.A-Pub400.C-CH.X400.ARPA. IN MX 60 \
                                           RX0.LL4.\
    MTA-bck-h-relay-d-ch.O-managment.P-Nat-b-Sa.A-RDnet.C-CH.X400.ARPA.
    ;

   The above records just specify the available RELAY-MTAs and 
   connection stacks, but does not yet contain the needed data to 
   establish MTA to MTA links. These data are stored into the below 
   HINFO resource records.





Allocchio et. al.      (Doc. expiration date: August 1993)     [Page 16]

I-d v4.2      Internet DNS for X.400 MHS routing data         March 1993


    ;
    ; RELAY-MTA: P=INT-Co; A=RDnet; C=CH; MTAname=mta.one ------------
    ;
    MTA-mta-d-one.O-LocDpt.P-INT-h-Co.A-RDnet.C-CH.X400.ARPA. IN HINFO \
    "primary none TC10W19 HW=DEC VAX3100; OS=VMS 5.5; SW=EAN V2.2+" \
    "XX0.IT6"
    ;
    C.XX0.MTA-mta-d-one.O-LocDpt.P-INT-h-Co.A-RDnet.C-CH.X400.ARPA. \
    IN HINFO "none TC10W19 MTS-TP-84" "Int-X25(80)=22225971014110"
    R.XX0.MTA-mta-d-one.O-LocDpt.P-INT-h-Co.A-RDnet.C-CH.X400.ARPA. \
    IN HINFO "none TC10W19" "Int-X25(80)=22225971014"
    ;
    C.IT6.MTA-mta-d-one.O-LocDpt.P-INT-h-Co.A-RDnet.C-CH.X400.ARPA. \
      IN HINFO "none TC10W19 MTS-TP-84" "Internet-RFC-1006=140.105.1.1"
    R.IT6.MTA-mta-d-one.O-LocDpt.P-INT-h-Co.A-RDnet.C-CH.X400.ARPA. \
      IN HINFO "none TC10W19" "Internet-RFC-1006=140.105.1.1"
    ;
    ; RELAY-MTA: P=Nat Sa; A=RDnet; C=CH; MTAname=bck-relay.ch --------
    ;
    MTA-bck-h-relay-d-ch.O-managment.P-Nat-b-Sa.A-RDnet.C-CH.X400.ARPA.\
     IN HINFO \
     "secondary value=\"call-me\" M HW=Sun 3; OS=SunOS 5-2; SW=PP 6.0" \
     "RX0.LL4"
    ;
    C.RX0.MTA-bck-h-relay-d-ch.O-managment.P-Nat-b-Sa.A-RDnet.C-CH.\
     X400.ARPA. IN HINFO "value=\"call-me\" M MTS-TP-84" \
     "Int-X25(80)=20432240004110"
    R.RX0.MTA-bck-h-relay-d-ch.O-managment.P-Nat-b-Sa.A-RDnet.C-CH.\
     X400.ARPA. IN HINFO "value=\"call-me\" M" "Int-X25(80)=20432240004"
   ;
    C.LL4.MTA-bck-h-relay-d-ch.O-managment.P-Nat-b-Sa.A-RDnet.C-CH.\
     X400.ARPA. IN HINFO "value=\"call-me\" M MTS-TP" 
     "\"88\"/NS+39756f11112222223333aa00040005e100"
    R.LL4.MTA-bck-h-relay-d-ch.O-managment.P-Nat-b-Sa.A-RDnet.C-CH.\
     X400.ARPA. IN HINFO "value=\"call-me\" M"
     "\"88\"/NS+39756f11112222223333aa00040005e100"

   Note that the above lines have been wrapped for clarity reasons, 
   using "\" to show continuation on the same line. Only inside the 
   HINFO value the "\" is used to quote the " character and is actual 
   part of the syntax.

4.5 An example of query to DNS for routing data

   In this example we will assume that the routing data those defined 
   in section 4.4; let's see how it works.

      OR address:   C=ch;A=RDnet;P=Int-Co;O=mgt;S=helpdesk;

   After translation of the routing part of the OR address in DNS 




Allocchio et. al.      (Doc. expiration date: August 1993)     [Page 17]

I-d v4.2      Internet DNS for X.400 MHS routing data         March 1993


   syntax, a first query for an MX records list will be issued for

      O-mgt.PRMD-Int-h-Co.ADMD-RDnet.C-ch.X400.ARPA.

   DNS will match the query with the first couple of MX records listed 
   in our above example, i.e.

   IN MX 10 XX0-P30.IT6-P10.MTA-mta-d-one.O-LocDpt.P-INT-h-Co.A-RDnet.\
            C-CH.X400.ARPA.
   IN MX 60 RX0.LL4.MTA-bck-h-relay-d-ch.O-managment.P-Nat-b-Sa.\
            A-RDnet.C-CH.X400.ARPA.

   The answer contains already a choice between 2 possible RELAY-MTAs 
   and again 2 available connection stacks per each RELAY-MTA, 
   identified by XX0, IT6, RX0 and LL4 keywords and with different 
   priorities. Note that the <DNS-service-key> contained in each MX 
   record is meaningfuland must be unique only within a 
   <DNS-RELAY-MTAkey>. 

   As priority 10 indicated the preferred RELAY-MTA, and we already have 
   also the preferred connection stack (identified by IT6 key, service
   priority 10) we can query directly for connection data, looking for 
   an HINFO record like:

   C.IT6.MTA-mta-d-one.O-LocDpt.P-INT-h-Co.A-RDnet.C-CH.X400.ARPA.

   and attempt connection to the remote RELAY-MTA. If this fails, 
   according to [EPPEN V3] document, we will then query for the next 
   supported stack connection record (identified by XX0 key with 
   priority 30 and by the same <DNS-RELAY-MTAkey>). If also this 
   connection fails we will eventually use the other available 
   RELAY-MTA, and continue like that.

   On the other hand we can also query information about a specific 
   RELAY-MTA starting from the <DNS-RELAY-MTAkey>:

     MTA-mta-d-one.O-LocDpt.P-INT-h-Co.A-RDnet.C-CH.X400.ARPA.

   It is thus possible to reconstruct the RELAY-MTA table data starting 
   from DNS.

5.  Administration of routing information

   Not all MTAs will be able to use the Internet  DNS  to  obtain the 
   X.400 routing information. It is in fact expected that MTAs in a 
   particular country or management domain will conform to one of the 
   following models:

             Table-based      DNS-based      X.500-based

   Table-based countries and management domains will submit and receive 
   their routing documents from the International MHS coordinator. DNS


Allocchio et. al.      (Doc. expiration date: August 1993)     [Page 18]

I-d v4.2      Internet DNS for X.400 MHS routing data         March 1993


   based countries and management domains will store their routing 
   information in the DNS. The DNS Routing coordinator will be 
   responsible for operating authoritative nameservers for resource  
   records pertinent to management domains in Table-based communities. 
   Also, the DNS Routing coordinator will be responsible for generating  
   the table form of routing data based in the DNS and transmitting it
   to the International Routing Table coordinator. X.500 based storage 
   is not yet fully defined.

   As of this writing, the  International  Routing  Table coordinator is 
   the COSINE MHS Project Team and the DNS Routing coordinator is the 
   COSINE Gateway Service.

   A set of coordination procedures to keep aligned the three routing 
   distribution services will be published in the implementation phase 
   document.

6. Conclusion
 
   The use of the MX and HINFO resource-records and a new name space 
   tree promise to provide a good possible repository for X.400 MHS 
   routing information. The information is stored in the DNS tree 
   structure so that it can be easily obtained using the DNS distributed
   name-service. 
   At the same time the introduction of the new "X400.ARPA" domain name 
   space allows us also to use the DNS to store and distribute many 
   other X.400 MHS information, including the mapping ones. The use of 
   the DNS has many advantages in storing, managing and updating 
   information. Using the existing resource records in the new name 
   tree does not even require the introduction of new types. A 
   successful number of tests have been performed under the provisional
   top level domain "X400.IT", and their results confirmed the 
   advantages of the method.
 
   Software to query the DNS and then to convert between the textual 
   representation of DNS resource records and the address format defined 
   in [EPPEN V3] needs to be developed.  Also some tools to derive DNS 
   format from DOMAIN and RELAY-MTA documents will be needed to help 
   the implementation of this specification.
 
7.  References

   [CCITT]    CCITT SG 5/VII, "Recommendation X.400," Message Handling 
              Systems: System Model - Service Elements, October 1988.

   [RFC 1327] Kille, S., "Mapping between X.400(1988)/ISO 10021 and 
              RFC 822", RFC 1327, March 1992

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



Allocchio et. al.      (Doc. expiration date: August 1993)     [Page 19]

I-d v4.2      Internet DNS for X.400 MHS routing data         March 1993


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

   [EPPEN V3] Eppenberger, U., "Routing coordination for X.400 MHS
              services within a multi protocol / multi network
              environment - Table Format V3 for static routing",
              Internet-Draft, COSINE-MHS/SWITCH, March 1993.

8. Authors addresses:

    Claudio Allocchio      RFC822: Claudio.Allocchio@elettra.trieste.it
    Sincrotrone Trieste    X.400:  C=it;A=garr;P=infn;OU=elettra-ts;
    c/o Area di Ricerca            S=Allocchio;G=Claudio;
    Padriciano 99          Phone:  +39 40 3758523
    I 34012 Trieste        Fax:    +39 40 226338
    Italy

    Antonio Blasco Bonito  RFC822: bonito@cnuce.cnr.it
    CNUCE - CNR            X.400:  C=it;A=garr;P=cnr;O=cnuce;S=bonito;
    Reparto infr. reti     Phone:  +39 50 593246
    Viale S. Maria 36      Fax:    +39 50 589354
    I 56126 Pisa
    Italy

    Bruce Cole             RFC822: bcole@cisco.com
    Cisco Systems Inc.     X.400:  C=us;A= ;P=Internet;
    P.O. Box 3075                  DD.rfc-822=bcole(a)cisco.com;
    1525 O'Brien Drive     Phone:  +1 415 6888245
    Menlo Park, CA 94026   Fax:    +1 415 6884575
    U.S.A.

    Silvia Giordano        RFC822: giordano@cscs.ch
    Centro Svizzero di     X.400:  C=ch;A=arcom;P=switch;O=cscs;
    Calcolo Scientifico            S=giordano;
    Via Cantonale          Phone:  +41 91 508213
    CH 6928 Manno          Fax:    +41 91 506711
    Switzerland

    Robert Hagens          RFC822: hagens@ans.net
    Advanced Network       X.400:  C=us;A= ;P=Internet;
    and Services                   DD.rfc-822=hagens(a)ans.net;
    1875 Campus Commons    Phone:  +1 703 7587700
    Drive
    Reston, VA 22091
    U.S.A.








Allocchio et. al.      (Doc. expiration date: August 1993)     [Page 20]