System Design Specifications

for a

DNS Database Administration Assistant

 

 

 

 

 

 

 

by Joe Arciprete

 

Group Members:

Prentice Bisbal

Alex Rass

 

 

 

January 5th, 1999


 

Table of Contents

 

Introduction. 2

Purpose. 2

Scope. 2

Definitions, Acronyms, and Abbreviations. 2

References. 2

Overview.. 2

System Design. 2

Overview.. 2

User Interface. 2

System Functionality. 2

Functional Requirement for Open File: 2

Functional Requirement for Save File: 2

Functional Requirement for New Domain: 2

Functional Requirement for Delete Domain. 2

Functional Requirement for Edit/Open Domain. 2

Functional Requirement for Add Domain Entry. 2

Functional Requirement for Save Domain Entry. 2

Functional Requirement for Delete Domain Entry. 2

Functional Requirement for Write Changes. 2

Functional Requirement for Revert 2

Functional Requirement for Exit 2

 


Introduction

 

Purpose

It has been decided that a system is to be developed to alleviate the often error prone and tedious task of editing and maintaining system files that provide network information to Domain Name Servers.  The purpose of this document is to provide a complete system requirement outline to develop a DNS Database Administration Assistant that accomplishes this task.

 

Scope

            This document serves as a bridge for developers to gain a perspective on how the product is to be implemented. It provides a detailed listing of specific functional requirements, user interfaces and design specifications.  This includes general and specific functionality of forms, controls and files within the program.

 

Definitions, Acronyms, and Abbreviations

A - Address - A type of record found in the DNS database files.

 

CNAME - Canonical Name - A type of record found in the DNS database files.

 

IETF - Internet Engineering Task Force, a group responsible for developing and adopting technical standards for the Internet. These standards are known as Requests form Comments (RFCs).

 

FQDN - Fully Qualified Domain Name - A host name, including the full domain with respect to the root domain. Format is similar to a host name that includes the domain, but a FQDN terminates with a period, indicating the root domain. Also known as an absolute domain name.

 

MX - Mail Exchange - A type of record found in the DNS database files.

 

RFC - Request for Comments, A document defining a standard to be used on the Internet, adopted and maintained by the IETF.

 

SOA - Start of Authority - A type of record found in the DNS database files.

 

NS - Name Server - A type of record found in the DNS database files.

 

PTR - Pointer - A type of record found in the DNS database files.

 

 

 

References

Mockapetris, P. RFC 1034: Domain Names - Concepts and Facilities, Information Sciences Institute, University of Southern California, Marina del Rey, CA, 1987

 

Mockapetris, P. RFC 1035: Domain Names - Implementation and Specification, Information Sciences Institute, University of Southern California, Marina del Rey, CA 1987

 

Albits, Paul and Cricket Liu, DNS and BIND, 2nd Ed., O’Reilly and Associates, Inc., Sebastopol, CA, 1997

 

Overview

            The document is divided into two main sections: System Design and System Functionality.  System Design provides a general outline of what the program intends to do as well as any general design specifications.  The last section, System Functionality, gives a detailed description of the inputs and outputs and their specific purpose within the entire program.  Throughout the document RFC 1035 is referenced.  For a complete listing go to the International Engineering Task Force’s (IETF) website at http://www.ietf.org.

 

System Design

 

Overview

            Since the program will primarily run on a single machine within a UNIX (Solaris) environment, the Java programming language was chosen for a variety of reasons.  The object-oriented features and the AWT API of Java give programmers a solid basis for developing and making future revisions to the application.  If necessary, Java’s platform independence permits this application to be utilized within multiple environments.  Some advanced features of Java are intended to be utilized, mainly the swing API.  It is important for anyone who attempts to run the final application that they obtain a copy of these files.

            The system will provide a simple GUI front end for a UNIX admin to easily create, delete and edit a set of files that provide network information to the system.  These files provide to the network a listing of each domain, as well as more detailed information about each domain including but not limited to:

 

-         Relationships between host names and IP addresses.

-          Mail Routing information.

-          Listing of machines responsible for naming services.

 

Each file adheres to a specific format and syntax that cannot be deviated from. 

Specifications

 

            The developer must be aware and certain of the format of these system files in order to ensure system stability.   The directory structure containing the files is left to the developer, but should take some hierarchical format with the main boot file listing all the domains with subdirectories containing specific files for each domain.  Below is an example of the files generated from a set of user input.  This example will give developers a good feel as to the format of these files.  For more general file format specification see the Functional Requirements for New Domain.  Consider the following input for a new domain (format is not important):

 

Directory: etc\hosts

Networks: 192.249.249, 192.253.253

Domain being served: movie.edu

Name of primary name server: terminator.movie.edu

Email address of administrator: al@robocop.movie.edu

Refresh period (in seconds): 10800

Retry period (in seconds): 3600

Expiration time (in seconds): 604800

Minimum time to live (in seconds): 86400

Host name primary name server: terminator.movie.edu

Host name(s) of secondary name server(s): wormhole.movie.edu

Mail Exchangers (Priority): ilpostino.movie.edu (0)       thepostman.movie.edu (20)

Hosts:

(Format: <IP address>  <Full Domain Name> <Alias1> <Alias2> …)

 

(Hosts on 192.249.249 network)

192.249.249.2         robocop.movie.edu              robocop

192.249.249.3         terminator.movie.edu           terminator              bigt

192.249.249.4         diehard.movie.edu               diehard                   dh

 

(Hosts on 192.253.253 network)

192.253.253.2         misery.movie.edu                 misery

192.253.253.3         shining.movie.edu               shining

192.253.253.4         carrie.movie.edu   carrie

 

(Multi-homed hosts)

192.249.249.1         wormhole.movie.edu           wormhole               wh

192.253.253.1         wormhole.movie.edu           wormhole               wh

 

The program would produce the following files (extensions excluded) movie.edu, 192.249.249, and 192.253.253.  These files would be subject to modification and deletion also as the user makes adjustments via the application to the domain.  Note the following specification regarding the file formats:

 

-         All records start in column one.

-         All records must fit on a single line, unless parentheses are used, which allow records to span multiple lines.

-         The first field in PTR records is the host IP addresses reversed, with in-addr.arpa appended. PTR records point to canonical names only.

-         Anything appearing after a semi-colon (“;”) is a comment and will be ignored.

-         A period (“.”) after domain names is required to signify the absolute domain path name.  It is not just a formality.

-         The at symbol “@” in the PNS admin is substituted with a period “.”.

-         The serial number is set to 1.

-         Refer to the Definitions, Acronyms, and Abbreviations section and RFC 1035 for further information on items appearing in this section.

 

The main boot file would be:

 

;              

; type                      domain                                                   source file or host

                ;

                directory                etc\hosts           

            primary                   movie.edu                                              movie.edu

            secondary             wornhole.movie.edu                            wormhole.movie.edu

                cache                      .                                                               root.cache

 

 

movie.edu:

 

movie.edu IN SOA terminator.movie.edu. al.robocop.movie.edu (

1                              ; Serial

10800                      ; Refresh

3600                        ; Retry

604800                    ; Expire

86400 )                    ; Minimum TTL

;

;  name servers

;

movie.edu.             IN            NS           terminator.movie.edu.

movie.edu.             IN            NS           wormhole.movie.edu.

 

 

;

; mail exchangers

;

movie.edu.             IN            MX         0              ilpostino.movie.edu.

                                IN            MX         20            thepostman.movie.edu.

 

;

; addresses for canonical names

;

localhost.movie.edu            IN            A             127.0.0.1

robocop.movie.edu.             IN            A             192.249.249.2

terminator.movie.edu.          IN            A             192.249.249.3

diehard.movie.edu.              IN            A             192.249.249.4

misery.movie.edu.                IN            A             192.253.253.2

shining.movie.edu.              IN            A             192.252.253.3

carrie.movie.edu.                  IN            A             192.253.253.4

wormhole.movie.edu.          IN            A             192.249.249.1

wormhole.movie.edu.          IN            A             192.253.253.1

 

 

;

; aliases

;

bigt.movie.edu.                     IN            CNAME terminator.movie.edu.

dh.movie.edu.                       IN            CNAME diehard.movie.edu.

wh.movie.edu.                      IN            CNAME                 wormhole.movie.edu.

 

 

 

192.249.249:

 

249.249.192.in-addr.arpa IN SOA terminator.movie.edu. al.robocop.movie.edu (

1                              ; Serial

10800                      ; Refresh

3600                        ; Retry

604800                    ; Expire

86400 )                    ; Minimum TTL

 

;

; name servers

;

249.249.192.in-addr.arpa.     IN            NS           terminator.movie.edu.

249.249.192.in-addr.arpa.     IN            NS           wormhole.movie.edu.

 

;

; Addresses point to canonical names

;

1.249.249.192.in-addr.arpa.  IN            PTR        wormhole.movie.edu.

2.249.249.192.in-addr.arpa. IN            PTR        robocop.movie.edu.

3.249.249.192.in-addr.arpa.  IN            PTR        terminator.movie.edu.

4.249.249.192.in-addr.arpa.  IN            PTR        diehard.movie.edu.

 

 

192.253.253:

 

253.253.192.in-addr.arpa IN SOA terminator.movie.edu. al.robocop.movie.edu (

1                              ; Serial

10800                      ; Refresh

3600                        ; Retry

604800                    ; Expire

86400 )                    ; Minimum TTL

 

;

; name servers

;

253.253.192.in-addr.arpa.     IN            NS           terminator.movie.edu.

249.249.192.in-addr.arpa.     IN            NS           wormhole.movie.edu.

 

;

; addresses point to canonical names

;

1.253.253.192.in-addr.arpa.  IN            PTR        wormhole.movie.edu.

2.253.253.192.in-addr.arpa. IN            PTR        misery.movie.edu.

3.253.253.192.in-addr.arpa.  IN            PTR        shining.movie.edu.

4.253.253.192.in-addr.arpa.  IN            PTR        carrie.movie.edu.

 

 

User Interface

 

The system's prime responsibility is to maintain a listing of each domain within the network along with their characteristics.

When the program first begins, the user will have an opportunity to decide whether they want to administer this machine or some other.  If they decide on some other, they will have to open the boot file of that machine via the menu.  The main window will display general info about the domain including the domain name, directory, service, sortlist, cache domain and cache file.  There will be a list of any domains and their associative file names.  The main functionality is entailed in creating, deleting and editing this list.  Completion of each task will then result in some altercation (create, delete, edit) of the system files associated with the domain.

 

The program will allow the user to edit domain attributes in another window.  The user will be allowed to enter and add/remove or edit the following properties (Figure 2):

 


Figure 2

 


-         Domain name

-         Name for the primary domain server

-         Email address of admin of primary name server

-         Refresh period

-         Time between retries

-         Time until expiration

-         Minimum time to live

-         Secondary Name Servers, Mail Exchangers (and priorities), IP Address, Aliases and Addresses that Point to Canonical Names.  The server name and comments will be listed for each.

 

System Functionality

 

            The following is a listing of generalized features of the system and what is expected from each of them.  This includes opening and saving the boot files as well as creating, deleting and editing each domain from the current boot file.

 

Functional Requirement for Open File:

 

Inputs: Boot file name

 

Outputs: Nothing

 

Processing:  Boot file is opened and parsed. Contents of the file are available for editing by user.  Boot file is closed.  Boot file has the following format:

 

            ;

            ; Type              Domain                        File Name

            ;

            directory           <Directory Path>

            domain             <Domain Name>                      <file name>

            primary <Primary Server>                     <file name>

            secondary         <Secondary Server>                <file name>

            stub                  <Stub Server>                          <file name>

            cache               .                                               root.cache

 

 

Functional Requirement for Save File:

 

Inputs (from user):

 

-         Domain Name

-         Directory

-         Service

-         SortList

-         Cache Domain and Cache File

-         Primary Name Servers (includes filenames and comments)

-         Secondary Name Server (includes filenames and comments)

 

Outputs: Boot file receives contents of fields edited by user.  File format adheres to standard discussed in Processing Section of section above.

 

Processing:  For each field the name will adhere to the grammar in processing section

of New Domain.

 

 

Functional Requirement for New Domain:

 

Inputs (from user):

 

-         Domain name

-         Name for the primary name server

-         Email address of admin of primary name server

-         Refresh period

-         Time between retries

-         Time until expiration

-         Minimum time to live

-         Name Servers, Mail Exchangers (and priorities), Address, Aliases, Address Point (to Canonical Name) along with the server name and comments for each.

 

Outputs:   This requirement is optional for the programmer to implement.  These files may be generated at a different point in time.  A file with the name of the new domain name (i.e. movie.edu) will be generated.  Please refer to the section Specifications in System Design for an example of this file and the section Definitions, Abbreviations, Acronyms in the Introduction and RFC 1035 for further details.  Note the following file specifications:

 

-         All records start in column one.

-         All records must fit on a single line, unless parentheses are used, which allow records to span multiple lines.

-         The first field in PTR records is the host IP addresses reversed, with in-addr.arpa appended. PTR records point to canonical names only.

-         Anything appearing after a semi-colon (“;”) is a comment and will be ignored.

-         The at symbol “@” in the PNS admin is substituted with a period “.”.

-         The serial number is set to 1.

-         A period (“.”) after domain names is required to signify the absolute domain path name.  It is not just a formality.

-         The first entry in the listing of addresses for canonical names will be localhost.<Domain Name>.  Its IP address is 127.0.0.1.

 

The domain file will adhere to the following format:

 

<Domain Name> IN SOA <Primary Name Server>. <Email Address of PNS Admin> (

                <Serial Number>                   ; Serial

                <Refresh Period>                                 ; Refresh

                <Time between Retries>                     ; Retry

                <Time till Expiration>                           ; Expire

                <Time to Live> )                                   ; Minimum TTL

 

 

;

;  name servers

;

<Domain Name>.  IN            NS           <Primary Name Server>.

<Domain Name>.  IN            NS           <Secondary Name Server 1>.

…                                            …            …            ….

<Domain Name>.  IN            NS           <Secondary Name Server N>.

 

;

; mail exchangers

;

<Domain Name>.  IN            MX         <Priority 1>                           <Mail Exchanger 1>.

…                                            …            …            …                                            …

                IN            MX         <Priority N>                          <Mail Exchanger N>.

 

;

; addresses for canonical names

;

<Host 1>.               IN            A             <Network  Address 1>

…                            …            …            …

<Host N>.              IN            A             <Network  Address N>

 

;

; aliases

;

<Alias Name 1>. <Domain Name 1>  IN            CNAME <Host Name for Alias 1>.

 

<Alias Name N>. <Domain Name N>                IN            CNAME <Host Name for Alias N>.

 

Finally, for each network IP address entered in, a file with the same name as the network will be created (i.e. 192.249.249 and 192.253.253).  Note the following:

 

-         The field <Network Address Format A> only contains the first 24-bits of the IP address. (i.e. 192.249.249.1 will be listed as 192.249.249).

-         The field <Network Address Format B> only contains the first 24-bits of the IP address with the first 8-bits and 3rd set of 8-bits interchanged (i.e. 192.249.249.1 will be listed as 249.249.192).

-         The field <Network Address Format C> only contains the entire 32-bits of the IP address but with the first 8-bits and last 8-bits interchanged (i.e. 192.249.249.1 will be listed as 1.249.249.192).

-         The same rules specified for the Domain File also apply here.

 

Each file will take the following format:

 

<Network Address Format B>.in-addr.arpa IN SOA <PNS>. <Email Ad. PNS Admin> (

                <Serial Number>                   ; Serial

                <Refresh Period>                                 ; Refresh

                <Time between Retries>     ; Retry

                <Time till Expiration>           ; Expire

            <Time to Live> )                   ; Minimum TTL

;

;  name servers

;

<Network Address Format B>.in-addr.arpa.    IN NS     <Primary Name Server>.

<Network Address Format B>.in-addr.arpa.    IN NS     <Secondary Name Server 1>.

…                                                                            …            … …   …

<Network Address Format B>.in-addr.arpa.    IN NS     <Secondary Name Server N>.

 

;

; Addresses point to canonical names

;

<Network Address Format C>.in-addr.arpa.    IN PTR <Domain Name 1 on Network>.

…                                                                                            … …         …

<Network Address Format C>.in-addr.arpa.    IN PTR <Domain Name N on Network>.

 

Processing:  The main functionality here is on validating user input.  Below for each input is a listing of what needs to be validated:

 

-         New domain name:  Domain name must not exist already.  Domain name must be a valid domain name.  Below is a grammar for domain names (and sub-domains) extracted from RFC 1035:

 

<domain> ::= <subdomain> | " "

 

<subdomain> ::= <label> | <subdomain> "." <label>

 

<label> ::= <letter> [ [ <ldh-str> ] <let-dig> ]

 

<ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>

 

<let-dig-hyp> ::= <let-dig> | "-"

 

<let-dig> ::= <letter> | <digit>

 

<letter> ::= any one of the 52 alphabetic characters A through Z in

upper case and a through z in lower case

 

<digit> ::= any one of the ten digits 0 through 9

 

-         Name for the primary domain server:  Must comply with the above grammar and domain name must be the suffix.

 

-         Email address of admin of primary name server: Must be a valid email address (i.e. al@robocop.movie.edu) on the primary domain server.

 

-         Refresh period: Positive Value of a Signed 32-bit number.

 

-         Time between retries: Positive Value of a Signed 32-bit number.

 

-         Time until expiration: Positive Value of a Signed 32-bit number.

 

-         Minimum time to live: Positive Value of a Signed 32-bit number.

 

-         List of names of secondary name servers: Must comply with the above grammar and domain name must be the suffix.

 

-         List of networks (IP addresses): Must be a valid 32-bit IP address (i.e.

<8-bits>.<8-bits>.<8-bits>.<8-bits>).  Each 8-bit number has a range of 0-255 in decimal (i.e. 192.249.249.1).

 

-         List of mail exchangers and priority for each domain: Must comply with the above grammar and the new domain name must be its suffix.  Priority is a positive value of a signed 32-bit number.

 

-         Hosts for each network.  This includes IP address, full host name, and a list of aliases.  Hosts must be a valid domain name (see grammar above) and the new domain name must be its suffix.  IP address must be contained in the list of networks specified above.  Aliases must be, beginning with a letter, a series of letters or numbers.

 

-         Multi-homed hosts: Hosts names may correspond to no more than one IP addresses in each network.

 

Functional Requirement for Delete Domain

 

Inputs:  Files associated with domain selected:  Global Listing of all domains; 

             and all files associated with that domain (i.e. from example above: movie.edu,

            192.249.249 and 192.253.253).

 

Outputs: None.

 

Processing: The global file (named.boot) will be edited with the selected domain’s entry being removed.  All other files associated with that domain are deleted.

 

Functional Requirement for Edit/Open Domain

 

Inputs (From existing domain files):

 

-         Domain name

-         Name for the primary domain server

-         Email address of admin of primary name server

-         Refresh period

-         Time between retries

-         Time until expiration

-         Minimum time to live

-         Name Servers, Mail Exchangers (and priorities), Address, Aliases, Address Point (to Canonical Name) along with the server name and comments for each.

 

Outputs: This requirement is optional for the programmer to implement.  These files may be generated at a different point in time.  Changes (if any) are sent to the corresponding files.  Fields are replaced with any new values, but no new files are created.  The files must conform to the file specification stated in the Outputs section of the Functional Requirements of New Domain.  Note the following file specification changes:

 

-         The serial number will be incremented by 1.

 

Otherwise, the file formats and specifications remain the same.

 

Processing:  The main functionality here is on validating changes the user makes to existing data.  Below for each input is a listing of what needs to be validated:

 

-         New domain name: Can be changed and altered but still must comply with the grammar stated in New Domain Functionality.  Must be a unique name, one that is not taken.

 

-         Name for the primary domain server:  Must comply with the grammar stated in New Domain Functionality and domain name must be the suffix.

 

-         Email address of admin of primary name server: Must be a valid email address(i.e. al@robocop.movie.edu)

 

-         Refresh period: Positive Value of a Signed 32-bit number.

 

-         Time between retries: Positive Value of a Signed 32-bit number.

 

-         Time until expiration: Positive Value of a Signed 32-bit number.

 

-         Minimum time to live: Positive Value of a Signed 32-bit number.

 

-         List of names of secondary name servers: Must comply with the grammar stated in New Domain Functionality and domain name must be the suffix.

 

-         List of networks (IP addresses): Must be a valid 32-bit IP address (i.e.

<8-bits>.<8-bits>.<8-bits>.<8-bits>).  Each 8-bit number has a range of 0-255 in decimal (i.e. 192.249.249.1).

 

-         List of mail exchangers and priority for each domain: Must comply with the grammar stated in New Domain Functionality and domain name must be its suffix.  Priority is a positive value of a signed 32-bit number.

 

-         Hosts for each network.  This includes IP address, full host name, and a list of aliases.  Hosts must be a valid domain name (see grammar stated in New Domain Functionality) and the new domain name must be its suffix.  IP address must be contained in the list of networks specified above.  Aliases must be, beginning with a letter, a series of letters or numbers.

 

-         Multi-homed hosts: Hosts names may correspond to no more than one IP addresses in each network.

 

 

Functional Requirement for Add Domain Entry

 

Inputs:  There are five possible type of entries: Name Server, Mail Exchanger, IP Address, Aliases, Address Point to Canonical Name. 

 

Outputs:  The entry is added to the domain entry list.

 

Processing:  The following is a list of inputs for each possible entry:

 

-         Name Server:

-         Host Name: See grammar stated in New Domain Functionality.

-         Server Name.

-         Comment.

 

-         Mail Exchanger

-         Host Name: See grammar stated in New Domain Functionality.

-         Priority: Positive Value of 32-bit signed number.

-         Server Name.

-         Comment.

 

-         IP Address

-         Host Name: See grammar stated in New Domain Functionality.

-         IP Address: Valid IP Address

-         Comment.

 

-         Aliases

-         Alias.

-         Server Name.

-         Comment.

 

-         Address Point to Canonical Name

-         IP Address: Valid IP address.

-         Server Name.

-         Comment.

 

Functional Requirement for Save Domain Entry

 

Inputs:  An existing entry already in the domain's list.

 

Outputs:  Any changes or updates are recorded and saved.

 

Processing:  Please refer to the processing section of the functional requirements for Add Domain for details.

 

 

Functional Requirement for Delete Domain Entry

 

Inputs:  An existing entry already in the domain's list.

 

Outputs: None.

 

Processing: The entry is removed from the domain's list.

 

 

Functional Requirement for Write Changes

 

Functional requirements are identical to Edit Entry.  All optional requirements are required here.

 

 

Functional Requirement for Revert

 

Inputs:  Last known entries for the current Domain File.

 

Outputs: None.

 

Processing: Associated Domain Files are reverted back to previous state.

 

 

Functional Requirement for Exit

 

Inputs: None.

 

Outputs: None.

 

Processing:  Current Window is closed.