Referral Whois (RWhois)
Overview
RWhois provides a distributed system for the discovery, retrieval, and maintenance of directory information.
A RWhois database is one which provides host and network information about the systems
connected to the network and the electronic mail (email) addresses of the users on those systems
( RFC 954).
Structure
RWhois is a distributed database, where data is split across multiple servers to keep database sizes manageable.
RWhois uses existing lexically hierarchical labels, domain names and IP networks, for its data splitting using the concepts of
Authority Areas and Referrals.
RWhois directs clients toward the appropriate authority area by generating referrals. Referrals are pointers to other servers
that are presumed to be closer to the desired data.
When a number of RWhois servers containing authority areas are brought on line and informed about each other, they form an RWhois tree.
The tree has a Root Authority Area, which is the group that contains all other groups.
A RWhois tree is created for a certain lexically hierarchical namespace and the different parts of the hierarchy are mapped to
authority areas. Using Authority Areas, a portion of the RWhois tree can definitively control that portion of the hierarchy.
For a particular Authority Area, you can have Slave RWhois Servers to back up the Master RWhois Server and these replicate the
data on the Master server for that particular Authority Area.
The Start of Authority variables used to control the Data Replication are kept on the Master server and include:
- Serial-Number - of the data
- Retry-Interval - the time in seconds, between retries as the slave server attempts to connect to the master.
- Time-to-live - in seconds, of the data in the slave server.
- Admin-contact - E-mail address
- Tech-contact - E-mail address
- Hostmaster - E-mail address
- Primary-server - IP address (or hostname) and port number of the master server
Transport
TCP provides a reliable stream transport service between a client and a server. In RWhois, TCP is the default transport protocol
because, during a particular session, a client can send more than one query and a server can reliably return a large amount of data
for each of those queries. By default, a TCP RWhois server runs on port 4321. If port 4321 is not available, it may run on
an available port in the non-reserved range (1024 - 65535).
UDP may be used as the transport protocol also using port 4321 if a client wants to quickly send only one query.
This does not incur the overhead of establishing a TCP connection with a server. Again, if port 4321 is not available,
it may run on an available port in the non-reserved range (1024 - 65535).
RWhois Database
In the context of RWhois, the Database Schema can vary and there
is no strict format, but generally it consists of attributes, classes
and objects. The Schema, on the other hand, applies just to an aspect of this database. The Database Schema ought to be the same
within the same authority, but can vary between RWhois authorities.
Attribute
An Attribute gives data a type. One piece of data consists of an attribute-value pair e.g. Surname:John.
Attribute properties include the following:
- Attribute - the name of the attribute
- Type - there are three types:
- TEXT
- ID - identifier for another attribute
- SEE-ALSO - a pointer to external data e.g. a web page
- Format
- Indexed - TRUE/FALSE flag used for search facilities
- Required - this attribute must have a TRUE/FALSE value
- Multi-Line - this attribute may have multiple instances indicated by a TRUE/FALSE value but multiple lines of this instance.
- Repeatable - this attribute may have multiple instances indicated by a TRUE/FALSE value but as separate instances
- Primary - TRUE/FALSE flag to indicate that this attribute is a primary key
- Private - TRUE/FALSE flag to indicate that this attribute is not viewable.
Classes
All classes that are defined must inherit attributes from the Base Class. This Base Class has the following attributes:
- Class-Name
- Auth-Area - the Authority Area to which the object belongs
- ID
- Updated - Time-Date stamp
- Guardian (Optional) - links to a Guardian Class ID
- Private - TRUE/FALSE flag, the class is private if this set to TRUE.
- TTL (Optional) - Time To Live of a particular object
There are two standard classes:
- Referral Class - used for link referrals. This class contains the base class attributes plus the Referral attribute
that holds a URL to a Referred-Auth-Area.
- Guardian Class - used for security. This class contains the base class attributes plus the Guard-Info attribute
which contains the Guard-Scheme data e.g. PGP used for authentication. For this class, the Private attribute would be set to TRUE.
The Object is an instance of a particular Class.
Protocol Operation
The sequence of events are as follows:
- The client connects to the server.
- The server returns a banner identifying its protocol versions and capabilities.
- The client sends one or more directives to the server.
- The server returns the response to each directive.
- The client finally sends a query to the server.
- The server returns the query results.
- The server closes the connection, unless the client has directed
it not to close the connection.
Directives are used to gain information about specific attributes or parts of the database.
Directives include the following:
- -rwhois
- -class
- -directive
- -display
- -forward
- -holdconnect
- -limit
- -notify
- -quit
- -register
- -schema
- -security
- -soa
- -status
- -xfer
- -X
As well as RWhois being a directory access protocol, it also routes queries. Routing a query involves redirecting the query to another
server that is closer to the data. When routing a query, the server starts by finding the location of the next server.
It then either, forwards the query to that server and returns the result to the client, or returns the location of that server to the client.
The location of the server must contain its host name (or IP address), its port number, and the Authority Area that it is in.
The location of the server to which a query is routed is called a Referral of which there are two types, Punt Referrals and Link Referrals.
A Punt Referral is a pointer to a server that is further up a RWhois tree, and a Link Referral is a pointer to a server that is further down the tree.
RFC 2167 describes the Referral Whois protocol (v1.5) and supercedes
RFC 1714.
|