[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[MMUSIC] Re: [Tsvwg] I-D Action:draft-ietf-tsvwg-udp-guidelines-02.txt



On 2007-7-23, at 19:20, ext Colin Perkins wrote:
On 9 Jul 2007, at 04:50, Internet-Drafts at ietf.org wrote:
http://www.ietf.org/internet-drafts/draft-ietf-tsvwg-udp- guidelines-02.txt

Section 3.5 states:

Applications MAY in addition send periodic keep-alive messages to
attempt to refresh middlebox state. Unfortunately, no common timeout
has been specified for per-flow UDP state for arbitrary middleboxes.
For NATs, [RFC4787] requires a state timeout of 2 minutes or longer,
and it is likely that other types of middleboxes use timeouts of
similar timescales. Consequently, if applications choose to send
periodic keep-alives, they SHOULD NOT send them more frequently than
once every two minutes. (Not that some deployed middleboxes use a
shorter timeout value than 2 minutes, violating [RFC4787].)


which is fine, except that draft-ietf-mmusic-ice-17 suggests a 15 second keep alive interval by default. Can we align these?

We discussed this in the hallways in Chicago, and I've become grudgingly convinced that for specialized uses of UDP, where communication disruptions due to disappearing middlebox state are highly problematic (e.g., media transmission), 15-second timeouts are probably needed. But I did want to make it clear that such timeouts - or even the use of keepalives in general - are not recommended for arbitrary UDP applications.


Below is the modified Section 3.5 from my working copy of -03 FYI. Please let me know what you think of the changes.

Lars


3.5. Middlebox Traversal Guidelines

Network address translators (NATs) and firewalls are examples of
intermediary devices ("middleboxes") that can exist along an end-to-
end path. A middlebox typically performs a function that requires it
to maintain per-flow state. For connection-oriented protocols, such
as TCP, middleboxes snoop and parse the connection-management traffic
and create and destroy per-flow state accordingly. For a
connectionless protocol such as UDP, this approach is not possible.
Consequently, middleboxes may create per-flow state when they see a
packet that indicates a new flow, and destroy the state after some
period of time during which no packets belonging to the same flow
have arrived.


Depending on the specific function that the middlebox performs, this
behavior can introduce a time-dependency that restricts the kinds of
UDP traffic exchanges that will be successful across the middlebox.
For example, NATs and firewalls typically define the partial path on
one side of them to be interior to the domain they serve, whereas the
partial path on their other side is defined to be exterior to that
domain. Per-flow state is typically created when the first packet
crosses from the interior to the exterior, and while the state is
present, NATs and firewalls will forward return traffic. Return
traffic arriving after the per-flow state has timed out is dropped,
as is other traffic arriving from the exterior.


Many applications that use UDP for communication operate across
middleboxes without needing to employ additional mechanisms. One
example is the DNS, which has a strict request-response communication
pattern that typically completes within seconds.


Other applications may experience communication failures when
middleboxes destroy the per-flow state associated with an application
session during periods when the application does not exchange any UDP
traffic. Applications SHOULD be able to gracefully handle such
communication failures and implement mechanisms to re-establish their
UDP sessions.


   For some applications, such as media transmissions, this re-
   synchronization is highly undesirable, because it can cause user-
   perceivable playback artifacts.  Such specialized applications MAY
   send periodic keep-alive messages to attempt to refresh middlebox
   state.  It is important to note that keep-alive messages are NOT
   RECOMMENDED for general use - they are unnecessary for many
   applications and can consume significant amounts of system and
   network resources.

   An application that needs to employ keep-alives to deliver useful
   service in the presence of middleboxes SHOULD NOT transmit them more
   frequently than once every 15 seconds and SHOULD strongly consider
   using longer intervals.  No common timeout has been specified for
   per-flow UDP state for arbitrary middleboxes.  For NATs, [RFC4787]
   requires a state timeout of 2 minutes or longer.  However, empirical
   evidence suggests that a significant fraction of the deployed
   middleboxes unfortunately uses shorter timeouts.  The timeout of 15
   seconds originates with the Interactive Connectivity Establishment
   (ICE) protocol [I-D.ietf-mmusic-ice].

It is important to note that sending keep-alives is not a substitute
for implementing a robust connection handling. Like all UDP
messages, keep-alives can be delayed or dropped, causing middlebox
state to time out. In addition, the congestion control guidelines in
Section 3.1 cover all UDP transmissions by an application, including
the transmission of middlebox keep-alives. Congestion control may
thus lead to delays or temporary suspension of keep-alive
transmission.


Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
mmusic mailing list
mmusic at ietf.org
https://www1.ietf.org/mailman/listinfo/mmusic