<?xml version="1.0"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [

    <!ENTITY rfc1332 PUBLIC '' 
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.1332.xml'>

    <!ENTITY rfc1542 PUBLIC '' 
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.1542.xml'>

    <!ENTITY rfc1661 PUBLIC '' 
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.1661.xml'>

    <!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 rfc2685 PUBLIC '' 
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2685.xml'>

    <!ENTITY rfc3118 PUBLIC '' 
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3118.xml'>

    <!ENTITY rfc2434 PUBLIC '' 
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2434.xml'>

    <!ENTITY rfc3942 PUBLIC '' 
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3942.xml'>

]>

<rfc ipr="full3978" docName="draft-ietf-dhc-vpn-option-07.txt"
abbrev="VSS Option">

<front>
<title>Virtual Subnet Selection Option</title>

<author initials="R.A." surname="Johnson" fullname="Richard A. Johnson">
<organization abbrev="Cisco">Cisco Systems</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="Kumarasamy" fullname="Jay Kumarasamy">
<organization abbrev="Cisco">Cisco Systems</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 abbrev="Cisco">Cisco Systems</organization>
<address>
<postal>
<street>250 Apollo Drive</street>
<city>Chelmsford</city> <region>MA</region> <code>01824</code>
<country>US</country>
</postal>
<phone>+1 978 244 8000</phone>
<email>kkinnar@cisco.com</email>
</address>
</author>


<author initials="M." surname="Stapp"fullname="Mark Stapp">
<organization abbrev="Cisco">Cisco Systems</organization>
<address>
<postal>
<street>250 Apollo Drive</street>
<city>Chelmsford</city> <region>MA</region> <code>01824</code>
<country>US</country>
</postal>
<phone>+1 978 244 8000</phone>
<email>mjs@cisco.com</email>
</address>
</author>

<date month="November" year="2007" />
<area>Internet</area>
<keyword>RFC</keyword>
<keyword>Request for Comments</keyword>
<keyword>I-D</keyword>
<keyword>Internet-Draft</keyword>
<keyword>XML</keyword>
<keyword>Extensible Markup Language</keyword>

<abstract>
<t>This memo defines existing usage for the Virtual Subnet
Selection (VSS) information option.
It is intended for use
primarily by DHCP proxy clients in situations where VSS information
needs to be passed to the DHCP server for proper address allocation to
take place.</t>
<t>
The option number currently in use is 221.
This memo documents the current usage of the option in agreement
with  <xref target="RFC3942"/>, which declares that any pre-existing usages of option
numbers in the range 128 - 223 should be documented and the working
group will try to officially assign those numbers to those options.
</t>
</abstract>

</front>

<middle>
<section title="Introduction">
<t>There is a growing use of Virtual Private Network (VPN) configurations.
The growth comes from many areas; individual client systems needing to 
appear to be on the home corporate network even when traveling, ISPs
providing extranet connectivity for customer companies, etc.  In
some of these cases there is a need for the DHCP server
to know the VPN (hereafter called a "Virtual Subnet Selector" or
"VSS") from which an address, and other resources, 
should be allocated.</t>
<t>If the allocation is being done through a DHCP
relay, then a relay sub-option could be included.  In some cases,
however an IP address is being sought by a DHCP proxy on
behalf of a client (which may be assigned the address via a different
protocol).  In this case, there is a need to include VSS 
information relating to the client as a DHCP option.</t>
<t>A good example might be a dial-in aggregation device where PPP
<xref target="RFC1661" />
addresses
are acquired via DHCP and then given to the remote customer system
via IPCP
<xref target="RFC1332" />.
In a network where such a device is used to aggregate PPP dial-in
from multiple companies, each company may be assigned a unique VSS.</t>

<t>This memo defines a new DHCP <xref target="RFC2131" /> option, the VSS Information option, 
which allows the DHCP client to specify the VSS Information needed in
order to allocate an address.  If the receiving DHCP server understands the
VSS Information option, this information may be used in conjunction
with other information in determining the subnet on which to select 
an address as well as other information such as DNS server, default
router, etc.</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>

<t>
This document also uses the following terms:
</t>

<t>
<list style="hanging">

<t hangText="DHCP Client">
<vspace />
DHCP Client or "Client" is an Internet host using DHCP to
obtain configuration parameters such as a network address.
</t>

<t hangText="DHCP Server">
<vspace />
A DHCP Server or "Server" is an Internet host that returns
configuration parameters to DHCP Clients.
</t>

<t hangText="DHCP relay agent">
<vspace />
A DHCP relay agent is a third-party agent that transfers BOOTP
and DHCP messages between clients and servers residing on
different subnets, per <xref target="RFC951" /> and
<xref target="RFC1542" />.
</t>

<t hangText="downstream">
<vspace />
Downstream is the direction from the access concentrator towards
the subscriber.
</t>


<t hangText="upstream">
<vspace />
Upstream is the direction from the subscriber towards the access
concentrator.
</t>



<t hangText="VSS information">
<vspace />
Information about a VPN necessary to allocate an address to a
DHCP client on that VPN and necessary to forward a DHCP reply
packet to a DHCP client on that VPN.
</t>

<t hangText="VPN">
<vspace />
Virtual private network.  A network which appears to the client
to be a private network.
</t>


<t hangText="VPN Identifier">
<vspace />
The VPN-ID is defined by <xref target="RFC2685" /> to be a sequence of 7 octets.

</t>

</list>
</t>


</section>


<section title="VSS Information Definition">
<t>The VSS Information option is a DHCP option <xref target="RFC2132" />.  The option contains
generalized VSS information in one of two formats: NVT ASCII VPN
identifier, or RFC2685 VPN-ID <xref target="RFC2685" />.</t>

<figure anchor="format">
<preamble>The format of the option is:</preamble>
<artwork>
 Code   Len   Type   VSS Information octets
+-----+-----+------+-----+-----+-----+---
| 221 |  n  |  t   | v1  | v2  | v3  | ...
+-----+-----+------+-----+-----+-----+---

Type:   0       NVT ASCII VPN identifier
        1       RFC2685 VPN-ID
        2-255   Not Allowed
</artwork>
</figure>

<t>The option minimum length (n) is 2.</t>

<t>There are two types of identifiers which can be placed in the VSS Information
Option. The first type of identifier which can be placed in the
VSS Information Option is an NVT ASCII string.  It MUST NOT be terminated
with a zero byte.</t>

<t>The second type of identifier which can be placed in the VSS Information
Option is an RFC2685 VPN-ID <xref target="RFC2685" />, which is typically 7 octets (3 of VPN OUI
followed by 4 of VPN index)
in length (though it can be any length as far as the VSS Information
Option is concerned).</t>

<t>If the type field is set to zero (0), it indicates that all following
bytes of the option contain a NVT ASCII string.  This string MUST NOT
be terminated with a zero byte.</t>

<t>If the type field is set to one (1), it indicates
that all following bytes should be interpreted in agreement with
RFC2685 as a VPN Identifier, typically 7 octets.</t>

<t>
All other values of the type field are invalid as
of this memo and VSS options containing any other value than zero (0)
or one (1) SHOULD be ignored.
</t>

<t>
Since this option is placed in the packet in order to change the VPN
on which an IP address is allocated for a particular DHCP client, one
presumes that an allocation on that VPN is necessary for correct operation.
If this presumption is correct, then a client which places this
option in a packet and doesn't receive it in the returning packet should
drop the packet since the IP address that was allocated will not be in
the correct VPN.  If an IP address that is not on the requested VPN is
not required, then the client is free to accept
the IP address that is not on the VPN that
the was requested.
</t>

<t>
Servers configured to support this option MUST return an identical 
copy of the option to any client that sends it, regardless of whether 
or not the client requests the option in a parameter request list. 
</t>

<t>
This option provides the DHCP server additional information upon which 
to make a determination of address to be assigned.  The DHCP server,
if it is configured to support this option, 
should use this information in addition to other options included in
the DHCPDISCOVER packet in order to assign an IP address for DHCP
client.
</t>

<t>
In the event that a Virtual Subnet Selection option and a Virtual
Subnet Selection sub-option 
<xref target="I-D.ietf-dhc-agent-vpn-id"/>
are both received in a particular DHCP
client packet, the information from the Virtual Subnet Selection
sub-option MUST be used in preference to the information in the
Virtual Subnet Selection option.  This reasoning behind this approach
is that the relay-agent is almost certainly more trusted than the
DHCP client, and therefore information in the relay-agent-information
option that conflicts with information in the packet generated by the
DHCP client is more likely to be correct.
</t>

<t>
Servers that do not understand 
this option will allocate an address using their normal algorithms and 
will not return this option in the DHCPOFFER or DHCPACK. In this case 
the client should consider discarding the DHCPOFFER or DHCPACK, as mentioned above.
Servers that 
understand this option but are administratively configured to ignore 
the option MUST ignore the option, use their normal algorithms to 
allocate an address, and MUST NOT return this option in the DHCPOFFER 
or DHCPACK such that the client will know that the allocated address is not in the VPN requested and will consider this information in deciding whether or not to accept the DHCPOFFER.  In other words, this option MUST NOT appear in a
DHCPOFFER or DHCPACK from a server unless it was used by the server in making or updating the 
address allocation requested.
</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 VSS Information option could be used by a client in order to
obtain an IP address from a VPN other than the one where it should.
Another possible defense would be for the DHCP
relay to insert a Relay option containing a VSS Information Relay
Sub-option, 
which would override the DHCP VSS Information option.
</t>

<t>
This option would allow a client to perform a more complete
address-pool exhaustion attack since the client would no longer be
restricted to attacking address-pools on just its local subnet.
</t>

<t>
Servers that implement the VSS Information option MUST by default 
disable use of the feature; it must specifically be enabled through 
configuration. Moreover, a server SHOULD provide the ability to 
selectively enable use of the feature under restricted conditions, 
e.g., by enabling use of the option only from explicitly configured 
client-ids, enabling its use only by clients on a particular subnet, 
or restricting the VSSs from which addresses may be requested.
</t>

<t>
Implementations should consider
using the DHCP Authentication option <xref target="RFC3118" />
in order to provide a higher
level of security if it is deemed necessary in their environment.
</t>

</section>

<section title="IANA Considerations">
<t>
IANA is requested to assign DHCP option number 221 for this option, in
accordance with <xref target="RFC3942"/>.
</t>
<t>
While the type byte of the Virtual Subnet Selection
option defines a number space that could be
managed by IANA, expansion of this number space is not
anticipated and so creation of a registry of these numbers is
not required by this document.  In the event that additional
values for the type byte are defined in subsequent documents,
IANA should at that time create a registry for these type
bytes.  New values for the type byte may only be defined by
IETF Consensus, as described in <xref target="RFC2434" />.
Basically, this
means that they are defined by RFCs approved by the IESG.
</t>

<t>
Moreover, any changes or additions to the type byte codes MUST be
made concurrently in the type byte codes of the VSS Information Option.
The type bytes and data formats of the VSS Information Option and VSS
Information Relay Sub-option MUST always be identical.
</t>
</section>

<section title="Acknowledgements">
<t>
This document is the result of work done within Cisco Systems.  Thanks 
to Kim Kinnear, Mark Stapp, and Jay Kumarasamy for their work on this
option definition and the other related work for which this is
necessary.</t>

</section>
</middle>

<back>
<references title="Normative References">

<reference anchor="RFC951">
<front>
<title abbrev="BOOTP">Bootstrap Protocol (BOOTP)</title>
	<author initials="B." surname="Croft" fullname="Bill Croft">
<organization>Stanford University</organization>
	</author>
	<author initials="J." surname="Gilmore" fullname="John Gilmore">
<organization>Sun Microsystems</organization>
	</author>
<date year="1985" month="September"/>
</front>
<seriesInfo name="RFC" value="951"/>
<format type="TXT" target="ftp://ftp.isi.edu/in-notes/rfc951.txt"/>
</reference>

&rfc1542;
&rfc2119;
&rfc2131;
&rfc2132;
&rfc2685;
&rfc2434;
&rfc3942;

</references>

<references title="Informative References">

&rfc1332;
&rfc1661;
&rfc3118;
<reference anchor="I-D.ietf-dhc-agent-vpn-id"><front><title>Virtual Subnet Selection Sub-Option for the Relay Agent Information Option  for DHCPv4</title><author initials="K" surname="Kinnear" fullname="Kenneth Kinnear"></author><date month="November" year="2007"/></front><seriesInfo name="Internet-Draft" value="draft-ietf-dhc-agent-vpn-id-05"/><format type="TXT" target="http://www.ietf.org/internet-drafts/draft-ietf-dhc-agent-vpn-id-05.txt"/></reference>

</references>

</back>

</rfc>
