System Design Specifications
for a
DNS Database Administration
Assistant
by Joe Arciprete
Group Members:
Prentice Bisbal
Alex Rass
January 5th, 1999
Table of Contents
Definitions,
Acronyms, and Abbreviations
Functional
Requirement for Open File:
Functional
Requirement for Save File:
Functional
Requirement for New Domain:
Functional
Requirement for Delete Domain
Functional
Requirement for Edit/Open Domain
Functional
Requirement for Add Domain Entry
Functional
Requirement for Save Domain Entry
Functional
Requirement for Delete Domain Entry
Functional
Requirement for Write Changes
Functional
Requirement for Revert
Functional
Requirement for Exit
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.
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.
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.
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., OReilly and Associates, Inc.,
Sebastopol, CA, 1997
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 Forces (IETF) website at http://www.ietf.org.
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, Javas 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.
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):
-
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.
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.
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
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.
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
<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.
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 domains entry
being removed. All other files
associated with that domain are deleted.
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.
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.
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.
Inputs: An existing entry already in the domain's
list.
Outputs:
None.
Processing:
The entry is removed from the domain's list.
Functional
requirements are identical to Edit Entry. All optional requirements are required here.
Inputs: Last known entries for the current Domain
File.
Outputs:
None.
Processing:
Associated Domain Files are reverted back to previous state.
Inputs:
None.
Outputs:
None.
Processing: Current Window is closed.