<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
   <!ENTITY rfc2119 PUBLIC '' 
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'>
   <!ENTITY rfc2131 PUBLIC '' 
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2131.xml'>
   <!ENTITY rfc2132 PUBLIC '' 
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2132.xml'>
   <!ENTITY rfc3118 PUBLIC '' 
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3118.xml'>
   <!ENTITY rfc4030 PUBLIC '' 
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4030.xml'>
   <!ENTITY rfc3046 PUBLIC '' 
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3046.xml'>
   <!ENTITY rfc5010 PUBLIC '' 
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5010.xml'>
   <!ENTITY rfc3315 PUBLIC '' 
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3315.xml'>
]>

<rfc number="5107" category="std">
<?rfc rfcedstyle="yes"?>
<?rfc subcompact="no"?>
<?rfc toc="yes"?>
<?rfc symrefs="no"?>
abbrev="Server ID Override Suboption">


<front>
<title abbrev="Server ID Override Suboption">DHCP Server Identifier Override Suboption
</title>

<author initials="R.A." surname="Johnson" fullname="Richard A. Johnson">
<organization>Cisco Systems, Inc.</organization>
<address>
<postal>
<street>170 W. Tasman Dr.</street>
<city>San Jose</city> <region>CA</region> <code>95134</code>
<country>US</country>
</postal>
<phone>+1 408 526 4000</phone>
<email>raj@cisco.com</email>
</address>
</author>

<author initials="J." surname="Jumarasamy" fullname="Jay Kumarasamy">
<organization>Cisco Systems, Inc.</organization>
<address>
<postal>
<street>170 W. Tasman Dr.</street>
<city>San Jose</city> <region>CA</region> <code>95134</code>
<country>US</country>
</postal>
<phone>+1 408 526 4000</phone>
<email>jayk@cisco.com</email>
</address>
</author>

<author initials="K." surname="Kinnear" fullname="Kim Kinnear">
<organization>Cisco Systems, Inc.</organization>
<address>
<postal>
<street>170 W. Tasman Dr.</street>
<city>San Jose</city> <region>CA</region> <code>95134</code>
<country>US</country>
</postal>
<phone>+1 408 526 4000</phone>
<email>kkinnear@cisco.com</email>
</address>
</author>

<author initials="M." surname="Stapp" fullname="Mark Stapp">
<organization>Cisco Systems, Inc.</organization>
<address>
<postal>
<street>170 W. Tasman Dr.</street>
<city>San Jose</city> <region>CA</region> <code>95134</code>
<country>US</country>
</postal>
<phone>+1 408 526 4000</phone>
<email>mjs@cisco.com</email>
</address>
</author>

<date month="January" year="2008" />
<keyword>RFC</keyword>
<keyword>Request for Comments</keyword>
<keyword>XML</keyword>
<keyword>Extensible Markup Language</keyword>

 <!-- [rfced] Please insert any keywords (beyond those that appear in
    the title) for use on http://www.rfc-editor.org/rfcsearch.html. -->

<!--[rfced] Please note the inconsistencies in the following that
 occur throughout the document: DHCP Server / DHCP server, Relay Agent
 option / relay agent option / relay-agent options, Server Identifier
 Override Suboption / Server-ID-Override suboption, Relay Suboption /
 relay suboption, DHCP Client / DHCP client, DHCP Authentication /
 DHCP authentication / suboption / sub-option,
 DHCP relay agent suboption / Relay Suboption.  Should these be made
 uniform? -->
  
<abstract>
<t>
This memo defines a new suboption of the DHCP relay information
option that allows the DHCP
relay to specify a new value for the Server Identifier option, which is
inserted by the DHCP Server.  This allows the DHCP relay to act as the
actual DHCP server such that RENEW DHCPREQUESTs
will come to the relay instead of going to the server
directly.  This gives the relay the opportunity to include the Relay
Agent option with appropriate suboptions even on DHCP RENEW messages.
</t></abstract>

</front>

<middle>
<section title="Introduction">
<t>
There are many situations where the DHCP relay is involved, and it can easily
insert a relay agent option <xref target="RFC3046" /> with appropriate suboptions into
DHCP DISCOVER messages.  Once the lease has been granted, however,
future DHCP RENEWAL messages are sent directly to the DHCP Server, as
specified in the Server Identifier option.  This means that the relay may not
see the DHCP RENEWAL messages (depending upon network topology) and
thus cannot provide the same relay agent option information
in the RENEWAL messages.
</t>
<t>
This new DHCP relay agent suboption, Server Identifier override, allows the
relay to tell the DHCP server what value to place into the Server Identifier
option <xref target="RFC2132" />.
Using this, the relay agent can force RENEWAL messages to
come to it instead of the server.  The relay 
may then insert the relay agent option with appropriate suboptions and 
relay the DHCPREQUEST to the actual server.  In this fashion, the DHCP
server will be provided with the same relay agent information upon
renewals (such as Circuit-ID, Remote-ID, Device Class, etc.) as was
provided in the initial DISCOVER message.  In effect, this makes a
RENEWAL into a REBINDING.
</t>
<t>
This new suboption could also be used by the DHCP relay in order to
allow the relay to appear as the actual DHCP server to the client.
This has the advantage that the relay can more easily keep up-to-date
information about leases granted, etc.
</t>
<t>
In short, this new suboption allows the DHCPv4 relay to function in
the same fashion as the DHCPv6 relay <xref target="RFC3315" /> currently does.
</t>
</section>

<section title="Conventions">

<t>
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" and "OPTIONAL" in this
document are to be interpreted as described in <xref target="RFC2119" />.
</t>

</section>


<section title="Server Identifier Override Suboption Definition">
<figure anchor="format">
<preamble>The format of the suboption is:</preamble>
<artwork>
Code   Len    Overriding Server Identifier Address
+-----+-----+-----+-----+-----+-----+ 
| 11  |  n  | a1  | a2  | a3  | a4  |
+-----+-----+-----+-----+-----+-----+ 

</artwork>
</figure>

<t>
The option length (n) is 4.  The octets "a1" through "a4" specify the
value that MUST be inserted into the Server Identifier option by the DHCP
Server upon reply.
</t>
<t>
DHCP Servers that implement this Relay Suboption MUST use this value, if present, as the value to insert into the
Server Identifier option whenever responding to a DHCP Client.
</t>
<t>
If a DHCP Server does not understand/implement this Relay Suboption,
it will ignore the Suboption, and thus it will insert it's own
appropriate interface address as the Server Identifier address.  In
this case, the DHCP Relay will not receive RENEW DHCPREQUEST packets
from the client.  When configuring a DHCP Relay to use this Suboption,
the administrator of the Relay should take into account whether or not
the DHCP Server to which the packet will be relayed will correctly
understand this Suboption.
</t>
<t>
When servicing a DHCPREQUEST packet, the DHCP Server would normally look at the Server Identifier option for
verification that the address specified there is one of the addresses
associated with the DHCP Server, silently ignoring the DHCPREQUEST if it
does not match a configured DHCP Server interface address.  If the
DHCPREQUEST packet contains a Server Identifier Override Suboption, however,
comparison should be made between this suboption and the Server Identifier
option.  If both the Server Identifier Override Suboption and the Server Identifier
Option specify the same address, then the Server should accept the
DHCPREQUEST packet for processing, regardless of whether or not the Server Identifier Option
matches a DHCP Server interface.
</t>
<t>
The DHCP Relay should fill in the giaddr field when relaying the
packet, just as it normally would do.
</t>
<t>
In a situation where the DHCP Relay is configured to forward packets
to more than one server, the DHCP Relay SHOULD forward all DHCP
packets to all servers.  This applies to DHCP RENEW packets as well.
The intent is that the DHCP Relay should not need to maintain state
information about the DHCP lease. 
</t>
<t>
DHCP Relays using this suboption SHOULD also implement and use the DHCPv4 Relay Agent Flags Suboption <xref target="RFC5010" /> in order to specify whether the DHCP Relay received the original packet as a broadcast or unicast.  The DHCP Server receiving a packet containing the Server Identifier Override Suboption may use this additional information in processing the packet.
</t>
<t>
Note that if the DHCP Relay becomes inaccessible by the DHCP Client or loses network access to the DHCP Server, further DHCP RENEW packets from the DHCP Client may not be properly processed and the DHCP Client's lease may time out.
</t>

</section>

<section title="Security Considerations">
<t>
Message authentication in DHCP for intradomain use where the out-of-
band exchange of a shared secret is feasible is defined in 
<xref target="RFC3118" />.  Potential exposures to attack are discussed in Section 7 of the
DHCP protocol specification in <xref target="RFC2131" />.
</t>
<t>
The DHCP Relay Agent option depends on a trusted relationship between
the DHCP relay agent and the server, as described in Section 5 of RFC
3046.  While the introduction of fraudulent relay-agent options can
be prevented by a perimeter defense that blocks these options unless
the relay agent is trusted, a deeper defense using the authentication
option for relay agent options <xref target="RFC4030" /> SHOULD be deployed as well.
</t>
<t>
If a rogue DHCP relay were inserted between the client and the server, 
it could redirect clients to it using this suboption.  This would
allow such a system to later deny RENEW DHCPREQUEST and thus force
clients to discontinue use of their allocated address.
It could also allow the rogue relay to change, insert, or delete DHCP options in DHCPACK
messages and extend leases beyond what the server has allowed.

<!--[rfced] In the text immediately above, should the second sentence be 
changed to "RENEW DHCPREQUESTs" and "addresses" ? -->
This
interception, however, would need to be done during the initial
DISCOVER and OFFER phase since the suboption value SHOULD be ignored
by the server during RENEWAL state.  DHCP Authentication
<xref target="RFC3118" /> and/or
DHCP Relay Agent option authentication <xref target="RFC4030" /> would address this case.  (Note that, as is always the case, lack of DHCP Authentication would allow a rogue DHCP relay to change the Server-ID option in the DHCPOFFER and DHCPACK packets without detection.  This threat is not new to the Server-ID-Override suboption.)
</t>
<t>
This document does not add any new vulnerabilities that were not already present, except in the case where
DHCP authentication is already in place, and DHCP clients
require its use.

It is suggested that DHCP Authentication and DHCP Relay Agent Option Authentication SHOULD be deployed when this option is used, or protection should be provided against the insertion of rogue DHCP relays and server.
</t>

<!--[rfced] In the sentence above, should the ending be "insertion of
rogue DHCP relays into servers" or "insertion of rogue DHCP relays
and servers" ? -->

<t>
This relay sub-option is not intended, by itself, to provide any  
additional security benefits.
</t>

</section>

<section title="IANA Considerations">
<t>
IANA has assigned a suboption number (11) for the
Server Identifier Override Suboption from the DHCP Relay Agent
Information Option <xref target="RFC3046" /> suboption number space.
</t>
</section>

<section title="Intellectual Property Rights and Copyright">
<t>
The IETF has been notified of intellectual property rights claimed in
regard to some or all of the specification contained in this document.
For more information consult the online list of claimed rights.
</t>
</section>

</middle>

<back>
<references title="Normative References">
&rfc2119;
&rfc2131;
&rfc3046;
&rfc5010;

</references>
<references title="Informative References">
&rfc2132;
&rfc3118;
&rfc3315;
&rfc4030;

</references>

</back>

</rfc>
