159
etecting conflicts is useful. Upon detecting a conflict, the

Etecting Conflicts is Useful

Embed Size (px)

DESCRIPTION

ecuuuuuuuuuuuuuu

Citation preview

Page 1: Etecting Conflicts is Useful

etecting conflicts is useful. Upon detecting a conflict, the

Page 2: Etecting Conflicts is Useful

configuring agent should be notified of the error. In the case where

Page 3: Etecting Conflicts is Useful

the configuring agent is a human user, that notification may take the

Page 4: Etecting Conflicts is Useful

form of an error message on a screen, a Simple Network Management

Page 5: Etecting Conflicts is Useful

Protocol (SNMP) notification, or an error message sent via text

Page 6: Etecting Conflicts is Useful

message to a mobile phone. In the case of a DHCP server, that

Page 7: Etecting Conflicts is Useful

notification takes the form of a DHCP DECLINE message sent to the

Page 8: Etecting Conflicts is Useful

server. In the case of configuration by some other kind of software,

Page 9: Etecting Conflicts is Useful

that notification takes the form of an error indication to the

Page 10: Etecting Conflicts is Useful

software in question, to inform it that the address it selected is

Page 11: Etecting Conflicts is Useful

in conflict with some other host on the network. The configuring

Page 12: Etecting Conflicts is Useful

software may choose to cease network operation, or it may

Page 13: Etecting Conflicts is Useful

automatically select a new address so that the host may re-establish

Page 14: Etecting Conflicts is Useful

IP connectivity as soon as possible.

Page 15: Etecting Conflicts is Useful
Page 16: Etecting Conflicts is Useful

Allocation of IPv4 Link-Local Addresses [RFC3927] can be thought of

Page 17: Etecting Conflicts is Useful

as a special case of this mechanism, where the configuring agent is

Page 18: Etecting Conflicts is Useful

a pseudo-random number generator, and the action it takes upon being

Page 19: Etecting Conflicts is Useful

notified of a conflict is to pick a different random number and try

Page 20: Etecting Conflicts is Useful

again. In fact, this is exactly how IPv4 Link-Local Addressing was

Page 21: Etecting Conflicts is Useful

implemented in Mac OS 9 back in 1998. If the DHCP client failed to

Page 22: Etecting Conflicts is Useful

get a response from any DHCP server, it would simply make up a fake

Page 23: Etecting Conflicts is Useful

response containing a random 169.254.x.x address. If the ARP module

Page 24: Etecting Conflicts is Useful

reported a conflict for that address, then the DHCP client would try

Page 25: Etecting Conflicts is Useful

again, making up a new random 169.254.x.x address as many times as

Page 26: Etecting Conflicts is Useful

was necessary until it succeeded. Implementing ACD as a standard

Page 27: Etecting Conflicts is Useful

feature of the networking stack has the side effect that it means

Page 28: Etecting Conflicts is Useful

that half the work for IPv4 Link-Local Addressing is already done.

Page 29: Etecting Conflicts is Useful
Page 30: Etecting Conflicts is Useful

1.1. Conventions and Terminology Used in This Document

Page 31: Etecting Conflicts is Useful
Page 32: Etecting Conflicts is Useful
Page 33: Etecting Conflicts is Useful

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",

Page 34: Etecting Conflicts is Useful

"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this

Page 35: Etecting Conflicts is Useful

document are to be interpreted as described in "Key words for use in

Page 36: Etecting Conflicts is Useful

RFCs to Indicate Requirement Levels" [RFC2119].

Page 37: Etecting Conflicts is Useful
Page 38: Etecting Conflicts is Useful

Wherever this document uses the term 'sender IP address' or 'target

Page 39: Etecting Conflicts is Useful

IP address' in the context of an ARP packet, it is referring to the

Page 40: Etecting Conflicts is Useful

fields of the ARP packet identified in the ARP specification [RFC826]

Page 41: Etecting Conflicts is Useful

as 'ar$spa' (Sender Protocol Address) and 'ar$tpa' (Target Protocol

Page 42: Etecting Conflicts is Useful

Address), respectively. For the usage of ARP described in this

Page 43: Etecting Conflicts is Useful

document, each of these fields always contains an IPv4 address.

Page 44: Etecting Conflicts is Useful
Page 45: Etecting Conflicts is Useful

In this document, the term 'ARP Probe' is used to refer to an ARP

Page 46: Etecting Conflicts is Useful

Request packet, broadcast on the local link, with an all-zero 'sender

Page 47: Etecting Conflicts is Useful

IP address'. The 'sender hardware address' MUST contain the hardware

Page 48: Etecting Conflicts is Useful

address of the interface sending the packet. The 'sender IP address'

Page 49: Etecting Conflicts is Useful

field MUST be set to all zeroes, to avoid polluting ARP caches in

Page 50: Etecting Conflicts is Useful
Page 51: Etecting Conflicts is Useful
Page 52: Etecting Conflicts is Useful
Page 53: Etecting Conflicts is Useful

Cheshire Standards Track [Page 4]

Page 54: Etecting Conflicts is Useful
Page 55: Etecting Conflicts is Useful

RFC 5227 IPv4 Address Conflict Detection July 2008

Page 56: Etecting Conflicts is Useful
Page 57: Etecting Conflicts is Useful
Page 58: Etecting Conflicts is Useful

other hosts on the same link in the case where the address turns out

Page 59: Etecting Conflicts is Useful

to be already in use by another host. The 'target hardware address'

Page 60: Etecting Conflicts is Useful

field is ignored and SHOULD be set to all zeroes. The 'target IP

Page 61: Etecting Conflicts is Useful

address' field MUST be set to the address being probed. An ARP Probe

Page 62: Etecting Conflicts is Useful

conveys both a question ("Is anyone using this address?") and an

Page 63: Etecting Conflicts is Useful

implied statement ("This is the address I hope to use.").

Page 64: Etecting Conflicts is Useful
Page 65: Etecting Conflicts is Useful

In this document, the term 'ARP Announcement' is used to refer to an

Page 66: Etecting Conflicts is Useful

ARP Request packet, broadcast on the local link, identical to the ARP

Page 67: Etecting Conflicts is Useful

Probe described above, except that both the sender and target IP

Page 68: Etecting Conflicts is Useful

address fields contain the IP address being announced. It conveys a

Page 69: Etecting Conflicts is Useful

stronger statement than an ARP Probe, namely, "This is the address I

Page 70: Etecting Conflicts is Useful

am now using."

Page 71: Etecting Conflicts is Useful
Page 72: Etecting Conflicts is Useful

The following timing constants used in this protocol are referenced

Page 73: Etecting Conflicts is Useful

in Section 2, which describes the operation of the protocol in

Page 74: Etecting Conflicts is Useful

detail. (Note that the values listed here are fixed constants; they

Page 75: Etecting Conflicts is Useful

are not intended to be modifiable by implementers, operators, or end

Page 76: Etecting Conflicts is Useful

users. These constants are given symbolic names here to facilitate

Page 77: Etecting Conflicts is Useful

the writing of future standards that may want to reference this

Page 78: Etecting Conflicts is Useful

document with different values for these named constants; however,

Page 79: Etecting Conflicts is Useful

at the present time no such future standards exist.)

Page 80: Etecting Conflicts is Useful
Page 81: Etecting Conflicts is Useful

PROBE_WAIT 1 second (initial random delay)

Page 82: Etecting Conflicts is Useful

PROBE_NUM 3 (number of probe packets)

Page 83: Etecting Conflicts is Useful

PROBE_MIN 1 second (minimum delay until repeated probe)

Page 84: Etecting Conflicts is Useful

PROBE_MAX 2 seconds (maximum delay until repeated probe)

Page 85: Etecting Conflicts is Useful

ANNOUNCE_WAIT 2 seconds (delay before announcing)

Page 86: Etecting Conflicts is Useful

ANNOUNCE_NUM 2 (number of Announcement packets)

Page 87: Etecting Conflicts is Useful

ANNOUNCE_INTERVAL 2 seconds (time between Announcement packets)

Page 88: Etecting Conflicts is Useful

MAX_CONFLICTS 10 (max conflicts before rate-limiting)

Page 89: Etecting Conflicts is Useful

RATE_LIMIT_INTERVAL 60 seconds (delay between successive attempts)

Page 90: Etecting Conflicts is Useful

DEFEND_INTERVAL 10 seconds (minimum interval between defensive

Page 91: Etecting Conflicts is Useful

ARPs)

Page 92: Etecting Conflicts is Useful

1.2. Relationship to RFC 826

Page 93: Etecting Conflicts is Useful
Page 94: Etecting Conflicts is Useful
Page 95: Etecting Conflicts is Useful

This document does not modify any of the protocol rules in RFC 826.

Page 96: Etecting Conflicts is Useful

It does not modify the packet format, or the meaning of any of the

Page 97: Etecting Conflicts is Useful

fields. The existing rules for "Packet Generation" and "Packet

Page 98: Etecting Conflicts is Useful

Reception" still apply exactly as specified in RFC 826.

Page 99: Etecting Conflicts is Useful
Page 100: Etecting Conflicts is Useful

This document expands on RFC 826 by specifying:

Page 101: Etecting Conflicts is Useful
Page 102: Etecting Conflicts is Useful

(1) that a specific ARP Request should be generated when an interface

Page 103: Etecting Conflicts is Useful

is configured, to discover if the address is already in use, and

Page 104: Etecting Conflicts is Useful
Page 105: Etecting Conflicts is Useful
Page 106: Etecting Conflicts is Useful
Page 107: Etecting Conflicts is Useful
Page 108: Etecting Conflicts is Useful
Page 109: Etecting Conflicts is Useful
Page 110: Etecting Conflicts is Useful

Cheshire Standards Track [Page 5]

Page 111: Etecting Conflicts is Useful
Page 112: Etecting Conflicts is Useful

RFC 5227 IPv4 Address Conflict Detection July 2008

Page 113: Etecting Conflicts is Useful
Page 114: Etecting Conflicts is Useful
Page 115: Etecting Conflicts is Useful

(2) an additional trivial test that should be performed on each

Page 116: Etecting Conflicts is Useful

received ARP packet, to facilitate passive ongoing conflict

Page 117: Etecting Conflicts is Useful

detection. This additional test creates no additional packet

Page 118: Etecting Conflicts is Useful

overhead on the network (no additional packets are sent) and

Page 119: Etecting Conflicts is Useful

negligible additional CPU burden on hosts, since every host

Page 120: Etecting Conflicts is Useful

implementing ARP is *already* required to process every received

Page 121: Etecting Conflicts is Useful

ARP packet according to the Packet Reception rules specified in

Page 122: Etecting Conflicts is Useful

RFC 826. These rules already include checking to see if the

Page 123: Etecting Conflicts is Useful

'sender IP address' of the ARP packet appears in any of the

Page 124: Etecting Conflicts is Useful

entries in the host's ARP cache; the additional test is simply to

Page 125: Etecting Conflicts is Useful

check to see if the 'sender IP address' is the host's *own* IP

Page 126: Etecting Conflicts is Useful

address, potentially as little as a single additional machine

Page 127: Etecting Conflicts is Useful

instruction on many architectures.

Page 128: Etecting Conflicts is Useful
Page 129: Etecting Conflicts is Useful

As already specified in RFC 826, an ARP Request packet serves two

Page 130: Etecting Conflicts is Useful

functions, an assertion and a question:

Page 131: Etecting Conflicts is Useful
Page 132: Etecting Conflicts is Useful

* Assertion:

Page 133: Etecting Conflicts is Useful

The fields 'ar$sha' (Sender Hardware Address) and 'ar$spa' (Sender

Page 134: Etecting Conflicts is Useful

Protocol Address) together serve as an assertion of a fact: that

Page 135: Etecting Conflicts is Useful

the stated Protocol Address is mapped to the stated Hardware

Page 136: Etecting Conflicts is Useful

Address.

Page 137: Etecting Conflicts is Useful
Page 138: Etecting Conflicts is Useful

* Question:

Page 139: Etecting Conflicts is Useful

The fields 'ar$tha' (Target Hardware Address, zero) and 'ar$tpa'

Page 140: Etecting Conflicts is Useful

(Target Protocol Address) serve as a question, asking, for the

Page 141: Etecting Conflicts is Useful

stated Protocol Address, to which Hardware Address it is mapped.

Page 142: Etecting Conflicts is Useful
Page 143: Etecting Conflicts is Useful

This document clarifies what it means to have one without the other.

Page 144: Etecting Conflicts is Useful
Page 145: Etecting Conflicts is Useful

Some readers pointed out that it is probably impossible to ask any

Page 146: Etecting Conflicts is Useful

truly pure question; asking any question necessarily invites

Page 147: Etecting Conflicts is Useful

speculation about why the interrogator wants to know the answer.

Page 148: Etecting Conflicts is Useful

Just as someone pointing to an empty seat and asking, "Is anyone

Page 149: Etecting Conflicts is Useful

sitting here?" implies an unspoken "... because if not then I will,"

Page 150: Etecting Conflicts is Useful

the same is true here. An ARP Probe with an all-zero 'sender IP

Page 151: Etecting Conflicts is Useful

address' may ostensibly be merely asking an innocent question ("Is

Page 152: Etecting Conflicts is Useful

anyone using this address?"), but an intelligent implementation that

Page 153: Etecting Conflicts is Useful

knows how IPv4 Address Conflict Detection works should be able to

Page 154: Etecting Conflicts is Useful

recognize this question as the precursor to claiming the address.

Page 155: Etecting Conflicts is Useful
Page 156: Etecting Conflicts is Useful

Consequently, if that implementation is also, at that exact moment,

Page 157: Etecting Conflicts is Useful

in the process of asking the very same question, it should recognize

Page 158: Etecting Conflicts is Useful

that they can't both sit in the same seat, so it would be prudent to

Page 159: Etecting Conflicts is Useful

ask about some other seat.