User Tools

Site Tools


guides:user:subnet_reservations

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
guides:user:subnet_reservations [2019/12/24 09:42] – ↷ Page moved from guides:howto:subnet_reservations to guides:user:subnet_reservations bdorlandtguides:user:subnet_reservations [2024/07/03 12:31] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +===== Subnet address reservations =====
 +
 +A subnet + vlan-id can conditionally be created when the subnet is considered full.
 +
 +The prerequisite is that the subnet can be lifted from an ip-plan. A custom subnet can be used as well, but requires the subnet-name to used throughout the design and may not be changed by an operator.
 +
 +
 +
 +The Service-type commands for this behaviour are:
 +
 +|ADD | SUBNET | srv | NET_NAME_NOTFULL | value | net | find and conditionally add subnet from an IP-plan by name should the existing be 'full'|
 +|LOCATE | SUBNET | srv | NET_NAME_NOTFULL | value | net | find and conditionally add subnet from an IP-plan by name should the existing be 'full'|
 +
 +Both command forms offer the same functionality.
 +
 +
 +
 +Currently the behaviour to create a new subnet instead of just locating an existing one is effected when any of the following conditions is met:
 +
 +- No subnet of the required name can be found in the 'srv'
 +
 +- The Subnet Full flag is set (and optionally locked) by the operator
 +
 +- The number of ports assigned to the subnet without topology is equal to or exceeds the subnet size (in host addresses)
 +
 +
 +
 +This mechanism works fine for fine-grained ip-plans where plenty of small subnets for user or server services are available and vlan management is (largely) automated.
 +
 +
 +
 +However, it does not allow for situations where many devices can potentially share a subnet but where the port-assignment to this subnet are made later on, or where the number of ports may increase over the life-span of a device as is the case with stacks.
 +
 +
 +
 +To deal with these designs, the current subnet-full mechanism must be extended to include address-reservations for a subnet. Reservations in the sense of the number of host-addresses 'in-use' for a subnet.
 +
 +
 +
 +In this case the 'add a new subnet' conditions would become:
 +
 +- No subnet of the required name can be found in the 'srv'
 +
 +- The Subnet Full flag is set (and optionally locked by the operator)
 +
 +- The number of ports assigned to the subnet (without topology) is equal to or exceeds the subnet size
 +
 +- The number of address-reservations of the subnet is equal to or exceeds the subnet size
 +
 +
 +
 +To realise this extension, the Ip_subnets table would require the numeric field 'Ip_subnet.add_reservations' with the default value of '0'.
 +
 +The manipulation of these reservations world be done (strictly?) using Service-types or Service-tasks when new nodes or (stack) chassis are added to removed. 
 +
 +
 +
 +Three new service-type commands are required to offer the means to manipulate the addr_reservation count:
 +
 +|ASSIGN | SUBNET | net | ADDR_RESERVATION | value | | set the subnet's address reservation count to value |
 +|ASSIGN | SUBNET | net | ADDR_RESERVATION_INC | value | | increase the subnet's address reservation count with value |
 +|ASSIGN | SUBNET | net | ADDR_RESERVATION_DEC | value | | decrease the subnet's address reservation count with value |
 +
 +
 +
 +
 +A secondary problem arises when increasing the Net_reservations after a subnet was added/located. This could cause the reservation to exceed the subnet size. The optional resolution could be to perform the conditional add/locate subnet AGAIN, but this suffers from the problem that the new subnet that might have been create the second time still has its Net_reservation set to zero, not the desired reservation set between the add/locate subnets.
 +
 +To resolve this situation and avoid the double add/locate subnet calls, a modification can be made to the Service-type to expand to TWO value fields, say Type_option. This Type_option field allows modifiers to be passed to the service-type-call. The best implementation is to have the option field become a text field using attribute / value pairs. In that case the solution is self-expanding for future cases and variables. Especially for the PROMPT-class service type calls would this be useful.
 +
 +The changes to the environment are significant: Service_type table, Service_type_syntax table, various service_type calls and more significantly, the front-end subform wizard.
 +
 +For the case at hand, the call for the ADD | SUBNET | NET_NAME_NOTFULL would receive the Type_option value of RESERVATION_ADD=48. The service type routine would use the reservation add value to see if the 
 +
 +|ADD | SUBNET | srv | NET_NAME_NOTFULL | netname-value | Reservation_add=value | net-alias |
 +
 +find and conditionally add subnet from an IP-plan by name should the existing be 'full' AFTER the resadd-value
 +
 +|LOCATE | SUBNET | srv | NET_NAME_NOTFULL | netname-value | Reservation_add=value | net-alias |
 +
 +find and conditionally add subnet from an IP-plan by name should the existing be 'full' AFTER adding the resadd-value
  

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki