Changes between Version 23 and Version 24 of SharedSubnetsDesign


Ignore:
Timestamp:
Oct 30, 2017, 2:21:59 PM (3 weeks ago)
Author:
marcin
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SharedSubnetsDesign

    v23 v24  
    44== 1. Intro ==
    55
    6 There are some cases when it is useful to group multiple subnets together. The most common example is when IPv4 address pool within a subnet is running out of available addresses. To avoid renumbering in the existing subnet, it is much more convenient to simply configure an additional subnet on the same link. A collection of subnets from which addresses are served to the clients connected to the same link is called a ''shared network''. In this case, the server can allocate an address from any of the subnets within this shared network to the client connected to a given link. If the communication with the server is conducted via a relay agent, the usual solution is to form shared network from the set of subnets selected for messages received from a given relay agent.
     6There are some cases when it is useful to group multiple subnets together. The most common example is when IPv4 address pool within a subnet is running out of available addresses. To avoid renumbering in the existing subnet, it is much more convenient to simply configure an additional subnet on the same link. A collection of subnets from which addresses are served to the clients connected to the same link is called a ''shared network''. In this case, the server can allocate an address from any of the subnets within this shared network to the client connected via the given link. If the communication with the server is conducted via a relay agent, the usual solution is to form shared network from the set of subnets selected for messages received from a given relay agent.
    77
    88The introduction of the shared networks allows for specifying certain parameters on the new scope, i.e. shared networks scope. That includes subnet selectors, option data, client classes and other parameters which are normally specified in the subnet scope. All subnets belonging to the particular shared network inherit those configuration parameters. If necessary, these parameters can be overridden in the subnet scope.
     
    1010== 2. Configuration ==
    1111
    12 In our design discussions we have considered several different ways in which shared networks could be represented within Kea configuration structures. The details of each proposed solution are not provided in this document of brevity. It is only worth to mention that there were two general approaches:
     12In our design discussions we have considered several different ways in which shared networks could be represented within Kea configuration structures. The details of each proposed solution are not provided in this document of brevity. It is only worth to mention that there were two general approaches considered:
    1313- Nest subnets along with their full definitions within new structures, i.e. shared network structures.
    1414- Provide a separate structure holding shared networks with pointers to the subnets defined elsewhere.
     
    153153=== 3.1. Shared Network Class Hierarchy ===
    154154
    155 The following is the class diagram including classes representing individual shared networks and subnets and all the relations between them.
     155The following is a class diagram including classes representing individual shared networks, subnets and all the relations between them.
    156156
    157157[[Image(shared-network-classes.svg)]]
    158158
    159 The ''Network'' is the new object holding common properties for subnets and shared networks. These are the properties that can be specified on the shared network and/or subnet scope. This includes subnet selectors, lease lifetime, renew/rebind timers etc. It also provides a common function generating JSON representation of these properties. The ''Network4'' and ''Network6'' object derive from the ''Network'' and extend it with the parameters specific for IPv4 and IPv6 case respectively.
     159The ''Network'' is the new object holding common properties for subnets and shared networks. These are the properties that can be specified in the shared network and/or subnet scope. This includes subnet selectors, lease lifetime, renew/rebind timers etc. It also provides a common function generating JSON representation of these properties. The ''Network4'' and ''Network6'' object derive from the ''Network'' and extend it with the parameters specific for IPv4 and IPv6 case respectively.
    160160
    161161The ''Subnet4'' and ''Subnet6'' used to derive only from ''Subnet'' class. Now they use multiple inheritance to also derive from the ''Network4'' and ''Network6'' objects. The ''Subnet'' object implements all functions required for handling pools and other parameters which aren't allowed to be specified in the shared network scope. The ''Subnet4'' and ''Subnet6'' extend this functionality with IPv4 and IPv6 specific parameters which aren't defined in the shared network scope. All these child object provide their own implementations of the ''toElement()'' method to provide complete output of their configurations.