The following tags have been assigned:
The following projects are related:
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.
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.
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.