Project Page - Proclaim (DHCP Client)


Anurag Narula, narula@sgi.com, Xtn:3-1136

Note: The terms "DHCP client", "Proclaim Client", or simply the "client" are interchangable.

1. Introduction:

The Dynamic Host Configuration Protocol (DHCP) is an innovative enhancement to TCP/IP. When plain TCP/IP is used on large numbers of desktops, administrative problems arise, most notably the assigning and tracking of IP addresses among individual computers. DHCP is the result of the Internet Engineering Task Force's efforts to provide a way to assign IP network addresses and provide other TCP/IP stack parameters dynamically. DHCP relieves the network administrator from having to assign an IP address to each participating computer by hand. DHCP also includes an address reservation scheme, so unused IP addresses can be reassigned automatically, and DHCP can be used to hand out local network parameters such as subnet mask and default router addresses. The result is a plug-and-play TCP/IP for the desktop. Several vendors, including Microsoft, Sun, HP, IBM, DG, FTP Software and Competitive Automation, are releasing DHCP-compliant TCP/IP implementations.

The DHCP software consists of the server and the client portions. The IRIXpro 1.0 software package released in April 95 provides the SGI customers with the first released version of the DHCP compliant software. Currently the server portion of the DHCP software needs a netls license, but it will probably be given away with the "university pack" in the future.

2. Proposal for enabling the DHCP client by deafult in the banyan release

To make DHCP really usable the client portion of the software needs to be bundled in with a all platform release of IRIX and be enabled by default. This proposal addresses the various concerns raised during my discussions with some of the engineering staff regarding the possible impact on performance, and the addition of daemon process caused as a result of enabling the DHCP client software in banyan by default.

The cliet will be invoked by the /etc/init.d/run-proclaim script and will be run out of the rc2.d start up sequence. The running of the client at startup will be determined by the chkconfig option autoconfig_ipaddress which be shipped on by default.

If the client system is able to get an address lease from a server on the network, the proclaim daemon will remain active on the client system, but will spend almost all the time sleeping and will only wake up when 1) It is time to renew the address lease (typically at 0.5*total lease time), 2) If the renew had failed it will try to rebind the lease from any available server (usually at 0.875*total lease time), and 3) On receiving a user generated request signal. In the case the client is unable to get an address lease from a server due to any reason (no server, server down, no available addresses....) the daemon will exit.

If the user sends a terminate lease signal (by running /etc/init.d/run-proclaim surrender) the client daemon will shutdown all networking and exit.

If the client lease was obtained through a DHCP server and all attempts to renew and rebind the lease were unsuccessful, the client daemon will shutdown all networking at the termination of the lease and exit.

The addition of the proclaim client invocation to the startup (bootup) sequence will add a maximum potential delay of 10 seconds to the system bootup time, but will be automatically disabled after 2 unsuccessful attempts at finding a server. So in the absence of a server the system will only have this potential delay the first 2 times the system is booted up. Ofcourse the client invocation can always be disabled or enabled manually using the chkconfig autoconfig_ipaddress option.

The various scenarios pertaining to the client system state and the impact of automatic enabling of the DHCP client software are discussed below.

1.1 The new system is taken out of the box and plugged into the network

The system address is 192.0.2.1. During the bootup sequence the DHCP client broadcasts a request soliciting an IP address, hostname, netmask, nis domain name, and an IP address lease duration from a DHCP server on the same subnet.

1.1.1 Server is found and a lease is negotiated

The system accepts the new IP address and other configuration information from the DHCP server and is up and running on the network. The client daemon saves the lease information on disk and sets the appropriate alarm for the lease renewal and goes to sleep.

1.1.2 No server is found

The client times out after 6 seconds and exits, the system continues through the bootup sequence normally. If it is the 2nd time of this unsuccessful attempt, the client disables the autoconfig_ipaddress chkconfig option and exits.

1.2 The system has a vaild IP address (non 192.0.2.1) and is on the right subnet

During the bootup sequence, the client sends a brodcast message requesting a server to validate its address mapping.

1.2.1 Server is found and the address is validated

The systems comes up on the network with the same address binding as before.

1.2.2 Server is found but the address is not validated

This is the same case as when a client is requsting an IP address that is not valid on its subnet, this case is discussed in section 1.3.

1.1.1 No server is found

The client times out after 5 seconds and exits, the system continues through the bootup sequence normally. If it is the 2nd time of this unsuccessful attempt, the client disables the autoconfig_ipaddress chkconfig option and then exits.

1.3 The system has a vaild IP address (non 192.0.2.1) but is on the wrong subnet

During the bootup sequence, the client sends a brodcast message requesting a server to validate its address mapping.

1.3.1 Server is found and the requested address is deemed invalid

The client goes to the initialization state and starts the process of getting a new IP address and configuration parameters as if it were a brand new out of the box system (described in section 1.1.1).

1.1.1 No server is found

The client times out after 5 seconds and exits, the system continues through the bootup sequence normally. If it is the 2nd time of this unsuccessful attempt, the client disables the autoconfig_ipaddress chkconfig option and then exits. Note that in this case the client is now unable to communicate with anyone as its address is incorrect for that subnet.

1.1 Project Code name:

1.2 Product name (if known):

1.3 Engineering manager:

1.4 Marketing manager:

1.5 Project software architects/lead designers:

1.6 Who outside the project is familiar with the project's technical details?

1.7 What parts of the source tree contain the results of this project?

1.8 What sub-projects contribute to this project?

2. Goals:

2.1 What problem (or problems) is this project solving and for whom?

2.2 What specific features or functions are being created?

2.3 What user documentation will be produced?

2.4 What are the quantitative performance and resource usage goals for the product?

2.5 What tests are planned to measure performance?

2.6 What other functionality will regress in performance due to these changes?

2.7 What are this project's goals for reliability, testability, robustness, maintainability?

2.8 What tests are planned to assure functionality and reliability.

2.9 What problems are NOT going to be addressed by this project that someone might expect to be addressed?

2.10 What is the target market user expertise?

3. Dependencies:

3.1 What will be required of the customer to use this product (investment, training, reconfiguration, etc.)?

3.2 Which projects depend on the results of this project?

3.3 Which projects does this project depend upon?

3.4 Which platforms will be supported and which will not?

4. Schedule:

4.1 Provide a schedule with the following milestones:

       [06/22/95] Design Complete
       [06/29/95] Coding Complete
       [06/30/95] Integration Complete
       [07/10/95] System Test Complete
       [mm/dd/yy] Alpha Test Cycle
       [mm/dd/yy] Early Customer Access Cycle
       [mm/dd/yy] Beta Test Cycle
       [mm/dd/yy] Manufacturing
       [mm/dd/yy] Release
       [mm/dd/yy] First Customer Ship

4.2 What are the major risks to achieving all goals while meeting this schedule?

4.3 Are you on schedule?

5. Documents:

5.1 How can I obtain the documents that describe the functionality, performance, architecture, interfaces, design of this product?

5.2 How can I obtain the documents that represent the Test Plan and Documentation Plan for this product?

6. Contracts and Licenses

6.1 What contracts exist for third party software and what is the approval cycle?

6.2 Are there any built in assumptions in the contract regarding distribution methods and quantities?

6.3 What is the royalty structure?

6.4 How are customers under support contract to be managed?

6.5 What are the contract start and stop dates?

7. Miscellaneous:

7.1 Anything else you think people should know about the project?

8.0 Software Release Request (pointer)