1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669
|
<pre>Internet Engineering Task Force (IETF) I. Gashinsky
Request for Comments: 6583 Yahoo!
Category: Informational J. Jaeggli
ISSN: 2070-1721 Zynga
W. Kumari
Google, Inc.
March 2012
<span class="h1">Operational Neighbor Discovery Problems</span>
Abstract
In IPv4, subnets are generally small, made just large enough to cover
the actual number of machines on the subnet. In contrast, the
default IPv6 subnet size is a /64, a number so large it covers
trillions of addresses, the overwhelming number of which will be
unassigned. Consequently, simplistic implementations of Neighbor
Discovery (ND) can be vulnerable to deliberate or accidental denial
of service (DoS), whereby they attempt to perform address resolution
for large numbers of unassigned addresses. Such denial-of-service
attacks can be launched intentionally (by an attacker) or result from
legitimate operational tools or accident conditions. As a result of
these vulnerabilities, new devices may not be able to "join" a
network, it may be impossible to establish new IPv6 flows, and
existing IPv6 transported flows may be interrupted.
This document describes the potential for DoS in detail and suggests
possible implementation improvements as well as operational
mitigation techniques that can, in some cases, be used to protect
against or at least alleviate the impact of such attacks.
Status of This Memo
This document is not an Internet Standards Track specification; it is
published for informational purposes.
This document is a product of the Internet Engineering Task Force
(IETF). It represents the consensus of the IETF community. It has
received public review and has been approved for publication by the
Internet Engineering Steering Group (IESG). Not all documents
approved by the IESG are a candidate for any level of Internet
Standard; see <a href="./rfc5741#section-2">Section 2 of RFC 5741</a>.
Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
<a href="http://www.rfc-editor.org/info/rfc6583">http://www.rfc-editor.org/info/rfc6583</a>.
<span class="grey">Gashinsky, et al. Informational [Page 1]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-2" ></span>
<span class="grey"><a href="./rfc6583">RFC 6583</a> Operational ND Problems March 2012</span>
Copyright Notice
Copyright (c) 2012 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to <a href="https://www.rfc-editor.org/bcp/bcp78">BCP 78</a> and the IETF Trust's Legal
Provisions Relating to IETF Documents
(<a href="http://trustee.ietf.org/license-info">http://trustee.ietf.org/license-info</a>) 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.
Table of Contents
<a href="#section-1">1</a>. Introduction ....................................................<a href="#page-3">3</a>
<a href="#section-1.1">1.1</a>. Applicability ..............................................<a href="#page-3">3</a>
<a href="#section-2">2</a>. The Problem .....................................................<a href="#page-3">3</a>
<a href="#section-3">3</a>. Terminology .....................................................<a href="#page-4">4</a>
<a href="#section-4">4</a>. Background ......................................................<a href="#page-5">5</a>
<a href="#section-5">5</a>. Neighbor Discovery Overview .....................................<a href="#page-6">6</a>
<a href="#section-6">6</a>. Operational Mitigation Options ..................................<a href="#page-7">7</a>
<a href="#section-6.1">6.1</a>. Filtering of Unused Address Space ..........................<a href="#page-7">7</a>
<a href="#section-6.2">6.2</a>. Minimal Subnet Sizing ......................................<a href="#page-7">7</a>
<a href="#section-6.3">6.3</a>. Routing Mitigation .........................................<a href="#page-8">8</a>
<a href="#section-6.4">6.4</a>. Tuning of the NDP Queue Rate Limit .........................<a href="#page-8">8</a>
<a href="#section-7">7</a>. Recommendations for Implementors ................................<a href="#page-8">8</a>
<a href="#section-7.1">7.1</a>. Prioritize NDP Activities ..................................<a href="#page-9">9</a>
<a href="#section-7.2">7.2</a>. Queue Tuning ..............................................<a href="#page-10">10</a>
<a href="#section-8">8</a>. Security Considerations ........................................<a href="#page-11">11</a>
<a href="#section-9">9</a>. Acknowledgements ...............................................<a href="#page-11">11</a>
<a href="#section-10">10</a>. References ....................................................<a href="#page-11">11</a>
<a href="#section-10.1">10.1</a>. Normative References .....................................<a href="#page-11">11</a>
<a href="#section-10.2">10.2</a>. Informative References ...................................<a href="#page-11">11</a>
<span class="grey">Gashinsky, et al. Informational [Page 2]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-3" ></span>
<span class="grey"><a href="./rfc6583">RFC 6583</a> Operational ND Problems March 2012</span>
<span class="h2"><a class="selflink" id="section-1" href="#section-1">1</a>. Introduction</span>
This document describes implementation issues with IPv6's Neighbor
Discovery protocol that can result in vulnerabilities when a network
is scanned, either by an intruder or through the use of scanning
tools that perform network inventory, security audits, etc. (e.g.,
"nmap").
This document describes the problem in detail, suggests possible
implementation improvements, as well as operational mitigation
techniques, that can, in some cases, protect against such attacks.
The RFCs generally describe the behavior of protocols, that is,
"what" is to be done by a protocol, but not exactly "how" it is to be
implemented. The exact details of how best to implement a protocol
will depend on the overall hardware and software architecture of a
particular device. The actual "how" decisions are (correctly) left
in the hands of implementors, so long as implementation differences
will generally produce proper on-the-wire behavior.
While reading this document, it is important to keep in mind that
discussions of how things have been implemented beyond basic
compliance with the specification is not within the scope of the
Neighbor Discovery RFCs.
<span class="h3"><a class="selflink" id="section-1.1" href="#section-1.1">1.1</a>. Applicability</span>
This document is primarily intended for operators of IPV6 networks
and implementors of [<a href="./rfc4861" title=""Neighbor Discovery for IP version 6 (IPv6)"">RFC4861</a>]. The document provides some
operational considerations as well as recommendations to increase the
resilience of the Neighbor Discovery protocol.
<span class="h2"><a class="selflink" id="section-2" href="#section-2">2</a>. The Problem</span>
In IPv4, subnets are generally small, made just large enough to cover
the actual number of machines on the subnet. For example, an IPv4
/20 contains only 4096 address. In contrast, the default IPv6 subnet
size is a /64, a number so large it covers literally billions of
billions of addresses, the overwhelming majority of which will be
unassigned. Consequently, simplistic implementations of Neighbor
Discovery may fail to perform as desired when they perform address
resolution of large numbers of unassigned addresses. Such failures
can be triggered either intentionally by an attacker launching a
denial-of-service attack (DoS) [<a href="./rfc4732" title=""Internet Denial-of- Service Considerations"">RFC4732</a>] to exploit this
vulnerability or unintentionally due to the use of legitimate
operational tools that scan networks for inventory and other
<span class="grey">Gashinsky, et al. Informational [Page 3]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-4" ></span>
<span class="grey"><a href="./rfc6583">RFC 6583</a> Operational ND Problems March 2012</span>
purposes. As a result of these failures, new devices may not be able
to "join" a network, it may be impossible to establish new IPv6
flows, and existing IPv6 transport flows may be interrupted.
Network scans attempt to find and probe devices on a network.
Typically, scans are performed on a range of target addresses, or all
the addresses on a particular subnet. When such probes are directed
via a router, and the target addresses are on a directly attached
network, the router will attempt to perform address resolution on a
large number of destinations (i.e., some fraction of the 2^64
addresses on the subnet). The router's process of testing for the
(non)existence of neighbors can induce a denial-of-service condition,
where the number of necessary Neighbor Discovery requests overwhelms
the implementation's capacity to process them, exhausts available
memory and replaces existing in-use mappings with incomplete entries
that will never be completed. A directed DoS attack may seek to
intentionally create similar conditions to those created
unintentionally by a network scan. The resulting network disruption
may impact existing traffic, and devices that join the network may
find that address resolution attempts fail. The DoS as a consequence
of network scanning was previously described in [<a href="./rfc5157" title=""IPv6 Implications for Network Scanning"">RFC5157</a>].
In order to mitigate risk associated with this DoS threat, some
router implementations have taken steps to rate-limit the processing
rate of Neighbor Solicitations (NS). While these mitigations do
help, they do not fully address the issue and may introduce their own
set of issues to the Neighbor Discovery process.
<span class="h2"><a class="selflink" id="section-3" href="#section-3">3</a>. Terminology</span>
Address Resolution: Address resolution is the process through which
a node determines the link-layer address of a neighbor given only
its IP address. In IPv6, address resolution is performed as part
of Neighbor Discovery <a href="./rfc4861#section-7.2">[RFC4861], Section 7.2</a>.
Forwarding Plane: The part of a router responsible for forwarding
packets. In higher-end routers, the forwarding plane is typically
implemented in specialized hardware optimized for performance.
Steps in the forwarding process include determining the correct
outgoing interface for a packet, decrementing its Time To Live
(TTL), verifying and updating the checksum, placing the correct
link-layer header on the packet, and forwarding it.
Control Plane: The part of the router implementation that maintains
the data structures that determine where packets should be
forwarded. The control plane is typically implemented as a
"slower" software process running on a general purpose processor
and is responsible for such functions as communicating network
<span class="grey">Gashinsky, et al. Informational [Page 4]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-5" ></span>
<span class="grey"><a href="./rfc6583">RFC 6583</a> Operational ND Problems March 2012</span>
status changes via routing protocols, maintaining the forwarding
table, performing management, and resolving the correct link-layer
address for adjacent neighbors. The control plane "controls" the
forwarding plane by programming it with the information needed for
packet forwarding.
Neighbor Cache: As described in [<a href="./rfc4861" title=""Neighbor Discovery for IP version 6 (IPv6)"">RFC4861</a>], the data structure that
holds the cache of (amongst other things) IP address to link-layer
address mappings for connected nodes. As the information in the
Neighbor Cache is needed by the forwarding plane every time it
forwards a packet, it is usually implemented in an Application-
specific Integrated Circuit (ASIC).
Neighbor Discovery Process: The Neighbor Discovery Process (NDP) is
that part of the control plane that implements the Neighbor
Discovery protocol. NDP is responsible for performing address
resolution and maintaining the Neighbor Cache. When forwarding
packets, the forwarding plane accesses entries within the Neighbor
Cache. When the forwarding plane processes a packet for which the
corresponding Neighbor Cache Entry (NCE) is missing or incomplete,
it notifies NDP to take appropriate action (typically via a shared
queue). NDP picks up requests from the shared queue and performs
any necessary discovery action. In many implementations, the NDP
is also responsible for responding to router solicitation
messages, Neighbor Unreachability Detection (NUD), etc.
<span class="h2"><a class="selflink" id="section-4" href="#section-4">4</a>. Background</span>
Modern router architectures separate the forwarding of packets
(forwarding plane) from the decisions needed to decide where the
packets should go (control plane). In order to deal with the high
number of packets per second, the forwarding plane is generally
implemented in hardware and is highly optimized for the task of
forwarding packets. In contrast, the NDP control plane is mostly
implemented in software processes running on a general purpose
processor.
When a router needs to forward an IP packet, the forwarding plane
logic performs the longest match lookup to determine where to send
the packet and what outgoing interface to use. To deliver the packet
to an adjacent node, the forwarding plane encapsulates the packet in
a link-layer frame (which contains a header with the link-layer
destination address). The forwarding plane logic checks the Neighbor
Cache to see if it already has a suitable link-layer destination, and
if not, places the request for the required information into a queue,
and signals the control plane (i.e., NDP) that it needs the link-
layer address resolved.
<span class="grey">Gashinsky, et al. Informational [Page 5]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-6" ></span>
<span class="grey"><a href="./rfc6583">RFC 6583</a> Operational ND Problems March 2012</span>
In order to protect NDP specifically and the control plane generally
from being overwhelmed with these requests, appropriate steps must be
taken. For example, the size and fill rate of the queue might be
limited. NDP running in the control plane of the router dequeues
requests and performs the address resolution function (by performing
a neighbor solicitation and listening for a neighbor advertisement).
This process is usually also responsible for other activities needed
to maintain link-layer information, such as Neighbor Unreachability
Detection (NUD).
By sending appropriate packets to addresses on a given subnet, an
attacker can cause the router to queue attempts to resolve so many
addresses that it crowds out attempts to resolve "legitimate"
addresses (and in many cases becomes unable to perform maintenance of
existing entries in the Neighbor Cache, and unable to answer Neighbor
Solicitation). This condition can result in the inability to resolve
new neighbors and loss of reachability to neighbors with existing
NCEs. During testing, it was concluded that four simultaneous nmap
sessions from a low-end computer were sufficient to make a router's
Neighbor Discovery process unusable; therefore, forwarding became
unavailable to the destination subnets.
The failure to maintain proper NDP behavior whilst under attack has
been observed across multiple platforms and implementations,
including the largest modern router platforms available (at the
inception of work on this document).
<span class="h2"><a class="selflink" id="section-5" href="#section-5">5</a>. Neighbor Discovery Overview</span>
When a packet arrives at (or is generated by) a router for a
destination on an attached link, the router needs to determine the
correct link-layer address to use in the destination field of the
Layer 2 encapsulation. The router checks the Neighbor Cache for an
existing Neighbor Cache Entry for the neighbor, and if none exists,
invokes the address resolution portions of the IPv6 Neighbor
Discovery [<a href="./rfc4861" title=""Neighbor Discovery for IP version 6 (IPv6)"">RFC4861</a>] protocol to determine the link-layer address of
the neighbor.
<a href="./rfc4861#section-5.2">[RFC4861], Section 5.2</a>, outlines how this process works. A very
high-level summary is that the device creates a new Neighbor Cache
Entry for the neighbor, sets the state to INCOMPLETE, queues the
packet, and initiates the actual address resolution process. The
device then sends out one or more Neighbor Solicitations, and when it
receives a corresponding Neighbor Advertisement, completes the
Neighbor Cache Entry and sends the queued packet.
<span class="grey">Gashinsky, et al. Informational [Page 6]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-7" ></span>
<span class="grey"><a href="./rfc6583">RFC 6583</a> Operational ND Problems March 2012</span>
<span class="h2"><a class="selflink" id="section-6" href="#section-6">6</a>. Operational Mitigation Options</span>
This section provides some feasible mitigation options that can be
employed today by network operators in order to protect network
availability while vendors implement more effective protection
measures. It can be stated that some of these options are "kludges",
and can be operationally difficult to manage. They are presented, as
they represent options we currently have. It is each operator's
responsibility to evaluate and understand the impact of changes to
their network due to these measures.
<span class="h3"><a class="selflink" id="section-6.1" href="#section-6.1">6.1</a>. Filtering of Unused Address Space</span>
The DoS condition is induced by making a router try to resolve
addresses on the subnet at a high rate. By carefully addressing
machines into a small portion of a subnet (such as the lowest
numbered addresses), it is possible to filter access to addresses not
in that assigned portion of address space using Access Control Lists
(ACLs), or by null routing, features which are available on most
existing platforms. This will prevent the attacker from making the
router attempt to resolve unused addresses. For example, if there
are only 50 hosts connected to an interface, you may be able to
filter any address above the first 64 addresses of that subnet by
null-routing the subnet carrying a more specific /122 route or by
applying ACLs on the WAN link to prevent the attack traffic reaching
the vulnerable device.
As mentioned at the beginning of this section, it is fully understood
that this is ugly (and difficult to manage); but failing other
options, it may be a useful technique especially when responding to
an attack.
This solution requires that the hosts be statically or statefully
addressed (as is often done in a datacenter), and they may not
interact well with networks using [<a href="./rfc4862" title=""IPv6 Stateless Address Autoconfiguration"">RFC4862</a>].
<span class="h3"><a class="selflink" id="section-6.2" href="#section-6.2">6.2</a>. Minimal Subnet Sizing</span>
By sizing subnets to reflect the number of addresses actually in use,
the problem can be avoided. For example, [<a href="./rfc6164" title=""Using 127-Bit IPv6 Prefixes on Inter- Router Links"">RFC6164</a>] recommends sizing
the subnets for inter-router links so they only have two addresses (a
/127). It is worth noting that this practice is common in IPv4
networks, in part to protect against the harmful effects of Address
Resolution Protocol (ARP) request flooding.
Subnet prefixes longer than a /64 are not able to use stateless auto-
configuration [<a href="./rfc4862" title=""IPv6 Stateless Address Autoconfiguration"">RFC4862</a>], so this approach is not suitable for use
with hosts that are not statically configured.
<span class="grey">Gashinsky, et al. Informational [Page 7]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-8" ></span>
<span class="grey"><a href="./rfc6583">RFC 6583</a> Operational ND Problems March 2012</span>
<span class="h3"><a class="selflink" id="section-6.3" href="#section-6.3">6.3</a>. Routing Mitigation</span>
One very effective technique is to route the subnet to a discard
interface (most modern router platforms can discard traffic in
hardware / the forwarding plane) and then have individual hosts
announce routes for their IP addresses into the network (or use some
method to inject much more specific addresses into the local routing
domain). For example, the network 2001:db8:1:2:3::/64 could be
routed to a discard interface on "border" routers, and then
individual hosts could announce 2001:db8:1:2:3::10/128, 2001:db8:1:2:
3::66/128 into the IGP. This is typically done by having the IP
address bound to a virtual interface on the host (for example, the
loopback interface), enabling IP forwarding on the host and having it
run a routing daemon. For obvious reasons, host participation in the
IGP makes many operators uncomfortable, but it can be a very powerful
technique if used in a disciplined and controlled manner. One method
to help address these concerns is to have the hosts participate in a
different IGP (or difference instance of the same IGP) and carefully
redistribute into the main IGP.
<span class="h3"><a class="selflink" id="section-6.4" href="#section-6.4">6.4</a>. Tuning of the NDP Queue Rate Limit</span>
Many implementations provide a means to control the rate of
resolution of unknown addresses. By tuning this rate, it may be
possible to ameliorate the issue, as with most tuning knobs
(especially those that deal with rate-limiting), the attack may be
completed more quickly due to the lower threshold. By excessively
lowering this rate, you may negatively impact how long the device
takes to learn new addresses under normal conditions (for example,
after clearing the Neighbor Cache or when the router first boots).
Under attack conditions, you may be unable to resolve "legitimate"
addresses sooner than if you had just left the parameter untouched.
It is worth noting that this technique is worth investigating only if
the device has separate queues for resolution of unknown addresses
and the maintenance of existing entries.
<span class="h2"><a class="selflink" id="section-7" href="#section-7">7</a>. Recommendations for Implementors</span>
This section provides some recommendations to implementors of IPv6
Neighbor Discovery.
At a high-level, implementors should program defensively. That is,
they should assume that attackers will attempt to exploit
implementation weaknesses, and they should ensure that
implementations are robust to various attacks. In the case of
Neighbor Discovery, the following general considerations apply:
<span class="grey">Gashinsky, et al. Informational [Page 8]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-9" ></span>
<span class="grey"><a href="./rfc6583">RFC 6583</a> Operational ND Problems March 2012</span>
Manage Resources Explicitly: Resources such as processor cycles,
memory, etc., are never infinite, yet with IPv6's large subnets,
it is easy to cause NDP to generate large numbers of address
resolution requests for nonexistent destinations. Implementations
need to limit resources devoted to processing Neighbor Discovery
requests in a thoughtful manner.
Prioritize: Some NDP requests are more important than others. For
example, when resources are limited, responding to Neighbor
Solicitations for one's own address is more important than
initiating address resolution requests that create new entries.
Likewise, performing Neighbor Unreachability Detection, which by
definition is only invoked on destinations that are actively being
used, is more important than creating new entries for possibly
nonexistent neighbors.
<span class="h3"><a class="selflink" id="section-7.1" href="#section-7.1">7.1</a>. Prioritize NDP Activities</span>
Not all Neighbor Discovery activities are equally important.
Specifically, requests to perform large numbers of address
resolutions on non-existent Neighbor Cache Entries should not come at
the expense of servicing requests related to keeping existing, in-use
entries properly up to date. Thus, implementations should divide
work activities into categories having different priorities. The
following gives examples of different activities and their importance
in rough priority order. If implemented, the operation and priority
of these should be configurable by the operator.
1. It is critical to respond to Neighbor Solicitations for one's own
address, especially for a router. Whether for address resolution
or Neighbor Unreachability Detection, failure to respond to
Neighbor Solicitations results in immediate problems. Failure to
respond to NS requests that are part of NUD can cause neighbors
to delete the NCE for that address and will result in follow-up
NS messages using multicast. Once an entry has been flushed,
existing traffic for destinations using that entry can no longer
be forwarded until address resolution completes successfully. In
other words, not responding to NS messages further increases the
NDP load and causes ongoing communication to fail.
2. It is critical to revalidate one's own existing NCEs in need of
refresh. As part of NUD, ND is required to frequently revalidate
existing, in-use entries. Failure to do so can result in the
entry being discarded. For in-use entries, discarding the entry
will almost certainly result in a subsequent request to perform
address resolution on the entry, but this time using multicast.
<span class="grey">Gashinsky, et al. Informational [Page 9]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-10" ></span>
<span class="grey"><a href="./rfc6583">RFC 6583</a> Operational ND Problems March 2012</span>
As above, once the entry has been flushed, existing traffic for
destinations using that entry can no longer be forwarded until
address resolution completes successfully.
3. To maintain the stability of the control plane, Neighbor
Discovery activity related to traffic sourced by the router (as
opposed to traffic being forwarded by the router) should be given
high priority. Whenever network problems occur, debugging and
making other operational changes requires being able to query and
access the router. In addition, routing protocols dependent on
Neighbor Discovery for connectivity may begin to react
(negatively) to perceived connectivity problems, causing
additional undesirable ripple effects.
4. Traffic to unknown addresses should be given lowest priority.
Indeed, it may be useful to distinguish between "never seen"
addresses and those that have been seen before, but that do not
have a corresponding NCE. Specifically, the conceptual
processing algorithm in IPv6 Neighbor Discovery [<a href="./rfc4861" title=""Neighbor Discovery for IP version 6 (IPv6)"">RFC4861</a>] calls
for deleting NCEs under certain conditions. Rather than delete
them completely, however, it might be useful to at least keep
track of the fact that an entry at one time existed, in order to
prioritize address resolution requests for such neighbors
compared with neighbors that have never been seen before.
<span class="h3"><a class="selflink" id="section-7.2" href="#section-7.2">7.2</a>. Queue Tuning</span>
On implementations in which requests to NDP are submitted via a
single queue, router vendors should provide operators with means to
control both the rate of link-layer address resolution requests
placed into the queue and the size of the queue. This will allow
operators to tune Neighbor Discovery for their specific environment.
The ability to set, or have per-interface or per-prefix queue limits
at a rate below that of the global queue limit might restrict the
damage to the Neighbor Discovery processing to the network targeted
by the attack.
Setting those values must be a very careful balancing act -- the
lower the rate of entry into the queue, the less load there will be
on the ND process; however, it will take the router longer to learn
legitimate destinations as a result. In a datacenter with 6,000
hosts attached to a single router, setting that value to be under
1000 would mean that resolving all of the addresses from an initial
state (or something that invalidates the address cache, such as a
Spanning Tree Protocol (STP) Topology Change Notification (TCN)) may
take over 6 seconds. Similarly, the lower the size of the queue, the
higher the likelihood of an attack being able to knock out legitimate
traffic (but less memory utilization on the router).
<span class="grey">Gashinsky, et al. Informational [Page 10]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-11" ></span>
<span class="grey"><a href="./rfc6583">RFC 6583</a> Operational ND Problems March 2012</span>
<span class="h2"><a class="selflink" id="section-8" href="#section-8">8</a>. Security Considerations</span>
This document outlines mitigation options that operators can use to
protect themselves from denial-of-service attacks. Implementation
advice to router vendors aimed at ameliorating known problems carries
the risk of previously unforeseen consequences. It is not believed
that these mitigation techniques or the implementation of finer-
grained queuing of NDP activity create additional security risks or
DoS exposure.
<span class="h2"><a class="selflink" id="section-9" href="#section-9">9</a>. Acknowledgements</span>
The authors would like to thank Ron Bonica, Troy Bonin, John Jason
Brzozowski, Randy Bush, Vint Cerf, Tassos Chatzithomaoglou, Jason
Fesler, Wes George, Erik Kline, Jared Mauch, Chris Morrow, and Suran
De Silva. Special thanks to Thomas Narten and Ray Hunter for
detailed review and (even more so) for providing text!
Apologies for anyone we may have missed; it was not intentional.
<span class="h2"><a class="selflink" id="section-10" href="#section-10">10</a>. References</span>
<span class="h3"><a class="selflink" id="section-10.1" href="#section-10.1">10.1</a>. Normative References</span>
[<a id="ref-RFC4861">RFC4861</a>] Narten, T., Nordmark, E., Simpson, W., and H. Soliman,
"Neighbor Discovery for IP version 6 (IPv6)", <a href="./rfc4861">RFC 4861</a>,
September 2007.
[<a id="ref-RFC4862">RFC4862</a>] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless
Address Autoconfiguration", <a href="./rfc4862">RFC 4862</a>, September 2007.
[<a id="ref-RFC6164">RFC6164</a>] Kohno, M., Nitzan, B., Bush, R., Matsuzaki, Y., Colitti,
L., and T. Narten, "Using 127-Bit IPv6 Prefixes on Inter-
Router Links", <a href="./rfc6164">RFC 6164</a>, April 2011.
<span class="h3"><a class="selflink" id="section-10.2" href="#section-10.2">10.2</a>. Informative References</span>
[<a id="ref-RFC4732">RFC4732</a>] Handley, M., Rescorla, E., and IAB, "Internet Denial-of-
Service Considerations", <a href="./rfc4732">RFC 4732</a>, December 2006.
[<a id="ref-RFC5157">RFC5157</a>] Chown, T., "IPv6 Implications for Network Scanning",
<a href="./rfc5157">RFC 5157</a>, March 2008.
<span class="grey">Gashinsky, et al. Informational [Page 11]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-12" ></span>
<span class="grey"><a href="./rfc6583">RFC 6583</a> Operational ND Problems March 2012</span>
Authors' Addresses
Igor Gashinsky
Yahoo!
45 W 18th St
New York, NY
USA
EMail: igor@yahoo-inc.com
Joel Jaeggli
Zynga
111 Evelyn
Sunnyvale, CA
USA
EMail: jjaeggli@zynga.com
Warren Kumari
Google, Inc.
1600 Amphitheatre Parkway
Mountain View, CA
USA
EMail: warren@kumari.net
Gashinsky, et al. Informational [Page 12]
</pre>
|