home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_n_r / draft-rfced-exp-maginnis-00.txt < prev    next >
Text File  |  1996-08-28  |  16KB  |  524 lines

  1.  
  2. INTERNET-DRAFT          Expires February 1997             INTERNET-DRAFT
  3.  
  4. Network  Working  Group                       T.  Maginnis, A. Madapoosi
  5. INTERNET-DRAFT                               University  of  Mississippi
  6. Category: Experimental                                       August 1996
  7.  
  8.  
  9.                         The PORT Resource Record
  10.  
  11.                    <draft-rfced-exp-maginnis-00.txt>
  12.  
  13. Status of This Memo
  14.  
  15.    This document is an Internet Draft.  Internet Drafts are working
  16.    documents of the Internet Engineering Task Force (IETF), its Areas,
  17.    and its Working Groups. Note that other groups may also distribute
  18.    working documents as Internet Drafts.
  19.  
  20.    Internet Drafts are draft documents valid for a maximum of six
  21.    months.  Internet Drafts may be updated, replaced, or obsoleted by
  22.    other documents at any time.  It is not appropriate to use Internet
  23.    Drafts as reference material or to cite them other than as a
  24.    "working draft" or "work in progress."
  25.  
  26.    To learn the current status of any Internet-Draft, please check the
  27.    "1id-abstracts.txt" listing contained in the internet-drafts Shadow
  28.    Directories on:
  29.  
  30.          ftp.is.co.za (Africa)
  31.          nic.nordu.net (Europe)
  32.          ds.internic.net (US East Coast)
  33.          ftp.isi.edu (US West Coast)
  34.          munnari.oz.au (Pacific Rim)
  35.  
  36. Overview
  37.  
  38.    A contributing factor to the explosive growth in IP address alloca-
  39.    tion is the coming together of two seeming unrelated factors.  One
  40.    factor is arbitrary relationship within the Domain Name Server that
  41.    requires an unique IP address to be associated with a Domain Name.
  42.    The second factor is the public's desire to have short Domain Names
  43.    unique to their enterprise.
  44.  
  45.    We believe a small modification to the Domain Name Server will break
  46.    this relationship and lessen pressure on IP address allocation.  This
  47.    modification should also make system configuration easier than deal-
  48.    ing with IP addresses for each Domain Name supported on a given host.
  49.  
  50.    One difficulty with the proposed modification is that similar "small"
  51.    changes are required in the WWW browsers to pick up the port number
  52.    and append it to the URL.
  53.  
  54.  
  55. Introduction
  56.  
  57.    The growth rate of the Internet has exacerbated the well-recognized
  58.    problem with the limited (fixed) 32-bit IP address space.  Although
  59.    the new IP V6 specification will overcome this limitation, it is not
  60.    clear how well or how fast the new IP software will migrate through
  61.    the Internet.
  62.  
  63.    Furthermore, growth in "portable" Class C Internet IP address alloca-
  64.    tion has had a large effect on the size of key routing tables and the
  65.    resulting routing table search time.
  66.  
  67.    Currently, the Domain Name Server requires each unique domain name
  68.    resolve to an unique IP address.  As a result of this requirement, it
  69.    is typical to find that an Internet Service Provider (ISP) will
  70.  
  71.  
  72.  
  73. Maginnis, Madapoosi                                             [Page 1]
  74.  
  75. INTERNET-DRAFT          Expires February 1997             INTERNET-DRAFT
  76.  
  77.  
  78.    configure their system so that there are many "instances" of a WWW
  79.    server executing on one host and each instance is configured to wait
  80.    for a connection from a specific IP address and therefore, a specific
  81.    Domain Name.  It not unusual to find a WWW server which may be con-
  82.    suming a a complete Class C address for its web pages.
  83.  
  84. Suggested Solution
  85.  
  86.    One solution for this problem would be to allow a new resource record
  87.    in the Named database that would break the requirement of an IP
  88.    address for each Domain Name.
  89.  
  90.    We have created a new resource record called "PORT."  It takes the
  91.    same arguments as the port record in the /etc/services file and looks
  92.    like this in the named database.
  93.  
  94.         company.com    IN  PORT  4567  TCP  WWW
  95.  
  96.    Where "company.com" is the Domain Name, "IN" specifies the Internet
  97.    address family, "PORT" is the resource record name, "4567" is the
  98.    port number upon which a server waiting for connections, "TCP" is
  99.    protocol that the server is employing, and "WWW" is the service.
  100.  
  101.    Name resolution requires that the PORT resource record be associated
  102.    with an instance of the "A" record.  For example, an ISP might con-
  103.    figure its name server as follows:
  104.  
  105.         isp.net        IN  A     192.168.1.10
  106.                        IN  MX    host.isp.net
  107.                        IN  HOSTINFO LINUX  redhat
  108.         company1.com   IN  PORT  4568  TCP  WWW
  109.         company2.com   IN  PORT  4569  TCP  WWW
  110.         company3.com   IN  PORT  4570  TCP  WWW
  111.         company4.com   IN  PORT  4571  TCP  WWW
  112.  
  113.    Configuring multiple domain names onto a single host would also be
  114.    easier since the PORT resource record would remove the need to alias
  115.    multiple IP addresses to a network interface.  Thus, a new client
  116.    could be set up by adding the new domain name to the named data base,
  117.    configuring an instance of the WWW server to wait on an unique port,
  118.    and finally, to register the new name.
  119.  
  120.    PORT resource records also remove the "need" for well-known ports
  121.    since ports could now be discovered through the Domain Name Server.
  122.    In other words, instead of assuming that FTP is on port 21, one could
  123.    just lookup "ftp.host.org.domain" for an IP address and port number.
  124.  
  125.  
  126.  
  127.  
  128.  
  129. Maginnis, Madapoosi                                             [Page 2]
  130.  
  131. INTERNET-DRAFT          Expires February 1997             INTERNET-DRAFT
  132.  
  133.  
  134. Named Implementation
  135.  
  136.    The following is an overview of the Internet Domain Name Server and
  137.    modifications to the code.  Though the package comes with documenta-
  138.    tion, considerable time was spent understanding the code and working
  139.    with the name server.  The modifications are in pseudocode.
  140.  
  141.    A) Startup Control Flow
  142.  
  143.      1) Set appropriate values depending on commandline options.
  144.  
  145.      2) Disable signal handlers till initialization is complete and all
  146.         the databases are read.
  147.  
  148.      3) a) Read /etc/services file into a linked list.
  149.  
  150.         b) Read /etc/protocols file into a linked list.
  151.  
  152.      4) Initialization phase.
  153.  
  154.           a) Read the boot file (usually /etc/named.boot) and set the
  155.              options.
  156.  
  157.           b) Initialize the hash table.
  158.  
  159.           c) If maintenance is required, transfer and update named
  160.              database(s).
  161.  
  162.                i) Load Database from file - db_load() is called.
  163.  
  164.                   Define a new type of resource record called "PORT" to
  165.                   be 113 (113 was unused and hence chosen.).
  166.  
  167.               ii) Add lines of code in db_load().
  168.  
  169.                   The database file is read line by line and the format-
  170.                   ting is done by the type of resource record.
  171.  
  172.                   The format of the PORT record in the database file is
  173.  
  174.                   host/domain  IN  PORT  port#   Protocol   Service
  175.  
  176.                   The  data segment in the resource record is  charac-
  177.                   ter(Unsigned). The port is stored as two character(2
  178.                   bytes), followed by the protocol which is character
  179.                   string terminated  by a '\0' . The service is also a
  180.                   character string terminated by '\0'.
  181.  
  182.  
  183.  
  184.  
  185. Maginnis, Madapoosi                                             [Page 3]
  186.  
  187. INTERNET-DRAFT          Expires February 1997             INTERNET-DRAFT
  188.  
  189.  
  190.                        [7][f][T][C][P][\0][T][E][L][N][E][T][\0]
  191.                        |___| |__________|  |__________________|
  192.                          |        |                 |
  193.                        port #  protocol         Service
  194.  
  195.                   In the switch statement pertaining to the type of
  196.                   resource record
  197.  
  198.                   Add a case statement:
  199.  
  200.                     case T_PORT:
  201.  
  202.  
  203.                       a) Convert port number from integer to 2 byte
  204.                       string.
  205.                       b) The port number is followed by the protocol as
  206.                       a string terminated by '\0'.
  207.                       c) The service is next as a string terminated by
  208.                       '\0'.
  209.                       d)  Set the length of the data segment in a global
  210.                       (to the function)  variable and break from the
  211.                       switch statement.
  212.  
  213.                       This data is then copied over to a data structure
  214.                       and stored.
  215.  
  216.  
  217.              d) Return to main block
  218.  
  219.  
  220.       5) Set up signal handlers
  221.  
  222.       6) Wait for requests and handle them
  223.  
  224.       7) Handle signals appropriately
  225.  
  226.     B) Signal Handling Control Flow
  227.  
  228.  
  229.            1) SIGINT  -  dump database
  230.  
  231.  
  232.               db_dump() is called and here the database in memory is
  233.               dumped to file. Depending on the type of resource record
  234.               the data is printed.
  235.  
  236.               Add a case statement:
  237.  
  238.  
  239.  
  240.  
  241. Maginnis, Madapoosi                                             [Page 4]
  242.  
  243. INTERNET-DRAFT          Expires February 1997             INTERNET-DRAFT
  244.  
  245.  
  246.                 case T_PORT:
  247.  
  248.                   i) convert the 2 byte character to port number and
  249.                   print it
  250.  
  251.  
  252.                  ii) Print the next string (protocol).
  253.  
  254.  
  255.                 iii) The next string is the service.
  256.  
  257.            2) SIGHUP - reload database
  258.  
  259.            The actions performed  culminate in a call to db_load().
  260.            [described earlier]
  261.  
  262.  
  263.     C) Request Handling - TCP or UDP Control Flow
  264.  
  265.         A queue is set up for each of them (TCP, UDP) and ns_req() is
  266.         called.
  267.  
  268.  
  269.         ns_req()
  270.  
  271.           1) Check to see if the qr (Query Response) field in the header
  272.           is set. If qr is 1 then it is a query response. Call
  273.           ns_resp().
  274.  
  275.             a) qr = 0
  276.  
  277.             Check to see if the query type is QUERY or IQUERY (inverse
  278.             query) and appropriate lookup is done.
  279.  
  280.             The resource record is made depending on the type. Call
  281.             function make_rr().
  282.  
  283.             Add a case statement:
  284.  
  285.  
  286.               case T_PORT:
  287.  
  288.                 i) Copy the entire data region as a contiguous block
  289.                 (port number, protocol, service).  (Here there are no
  290.                 modifications required to the data, unlike MX record
  291.                 where the domain name needs to compressed.)
  292.  
  293.             b) qr = 1 ns_resp()  is called which in turn calls
  294.  
  295.  
  296.  
  297. Maginnis, Madapoosi                                             [Page 5]
  298.  
  299. INTERNET-DRAFT          Expires February 1997             INTERNET-DRAFT
  300.  
  301.  
  302.             db_update().
  303.  
  304.             db_update() -  Here the database is stored into internal
  305.             database format.
  306.  
  307.             Depending upon the type of resource record, data is copied
  308.             if the new one is distinct from the old one. Here db_cmp()
  309.             is called  which compares the data depending on the type.
  310.  
  311.             For T_PORT the entire data segment is compared as strings
  312.             (expansion/compression need not be taken into account).
  313.  
  314.             Then update the database:
  315.  
  316.  
  317.               case T_PORT:
  318.                 i) copy entire data segment
  319.  
  320.  
  321.             NOTE :
  322.  
  323.               db_update() is called from
  324.  
  325.                 1) ns_req.c from InitDynUpdate(). This function is valid
  326.                 only if ALLOW_UPDATE is defined at Compile time - for
  327.                 dynamic update.
  328.  
  329.  
  330.                   InitDynUpdate()   allows for dynamic updates. If the
  331.                   opcode in the header is update then update the
  332.                   database and try and forward to primary server.
  333.  
  334.  
  335.                 2) ns_resp.c from ns_resp(). This portion of code is
  336.                 valid only if ALLOW_UPDATE is defined at Compile time -
  337.                 for dynamic update.
  338.  
  339.                   If  the server is not primary, and the primary has
  340.                   been updated, update the database here.
  341.  
  342.  
  343.  
  344.                 3) ns_ncache.c  from  cache_n_resp()
  345.  
  346.  
  347.                   db_update() is called with new and old resource
  348.                   records identical.
  349.  
  350.  
  351.  
  352.  
  353. Maginnis, Madapoosi                                             [Page 6]
  354.  
  355. INTERNET-DRAFT          Expires February 1997             INTERNET-DRAFT
  356.  
  357.  
  358.      Miscellaneous
  359.  
  360.      1)  named-xfer  -  This is an independent executable and is used
  361.      for transferring databases from another server. It is exec'ed by
  362.      named to get the database.  It can be executed independently.
  363.  
  364.  
  365.        Here (named-xfer.c) code needs to added to handle the PORT  type
  366.        resource record which is obtained from the server.
  367.  
  368.        For T_PORT, the entire data segment is copied over ( no expansion
  369.        is required ) into local pointer first and then written to file.
  370.  
  371.        While writing to a file, the following needs to be done -
  372.  
  373.  
  374.          case T_PORT:
  375.  
  376.  
  377.            i) convert port number to  printable string from a number
  378.            stored as a string and print.
  379.  
  380.  
  381.           ii) Print the protocol which is '\0' terminated string.
  382.  
  383.  
  384.          iii) Print the service as a string terminated by '\0'.
  385.  
  386.  
  387.  
  388.  
  389. NSLookup Implementation
  390.  
  391.     1) Set appropriate values depending on commandline options.
  392.  
  393.     2) Check to see if the session is interactive or not.
  394.  
  395.     3) If it is non-interactive then perform the query and quit.
  396.  
  397.     4) If it is an interactive session get the inputs, parse them, per-
  398.     form the query, display the results and quit.
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408.  
  409. Maginnis, Madapoosi                                             [Page 7]
  410.  
  411. INTERNET-DRAFT          Expires February 1997             INTERNET-DRAFT
  412.  
  413.  
  414.     Modifications to the code
  415.  
  416.  
  417.       1) Define a constant to associate with the new resource record.
  418.  
  419.       2) Add an if statement to return a lexical category when "PORT"
  420.       appears as a query type during an interactive session.
  421.  
  422.       3) Add a case statements to print the responses based on type. In
  423.       the data field the port number is the first two bytes followed by
  424.       the protocol as a string terminated by '\0' and then is the ser-
  425.       vice which is also a string terminated by '\0'.
  426.  
  427.       4) Add case statement in routines used for debugging. Print the
  428.       resource record by the type.
  429.  
  430.  
  431.  
  432.  
  433. Source Code
  434.  
  435.       The modifications were done on the BIND version 4.9.3 BETA33
  436.       ftp ftp.vix.com
  437.       cd pub/bind/release
  438.       get bind.tar.gz
  439.  
  440.       ----- 4.9.3 BETA33 - December, 1995 - paul@vix.com
  441.  
  442.       Patches are available form
  443.       ftp pix.cs.olemiss.edu
  444.       cd pub/portrr
  445.       get patch-PORTRR-BIND4.9.3.tar.gz
  446.  
  447.  
  448.  
  449.  
  450. References
  451.  
  452.          [1]  Mockapetris, P., "Domain Names - Concepts and Facilities",
  453.          STD 13, RFC 1034, USC/Information Sciences Institute, November
  454.          1987.
  455.  
  456.          [2]  Mockapetris, P., "Domain Names - Implementation and Speci-
  457.          fication", STD 13, RFC 1035, USC/Information Sciences Insti-
  458.          tute, November 1987.
  459.  
  460.          [3]  Hinden, R., and S. Deering, Editors, "IP Version 6
  461.          Addressing Architecture", RFC 1884, Ipsilon Networks, Xerox
  462.  
  463.  
  464.  
  465. Maginnis, Madapoosi                                             [Page 8]
  466.  
  467. INTERNET-DRAFT          Expires February 1997             INTERNET-DRAFT
  468.  
  469.  
  470.          PARC, December 1995.
  471.  
  472.  
  473.  
  474. Authors' Address
  475.  
  476.          Dr. P. Tobin Maginnis
  477.          Department of Computer and Information Science,
  478.          302, Weir Hall,
  479.          University of Mississippi,
  480.          University, MS 38677
  481.          USA.
  482.          Phone: +1 (601) 232 - 5357
  483.          Email: ptm@cs.olemiss.edu
  484.  
  485.          Anesh S. Madapoosi,
  486.          P.O Box 5581,
  487.          University, MS 38677
  488.          USA.
  489.          Phone: +1 (601) 236 - 1143
  490.          Email: anesh@olemiss.edu
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520. INTERNET-DRAFT          Expires February 1997             INTERNET-DRAFT
  521. Maginnis, Madapoosi                                             [Page 9]
  522.  
  523.  
  524.