idnits 2.17.1 draft-ietf-dhc-topo-conf-06.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (October 19, 2015) is 3112 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- ** Obsolete normative reference: RFC 3315 (Obsoleted by RFC 8415) -- Obsolete informational reference (is this intentional?): RFC 7159 (Obsoleted by RFC 8259) Summary: 1 error (**), 0 flaws (~~), 1 warning (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group T. Lemon 3 Internet-Draft Nominum, Inc. 4 Intended status: Informational T. Mrugalski 5 Expires: April 21, 2016 ISC 6 October 19, 2015 8 Customizing DHCP Configuration on the Basis of Network Topology 9 draft-ietf-dhc-topo-conf-06 11 Abstract 13 DHCP servers have evolved over the years to provide significant 14 functionality beyond that which is described in the DHCP base 15 specifications. One aspect of this functionality is support for 16 context-specific configuration information. This memo describes some 17 such features and makes recommendations as to how they can be used. 19 Status of This Memo 21 This Internet-Draft is submitted in full conformance with the 22 provisions of BCP 78 and BCP 79. 24 Internet-Drafts are working documents of the Internet Engineering 25 Task Force (IETF). Note that other groups may also distribute 26 working documents as Internet-Drafts. The list of current Internet- 27 Drafts is at http://datatracker.ietf.org/drafts/current/. 29 Internet-Drafts are draft documents valid for a maximum of six months 30 and may be updated, replaced, or obsoleted by other documents at any 31 time. It is inappropriate to use Internet-Drafts as reference 32 material or to cite them other than as "work in progress." 34 This Internet-Draft will expire on April 21, 2016. 36 Copyright Notice 38 Copyright (c) 2015 IETF Trust and the persons identified as the 39 document authors. All rights reserved. 41 This document is subject to BCP 78 and the IETF Trust's Legal 42 Provisions Relating to IETF Documents 43 (http://trustee.ietf.org/license-info) in effect on the date of 44 publication of this document. Please review these documents 45 carefully, as they describe your rights and restrictions with respect 46 to this document. Code Components extracted from this document must 47 include Simplified BSD License text as described in Section 4.e of 48 the Trust Legal Provisions and are provided without warranty as 49 described in the Simplified BSD License. 51 Table of Contents 53 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 54 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 55 3. Identifying Client's Location by DHCP Servers . . . . . . . . 3 56 3.1. DHCPv4 Specific Behavior . . . . . . . . . . . . . . . . 7 57 3.2. DHCPv6 Specific Behavior . . . . . . . . . . . . . . . . 7 58 4. Simple Subnetted Network . . . . . . . . . . . . . . . . . . 9 59 5. Relay Agent Running on a Host . . . . . . . . . . . . . . . . 11 60 6. Cascaded Relays . . . . . . . . . . . . . . . . . . . . . . . 11 61 7. Regional Configuration Example . . . . . . . . . . . . . . . 12 62 8. Multiple subnets on the same link . . . . . . . . . . . . . . 14 63 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 15 64 10. Security Considerations . . . . . . . . . . . . . . . . . . . 15 65 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 66 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 67 12.1. Normative References . . . . . . . . . . . . . . . . . . 16 68 12.2. Informative References . . . . . . . . . . . . . . . . . 16 69 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 17 71 1. Introduction 73 The DHCPv4 [RFC2131] and DHCPv6 [RFC3315] protocol specifications 74 describe how addresses can be allocated to clients based on network 75 topology information provided by the DHCP relay infrastructure. 76 Address allocation decisions are integral to the allocation of 77 addresses and prefixes in DHCP. 79 The DHCP protocol also describes mechanisms for provisioning devices 80 with additional configuration information; for example, DNS [RFC1034] 81 server addresses, default DNS search domains, and similar 82 information. 84 Although it was the intent of the authors of these specifications 85 that DHCP servers would provision devices with configuration 86 information appropriate to each device's location on the network, 87 this practice was never documented, much less described in detail. 89 Existing DHCP server implementations do in fact provide such 90 capabilities; the goal of this document is to describe those 91 capabilities for the benefit both of operators and of protocol 92 designers who may wish to use DHCP as a means for configuring their 93 own services, but may not be aware of the capabilities provided by 94 most modern DHCP servers. 96 2. Terminology 98 o CPE device: Customer Premise Equipment device. Typically a router 99 belonging to the customer that connects directly to the provider 100 link. 102 o DHCP, DHCPv4, and DHCPv6. DHCP refers to the Dynamic Host 103 Configuration Protocol in general and applies to both DHCPv4 and 104 DHCPv6. The terms DHCPv4 and DHCPv6 are used in contexts where it 105 is necessary to avoid ambiguity and explain differences. 107 o PE router: Provider Edge router. The provider router closest to 108 the customer. 110 o Routable IP address: an IP address with a scope of use wider than 111 the local link. 113 o Shared subnet: a case where two or more subnets of the same 114 protocol family are available on the same link. 'Shared subnet' 115 terminology is typically used in Unix environments. It is 116 typically called 'multinet' in Windows environment. The 117 administrative configuration inside a Microsoft DHCP server is 118 called 'DHCP Superscope'. 120 3. Identifying Client's Location by DHCP Servers 122 Figure 1 illustrates a small hierarchy of network links with Link D 123 serving as a backbone to which the DHCP server is attached. 125 Figure 2 illustrates a more complex case. Although some of its 126 aspects are unlikely to be seen in actual production networks, they 127 are beneficial for explaining finer aspects of the DHCP protocols. 128 Note that some nodes act as routers (which forward all IP traffic) 129 and some are relay agents (i.e. run DHCP specific software that 130 forwards only DHCP traffic). 132 Link A Link B 133 |===+===========| |===========+======| 134 | | 135 | | 136 +---+---+ +---+---+ 137 | relay | | relay | 138 | A | | B | 139 +---+---+ +---+---+ 140 | | 141 | Link C | 142 |===+==========+=================+======| 143 | 144 | 145 +----+---+ +--------+ 146 | router | | DHCP | 147 | A | | Server | 148 +----+---+ +----+---+ 149 | | 150 | | 151 | Link D | 152 |==============+=================+======| 153 | 154 | 155 +----+---+ 156 | router | 157 | B | 158 +----+---+ 159 | 160 | 161 |===+==========+=================+======| 162 | Link E | 163 | | 164 +---+---+ +---+---+ 165 | relay | | relay | 166 | C | | D | 167 +---+---+ +---+---+ 168 | | 169 | | 170 |===+===========| |===========+======| 171 Link F Link G 173 Figure 1: A simple network with a small hierarchy of links 174 Link A Link B Link H 175 |===+==========| |=========+======| |======+======| 176 | | | 177 | | | 178 +---+---+ +---+---+ +---+---+ 179 | relay | | relay | | relay | 180 | A | | B | | G | 181 +---+---+ +---+---+ +---+---+ 182 | | | 183 | Link C | | Link J 184 |===+==========+==============+======| |======+======| 185 | | 186 | | 187 +----+---+ +--------+ +---+---+ 188 | router | | DHCP | | relay | 189 | A | | Server | | F | 190 +----+---+ +----+---+ +---+---+ 191 | | | 192 | | | 193 | Link D | | 194 |==============+=========+=======+=============+======| 195 | | 196 | | 197 +----+---+ +---+---+ 198 | router | | relay | 199 | B | | E | 200 +----+---+ +---+---+ 201 | | 202 | | 203 |===+==========+=========+=======+======| 204 | Link E | 205 | | 206 +---+---+ +---+---+ 207 | relay | | relay | 208 | C | | D | 209 +---+---+ +---+---+ 210 | | 211 | | 212 |===+===========| |===========+======| 213 Link F Link G 215 Figure 2: Complex network 217 Those diagrams allow us to represent a variety of different network 218 configurations and illustrate how existing DHCP servers can provide 219 configuration information customized to the particular location from 220 which a client is making its request. 222 It is important to understand the background of how DHCP works when 223 considering those diagrams. It is assumed that the DHCP clients may 224 not have routable IP addresses when they are attempting to obtain 225 configuration information. 227 The reason for making this assumption is that one of the functions of 228 DHCP is to bootstrap the DHCP client's IP address configuration; if 229 the client does not yet have an IP address configured, it cannot 230 route packets to an off-link DHCP server, therefore some kind of 231 relay mechanism is required. 233 The details of how packet delivery between clients and servers works 234 are different between DHCPv4 and DHCPv6, but the essence is the same: 235 whether or not the client actually has an IP configuration, it 236 generally communicates with the DHCP server by sending its requests 237 to a DHCP relay agent on the local link; this relay agent, which has 238 a routable IP address, then forwards the DHCP requests to the DHCP 239 server (directly or via other relays). In later stages of the 240 configuration when the client has acquired an address and certain 241 conditions are met, it is possible for the client to send packets 242 directly to the server, thus bypassing the relays. The conditions 243 for such behavior are different for DHCPv4 and DHCPv6 and are 244 discussed in sections Section 3.1 and Section 3.2. 246 To determine the client's point of attachment and link specific 247 configuration, the server typically uses the client facing IP address 248 of the relay agent. In some cases the server may use the routable IP 249 address of the client, if the client has the routable IP address 250 assigned to its interface and it is transmitted in the DHCP message. 251 The server is then able to determine the client's point of attachment 252 and select appropriate subnet- or link-specific configuration. 254 Sometimes it is useful for the relay agents to provide additional 255 information about the topology. A number of extensions have been 256 defined for this purpose. The specifics are different, but the core 257 principle remains the same: the relay agent knows exactly where the 258 original request came from, so it provides an identifier that will 259 help the server to choose appropriate address pool and configuration 260 parameters. Examples of such options are mentioned in the following 261 sections. 263 Finally, clients may be connected to the same link as the server, so 264 no relay agents are required. In such cases, the DHCPv4 server 265 typically uses the IPv4 address assigned to the network interface 266 over which the transmission was received to select an appropriate 267 subnet. This is more complicated for DHCPv6, as the DHCPv6 server is 268 not required to have any globally unique addresses. In such cases, 269 additional configuration information may need to be required. Some 270 servers allow indicating that a given subnet is directly reachable 271 over a specific local network interface. 273 3.1. DHCPv4 Specific Behavior 275 In some cases in DHCPv4, when a DHCPv4 client has a routable IPv4 276 address, the message is unicast to the DHCPv4 server rather than 277 going through a relay agent. Examples of such transmissions are 278 renewal (DHCPREQUEST) and address release (DHCPRELEASE). 280 The relay agent that receives client's message sets giaddr field to 281 the address of the network interface the message was received on. 282 The relay agent may insert a relay agent option [RFC3046]. 284 There are several options defined that are useful for subnet 285 selection in DHCPv4. [RFC3527] defines the Link Selection sub-option 286 that is inserted by a relay agent. This option is particularly 287 useful when the relay agent needs to specify the subnet/link on which 288 a DHCPv4 client resides, which is different from an IP address that 289 can be used to communicate with the relay agent. The Virtual Subnet 290 Selection sub-option, specified in [RFC6607], can also be added by a 291 relay agent to specify information in a VPN environment. In certain 292 cases, it is useful for the client itself to specify the Virtual 293 Subnet Selection option, e.g. when there are no relay agents involved 294 during the VPN set up process. 296 Another option that may influence the subnet selection is the IPv4 297 Subnet Selection Option, defined in [RFC3011], which allows the 298 client to explicitly request allocation from a given subnet. 300 3.2. DHCPv6 Specific Behavior 302 In DHCPv6 unicast communication is possible in case where the server 303 is configured with a Server Unicast option (see Section 22.12 in 304 [RFC3315]) and clients are able to take advantage of it. In such 305 cases, once a client is assigned a, presumably global, address, it is 306 able to contact the server directly, bypassing any relays. It should 307 be noted that such a mode is completely controllable by 308 administrators in DHCPv6. (They may simply choose to not configure 309 server unicast option, thus forcing clients to send their messages 310 always via relay agents in every case). 312 In the DHCPv6 protocol, there are two core mechanisms defined in 313 [RFC3315] that allow a server to distinguish which link the relay 314 agent is connected to. The first mechanism is the link-address field 315 in the Relay-forward and Relay-reply messages. Somewhat contrary to 316 its name, relay agents insert in the link-address field an address 317 that is typically global and can be used to uniquely identify the 318 link on which the client is located. In normal circumstances this is 319 the solution that is easiest to maintain, as existing address 320 assignments can be used and no additional administrative actions 321 (like assigning dedicated identifiers for each relay agent, making 322 sure they are unique and maintaining a list of such identifiers) are 323 needed. It requires, however, for the relay agent to have an address 324 with a scope larger than link-local configured on its client-facing 325 interface. 327 The second mechanism uses Interface-Id option (see Section 22.18 of 328 [RFC3315]) inserted by the relay agent, which identifies the link 329 that the client is connected to. This mechanism may be used for 330 example, when the relay agent does not have a globally unique address 331 or ULA [RFC4193] configured on the client-facing interface) on the 332 client facing interface, thus making the first mechanism not 333 feasible. If the interface-id is unique within an administrative 334 domain, the interface-id value may be used to select the appropriate 335 subnet. As there is no guarantee for the uniqueness ([RFC3315] only 336 mandates the interface-id to be unique within a single relay agent 337 context), it is up to the administrator to check whether the relay 338 agents deployed use unique interface-id values. If the interface-id 339 values are not unique, the Interface-id option can not be used to 340 determine the client's point of attachment. 342 It should be noted that Relay-forward and Relay-reply messages are 343 exchanged between relays and servers only. Clients are never exposed 344 to those messages. Also, servers never receive Relay-reply messages. 345 Relay agents must be able to process both Relay-forward (sending 346 already relayed message further towards the server, when there is 347 more than one relay agent in a chain) and Relay-reply (when sending 348 back the response towards the client, when there is more than one 349 relay agent in a chain). 351 For completeness, we also mention an uncommon, but valid case, where 352 relay agents use a link-local address in the link-address field in 353 relayed Relay-forward messages. This may happen if the relay agent 354 doesn't have any address with a larger scope on the interface 355 connected to that specific link. Even though link-local addresses 356 cannot be automatically used to associate relay agent with a given 357 link, with additional configuration information the server may still 358 able to select the proper link. That requires the DHCP server 359 software to be able to specify relay agent link-address associated 360 with each link or a feature similar to 'shared subnets' (see 361 Section 8). Both may or may not be supported by the server software. 362 Network administrator has to manually configure additional 363 information that a given subnet uses a relay agent with link-address 364 X. Alternatively, if the relay agent uses link address X and relays 365 messages from a subnet A, an administrator can configure that subnet 366 A is a shared subnet with a very small X/128 subnet. That is not a 367 recommended configuration, but in cases where it is impossible for 368 relay agents to get an address from the subnet they are relaying 369 from, it may be a viable solution. 371 DHCPv6 also has support for more finely grained link identification, 372 using Lightweight DHCPv6 Relay Agents [RFC6221] (LDRA). In this 373 case, the link-address field is set to Unspecified_address (::), but 374 the DHCPv6 server also receives an Interface-Id option from the relay 375 agent that can be used to more precisely identify the client's 376 location on the network. 378 What this means in practice is that the DHCP server in all cases has 379 sufficient information to pinpoint, at the very least, the layer 3 380 link to which the client is connected, and in some cases which layer 381 2 link the client is connected to, when the layer 3 link is 382 aggregated out of multiple layer 2 links. 384 In all cases, then, the DHCPv6 server will have a link-identifying IP 385 address, and in some cases it may also have a link-specific 386 identifier (e.g. Interface-Id Option or Link Address Option defined 387 in Section 5 of [RFC6977]). It should be noted that there the link- 388 specific identifier is unique only within the scope of the link- 389 identifying IP address. For example, link-specific identifier of 390 "eth0" for a relay agent with IPv4 address 2001:db8::1 means 391 something different than "eth0" for a relay agent with address 392 2001:db8::2. 394 It is also possible for link-specific identifiers to be nested, so 395 that the actual identifier that identifies the link is an aggregate 396 of two or more link-specific identifiers sent by a set of LDRAs in a 397 chain; in general this functions exactly as if a single identifier 398 were received from a single LDRA, so we do not treat it specially in 399 the discussion below, but sites that use chained LDRA configurations 400 will need to be aware of this when configuring their DHCPv6 servers. 402 The Virtual Subnet Selection Options, present in DHCPv4, are also 403 defined for DHCPv6. The use case is the same as in DHCPv4: the relay 404 agent inserts VSS options that can help the server to select the 405 appropriate subnet with its address pool and associated configuration 406 options. See [RFC6607] for details. 408 4. Simple Subnetted Network 410 Consider Figure 1 in the context of a simple subnetted network. In 411 this network, there are four leaf subnets: links A, B, F and G, on 412 which DHCP clients will be configured. Relays A, B, C and D in this 413 example are represented in the diagram as IP routers with an embedded 414 relay function, because this is a very typical configuration, but the 415 relay function can also be provided in a separate node on each link. 417 In a simple network like this, there may be no need for link-specific 418 configuration in DHCPv6, since local routing information is delivered 419 through router advertisements. However, in IPv4, it is very typical 420 to configure the default route using DHCP; in this case, the default 421 route will be different on each link. In order to accomplish this, 422 the DHCP server will need link-specific configuration for the default 423 route. 425 To illustrate, we will use an example from a hypothetical DHCP server 426 that uses a simple JSON notation [RFC7159] for configuration. 427 Although we know of no DHCP server that uses this specific syntax, 428 most modern DHCP server provides similar functionality. 430 { 431 "prefixes": { 432 "192.0.2.0/26": { 433 "options": { 434 "routers": ["192.0.2.1"] 435 }, 436 "on-link": ["A"] 437 }, 438 "192.0.2.64/26": { 439 "options": { 440 "routers": ["192.0.2.65"] 441 }, 442 "on-link": ["B"] 443 }, 444 "192.0.2.128/26": { 445 "options": { 446 "routers": ["192.0.2.129"] 447 }, 448 "on-link": ["F"] 449 }, 450 "192.0.2.192/26": { 451 "options": { 452 "routers": ["192.0.2.193"] 453 }, 454 "on-link": ["G"] 455 } 456 } 457 } 459 Figure 3: Configuration Example 461 In Figure 3, we see a configuration example for this scenario: a set 462 of prefixes, each of which has a set of options and a list of links 463 for which it is on-link. We have defined one option for each prefix: 464 a routers option. This option contains a list of values; each list 465 only has one value, and that value is the IP address of the router 466 specific to the prefix. 468 When the DHCP server receives a request, it searches the list of 469 prefixes for one that encloses the link-identifying IP address 470 provided by the client or relay agent. The DHCP server then examines 471 the options list associated with that prefix and returns those 472 options to the client. 474 So for example a client connected to link A in the example would have 475 a link-identifying IP address within the 192.0.2.0/26 prefix, so the 476 DHCP server would match it to that prefix. Based on the 477 configuration, the DHCP server would then return a routers option 478 containing a single IP address: 192.0.2.1. A client on link F would 479 have a link-identifying address in the 192.0.2.128/26 prefix, and 480 would receive a routers option containing the IP address 192.0.2.129. 482 5. Relay Agent Running on a Host 484 A relay agent is DHCP software that may be run on any IP node. 485 Although it is typically run on a router, this is by no means 486 required by the DHCP protocol. The relay agent is simply a service 487 that operates on a link, receiving link-local multicasts (IPv6) or 488 broadcasts (IPv4) and relaying them, using IP routing, to a DHCP 489 server. As long as the relay has an IP address on the link, and a 490 default route or more specific route through which it can reach a 491 DHCP server, it need not be a router, or even have multiple 492 interfaces. 494 A relay agent can be run on a host connected to two links. That case 495 is presented in Figure 2. There is router B that is connected to 496 links D and E. At the same time there is also a host that is 497 connected to the same links. The relay agent software is running on 498 that host. That is uncommon, but a valid configuration. 500 6. Cascaded Relays 502 Let's observe another case, shown in Figure 2. Note that in this 503 configuration, the clients connected to link G will send their 504 requests to relay D which will forward its packets directly to the 505 DHCP server. That is typical, but not the only possible 506 configuration. It is possible to configure relay agent D to forward 507 client messages to relay E which in turn will send it to the DHCP 508 server. This configuration is sometimes referred to as cascade relay 509 agents. 511 Note that the relaying mechanism works differently in DHCPv4 and in 512 DHCPv6. In DHCPv4 only the first relay is able to set the giaddr 513 field in the DHCPv4 packet. Any following relays that receive that 514 packet will not change it as the server needs giaddr information from 515 the first relay (i.e. the closest to the client). The server will 516 send the response back to the giaddr address, which is the address of 517 the first relay agent that saw the client's message. That means that 518 the client messages travel on a different path than the server's 519 responses. A message from client connected to link G will travel via 520 relay D, relay E and to the server. A response message will be sent 521 from the server to relay D via router B, and relay D will send it to 522 the client on link G. 524 Relaying in DHCPv6 is more structured. Each relay agent encapsulates 525 a packet that is destined to the server and sends it towards the 526 server. Depending on the configuration, that can be a server's 527 unicast address, a multicast address or next relay agent address. 528 The next relay repeats the encapsulation process. Although the 529 resulting packet is more complex (may have up to 32 levels of 530 encapsulation if the packet traveled through 32 relays), every relay 531 may insert its own options and it is clear which relay agent inserted 532 which option. 534 7. Regional Configuration Example 536 In the Figure 2 example, link C is a regional backbone for an ISP. 537 Link E is also a regional backbone for that ISP. Relays A, B, C and 538 D are PE routers, and Links A, B, F and G are actually link 539 aggregators with individual layer 2 circuits to each customer--for 540 example, the relays might be DSLAMs or cable head-end systems. At 541 each customer site we assume there is a single CPE device attached to 542 the link. 544 We further assume that links A, B, F and G are each addressed by a 545 single prefix, although it would be equally valid for each CPE device 546 to be numbered on a separate prefix. 548 In a real-world deployment, there would likely be many more than two 549 PE routers connected to each regional backbone; we have kept the 550 number small for simplicity. 552 In the example presented in Figure 4, the goal is to configure all 553 the devices within a region with server addresses local to that 554 region, so that service traffic does not have to be routed between 555 regions unnecessarily. 557 { 558 "prefixes": { 559 "2001:db8::/40": { 560 "on-link": ["A"] 561 }, 562 "2001:db8:100::/40": { 563 "on-link": ["B"] 564 }, 565 "2001:db8:200::/40": { 566 "on-link": ["F"] 567 }, 568 "2001:db8:300::/40": { 569 "on-link": ["G"] 570 } 571 }, 572 "links": { 573 "A": {"region": "omashu"}, 574 "B": {"region": "omashu"}, 575 "F": {"region": "gaoling"}, 576 "G": {"region": "gaoling"} 577 }, 578 "regions": { 579 "omashu": { 580 "options": { 581 "sip-servers": ["sip.omashu.example.org"], 582 "dns-servers": ["dns1.omashu.example.org", 583 "dns2.omashu.example.org"] 584 } 585 }, 586 "gaoling": { 587 "options": { 588 "sip-servers": ["sip.gaoling.example.org"], 589 "dns-servers": ["dns1.gaoling.example.org", 590 "dns2.gaoling.example.org"] 591 } 592 } 593 } 594 } 596 Figure 4: Regional Configuration Example 598 In this example, when a request comes in to the DHCP server with a 599 link-identifying IP address in the 2001:DB8::/40 prefix, it is 600 identified as being on link A. The DHCPv6 server then looks on the 601 list of links to see what region the client is in. Link A is 602 identified as being in omashu. The DHCPv6 server then looks up 603 omashu in the set of regions, and discovers a list of region-specific 604 options. 606 The DHCP server then resolves the domain names listed in the options 607 and sends a sip-server option containing the IP addresses that the 608 resolver returned for sip.omashu.example.org, and a dns-server option 609 containing the IP addresses returned by the resolver for 610 dns1.omashu.example.org and dns2.omashu.example.org. Depending on 611 the server capability and configuration, it may cache resolved 612 responses for specific period of time, repeat queries every time or 613 even keep the response until reconfiguration or shutdown. For more 614 detailed discussion see Section 7 of [RFC7227]. 616 Similarly, if the DHCP server receives a request from a DHCP client 617 where the link-identifying IP address is contained by the prefix 618 2001:DB8:300::/40, then the DHCP server identifies the client as 619 being connected to link G. The DHCP server then identifies link G as 620 being in the gaoling region, and returns the sip-servers and dns- 621 servers options specific to that region. 623 As with the previous example, the exact configuration syntax and 624 structure shown above does not precisely match what existing DHCP 625 servers do, but the behavior illustrated in this example can be 626 accomplished with most existing modern DHCP servers. 628 8. Multiple subnets on the same link 630 There are scenarios where there is more than one subnet from the same 631 protocol family (i.e. two or more IPv4 subnets or two or more IPv6 632 subnets) configured on the same link. Such a configuration is often 633 referred to as 'shared subnets' in Unix environments or 'multinet' in 634 Microsoft terminology. 636 The most frequently mentioned use case is a network renumbering where 637 some services are migrated to the new addressing scheme, but some 638 aren't yet. 640 Second example is expanding the allocation space. In DHCPv4 and for 641 DHCPv6 Prefix Delegation, there could be cases where multiple subnets 642 are needed, because a single subnet may be too small to accommodate 643 the client population. 645 The third use case covers allocating addresses (or delegation 646 prefixes) that are not the same as topological information. For 647 example, the link-address is on prefix X and the addresses to be 648 delegated is on prefix Y. This could be based on differentiating 649 information (i.e., whether device is CPE or CM in DOCSIS) or just 650 because the link-address/giaddr is different from the actual 651 allocation space. 653 The fourth use case is a cable network, where cable modems and the 654 devices connected behind them are connected to the same layer 2 link. 655 However, operators want the cable modems and user devices to get 656 addresses from distinct address spaces, so users couldn't easily 657 access their modems management interfaces. 659 To support such a configuration, additional differentiating 660 information is required. Many DHCP server implementations offer a 661 feature that is typically called client classification. The server 662 segregates incoming packets into one or more classes based on certain 663 packet characteristics, e.g. presence or value of certain options or 664 even a match between existing options. Servers require additional 665 information to handle such configuration, as they cannot use the 666 topographical property of the relay addresses alone to properly 667 choose a subnet. Exact details of such operation is not part of the 668 DHCPv4 or DHCPv6 protocols and is implementation dependent. 670 9. Acknowledgments 672 Thanks to Dave Thaler for suggesting that even though "everybody 673 knows" how DHCP servers are deployed in the real world, it might be 674 worthwhile to have an IETF document that explains what everybody 675 knows, because in reality not everybody is an expert in how DHCP 676 servers are administered. Thanks to Andre Kostur, Carsten Strotmann, 677 Simon Perreault, Jinmei Tatuya, Suresh Krishnan, Qi Sun, Jean- 678 Francois Tremblay, Marcin Siodelski and Bernie Volz for their 679 reviews, comments and feedback. 681 10. Security Considerations 683 This document explains existing practice with respect to the use of 684 Dynamic Host Configuration Protocol [RFC2131] and Dynamic Host 685 Configuration Protocol Version 6 [RFC3315]. The security 686 considerations for these protocols are described in their 687 specifications and in related documents that extend these protocols. 688 This document introduces no new functionality, and hence no new 689 security considerations. 691 11. IANA Considerations 693 The IANA is hereby absolved of any requirement to take any action in 694 relation to this document. 696 12. References 697 12.1. Normative References 699 [RFC2131] Droms, R., "Dynamic Host Configuration Protocol", 700 RFC 2131, DOI 10.17487/RFC2131, March 1997, 701 . 703 [RFC3315] Droms, R., Ed., Bound, J., Volz, B., Lemon, T., Perkins, 704 C., and M. Carney, "Dynamic Host Configuration Protocol 705 for IPv6 (DHCPv6)", RFC 3315, DOI 10.17487/RFC3315, July 706 2003, . 708 12.2. Informative References 710 [RFC1034] Mockapetris, P., "Domain names - concepts and facilities", 711 STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987, 712 . 714 [RFC3011] Waters, G., "The IPv4 Subnet Selection Option for DHCP", 715 RFC 3011, DOI 10.17487/RFC3011, November 2000, 716 . 718 [RFC3046] Patrick, M., "DHCP Relay Agent Information Option", 719 RFC 3046, DOI 10.17487/RFC3046, January 2001, 720 . 722 [RFC3527] Kinnear, K., Stapp, M., Johnson, R., and J. Kumarasamy, 723 "Link Selection sub-option for the Relay Agent Information 724 Option for DHCPv4", RFC 3527, DOI 10.17487/RFC3527, April 725 2003, . 727 [RFC4193] Hinden, R. and B. Haberman, "Unique Local IPv6 Unicast 728 Addresses", RFC 4193, DOI 10.17487/RFC4193, October 2005, 729 . 731 [RFC6221] Miles, D., Ed., Ooghe, S., Dec, W., Krishnan, S., and A. 732 Kavanagh, "Lightweight DHCPv6 Relay Agent", RFC 6221, 733 DOI 10.17487/RFC6221, May 2011, 734 . 736 [RFC6607] Kinnear, K., Johnson, R., and M. Stapp, "Virtual Subnet 737 Selection Options for DHCPv4 and DHCPv6", RFC 6607, 738 DOI 10.17487/RFC6607, April 2012, 739 . 741 [RFC6977] Boucadair, M. and X. Pougnard, "Triggering DHCPv6 742 Reconfiguration from Relay Agents", RFC 6977, 743 DOI 10.17487/RFC6977, July 2013, 744 . 746 [RFC7159] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data 747 Interchange Format", RFC 7159, DOI 10.17487/RFC7159, March 748 2014, . 750 [RFC7227] Hankins, D., Mrugalski, T., Siodelski, M., Jiang, S., and 751 S. Krishnan, "Guidelines for Creating New DHCPv6 Options", 752 BCP 187, RFC 7227, DOI 10.17487/RFC7227, May 2014, 753 . 755 Authors' Addresses 757 Ted Lemon 758 Nominum, Inc. 759 2000 Seaport Blvd 760 Redwood City, CA 94063 761 USA 763 Phone: +1-650-381-6000 764 Email: Ted.Lemon@nominum.com 766 Tomek Mrugalski 767 Internet Systems Consortium, Inc. 768 950 Charter Street 769 Redwood City, CA 94063 770 USA 772 Phone: +1 650 423 1345 773 Email: tomasz.mrugalski@gmail.com