SAVI J. Bi, J. Wu
Internet Draft CERNET
Intended status: Standard Tracks G. Yao
Expires: October 2010 Tsinghua Univ.
F. Baker
Cisco
April 16, 2010
SAVI Solution for DHCP
draft-ietf-savi-dhcp-02.txt
Status of this Memo
This Internet-Draft is submitted to IETF in full conformance with the
provisions of BCP 78 and BCP 79. This document may not be modified,
and derivative works of it may not be created, except to publish it
as an RFC and to translate it into languages other than English.
This document may contain material from IETF Documents or IETF
Contributions published or made publicly available before November 10,
2008. The person(s) controlling the copyright in some of this
material may not have granted the IETF Trust the right to allow
modifications of such material outside the IETF Standards Process.
Without obtaining an adequate license from the person(s) controlling
the copyright in such materials, this document may not be modified
outside the IETF Standards Process, and derivative works of it may
not be created outside the IETF Standards Process, except to format
it for publication as an RFC or to translate it into languages other
than English.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html
Bi Expires October 16, 2010 [Page 1]
Internet-Draft savi-dhcp April 2010
This Internet-Draft will expire on October 16, 2010.
Copyright Notice
Copyright (c) 2010 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Abstract
This document specifies the procedure for creating bindings between a
DHCPv4 [RFC2131]/DHCPv6 [RFC3315] assigned source IP address and a
binding anchor (refer to [SAVI-framework]) on SAVI (Source Address
Validation Improvements) device. The bindings can be used to filter
packets generated on the local link with forged IP addresses.
Table of Contents
Copyright Notice ............................................... 2
Abstract ....................................................... 2
1. Introduction ................................................ 4
2. Conventions used in this document............................ 4
3. Mechanism Overview .......................................... 4
4. Background and Related Protocols............................. 4
5. Terminology ................................................. 5
6. Conceptual Data Structures................................... 5
6.1. Binding State Table (BST)............................... 5
6.2. Filtering Table (FT).................................... 6
7. Binding States Description................................... 6
8. DHCP Scenario ............................................... 7
9. Anchor Attributes ........................................... 7
9.1. SAVI-Validation Attribute............................... 7
9.2. SAVI-DHCP-Trust Attribute............................... 8
9.3. SAVI-SAVI Attribute..................................... 8
9.4. Optional Attributes..................................... 8
10. Prefix Configuration........................................ 8
11. Binding Set Up ............................................. 9
Bi Expires October 16, 2010 [Page 2]
Internet-Draft savi-dhcp April 2010
11.1. Process of Control Packet Snooping..................... 9
11.1.1. Initialization.................................... 9
11.1.1.1. Trigger Event................................ 9
11.1.1.2. Event Validation............................. 9
11.1.1.3. Following Actions............................ 9
11.1.2. From START to LIVE............................... 11
11.1.2.1. Trigger Event............................... 11
11.1.2.2. Event Validation............................ 11
11.1.2.3. Following Actions........................... 11
11.1.3. From LIVE to DETECTION........................... 12
11.1.3.2. Event Validation............................ 12
11.1.3.3. Following Actions........................... 12
11.1.4. From DETECTION to BOUND.......................... 12
11.1.4.1. Trigger Event............................... 12
11.1.4.2. Following Actions........................... 13
11.1.5. Binding Deletion in DETECTION State.............. 13
11.1.5.1. Trigger Event............................... 13
11.1.5.2. Following Actions........................... 13
11.1.6. After BOUND...................................... 13
11.2. State Machine of DHCP Snooping........................ 14
12. Supplemental Binding Process............................... 15
12.1. Rate-limited Data Triggered Binding Process........... 16
12.1.1. SAVI-DataTrigger Attribute....................... 16
12.1.2. Data Triggered Binding Process................... 16
12.2. Counter Triggered Process............................. 17
12.2.1. SAVI-CounterTrigger Attribute.................... 17
12.2.2. Counter Triggered Process........................ 18
12.3. External Control Packet Snooping Process.............. 18
12.3.1. SAVI-ExtSnooping Attribute....................... 18
12.3.2. Extended Control Packet Snooping................. 18
13. Filtering Specification.................................... 19
13.1. Data Packet Filtering................................. 19
13.2. Control Packet Filtering.............................. 20
14. Format and Delivery of Probe Messages...................... 20
14.1. Duplicate detection................................... 20
15. Binding Remove ............................................ 21
16. Handle Anchor Off-link event............................... 21
17. About Collision in Detection............................... 21
17.1. Whether to Notify the DHCP Server..................... 22
17.2. The Result of Detection without Host Aware............ 22
18. Filtering during Detection................................. 22
19. Binding Number Limitation.................................. 22
20. MLD Consideration ......................................... 23
21. State Restoration ......................................... 23
22. Stateless DHCP ............................................ 23
23. Confirm Triggered Binding.................................. 23
24. Handle Layer 2 Path Change................................. 24
Bi Expires October 16, 2010 [Page 3]
Internet-Draft savi-dhcp April 2010
25. Duplicate Bindings on Same Address......................... 24
26. Constants ................................................. 24
27. Security Considerations.................................... 25
28. IANA Considerations........................................ 25
29. References ................................................ 25
29.1. Normative References.................................. 25
29.2. Informative References................................ 25
30. Acknowledgments ........................................... 26
1. Introduction
This document describes the procedure for creating bindings between
DHCP assigned addresses and an anchor (refer to [savi-framework]).
Other related details about this procedure are also specified in this
document.
These bindings can be used to filter packets with forged IP addresses.
How to use these bindings is specified in [savi-framework], depending
on the environment and configuration. The definition and examples of
anchor is also specified in [savi-framework].
The binding process is inspired by the work of IP Source Guard [IP
Source Guard]. This solution differs from IP Source Guard in the
specification for collision detection, which is essential in
environments with multiple address assignment methods. There are also
other differences in details.
2. Conventions used in this document
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 [RFC2119].
3. Mechanism Overview
The mechanism specified in this document is designed to provide a
host level source IP address validation granularity, as a supplement
to BCP38 [BCP38]. This mechanism is deployed on the access device
(including access switch, wireless access point/controller, etc), and
performs mainly DHCP snooping to set up bindings between DHCP
assigned IP addresses and corresponding anchors. The bindings can be
used to validate the source address in the packets.
4. Background and Related Protocols
This mechanism is an instance of a SAVI [savi-framework] solution,
specialized for addresses assigned using the DHCP protocol.
Bi Expires October 16, 2010 [Page 4]
Internet-Draft savi-dhcp April 2010
Dynamic Host Configuration Protocol version 4 [RFC2131] and Dynamic
Host Configuration Protocol version 6 [RFC3315] specify the
procedures for providing a client with assigned address and other
configuration information from a DHCP server. If a client gets an
address through the DHCP protocol, the address should be regarded as
a potential "authorized" or "registered" address of the client.
In IPv6, IPv6 Stateless Autoconfiguration [RFC4862] is used as
another address assignment mechanism. A node can use this mechanism
to auto-configure an IPv6 address. A DHCPv6 client may use a
stateless address to send message to DHCP server. Even in a DHCPv6-
only environment, a node must assign its link-local address through
this mechanism. [RFC4862] clearly requires that duplicated address
detection must be performed on any IPv6 address, including DHCPv6
address.
[RFC4861] specifies the Neighbor Discovery protocol, which is an
essential part of IPv6 address assignment.
[RFC5227] specifies the procedure to detect IPv4 address collision.
It is not required currently. However, this feature is useful to
determine the uniqueness of an IPv4 address on the link. Considering
not all the operating systems support [RFC5227], this solution is
designed to be compatible with operating systems not complying with
[RFC5227].
5. Terminology
Main terms used in this document are described in [savi-framework],
[RFC2131] and [RFC3315].
6. Conceptual Data Structures
This section describes the possible conceptual data structures used
in this mechanism.
Two main data structures are used to record bindings and their states
respectively. There is redundancy between the two structures, for the
consideration of separation of data plane and control plane.
6.1. Binding State Table (BST)
This table contains the state of binding between source address and
anchor. Entries are keyed on the anchor and source IP address. Each
entry has a lifetime field recording the remaining lifetime of the
entry, a state field recording the state of the binding and a field
recording other information.
Bi Expires October 16, 2010 [Page 5]
Internet-Draft savi-dhcp April 2010
+---------+----------+-------+-----------+-------+
| Anchor | Address | State | Lifetime |Other |
+---------+----------+-------+-----------+-------+
| A | IP_1 | Bound | 65535 | |
+---------+----------+-------+-----------+-------+
| A | IP_2 | Bound | 10000 | |
+---------+----------+-------+-----------+-------+
| B | IP_3 |_Start | 1 | |
+---------+----------+-------+-----------+-------+
Figure 1 Instance of BST
6.2. Filtering Table (FT)
This table contains the bindings between anchor and address, keyed on
anchor. This table doesn't contain any state of the binding. This
table is only used to filter packets. An Access Control List can be
regarded as a practical instance of this table.
+---------+----------+
|Anchor |Address |
+---------+----------+
|A |IP_1 |
+---------+----------+
|A |IP_2 |
+---------+----------+
Figure 2 Instance of FT
7. Binding States Description
This section describes the binding states of this mechanism.
START A DHCP request (or a DHCPv6 Confirm, or a DHCPv6
Solicitation with Rapid Commit option) has been received from host,
and it may trigger a new binding.
LIVE A DHCP address has been acknowledged by a DHCP server.
DETECTION A gratuitous ARP or Duplicate Address Detection NSOL
has been sent by the host (or the SAVI device).
BOUND The address has passed duplicate detection and
it is bound with the anchor.
Bi Expires October 16, 2010 [Page 6]
Internet-Draft savi-dhcp April 2010
8. DHCP Scenario
Figure 3 shows the main elements in a DHCP enabled network. At least
one DHCP server MUST be deployed in the network, and DHCP relay MAY
be used to relay message between client and server. Other address
assignment mechanisms may be also used in such network.
+--------+
| DHCP |
| Server |
+-------,+
|
|
|
+----'-----+
| SAVI |
| Device |
+-/------/-+
| |
+----\-+ +\-----+
|DHCP | |Client|
|Relay | | |
+------+ +------+
Figure 3 DHCP Scenario
9. Anchor Attributes
This section specifies the anchor attributes involved in this
mechanism.
Anchor is defined in the [savi-framework]. Attribute of each anchor
is configurable. In default, anchor has no attribute. An anchor MAY
be configured to have one or more compatible attributes. However, an
anchor MAY have no attribute.
If an anchor has no attribute, server type DHCP message from this
anchor MUST be dropped. However, other packets SHOULD NOT be dropped.
9.1. SAVI-Validation Attribute
If and only if source address validation must be performed on the
traffic from an anchor, this anchor MUST be set to have SAVI-
Validation attribute. The filtering process on anchor with such
attribute is described in section 13.
Bi Expires October 16, 2010 [Page 7]
Internet-Draft savi-dhcp April 2010
9.2. SAVI-DHCP-Trust Attribute
If and only if an anchor is associated with a trustable DHCP
server/relay, it SHOULD be set to have this attribute.
If DHCP is used to assign address in the network, there MUST be at
least one anchor with this attribute. DHCP Reply message not coming
from such ports MUST be dropped.
9.3. SAVI-SAVI Attribute
If and only if an anchor is associated with another SAVI device, it
SHOULD be set to have this attribute. All traffic from anchor with
this attribute will be forwarded without check.
This attribute can also be set on other anchors if the administrator
decides not to validate the traffic from the anchor. Note that DHCP
server message and router message will also be trusted.
This attribute is mutually exclusive with SAVI-Validation.
9.4. Optional Attributes
Section 12 describes some optional attributes. At least one of these
attributes MUST be implemented.
10. Prefix Configuration
In DHCP scenario, address advertised by DHCP server should be
believed in. However, in this solution, a node shares the same anchor
as the DHCP server can disguise as the DHCP server and offer the
client incorrect configuration information. Without fully deployment
of SAVI, this problem is difficult to solve. Thus, it is SUGGESTED
that correct address prefix should be configured, and DHCP server
message which assigns address out of the scope should be dropped.
This mechanism can ensure the client can at least get an address with
proper prefix.
The SAVI device enabled this solution SHOULD set allowed prefix
through RA snooping, DHCP-PD protocol, or manual configuration.
There is no need to explicitly present these prefix scopes. But these
restrictions SHOULD be used as premier check in binding set up.
Refer to security consideration for other discussions.
Bi Expires October 16, 2010 [Page 8]
Internet-Draft savi-dhcp April 2010
11. Binding Set Up
This section specifies the procedure of setting up bindings based on
control packet snooping. The binding procedure specified here is
exclusively designed for anchor with SAVI-Validation attribute.
11.1. Process of Control Packet Snooping
11.1.1. Initialization
A binding entry is initialized in this step.
11.1.1.1. Trigger Event
A DHCPv4/v6 Request or a DHCPv6 Confirm or a DHCPv6 Solicitation with
Rapid Commit option is received.
Or a DHCP Reply is received from anchor with SAVI-DHCP-Trust
attribute. Note that vulnerability may be caused by DHCP Reply
triggered initialization. The binding of assigned address and anchor
may be threatened if the binding mechanism between anchor and link
layer address is not secure. If one of the following conditions is
satisfied, the security can be ensured.
1. Option 82 is used to keep anchor in DHCP Request and Reply, or
2. Unspoofable MAC is used as anchor(802.11i,802.1ae/af), or
3. The mapping table from MAC to anchor is secure.
It is SUGGESTED not to initialize a binding based on DHCP Reply,
until the associated mechanism is also implemented.
11.1.1.2. Event Validation
The SAVI device checks current BST as follows:
1. Whether the limitation on binding entry number of this anchor will
be exceeded if a new entry is triggered.
11.1.1.3. Following Actions
If the check fails, the triggering message SHOULD be discarded. This
event MAY be announced on console interface.
If the check is passed:
Bi Expires October 16, 2010 [Page 9]
Internet-Draft savi-dhcp April 2010
If the triggering message is DHCP Request/Confirm/Solicitation with
Rapid Commit Option:
The SAVI device MUST forward the message.
The SAVI device MUST generate an entry for the anchor in the Binding
State Table (BST) and set the state field to START. The lifetime of
this entry MUST set to be MAX_DHCP_RESPONSE_TIME. The Transaction ID
(Refer to Section 2 in [RFC2131] and Section 4.2 in [RFC3315]) field
of the request packet SHOULD be recorded in the entry.
+---------+----------+-------+-----------------------+-------+
| Anchor | Address | State | Lifetime |Other |
+---------+----------+-------+-----------------------+-------+
| A | | START |MAX_DHCP_RESPONSE_TIME | TID |
+---------+----------+-------+-----------------------+-------+
Figure 4 Binding entry in BST on client triggered initialization
The TID is kept as a mediator of assigned address and the anchor of
requesting node, to assure that the assigned address can be bound
with anchor secure.
If the triggering message is DHCP Reply:
The SAVI device MUST deliver the message to the destination.
The SAVI device MUST generate a new entry in BST and FT. The anchor
in entry is looked up based on the destination link layer address,
from mapping table from link layer address to anchor (e.g., the MAC-
Port mapping table in case that port is used as anchor). The state of
the corresponding entry is set to be LIVE. The lifetime of the entry
MUST be set to be MAX_ARP_PREPARE_DELAY or MAX_DAD_PREPARE_DELAY
respectively. The lease time MUST be recorded in the entry.
+---------+----------+-------+------------------------+-------+
| Anchor | Address | State | Lifetime |Other |
+---------+----------+-------+------------------------+-------+
| A | Addr | LIVE |MAX_ARP_PREPARE_DELAY or| Lease |
| | | |MAX_DAD_PREPARE_DELAY | Time |
+---------+----------+-------+------------------------+-------+
Figure 5 Binding entry in BST on Reply triggered initialization
Bi Expires October 16, 2010 [Page 10]
Internet-Draft savi-dhcp April 2010
+---------+----------+
|Anchor |Address |
+---------+----------+
|A |Addr |
+---------+----------+
Figure 6 Binding entry in FT on Reply triggered initialization
11.1.2. From START to LIVE
11.1.2.1. Trigger Event
A DHCPv4 DHCPACK or DHCPv6 REPLY message is received from SAVI-DHCP-
Trust anchor.
11.1.2.2. Event Validation
The SAVI device checks the message and BST as follows:
1. Whether there exists an entry in the BST with corresponding TID in
the START state.
11.1.2.3. Following Actions
If the check fails, the message may be used to trigger binding
initialization, specified in section 11.1.1.
If the check is passed:
The SAVI device MUST deliver the message to the destination.
The state of the corresponding entry is changed to be LIVE. The
lifetime of the entry MUST be set to be MAX_ARP_PREPARE_DELAY or
MAX_DAD_PREPARE_DELAY respectively. The lease time MUST be recorded
in the entry.
+---------+----------+-------+------------------------+-------+
| Anchor | Address | State | Lifetime |Other |
+---------+----------+-------+------------------------+-------+
| A | Addr | LIVE |MAX_ARP_PREPARE_DELAY or| Lease |
| | | |MAX_DAD_PREPARE_DELAY | Time |
+---------+----------+-------+------------------------+-------+
Figure 7 From START to LIVE
A corresponding entry MUST also be generated in FT.
Bi Expires October 16, 2010 [Page 11]
Internet-Draft savi-dhcp April 2010
11.1.3. From LIVE to DETECTION
11.1.3.1. Trigger Event
A gratuitous ARP Request or Duplicate Address Detection Neighbor
Solicitation is received from anchor. Or a timeout event of an entry
with state LIVE happens.
11.1.3.2. Event Validation
The SAVI device checks the message and BST as follows:
1. Whether the Target IP Address field of the ARP Request or Neighbor
Solicitation has been bound with the corresponding anchor in BST
or FT, and the state in BST must be LIVE.
11.1.3.3. Following Actions
If the check fails because of the Target Address is not in BST, the
packet MUST be discarded. If the entry state is not LIVE, the message
MUST be forwarded.
If the check is passed:
If the event is triggered by client, SAVI device MUST set the state
of the corresponding entry to be DETECTION.
+---------+----------+-----------+-----------------+-------+
| Anchor | Address | State | Lifetime |Other |
+---------+----------+-----------+-----------------+-------+
| A | Addr | DETECTION |MAX_ARP_DELAY or | Lease |
| | | |MAX_DAD_DELAY | Time |
+---------+----------+-----------+-----------------+-------+
Figure 8 From LIVE to DETECTION
If the triggering event is timeout event, the SAVI device MUST send
one or more ARP Request or DAD NSOL, with Target Address set to the
recorded address in the entry. The format of detection packet is
specified in section 14. The state MUST be changed to DETECTION. The
lifetime of the entry MUST be set to be MAX_ARP_DELAY or
MAX_DAD_DELAY respectively.
11.1.4. From DETECTION to BOUND
11.1.4.1. Trigger Event
A timeout event of an entry with state DETECTION occurs.
Bi Expires October 16, 2010 [Page 12]
Internet-Draft savi-dhcp April 2010
11.1.4.2. Following Actions
If a timeout event of an entry with state DETECTION occurs, set the
state of the entry to be BOUND. The lifetime of the entry is set to
be the Lease time acknowledged by DHCP server.
+---------+----------+-----------+----------------+-------+
| Anchor | Address | State | Lifetime |Other |
+---------+----------+-----------+----------------+-------+
| A | Addr | BOUND | Lease time | |
+---------+----------+-----------+----------------+-------+
Figure 9 Binding entry in BST on finalization
If an ARP Response or NA for an address in BST with state DETECTION
is received, remove the corresponding entry in BST and FT. The ARP
Response or NA MUST be delivered to the client.
11.1.5. Binding Deletion in DETECTION State
11.1.5.1. Trigger Event
An ARP Response or NA/DAD NS targeting at an address in BST with
state DETECTION is received from a different anchor.
11.1.5.2. Following Actions
If ARP Response or NA is received from anchor with SAVI-Validation
attribute, but the address is not bound with the anchor, the packet
MUST be dropped. If DAD NS is received from anchor with SAVI-
Validation, the message MUST be delivered to the former detecting
node. The binding SHOULD be removed.
If the message is received from anchor with SAVI-Validation attribute,
and the address is bound with anchor, the message MUST be delivered
to the detecting node, and the binding MUST be removed.
If the message is received from anchor without SAVI-Validation
attribute, the message MUST be delivered to the detecting node. The
binding SHOULD be removed.
11.1.6. After BOUND
Once a binding entry is set up for an anchor, the binding will be
used to filter packet with the anchor, as specified in section 13. On
the other hand, DHCP messages with the anchor will affect the binding.
The binding is also affected by DHCP server message toward the anchor.
Bi Expires October 16, 2010 [Page 13]
Internet-Draft savi-dhcp April 2010
Before a DHCP message is found that it may change the corresponding
binding, its validity MUST be checked as described in section 13.2.
Whenever a DHCP Decline is received, delete the corresponding entry
in BST and FT.
Whenever a DHCP Release is received, if the state of the entry is
BOUND, delete the entry in BST and FT.
If a DHCPv4 Acknowledgement or DHCPv6 Reply with Renew/Rebind sign is
received from the server, set lifetime of the entry in BST to be the
new lease time.
If the lifetime of an entry with state BOUND expires, delete the
entry in BST and Filter Table.
Switch port down event (or in a more general expression, anchor turns
off-link) will change the corresponding entry, as described in
section 16.
11.2. State Machine of DHCP Snooping
The main state transits are listed as follows. Note that precondition
of state transit is not included. Triggering message/event must
satisfy the preconditions before changing the state.
State Message/Event Action Next State
- REQ/CFM/SOL+RC Generate entry START
*- ACK/RPL Generate entry with lease LIVE
START ACK/RPL Record lease time LIVE
START Timeout Remove entry -
LIVE Gra ARP REQ/DAD NS - DETECTION
LIVE DECLINE/RELEASE Remove entry -
LIVE Timeout Send probe DETECTION
DETECTION Timeout - BOUND
DETECTION ARP RES/DAD NS/NA Remove entry -
DETECTION DECLINE/RELEASE Remove entry -
Bi Expires October 16, 2010 [Page 14]
Internet-Draft savi-dhcp April 2010
BOUND RELEASE/DECLINE Remove entry -
BOUND Timeout Remove entry -
BOUND RPL with REN/REB Set new lifetime BOUND
*: optional but NOT SUGGESTED.
REQ: DHCP REQUEST
CFM: DHCP CONFIRM
SOL: DHCP SOLICITATION
RC: Rapid Commit option
ACK: DHCP ACKNOWLEDGEMENT
RPL: DHCP REPLY
Probe Gratuitous ARP REQUEST or Duplicate Address Detection Neighbor
Solicitation, described in section 11.1.3 and section 14.
Gra ARP REQ: Gratuitous ARP REQUEST
ARP RES: ARP RESPONSE
DAD NS: Duplicate Address Detection Neighbor Solicitation
DAD NA: Neighbor Advertisement targeting at a tentative address
DECLINE: DHCP DECLINE
RELEASE: DHCP RELEASE
REN: DHCP RENEW
REB: DHCP REBOUND
12. Supplemental Binding Process
Supplemental binding process is designed to cover conditions that
packet is sent by node without previous DHCP procedure sensed by the
SAVI device. A typical situation is that the layer-2 path changes
after the binding has been set up, then the node will send packet to
a different port with the bound port. Another scenario is that a node
moves on the local link without re-configuration process. In DHCP
Bi Expires October 16, 2010 [Page 15]
Internet-Draft savi-dhcp April 2010
scenario, till this document is finished, layer-2 path change and
local link movement are the only two events that must be handled
through this supplemental binding process.
This process is designed to avoid permanent legitimate traffic
blocking. It is not supposed to set up a binding whenever a data
packet with unbound source address is received. Generally, longer
time and more packets are needed to trigger this binding process.
At least one of the following techniques MUST be implemented in SAVI
device which deploys this solution:
1. Rate-limited Data Triggered Binding Process;
2. Counter Triggered Process;
3. Extended Control Packet Snooping Process.
Other techniques may be prudently chosen as alternative if found to
have equivalent or even better function to avoid permanently blocking
after discussion, implementation and deployment.
12.1. Rate-limited Data Triggered Binding Process
12.1.1. SAVI-DataTrigger Attribute
If data trigger binding process is implemented as the supplemental
binding process, an additional anchor attribute, named SAVI-
DataTrigger, MUST be implemented.
This attribute is mutually exclusive with SAVI-SAVI.
Data triggered binding process will be performed on the anchor with
such attribute.
12.1.2. Data Triggered Binding Process
If an anchor is set to have SAVI-DataTrigger attribute, data packet
whose source address is not bound with the anchor, may not be
filtered directly; instead, the SAVI device will check whether the
address can be used by the client on the local link with limited rate:
1. If the address has a local conflict, meaning the DAD on the
address fails, the packet MUST be discarded. If the address is not
being used, go to the next step.
2.
Bi Expires October 16, 2010 [Page 16]
Internet-Draft savi-dhcp April 2010
IPv4 address:
Send a DHCPLEASEQUERY [RFC4388] message querying by IP address to all
DHCPv4 servers for IPv4 address or a configured server address. The
server addresses may be discovered through DHCPv4 Discovery. If no
DHCPLEASEACTIVE message is received, discard the packet; otherwise
generate a new binding entry for the address.
IPv6 address:
Send a LEASEQUERY [RFC5007] message querying by IP address to
All_DHCP_Relay_Agents_and_Servers multicast address or a configured
server address. If no successful LEASEQUERY-REPLY is received,
discard the packet; otherwise generate a new binding entry for the
address. The SAVI device may repeat this process if a LEASEQUERY-
REPLY with OPTION_CLIENT_LINK is received, in order to set up binding
entries for all the address of the client.
The data triggered process MUST be rate limited to avoid Denial of
Services attack against the SAVI device itself. A constant
DATA_TRIGGER_INTERVAL is used to control the frequency. Two data
trigger processes on one anchor must have a minimum interval time
DATA_TRIGGER_INTERVAL. This constant SHOULD be configured prudently
to avoid Denial of Services.
Data triggered process is not strict secure. The node with data-
trigger anchor has the ability to use the address of an inactive node,
which doesn't reply to the DAD probe.
In case that the SAVI device is a pure layer-2 device, DHCP Confirm
MAY be used to replace the DHCP LEASEQUERY. The security degree may
degrade for the address may not be assigned by DHCP server.
Data triggered process may fail if any DHCP server doesn't support
LEASEQUERY.
12.2. Counter Triggered Process
12.2.1. SAVI-CounterTrigger Attribute
If counter triggered binding process is implemented as the
supplemental binding process, an additional anchor attribute, named
SAVI-CounterTrigger, MUST be implemented.
This attribute is mutually exclusive with SAVI-SAVI.
Bi Expires October 16, 2010 [Page 17]
Internet-Draft savi-dhcp April 2010
Counter triggered binding process will be performed on the anchor
with such attribute.
12.2.2. Counter Triggered Process
In this process, a counter is used to record the number of filtered
packets by this solution or all the enabled SAVI solutions on anchor
with SAVI-CounterTrigger attribute. A constant TRIGGER_COUNT is set
with the counter.
Whenever the counter reaches TRIGGER_COUNT, this event MUST be
handled by the SAVI device. The SAVI device performs following steps:
1. Set the counter to 0;
2. If the SAVI device is a layer-3 device, it MUST perform LEASEQUERY
to check whether the source address of the triggering packet can
be bound with the triggering anchor. If it is a layer-2 device,
DHCP Confirm can be used to replace LEASEQUERY. The security
degree may degrade for the address may not be assigned by DHCP
server.
3. This event MUST be announced to network administrator. For example,
a SNMP trap may be triggered; or an alert on console interface may
be generated.
The constant TRIGGER_COUNT MUST be prudently configured to fit the
specified deployment scenario. In extreme situation, it can be set to
1.
12.3. External Control Packet Snooping Process
12.3.1. SAVI-ExtSnooping Attribute
If extended control packet snooping is implemented as the
supplemental binding process, an additional anchor attribute, named
SAVI-ExSnooping, MUST be implemented.
This attribute is mutually exclusive with SAVI-SAVI.
Extended control packet snooping process will be performed on the
anchor with such attribute.
12.3.2. Extended Control Packet Snooping
In this snooping process, other than DHCP initialization messages,
other types of control packets processed by processor of SAVI device,
Bi Expires October 16, 2010 [Page 18]
Internet-Draft savi-dhcp April 2010
if the source address is not bound, may trigger the device to perform
binding process.
The control messages that MUST be processed include: (1) address
resolution Neighbor Solicitation; (2) Neighbor Advertisement; (3)
neighbor unreachability detection; (4) Multicast Listener Discovery;
(5) Address Resolution Protocol; (6) DHCP Renew/Rebind. Other ICMP
messages that may be processed by intermediate device may also
trigger the binding process.
The SAVI device MUST first perform DAD to check if the address has a
local conflict, and then send DHCP LEASEQUERY or Confirm to recover
binding based on DHCP server message.
A minimum time interval EXT_SNOOPING_INTERVAL MUST be set to limit
the rate of such triggering process.
Note that this process may not be able to avoid permanent block, in
case that only data packets are sent by node. Generally, this
mechanism is still practical, because data packet sending without
control plane communication is rare and suspicious in reality. Normal
traffic will contain control plane communication packets to help
traffic setup and fault diagnosis.
13. Filtering Specification
This section specifies how to use bindings to filter packets. Because
the Filtering Table is an allow-table, packet with source address not
in the table will be filtered. Considering DHCP may coexist with
other address assignment methods, e.g., Stateless Auto-configuration,
the specification made here is based on the assumption that other
SAVI solutions will also use BST and FT to keep bindings and filter
packets. Otherwise this solution will conflict with other SAVI
solutions.
Filtering policies are different for data packet and control packet.
DHCP and ND messages that may cause state transit are classified into
control packet. Neighbor Advertisement and ARP Response are also
included in control packet, because the Target Address of NA and ARP
Response should be checked to prevent spoofing. All other packets are
considered to be data packets.
13.1. Data Packet Filtering
Data packets with an anchor which has attribute SAVI-Validation MUST
be checked.
Bi Expires October 16, 2010 [Page 19]
Internet-Draft savi-dhcp April 2010
If the source of a packet associated with its anchor is in the FT,
this packet SHOULD be forwarded; or else the packet SHOULD be
discarded, or alternatively the SAVI SHOULD record this violation.
13.2. Control Packet Filtering
For anchors with SAVI-Validation attribute:
The source address of DHCPv4 Discovery MUST be set to all zeros. The
source address of DHCPv4 Request MUST be set to all zeros or a bound
address in FT.
The source address of DHCPv6 Request MUST be an address associated
with the corresponding anchor in FT. The source address of DHCPv6
Confirm MUST be a link local address associated with the
corresponding anchor in FT. The source address of DHCPv6 Solicit MUST
be a link layer address bound with corresponding anchor. The link
layer address MAY be bound based on SAVI-SLAAC solution or other
solutions.
The source address of other types of DHCP messages MUST be an address
bound with the corresponding anchor.
The source address of IPv6 NS and IPv4 gratuitous ARP MUST pass the
check on FT.
The target address and source address in all the Neighbor
Advertisement packets and ARP replies MUST also pass the checks on FT.
For other anchors:
All DHCP Reply/Ack packets MUST be from anchor with the SAVI-DHCP-
Trust attribute.
14. Format and Delivery of Probe Messages
As described in section 11.1.3, the SAVI device MAY send detection
probes on behavior of client to determine whether the assigned
address is duplicated. Currently no other probes are designed in this
solution.
14.1. Duplicate detection
Message Type: DAD NS, Gratuitous ARP Request
Format:
Bi Expires October 16, 2010 [Page 20]
Internet-Draft savi-dhcp April 2010
Link layer source - link layer address of host;
Link layer destination - For IPv6, use multicast address
specified in [RFC3307]; For IPv4, use broadcast address;
IP source - Unspecified address for IPv6; The tentative
address for IPv4;
IP destination - For IPv6, multicast address specified in
section 5.4.2 of [RFC4861]; For IPv4, the tentative address;
Delivery:
MUST not be delivered to the host which the SAVI device is
performing DAD on behavior of.
15. Binding Remove
If the lifetime of an entry with state BOUND expires, the entry MUST
be removed.
16. Handle Anchor Off-link event
Port DOWN event MUST be handled if switch port is used as anchor. In
more general case, if an anchor turns off-link, this event MUST be
handled.
Whenever an anchor with attribute SAVI-Validation turns down, the
bindings with the anchor MUST be kept for a short time.
To handle movement, if receiving DAD NS/Gra ARP request targeting at
the address during the period, the entry MAY be removed.
If the anchor turns on-link during the period, recover bindings. It
may result in some security problem, e.g., a malicious node
immediately associates with the anchor got off by a previous node,
and then it can use the address assigned to the previous node.
However, this situation is very rare in reality. Authors decide not
to handle this situation.
17. About Collision in Detection
The SAVI device may receive a response in detection. Some related
details are specified here.
Bi Expires October 16, 2010 [Page 21]
Internet-Draft savi-dhcp April 2010
17.1. Whether to Notify the DHCP Server
It is unnecessary for the SAVI device to notify the DHCP server,
because the host will send a DECLINE message to it once it finds the
advertised address is conflict.
17.2. The Result of Detection without Host Aware
In case the SAVI device send detection packet instead of the host,
the host will not be aware of the detection result. If the detection
succeeds, there is no problem. However, if the detection fails, the
packets from the host with the assigned address will be filtered out.
This result can be regarded as a reasonable punishment for not
performing duplicate detection and using a collision address. The
SAVI device MAY choose to notice the client that the assigned address
has been used, through a NA message. This mechanism is not required
in this solution.
18. Filtering during Detection
In this mechanism, whenever the DHCP server replies an address, this
address will be allowed immediately even before duplicate detection
is completed. This design is in consideration of a host may start to
send packets straightway without detection. Also this design is to be
compatible with optimistic DAD [RFC4429].
However, this feature may allow an attacker to send quantities of
packets with source addresses already assigned to other nodes. A
practical solution for this vulnerability is configuring the address
pool and allocation algorithm of the DHCP server carefully.
19. Binding Number Limitation
It is suggested to configure some mechanism in order to prevent a
single node from exhausting the binding table entries on the SAVI
device. Either of the following mechanism is sufficient to prevent
such attack.
1. Set the upper bound of binding number for each anchor with SAVI-
Validation.
2. Reserve a number of binding entries for each anchor with SAVI-
Validation attribute and all anchors share a pool of the other
binding entries.
3. Limit DHCP Request rate per anchor, using the bound entry number
of each anchor as reverse indicator.
Bi Expires October 16, 2010 [Page 22]
Internet-Draft savi-dhcp April 2010
20. MLD Consideration
The SAVI device MUST join the tentative address multicast group
whenever perform duplicate detection on behavior of host.
21. State Restoration
If a SAVI device reboots accidentally or designedly, the states kept
in volatile memory will get lost. This may cause hosts indirectly
attached to the SAVI device to be broken away from the network,
because they can't recover bindings on the SAVI device of themselves.
Thus, binding entries SHOULD be saved into non-volatile storage
whenever a new binding entry changes to BOUND state or a binding with
state BOUND is removed, unless other alternatives specified here is
implemented.
If binding is saved into non-volatile memory, immediately after
reboot, the SAVI device MUST restore binding states from the non-
volatile storage. The lifetime and the system time of save process
MUST be stored. Then the device MUST check whether the saved entries
are obsolete when rebooting.
The possible alternatives are:
If the SAVI device is also the DHCP relay, an alternative mechanism
is fetching the bindings through bulk DHCP LEASEQUERY [RFC5460].
If the network enables 802.1ag, the bindings can be recovered with
the help of the first hop routers through snooping unicast Neighbor
Solicitations sent by routers based on the Neighbor Table.
22. Stateless DHCP
In a stateless DHCP scenario [RFC3736], DHCP is used to configure
other parameters but rather IP address. The address of the client
SHOULD be bound based on other SAVI solutions, but rather this
solution designed for stateful DHCP.
23. Confirm Triggered Binding
If a binding entry is triggered by a CONFIRM message from the client,
no lease time will be contained in the REPLY from DHCP server. The
SAVI device MUST send LEASEQUERY message to get the lease time of the
address to complete the binding entry. If no successful LEASEQUERY-
REPLY is received, the binding entry SHOULD be removed. In this
scenario, the address is not regarded as assigned by DHCP, and it may
be bound through other SAVI solution.
Bi Expires October 16, 2010 [Page 23]
Internet-Draft savi-dhcp April 2010
If the confirmed address has local conflict, the Client-ID field of
Confirm and LEASEQUERY-REPLY MUST be compared. If they are not match,
the new binding entry MUST be deleted.
24. Handle Layer 2 Path Change
Layer 2 path change is an important challenge on this control plane
based solution. The SAVI device MUST be sensitive to any layer 2 path
change. Whenever a layer 2 control protocol frame, including STP,
RSTP, TRILL, is received from some anchor, which announces a layer 2
incoming path is changed to the anchor, data packet trigger process
SHOULD be enabled on the anchor for a period, or alternatively the
device SHOULD forward the packets directly for a period, and set up
bindings from Neighbor Table. Although generally such events can be
handled through pre-configuration of data-trigger attribute, the
future layer 2 protocol may be flexible and hard to handle through
manual configuration.
25. Duplicate Bindings on Same Address
Note that the same address may be bound with multiple anchors, only
if the binding processes are finished on each anchor successfully
respectively.
This mechanism is designed in consideration that a node may move on
the local ink, and a node may have multiple anchors.
Note that the local link movement scenario is not handled perfectly.
The former binding may not be removed, unless the node is directly
attached to the SAVI device. The nodes sharing the same former anchor
of the moving node have the ability to use its address.
26. Constants
MAX_DHCP_RESPONSE_TIME 120s
MAX_ARP_PREPARE_DELAY Default 1s but configurable
MAX_ARP_DELAY Default 1s but configurable
MAX_DAD_PREPARE_DELAY Default 1s but configurable
MAX_DAD_DELAY Default 1s but configurable
DATA_TRIGGER_INTERVAL Device capacity depended and configurable
TRIGGER_COUNT Device capacity depended and configurable
Bi Expires October 16, 2010 [Page 24]
Internet-Draft savi-dhcp April 2010
27. Security Considerations
For prefix level granularity filtering is the basis of host level
granularity filtering, to learn and configure correct prefix is of
great importance to this mechanism. Thus, it's important to keep RA
and DHCP-PD secure. [draft-ietf-v6ops-ra-guard-03] describes a
mechanism to improve the security of RA message.
28. IANA Considerations
There is no IANA consideration currently.
29. References
29.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
29.2. Informative References
[RFC2131] R. Droms, "Dynamic Host Configuration Protocol", RFC2131,
March 1997.
[RFC3307] B. Haberman, "Allocation Guidelines for IPv6 Multicast
Addresses", RFC3307, August 2002.
[RFC3315] R. Droms, Ed. "Dynamic Host Configuration Protocol for IPv6
(DHCPv6)", RFC3315, July 2003.
[RFC4388] R. Woundy and K. Kinnear, "Dynamic Host Configuration
Protocol (DHCP) Leasequery", RFC4388, February 2006.
[RFC4861] T. Narten, E. Nordmark, W. Simpson, and H. Soliman,
"Neighbor Discovery for IP version 6 (IPv6)", RFC4861, September 2007.
[RFC4862] Thomson, S., Narten, T. and Jinmei, T., "IPv6 Stateless
Autoconfiguration", RFC4862, September, 2007.
[RFC5007] J. Brzozowski, K. Kinnear, B. Volz, S. Zeng, "DHCPv6
Leasequery", RFC5007, September 2007.
[RFC5227] S. Cheshire, "IPv4 Address Conflict Detection", RFC5227,
July 2008.
[IP Source Guard] Cisco, "Network Security Technologies and
Solutions", chapter 7, Cisco Press, May 20, 2008.
Bi Expires October 16, 2010 [Page 25]
Internet-Draft savi-dhcp April 2010
30. Acknowledgments
Thanks to Christian Vogt, Eric Levy-Abegnoli, Mark Williams, Erik
Nordmark, Marcelo Bagnulo Braun, Alberto Garcia, Jari Arkko, David
Harrington, Pekka Savola, Xing Li, Lixia Zhang, Robert Raszuk, Greg
Daley, Joel M. Halpern, Mikael Abrahamsson, John Kaippallimalil, Tao
Lin , and Dong Zhang for their valuable contributions.
Bi Expires October 16, 2010 [Page 26]
Internet-Draft savi-dhcp April 2010
Authors' Addresses
Jun Bi
CERNET
Network Research Center, Tsinghua University
Beijing 100084
China
Email: junbi@cernet.edu.cn
Jianping Wu
CERNET
Computer Science, Tsinghua University
Beijing 100084
China
Email: jianping@cernet.edu.cn
Guang Yao
CERNET
Network Research Center, Tsinghua University
Beijing 100084
China
Email: yaog@netarchlab.tsinghua.edu.cn
Fred Baker
Cisco Systems
Email: fred@cisco.com
Bi Expires October 16, 2010 [Page 27]