summaryrefslogtreecommitdiffstats
path: root/doc/examples/kea6/shared-network.json
blob: 5666e014a537db76c3c78fd6e0df7d8ddd991cdf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
// 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": [
            {
                "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 if server should lookup global reservations.
            "reservations-global": false,

            // Specify if server should lookup in-subnet reservations.
            "reservations-in-subnet": true,

            // Specify if 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 if server should lookup global reservations.
                    "reservations-global": false,
                    // Specify if server should lookup in-subnet reservations.
                    "reservations-in-subnet": true,
                    // Specify if server can assume that all reserved addresses
                    // are out-of-pool.
                    // Ignored when reservations-in-subnet is false.
                    "reservations-out-of-pool": false,
                    "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 if server should lookup global reservations.
                    "reservations-global": false,
                    // Specify if server should lookup in-subnet reservations.
                    "reservations-in-subnet": true,
                    // Specify if server can assume that all reserved addresses
                    // are out-of-pool.
                    // Ignored when reservations-in-subnet is false.
                    "reservations-out-of-pool": false,
                    "subnet": "3000::/16",
                    "valid-lifetime": 40
                }
            ],
            "valid-lifetime": 300
        } ]
    }
}