Internet DRAFT - draft-matthews-mmusic-ice-eliminating-duplicates
draft-matthews-mmusic-ice-eliminating-duplicates
MMUSIC Working Group E. Cooper
Internet Draft P. Matthews
Expires: December 2006 Avaya
June 15, 2006
Eliminating Duplicate Connectivity Checks in ICE
draft-matthews-mmusic-ice-eliminating-duplicates-00.txt
Status of this Memo
By submitting this Internet-Draft, each author represents that
any applicable patent or other IPR claims of which he or she is
aware have been or will be disclosed, and any of which he or she
becomes aware will be disclosed, in accordance with Section 6 of
BCP 79.
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
This Internet-Draft will expire on December 15, 2006.
Abstract
The ICE (Interactive Connectivity Establishment) protocol is designed
to find the best possible transmission path between two endpoints in
the presence of intervening NAT (Network Address Translation) boxes.
It is a very versatile protocol, designed to operate in all possible
network topologies. This versatility occasionally results in a large
exchange of messages between the two endpoints.
This document proposes a modification which reduces the amount of
messaging ICE requires, without affecting the effectiveness of ICE.
Cooper & Matthews Expires December 15, 2006 [Page 1]
Internet-Draft Eliminating Duplicate Checks June 2006
This modification suppresses the transmission of Binding Requests
from server-reflexive candidates. The result is increased efficiency
due to the suppressed connectivity checks, leading to fewer overall
messages and faster discovery of working paths.
Conventions used in this document
The terminology of this document follows that of [ICE-08]. In
particular, the terms "candidate", "transport address", "native" vs.
"remote", "peer-reflexive", "server-reflexive", and "local" are all
used as per [ICE-08].
Table of Contents
1. Introduction...................................................3
2. Summary of Proposed Changes....................................4
3. Details of Proposed Changes....................................6
3.1. Candidate Pairs and State Machines........................6
3.2. Rx State Machine..........................................8
3.3. Tx State Machine..........................................9
3.3.1. Ordering the Tx State Machines......................10
3.4. Adding Candidates........................................11
3.4.1. Adding Native Candidates - Non Peer Reflexive.......11
3.4.2. Adding Native Candidates - Peer Reflexive...........11
3.4.3. Adding Remote Candidates - Non Peer Reflexive.......11
3.4.4. Adding Remote Candidates - Peer Reflexive...........12
3.5. Promoting Candidates.....................................12
3.6. Removing Candidates......................................12
3.7. Queuing Incoming Binding Requests for Later Processing...12
3.8. Processing Received Binding Requests.....................13
3.9. Processing Received Binding Responses....................14
4. Security Considerations.......................................15
5. IANA Considerations...........................................15
6. Acknowledgments...............................................15
7. References....................................................17
7.1. Normative References.....................................17
7.2. Informative References...................................17
Author's Addresses...............................................17
Intellectual Property Statement..................................17
Disclaimer of Validity...........................................18
Copyright Statement..............................................18
Acknowledgment...................................................18
Cooper & Matthews Expires December 15, 2006 [Page 2]
Internet-Draft Eliminating Duplicate Checks June 2006
1. Introduction
[ICE-08] pairs every native candidate with every remote candidate,
and then checks for connectivity in each direction. When some of the
candidates are server-reflexive candidates, this can lead to
redundant checks. This is because, from a network topology point-of-
view, sending a message from a server-reflexive candidate is the same
as sending from the candidate from which it was derived. Thus
messages sent from server-reflexive candidates do not discover new
network paths.
To understand this more clearly, consider the following network
topology:
..Internet .......................
. .
. +------+ .
. |STUN | .
. |Server| .
. +------+ .
. .
. .
. +--------+ +--------+ .
.. | NAT NL | .............. | NAT NR | ..
+--------+ +--------+
---- ----
/\ /\
/L \ / R\
---- ----
Here L and R are each behind a [BEHAVE-UDP] compliant NAT. Endpoints
L and R both use a public STUN server, but this server does not
support the STUN Relay usage. Thus L has two candidates:
o L1 - a local candidate on L
o L2 - a server-reflexive candidate for L discovered by sending a
Binding Request to the STUN server from L1
Similarly, R has two candidates: R1 and R2.
Cooper & Matthews Expires December 15, 2006 [Page 3]
Internet-Draft Eliminating Duplicate Checks June 2006
Forming the candidate pairs and considering the connectivity checks
required for each pair gives the following:
Check from Check from
Pair L to R Comment R to L Comment
==== ========== ======= ========== =======
(L1,R1) (L1 -> R1) (L1 <- R1)
(L1,R2) (L1 -> R2) (L1 <- R2) Dup of L1<-R1
(L2,R1) (L2 -> R1) Dup of L1->R1 (L2 <- R1)
(L2,R2) (L2 -> R2) Dup of L1->R2 (L2 <- R2) Dup of L2<-R1
As shown in the table, any check that originates from L2 is a
duplicate of a check that originates from L1. Similarly checks
originating from R2 are duplicates of R1's checks. In this example
eliminating these duplicates reduces the total number of checks by
50%.
Eliminating checks in this manner has two advantages:
o It reduces the number of messages that need to be exchanged
between endpoints; and
o The remaining checks start earlier, because there are fewer 50msec
delays between the start of successive checks. This results in
faster identification of desirable paths.
Compared with [ICE-08], the modification described here typically
results in 25% - 50% fewer messages when multiple NATs are involved.
Similarly, the highest-priority working candidate can be promoted to
the m/c line 25% - 50% faster. Since the savings are a result of
eliminating checks from server-reflexive candidates, the reductions
are less significant when one of the endpoints has a public IP
address.
This document is intended only as a contribution to the discussion
around [ICE-08], and is not intended to propose a new standard or
extension to ICE. Rather, it is our hope that the ideas described in
this draft might be incorporated into a future revision of ICE.
2. Summary of Proposed Changes
This document defines a "base candidate" as any candidate that
represents a unique sending point. Local candidates are base
candidates, as are relay candidates, but server-reflexive and peer-
reflexive candidates are not base candidates.
Cooper & Matthews Expires December 15, 2006 [Page 4]
Internet-Draft Eliminating Duplicate Checks June 2006
Connectivity checks only need to be sent from base candidates, as a
check sent from a non-base candidate is equivalent to a check sent
from the base candidate from which it was derived.
In reformulating the procedures of [ICE-08] to send only from base
candidates, we found it necessary to split the state machine of [ICE-
08] into separate receive (Rx) and transmit (Tx) state machines.
Trying to express the modification _without_ this split leads to the
following:
o The state machine for a native non-base candidate must suppress
the sending of Binding Requests;
o The Tx side of the state machine for a native base candidate must
somehow drive the Tx side of all state machines for all native
non-base candidates derived from that base candidate;
o The Rx side of all the state machines for a given native candidate
must somehow be linked together, since the remote endpoint is only
sending from remote base candidates.
Consider the example of section 1. In that scenario, the only
candidate pair that works is (L2, R2). Note that neither L2 nor R2
are base candidates. On node L, the state machine for (L2, R2) will
not send packets (since L2 is not a base candidate), nor will it
receive packets (since R will not send from the non-base candidate
R2). Thus the Tx side of the state machine for the (L2, R2) pair must
somehow be linked with the Tx side of the state machine for (L1, R2),
while the Rx side of the state machine for the (L2, R2) pair must
somehow be linked with the state machine for (L2, R1).
In addition, when we considered how to order or promote candidate
pairs when their state machines are tied together in this manner, it
seemed evident to us that the simplest approach is to split the state
machine of [ICE-08] into separate Rx and Tx state machines.
Splitting the state machine into separate Rx and Tx state machines
results in two other changes:
First, the concept of a candidate pair is divided into an Rx
candidate pair (representing a receiving path from a remote candidate
to a native candidate) and a Tx candidate pair (representing a
transmission path from a native (base) candidate to a remote
candidate).
Second, promotion of a candidate is based on its receiving status
only, and not on its transmitting status. In other words, the
Cooper & Matthews Expires December 15, 2006 [Page 5]
Internet-Draft Eliminating Duplicate Checks June 2006
promotion of a candidate is driven solely by whether or not the
remote endpoint has discovered a sending path to that candidate. This
is consistent with the SDP rule that the m/c line specifies only the
address at which an endpoint wishes to receive data.
3. Details of Proposed Changes
3.1. Candidate Pairs and State Machines
The following figure shows the relationships between candidates,
pairs and state machines on a single endpoint:
CNC List +--------+ +--------+ CRC List
+---------+ |Tx State| |Tx State| +---------+
| | | Machine| |Machine | | |
| | +--------+ +--------+ | |
| | \ / | |
| | \ / | |
+---------+ Tx Candidate \ / +---------+
| | Pair (Nc -> Rc) \ / | |
| Native |--------------------------------------->| Remote |
|Candidate| |Candidate|
| (Nc) |<---------------------------------------| (Rc) |
| | Rx Candidate / \ | |
+---------+ Pair (Nc <- Rc) / \ +---------+
| | / \ | |
| | / \ | |
| | +--------+ +--------+ | |
| | |Rx State| |Rx State| | |
+---------+ | Machine| |Machine | +---------+
| | +--------+ +--------+ | |
| | | |
| | | |
| | | |
+---------+ +---------+
Each peer maintains a list of all the native and remote candidates.
In this document, these are referred to as the Current Native
Candidate (CNC) list and the Current Remote Candidate (CRC) list.
Whenever a new candidate is added to one of these lists, the Tx and
Rx candidate pairs are created. Each Tx candidate pair (Nc -> Rc)
describes a unique outgoing path from the native candidate Nc to the
remote candidate Rc. Similarly, an Rx candidate pair (Nc <- Rc)
represents a unique incoming path. Each Tx candidate pair has a
number of Tx state machines associated with it, one for each
component in the candidate. For example, two Tx state machines are
required when both RTP and RTCP are used. Similarly, each Rx
Cooper & Matthews Expires December 15, 2006 [Page 6]
Internet-Draft Eliminating Duplicate Checks June 2006
candidate pair has one Rx state machine for each component in the
candidate.
On each endpoint, an Rx candidate pair (Nc <- Rc) is created for
every combination of a native candidate (Nc) with a remote candidate
(Rc). By contrast, a Tx candidate pair (Nbc -> Rc) is only created
for every combination of a native _base_ candidate (Nbc) with a
remote candidate (Rc).
Peer reflexive candidates are an exception to these rules. A remote
peer reflexive candidate (Rprc) generates no Rx candidate pairs and
only a single Tx candidate pair (Ngc -> Rprc), where Ngc is the
native candidate involved in the generation of Rprc (see section 3.8.
for details). Note that, in this special case, Ngc may not be a base
candidate. Similarly, a native peer reflexive candidate (Nprc)
generates a single Rx candidate pair (Nprc <- Rgc) and no Tx
candidate pairs.
Cooper & Matthews Expires December 15, 2006 [Page 7]
Internet-Draft Eliminating Duplicate Checks June 2006
3.2. Rx State Machine
The Rx state machine tracks the receipt of Binding Requests from the
remote peer. Each Rx state machine monitors a single component of a
native candidate.
The state transition diagram for the Rx state machine is:
Start
|
v
+------------+
-- | Waiting |
| +------------+
| |
| | Rx Req
| | ------
| | -
| v
10s timeout | +------------+
----------- | | Valid |
- | +------------+
| |
| | Rx ERROR
| | --------
| | -
| V
| +------------+
-> | Invalid |
+------------+
The Rx state machine starts out in the WAITING state. In this state,
it is waiting for the first Binding Request to arrive. Once the
Binding Request is received, the state machine transitions to the
VALID state. Note that the Binding Response is sent as part of the
processing of the Binding Request (see section 3.8. which happens
before the Binding Request is passed to the Rx state machine. If no
Binding Request arrives within 10 seconds, the state machine moves to
the INVALID state, where it remains until it is destroyed.
When the Rx state machine transitions to the VALID state, it
signifies that a successful incoming path has been found from the
remote endpoint. Once the Rx state machine is in the VALID state, it
stays there until the state machine is destroyed as a result of a
signaling message, or an error occurs.
Cooper & Matthews Expires December 15, 2006 [Page 8]
Internet-Draft Eliminating Duplicate Checks June 2006
3.3. Tx State Machine
The Tx state machine probes a transmission path to the remote peer.
It does this by sending Binding Requests and waiting for the
corresponding Responses. Each Tx state machine probes a single
component of a remote candidate.
The state transition diagram for the Tx state machine is as follows:
Start
|
v
+-----------+
| Waiting |
+-----------+
|
| Rx PROCEED
| ----------
Rx ERROR | Tx Req
-------- v
- +-----------+
------------| Testing |
| +-----------+
v |
+-----------+ | Rx SUCCESS
| Invalid | | ----------
+-----------+ | -
^ v
| +-----------+
------------| Valid |<-
Rx ERROR +-----------+ | Timer Tr
-------- | | --------
- --------- -
The Tx state machine starts out in the WAITING state. In this state,
it is waiting until it is allowed to proceed. (see section 3.3.1.
When the Tx state machine transitions to the TESTING state it sends a
Binding Request. This starts a little STUN state machine (not shown)
associated with the Tx state machine which resends the Binding
Request according to the exponential backoff procedure described in
[STUNbis].
At this point, the Tx state machine can receive either:
Cooper & Matthews Expires December 15, 2006 [Page 9]
Internet-Draft Eliminating Duplicate Checks June 2006
o A SUCCESS event, indicating that a successful Response was
received, OR
o An ERROR event, indicating that either a fatal error response was
received, or the retry limit was reached.
The SUCCESS event causes the Tx state machine to transition to the
VALID state, indicating that a successful outbound path to the remote
endpoint has been found. In this state, the Tx state machine resends
the Binding Request every Tr seconds.
3.3.1. Ordering the Tx State Machines
As per [ICE-08], the bindings created by ICE in intervening NATs must
be carefully rate-limited to ensure that the NAT is not overwhelmed
when creating new mapping and filtering entries. To achieve this,
most Tx state machines are initially placed on a 'pacing' queue.
Every Ta milliseconds, one state machine is removed from the queue
and started. A Tx state machine may be removed from the queue and
started early if an incoming STUN Binding Request reveals that the
intermediate NATs must already have the appropriate mapping and
filtering entries.
Since Tx state machines created for remote peer reflexive addresses
are only created as a result of incoming binding requests, they
always meet the above condition for early commencement. Tx state
machines of this type always go directly to the TESTING state and
bypass the 'pacing' queue.
[ICE-08] defines some sophisticated rules for ordering state machines
to ensure that both endpoints start their state machines in the same
order. With the splitting of the state machines into the Rx and Tx
state machines, having the same ordering on both endpoints is less
important. Simpler ordering rules could be adopted. However, we
stick with the [ICE-08] ordering rules to make direct comparison with
[ICE-08] simple.
Thus the ordering of Tx state machines follows the rules specified in
[ICE-08]. Specifically, and endpoint first orders the Tx candidate
pairs following the rules given in section 7.5 of [ICE-08], then sub-
orders the Tx state machines by component number.
One addition to the rules of section 7.5 of [ICE-08] required. When
moving the Tx candidate pair (Nac -> Rac) to the top of the list,
where Nac and Rac are the active candidates, it may be that there is
no such Tx candidate pair because Nac is not a base candidate. In
Cooper & Matthews Expires December 15, 2006 [Page 10]
Internet-Draft Eliminating Duplicate Checks June 2006
that case, select the Tx candidate pair (Nbc -> Rac) where Nbc is the
base candidate from which the active candidate Nac was derived.
3.4. Adding Candidates
Adding a candidate to either the CNC or CRC list is a key ICE
activity. Whenever this occurs, a number of Tx and Rx candidate
pairs are built, which leads to the creation of the Tx and Rx state
machines. The rules for creating candidate pairs and state machines
are given below.
3.4.1. Adding Native Candidates - Non Peer Reflexive
Whenever a (non-peer reflexive) native candidate is added to the CNC
list a number of Rx candidate pairs are made. Specifically, an Rx
candidate pair is created between the candidate and every remote
candidate in the CRC. These pairs cause the creation of an Rx state
machine for each pair of transport addresses with matching component
IDs. In addition, if the newly added native candidate is a base
candidate then a Tx candidate pair is created with every entry in the
CRC. These Tx candidate pairs result in the creation of a Tx state
machine for each pair of transport address with matching component
IDs.
3.4.2. Adding Native Candidates - Peer Reflexive
When adding a native peer reflexive candidate to the CNC list, the
newly added native candidate is only matched with the remote
generating candidate. As a result, only one Rx candidate pair is
created. This creates an Rx state machine for each pair of transport
addresses with matching component IDs. Peer reflexive candidates are
not base candidates, so no Tx candidate pairs or Tx state machines
are built.
3.4.3. Adding Remote Candidates - Non Peer Reflexive
When adding a (non-peer reflexive) candidate to the CRC list, an Rx
candidate pair is created with every candidate in the CNC list.
These pairs result in the creation of an Rx state machine for each
pair of transport addresses with matching component IDs. Tx
candidate pairs are also created, but only for the base candidates in
the CNC list. The Tx candidate pairs that are created result in Tx
state machines for every pair of transport addresses with matching
component IDs.
Cooper & Matthews Expires December 15, 2006 [Page 11]
Internet-Draft Eliminating Duplicate Checks June 2006
3.4.4. Adding Remote Candidates - Peer Reflexive
A newly created remote peer reflexive candidate is matched only with
the native generating candidate. This creates a single Tx candidate
pair and subsequent Tx state machines for each pair of transport
addresses with matching component IDs. No Rx candidate pairs or Rx
state machines are created for remote peer reflexive transport
addresses.
3.5. Promoting Candidates
If a native candidate has at least one Rx candidate pair for which
every associated Rx state machine is VALID, then the native candidate
is eligible for promotion. Following [ICE-08]:
o If the native candidate is currently the active candidate, then it
is already specified in the m/c line. Nothing more needs to be
done and no re-offer is triggered.
o If the native candidate is the highest priority candidate, then
the candidate is immediately promoted.
o Otherwise, the timer Tws is started (if it is not already
running). When the timer expires, the eligible candidate with the
highest priority (q value) is promoted.
As per [ICE-08], when a candidate is promoted the endpoint must
encode the remote candidate into the 'a-remote-candidate' attribute.
If there is more than one Rx candidate pair to choose from, the
remote candidate with the highest priority is selected.
3.6. Removing Candidates
A native candidate or remote candidate can be removed from one of the
current lists of candidates for reasons described in section 7.11 of
[ICE-08]. When this happens, all Rx and Tx candidate pairs and state
machines related to that candidate are destroyed.
3.7. Queuing Incoming Binding Requests for Later Processing
It is possible for an endpoint to receive a Binding Request where the
native and/or remote candidate is not known, but will become known
shortly. (Note: This situation also exists in [ICE-08]). For example,
the remote candidate will not be known on the Offerer if a Binding
Request from the Answerer arrives before the Answer itself.
Cooper & Matthews Expires December 15, 2006 [Page 12]
Internet-Draft Eliminating Duplicate Checks June 2006
To handle such cases efficiently, an endpoint does some initial
processing of the incoming Binding Request, and then queues the
Request until the native and/or remote candidate becomes known.
Since it is possible for the candidate to never become known, the
Binding Request must be discarded after some suitable time (say
100msec).
Whenever a candidate is added to the CRC or CNC list, the queue is
inspected (in message arrival order) for messages that can now be
processed.
3.8. Processing Received Binding Requests
This section describes, in bullet form, the processing when a Binding
Request arrives on a socket:
o Extract username and parse into "<native candidate id> ':' <native
component id> ':' <remote candidate id> ':' <remote component
id>". If there is no username or the parse fails, then this is not
an ICE connectivity check, but may be a STUN Binding Request for
some other usage.
o Look for a native candidate whose candidate id is a prefix of
<native candidate id>. Call this the <native candidate prefix>. If
none, discard packet.
[This will happen if the native candidate is a peer-reflexive
candidate. Doing the initial processing using the <native
candidate prefix> allows for faster discovery of working paths
in the cases described in section 3.7.
o Using the password associated with <native candidate prefix>,
check the message integrity of the packet. If it fails, discard
packet.
o Check packet for various other errors (e.g., <native component id>
out of range or not equal to <remote component id>). If it fails,
discard packet and (depending on the error) send an error
response.
o Extract the source transport address (SA) and destination
transport address (DA) from the packet.
o Send a Success Response. The DA of the Response is the SA of the
Request, and the Response is sent on the socket that the request
was received.
Cooper & Matthews Expires December 15, 2006 [Page 13]
Internet-Draft Eliminating Duplicate Checks June 2006
o Search for a Tx state machine whose remote candidate (component)
address is equal to SA of the Request, and whose native candidate
(component) address is equal to the DA from the Request. If such a
Tx state machine is found:
o If state == WAITING, remove it from the queue (which causes the
Tx state machine to transition to the TESTING state and send a
Binding Request).
o If state == TESTING, retransmit the Request.
o Otherwise, do nothing.
[This Tx state machine is sending with the same SA and DA as the
Response that was just sent. Since the endpoint just received a
Request in the opposite direction, we know that all bindings and
permissions are now in place and any previous Request that may
been lost should now get through.]
o If <native candidate id> is not in list of current native
candidates or if <remote candidate id> is not in list of current
remote candidates, then queue the request until both candidates
become known or until some wait time is exceeded. [See section
3.7. for why this is done].
o Generate an "Rx Req" event into the Rx state machine corresponding
to (<native candidate id>, <native component id>, <remote
candidate id>, <remote component id>).
o If the SA of the Request does not match the address of any
component of any remote candidate in the list of current
candidates, then we have learned a new remote peer-reflexive
address. This address is associated with component <remote
component id> of a remote candidate with id equal to "<remote
candidate id> <native candidate id>". This new peer-reflexive
candidate has the same number of components and the same q value
as the candidate <remote candidate id>. Learning this new address
may or may not complete the construction of this new remote
candidate, since there may still be other component addresses to
learn. If this new address does complete construction of the
candidate, then add it to the remote candidate list.
3.9. Processing Received Binding Responses
This section describes, in bullet form, the processing when a Binding
Response arrives on a socket:
Cooper & Matthews Expires December 15, 2006 [Page 14]
Internet-Draft Eliminating Duplicate Checks June 2006
o Extract the transaction ID, locate the corresponding request, and
determine the <remote candidate id>, <remote component id>,
<native candidate id> and <native component id> of the Request,
along with the Tx state machine that send the Request. If there is
no such Request, or if the Tx state machine no longer exists,
discard the packet.
o Check the message integrity of the packet using the password
associated with <remote candidate id>. If it fails, discard the
packet.
o If the Response is a non-fatal error response, then ignore it (let
the Tx state machine retry) and discard the packet.
o If the Response is a fatal error response, then send an ERROR
event into the Tx state machine and discard the packet.
o Else the Response is success response. Send a SUCCESS event into
the Tx state machine.
o If the mapped address from the packet does not match the transport
address of any component of any native candidate in the list of
native candidates, then we have learned a new native peer-
reflexive address. The address is associated with component
<native component id> of a new native candidate with id equal to
"<native candidate id> <remote candidate id>". This new peer-
reflexive candidate has the same number of components and the same
q value as the candidate <native candidate id>. Learning this new
address may or may not complete the construction of the candidate,
since there may still be other component addresses to learn. If
the new address does complete construction of the candidate, then
add it to the native candidate list.
4. Security Considerations
This document does not introduce any new security considerations
beyond those introduced by [ICE-08].
5. IANA Considerations
This document does not introduce any IANA considerations.
6. Acknowledgments
The authors would like to thank all those who read over a preliminary
version of this document and gave comments, most particularly Alan
Cooper & Matthews Expires December 15, 2006 [Page 15]
Internet-Draft Eliminating Duplicate Checks June 2006
Johnston, Benny Rodrig, and Dan Romascanu of Avaya, and Guylain
Lavoie of SIP stack vendor M5T.
Cooper & Matthews Expires December 15, 2006 [Page 16]
Internet-Draft Eliminating Duplicate Checks June 2006
7. References
7.1. Normative References
[ICE-08] Rosenberg, J., "Interactive Connectivity Establishment
(ICE): A Methodology for Network Address Translator (NAT)
Traversal for Offer/Answer Protocols", draft-ietf-mmusic-
ice-08, work in progress.
[STUNbis] Rosenberg, J. et al, "Simple Traversal of UDP Through
Network Address Translators (NAT) (STUN), draft-ietf-
behave-rfc3489bis, work in progress.
[BEHAVE-UDP] Audet, F. and Jennings, C., "NAT Behavioral
Requirements for Unicast UDP", draft-ietf-behave-nat-udp,
work in progress.
7.2. Informative References
None
Author's Addresses
Eric Cooper
Avaya
1135 Innovation Drive
Ottawa, Ontario K2K 3G7
Canada
Phone: 613-592-4343 x228
Email: ecooper@avaya.com
Philip Matthews
Avaya
1135 Innovation Drive
Ottawa, Ontario K2K 3G7
Canada
Phone: 613-592-4343 x224
Email: philip.matthews@magma.ca
Intellectual Property Statement
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
Cooper & Matthews Expires December 15, 2006 [Page 17]
Internet-Draft Eliminating Duplicate Checks June 2006
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
ietf-ipr@ietf.org.
Disclaimer of Validity
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Copyright Statement
Copyright (C) The Internet Society (2006).
This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors
retain all their rights.
Acknowledgment
Funding for the RFC Editor function is currently provided by the
Internet Society.
Cooper & Matthews Expires December 15, 2006 [Page 18]