Contact Chase

Project Details

Project Tags

The following tags have been assigned:

Media Gallery

Some DHCP statistics displayed in a tab on the DCOHome v3 Dashboard.Some DHCP statistics displayed in the DCOHome v3 Admin area.An overview of some recent DHCP packets received from Wendigo displayed by DCOHome.
A tool within DCOHome that used DHCP logs to associate an IP address with a network device and, via that device's registration, a student.

Related Projects

The following projects are related:

Wendigo (DHCP Server)

This project was done while I was an RTA Coordinator with Student Affairs IT at the University of Montana, Missoula. Wendigo is the critical DHCP server component of the DirectConnect Internet Setup Process running on DCOWeb. The following assumes you have at least a basic understanding of the goals and configuration of the DirectConnect Internet Connection Process and Network Access Control Systems I helped develop.

DHCP Network Service Component On DCOWeb

The first of the two components involved in the Wendigo system is a network service located on the DCOWeb server. This server was built from scratch in Java and is primarily responsible for sending and receiving low-level network communications involved in the DHCP process. This involves correctly parsing and interpreting the data received within incoming DHCP packets, crafting and sending outgoing DHCP packets, and providing broad support for differences in all possible operating systems and device types supported on the DirectConnect network. Individual short-lived threads are created for tracking the state of an individual DHCP transaction with a single client. Aside from this, Wendigo's architecture was specifically designed to not retain persistent data or otherwise require local storage or direct access to a database. Instead, all of the logic for handling the leasing of IP addresses and other network information through the DHCP process is handled by the web service provided through DCOHome. The use of Java allowed this server to be successfully deployed to both Linux and Windows hosts throughout my time with SAIT.

Web Service Component On DCOHome

DCOHome is used as a web portal for SAIT to manage both their internal affairs and interactions with external sources. It contains an extensive database of information such as information about students, student housing assignments, devices connected to the DirectConnect network, and DHCP logs. The data from these data stores is made available via a web application as well as through private web APIs used to facilitate communication with other external systems such as the Java Wendigo server. Using this information it is possible for DCOHome to act as a central authority for making decisions during the DHCP leasing process about what network information to provide to clients while Wendigo is only responsible for understanding how to read and construct DHCP packets using data it is given. By centralizing this decision logic in DCOHome it is possible to make instant in-place updates to the PHP logic of DCOHome without a need to update, test, recompile, and redeploy the Java Wendigo component with any changes to the logic controlling the DHCP leasing decisions. An example of how this separation is achieved can be seen below.

Sample Interaction With A Single Client
  • Wendigo receives a DHCP request from a client device.
  • Wendigo will spawn a new thread dedicated to servicing this specific client device through the completion of the DHCP transaction.
  • Wendigo will parse the data from the received packet and generate an HTTP request to relay the information to DCOHome's web API.
  • DCOHome would then use its database of students, student housing assignments, network devices, and DHCP logs to make decisions about the network details to lease to the client.
  • DCOHome would then return this information in response to Wendigo's original request.
  • Wendigo will use the information returned from DCOHome and construct a DHCP packet that will be sent back to the client.
  • This communication process will be repeated until the DHCP transaction has been concluded at which time the thread for this transaction will end.