IP Address Management System
Rev 4/12/16
The college needs an IP Address Management System to track the subnets assigned to each site and what equipment is using the IP addresses in those subnets.  This document is a starting point on the road to a functional specification outlining features we desire and examples of how we envision the workflow of the system.  It is not, nor is it intended to be, a technical specification or an exhaustive list of every use case. 

Requirements
The system should have access controls able to limit a user’s ability to modify site, subnet or equipment records.  It should be possible to limit users to read-only access, or modify access to some but not all of the record types in the system.
 
The system will need to track additional details about equipment other than IP address.  These details will depend on the category of equipment.  For example we would want to track Name, MAC, and Physical Location for all equipment.  For computers/servers we would want also want to track OS.  For printers we would want to track Print Server, Queue Name, Queue Comment, Model, and Driver.

The system should be able to display a listing of all subnets in CIDR notation format, along with their name, site, VLAN, etc.  It should be possible to sort the listing by any information field.  It should be possible to click on a subnet listing to view more details about it, or to display information about reserved and free IP addresses.

The system should be able to display a listing of all sites and their associated subnets in CIDR notation format, along with their name, site, VLAN, etc.  It should be possible to sort the listing by any information field.  It should be possible to click on a site or subnet listing to view more details about it, or to display information about reserved and free IP addresses.

When adding a new subnet, the system should verify that the addresses in the new subnet do not conflict with addresses already in another subnet.  When creating a new subnet, it should automatically create a Default Gateway reservation for the first usable address in the subnet. 

It should be possible to resize a subnet by changing the mask bits.  If a subnet being resized contains equipment with a reserved IP that would become unusable after the resizing, the system should reject the change and notify the user what equipment would be impacted by the proposed edit.

For any subnet the system should be able to display all reserved IPs, all free IPs or all IPs in the subnet.  Listings containing reserved IP listings should include information such as name, MAC, location, switch, port, MAB status, equipment type, etc.  It should be possible to sort the listing by any information field. It should be possible to click on an entry in these listings to either edit an existing entry or begin a new one.

It should be possible to search across all equipment fields in all subnets.

The system should be able to verify that all equipment IP reservations have a matching subnet.  In the event of orphaned equipment, a prominent warning with a link to an orphaned equipment list should appear on all screens in the system until the condition is resolved.

Usage Scenarios:
Adding a new site
Ray wants to add our new Moon site to the system.  He logs in to the IPAM system and selects the View Sites option to reviews a list of our current sites.  He selects Add New Site and is presented with a form to enter the site information.  He enters the name (Moon Campus), abbreviation (BLM), street address, (Crater Atwood, The Moon) into the form and leaves the notes field blank.  

As Ray types, the form checks the site name and abbreviation fields to make sure he is not entering something that is already in use.   If he does, it highlights the field and lets him know he will need to use something else.  The Save Site button is disabled until all problem fields have been fixed and all required fields have valid information.

Once Ray clicks on the Save Site button, he is taken to a read-only view of the site he just entered.  He has the option to return to the edit form or go to the site list. 

Adding a new subnet
Shannon wants to add a subnet to the Moon site.  He logs in to the IPAM system and selects the View Sites option to review a list of our current sites and their associated subnets.  He selects a site and selects the Add New Subnet option and is presented with a form to enter the subnet information.  

He selects “Moon Campus” from a list of sites on the form, which causes “Moon Campus” to appear in the name field.  Shannon adds “Classrooms” on to the end of that, then changes his mind and decides that “Moon Classrooms” looks better in the name field.  He then enters the IP address for the subnet (10.35.100.0), the mask bits (23), VLAN number (320) and lease time (604800 seconds).

As Shannon types, the form checks the subnet name and IP space to make sure he is not entering something that is already in use.   If he does, it highlights the field, and in the case of overlapping IP space, lets him know where that IP space is already assigned.  The Save Subnet button is disabled until all problem fields have been fixed and all required fields have valid information.

Once Shannon clicks on the Save Subnet button, the system generates a Default Gateway equipment reservation in the new subnet at the first usable address unless that would create a conflict with an orphaned equipment record.  Shannon is taken to a read-only view of the subnet he just entered and, if needed, a notification of the orphan equipment record that prevented the Default Gateway reservation.  He now has the option to return to the edit form or go back to the site list. 

Edit a subnet
Ray needs to change the detail of a subnet.  He logs in to the IPAM system and selects the View Subnets option to review a list of our current subnets and sorts them by site and VLAN number.  He selects the Moon Office subnet and is given a read-only view of all of the subnet details.  After confirming this is the subnet he wants to edit, he clicks the Edit Subnet button and is presented with a form to edit all of the subnet details. 

As Ray makes changes, the form checks the subnet name and IP space for problems.  The name should still be unique and the change to the IP space should not overlap with other subnets.   It should also check to see if any changes he is making to the subnet will cause problems with IP addresses assigned to equipment.  The proposed edit may orphan a piece of equipment (cause its assigned IP to not exist in any subnet in IPAM) or create a conflict (cause its assigned IP to be the network number or broadcast address of the subnet).

Any fields with problems should be highlighted and an explanation given.  In the case of overlapping IP space the form should display where that IP space is already assigned.  In the event of an orphan or conflict condition it should display information about the problem equipment.

A duplicate subnet name, IP overlap or IP conflict should cause the Save Subnet button to be disabled, an orphan condition should not.   Once all problem fields have been fixed and all required fields have valid information, the Save Subnet button should be enabled.  Once Ray clicks on it, he is taken to a read-only view of the subnet he just edited.  He has the option to return to the edit form or go to the subnet list. 

Add equipment
Shannon wants to add an equipment reservation in the Moon Classroom subnet.  He logs in to the IPAM system and selects the View Sites option to review a list of our current sites and their associated subnets.  He selects the Moon Classroom subnet and calls up a list of free and reserved IP addresses.  He clicks on a free IP address and is taken to a form where he can enter information about the equipment.  He first selects the type of equipment, which causes the appropriate fields to appear.

The IP address is automatically populated with the IP he selected on the previous form. He enters the name, hostname, MAC address, location, and MAB status for the equipment.  As Shannon types, the form checks to make sure all required fields have been completed and that the MAC address is unique before enabling the Save Equipment button.  If it is not, it warns him and provides information about the other reservations that share that MAC address.   The Save Equipment button stays disabled until all required fields are populated and the MAC address is unique for that subnet.  A MAC that is in use in another subnet is allowable, but the system should still provide details on the duplicate equipment entry.

Once Shannon clicks Save Equipment, he is taken to a read-only view of the equipment he just edited.  He has the option to return to the edit form or go to the subnet list. 

Add equipment, printer special case
Printers are a special case of equipment.  In the previous example, once Shannon selected Printer as the equipment type and entered a location the form should have populated the Printer Name and Share Name fields with “[Campus Abbreviation]-[Room Number]-“ and allow him to change the text.  Similarly, once the Model field is entered, it should populate the Share Comment field with “[Campus Abbreviation]-[Room Number] [Model]” and allow him to change the text.

Data We Need To Track

Site Fields
•	Site Name – required
o	No duplicates
•	Site Abbreviation – required
o	No duplicates
•	Street Address - required
•	Site Contacts
•	Notes

Subnet Fields
•	Subnet Name – required
o	No duplicates
•	Site - required
o	Should be selectable, not freeform text
•	Subnet IP Address – required
o	Not unique by itself, but requires special checking to ensure no overlapping with other subnets
•	Subnet Mask Bits – required
o	Valid values are 1 through 30 inclusive
•	VLAN Number
o	Not unique, several subnets can be in the same VLAN
•	Lease Time
o	Expressed in seconds
•	Notes

Common Equipment Fields
•	Name - required
•	Hostname
•	Site – required
o	Should auto populate based on the site the equipment is located in
•	Room Number - required
•	Model – required for Printers
•	Serial Number
•	MAC Address – required unless Equipment Type is “Placeholder”
o	12 hexadecimal digits
o	Fields should accept multiple separators and cases
•	xxxx.xxxx.xxxx
•	xx:xx:xx: xx:xx:xx
•	XXXX.XXXX.XXXX
•	XX:XX:XX:XX:XX:XX
o	No duplicates allowed within a single subnet
•	Reserved IP – required
o	No duplicates allowed with other equipment
•	MAB  account – required
o	Yes/No
•	Switch
o	Should be selectable, not free form text
•	Port
•	Equipment Type – required
o	Valid types are
•	Printer
•	Computer
•	Default Gateway (allow only one per subnet)
•	HVAC
•	Door Controller
•	Placeholder
•	Notes

Printer Equipment Additional Fields
•	Print Server - required
•	Driver - required
•	Printer Name – required
o	Should auto populate with “[Campus Abbreviation]-[Room Number]-“ and allow user override to change or add additional characters
•	Share Name – required
o	Should auto populate with “[Campus Abbreviation]-[Room Number]-“ and allow user override to change or add additional characters
•	Share Comment – required
o	Should auto populate with “[Campus Abbreviation]-[Room Number] [Model]”, but allow user override

Computer Equipment Additional Fields
•	Operating System
•	VM or Physical?

Default Gateway Additional Fields

HVAC Equipment Additional Fields

Door Controller Additional Fields

Placeholder Additional Fields