summaryrefslogtreecommitdiffstats
path: root/doc/examples/kea6/shared-network.json
diff options
context:
space:
mode:
Diffstat (limited to 'doc/examples/kea6/shared-network.json')
-rw-r--r--doc/examples/kea6/shared-network.json153
1 files changed, 153 insertions, 0 deletions
diff --git a/doc/examples/kea6/shared-network.json b/doc/examples/kea6/shared-network.json
new file mode 100644
index 0000000..0b3416e
--- /dev/null
+++ b/doc/examples/kea6/shared-network.json
@@ -0,0 +1,153 @@
+// This is an example configuration file for DHCPv6 server in Kea.
+// It demonstrates an advanced feature called shared network. Typically, for
+// each physical link there is one IPv6 subnet that the server is expected
+// to manage. However, in some cases there is a need to configure more subnets
+// in the same physical location. This may sound odd, as IPv6 is not expected
+// to run out of addresses. However, due to vast address space some deployments
+// experiment with various addressing schemes and later find out that the
+// initial proposal was not best and way to migrate to something else.
+{
+ "Dhcp6": {
+ // Kea is told to listen on eth0 interface only.
+ "interfaces-config": {
+ "interfaces": [ "eth0" ]
+ },
+
+ // You also need to tell where to store lease information.
+ // memfile is the backend that is easiest to set up.
+ "lease-database": {
+ "type": "memfile",
+ "lfc-interval": 3600
+ },
+
+ // It is likely that in your network you'll have a mix of regular,
+ // "plain" subnets and shared networks. It is perfectly valid to mix
+ // them in the same config file.
+
+ // This is regular subnet. It's not part of any shared-network.
+ "subnet6": [
+ {
+ "id": 1,
+ "pools": [ { "pool": "2001:db8:2::/80" } ],
+ "subnet": "2001:db8:2::/64",
+ "interface": "eth0"
+ }
+ ],
+
+ // Hhe shared networks definition starts here. shared-networks can
+ // contain a list of shared networks. There are many parameters
+ // that can be specified here, so this example may be overwhelming
+ // at first, but the only mandatory parameter for each shared
+ // network is name. It must be unique. Typically, each shared
+ // network also needs to have at least two subnets to be functional,
+ // but if you really want to, you can define a degraded shared
+ // network that has 1 or even 0 subnets. This may come in handy
+ // when migrating between regular subnets and shared networks
+ // or when debugging a problem. It is not recommended to use
+ // 1 subnet per shared network, as there is extra processing
+ // overhead for shared networks.
+ "shared-networks": [
+ {
+ "interface": "eth1",
+
+ // Similar to regular subnets, it is forbidden to define both
+ // interface and interface-id at the same time. That's because
+ // interface parameter expresses physical network interface
+ // for links available locally and interface-id identifies
+ // values inserted by relays, which are only used for
+ // remote traffic. A shared network cannot be both direct
+ // and relayed.
+ // "interface-id": "content of the option",
+
+ // Other parameters defined here will be inherited by the
+ // subnets.
+ "name": "frog",
+ "option-data": [ ],
+ "preferred-lifetime": 200,
+ "rapid-commit": true,
+ "rebind-timer": 150,
+ "relay": {
+ "ip-address": "2001:db8::1"
+ },
+ "renew-timer": 100,
+
+ // "reservation-mode": "all",
+ // It is replaced by the "reservations-global",
+ // "reservations-in-subnet", and "reservations-out-of-pool"
+ // parameters.
+
+ // Specify whether the server should look up global reservations.
+ "reservations-global": false,
+
+ // Specify whether the server should look up in-subnet reservations.
+ "reservations-in-subnet": true,
+
+ // Specify whether the server can assume that all reserved addresses
+ // are out-of-pool.
+ // Ignored when reservations-in-subnet is false.
+ // If specified, it is inherited by "subnet6" levels.
+ "reservations-out-of-pool": false,
+
+ // List of subnets belonging to this particular shared-network
+ // start here.
+ "subnet6": [
+
+ // This is the first subnet.
+ {
+ "preferred-lifetime": 30,
+ "rapid-commit": false,
+ "rebind-timer": 20,
+ // It is possible to override some values here.
+ "relay": {
+ "ip-address": "2001:db8:1::123"
+ },
+ "renew-timer": 10,
+ // "reservation-mode": "all",
+ // It is replaced by the "reservations-global",
+ // "reservations-in-subnet", and "reservations-out-of-pool"
+ // parameters.
+ // Specify whether the server should look up global reservations.
+ "reservations-global": false,
+ // Specify whether the server should look up in-subnet reservations.
+ "reservations-in-subnet": true,
+ // Specify whether the server can assume that all reserved addresses
+ // are out-of-pool.
+ // Ignored when reservations-in-subnet is false.
+ "reservations-out-of-pool": false,
+ "id": 2,
+ "subnet": "2001:db8:1::/64",
+ "pools": [ { "pool": "2001:db8:1:0:abcd::/80" } ],
+ "valid-lifetime": 40
+ },
+
+ // This is the second subnet.
+ {
+ "preferred-lifetime": 30,
+ "pools": [ { "pool": "3000:db8::/64" } ],
+ "rapid-commit": false,
+ "rebind-timer": 20,
+ "relay": {
+ "ip-address": "3000::1"
+ },
+ "renew-timer": 10,
+ // "reservation-mode": "all",
+ // It is replaced by the "reservations-global",
+ // "reservations-in-subnet", and "reservations-out-of-pool"
+ // parameters.
+ // Specify whether the server should look up global reservations.
+ "reservations-global": false,
+ // Specify whether the server should look up in-subnet reservations.
+ "reservations-in-subnet": true,
+ // Specify whether the server can assume that all reserved addresses
+ // are out-of-pool.
+ // Ignored when reservations-in-subnet is false.
+ "reservations-out-of-pool": false,
+ "id": 3,
+ "subnet": "3000::/16",
+ "valid-lifetime": 40
+ }
+ ],
+ "valid-lifetime": 300
+ } ]
+ }
+}