RE: How to transport BFCP in the presence of NATs

"Dan Wing" <dwing@cisco.com> Mon, 19 July 2010 23:40 UTC

Return-Path: <dwing@cisco.com>
X-Original-To: tsv-area@core3.amsl.com
Delivered-To: tsv-area@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 2C5883A6BB5 for <tsv-area@core3.amsl.com>; Mon, 19 Jul 2010 16:40:20 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -10.599
X-Spam-Level:
X-Spam-Status: No, score=-10.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id C0deLiGDhpD6 for <tsv-area@core3.amsl.com>; Mon, 19 Jul 2010 16:40:18 -0700 (PDT)
Received: from sj-iport-1.cisco.com (sj-iport-1.cisco.com [171.71.176.70]) by core3.amsl.com (Postfix) with ESMTP id CCFB43A6BB2 for <tsv-area@ietf.org>; Mon, 19 Jul 2010 16:40:11 -0700 (PDT)
Authentication-Results: sj-iport-1.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: Av0EAEd/REyrRN+K/2dsb2JhbACURospcalGmxyFIgSDfw
X-IronPort-AV: E=Sophos;i="4.55,229,1278288000"; d="scan'208";a="345239977"
Received: from sj-core-4.cisco.com ([171.68.223.138]) by sj-iport-1.cisco.com with ESMTP; 19 Jul 2010 23:40:08 +0000
Received: from dwingWS (dhcp-128-107-104-194.cisco.com [128.107.104.194]) by sj-core-4.cisco.com (8.13.8/8.14.3) with ESMTP id o6JNe8ae024023; Mon, 19 Jul 2010 23:40:08 GMT
From: Dan Wing <dwing@cisco.com>
To: 'Gonzalo Camarillo' <Gonzalo.Camarillo@ericsson.com>, tsv-area@ietf.org
References: <4C443E65.2050109@ericsson.com>
In-Reply-To: <4C443E65.2050109@ericsson.com>
Subject: RE: How to transport BFCP in the presence of NATs
Date: Mon, 19 Jul 2010 16:40:08 -0700
Message-ID: <05bf01cb279b$b8f92160$2aeb6420$@com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
X-Mailer: Microsoft Office Outlook 12.0
Thread-Index: AcsnOgXaDL9qCnlIT/mA2OAQV24Z+AAX/Q0A
Content-Language: en-us
Cc: geir.sandbakken@tandberg.com, mark.thompson@tandberg.com, trond.andersen@tandberg.com, eoin.mcleod@tandberg.com
X-BeenThere: tsv-area@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: IETF Transport Area Mailing List <tsv-area.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/tsv-area>, <mailto:tsv-area-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/tsv-area>
List-Post: <mailto:tsv-area@ietf.org>
List-Help: <mailto:tsv-area-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tsv-area>, <mailto:tsv-area-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 19 Jul 2010 23:40:21 -0000

> -----Original Message-----
> From: tsv-area-bounces@ietf.org [mailto:tsv-area-bounces@ietf.org] On
> Behalf Of Gonzalo Camarillo
> Sent: Monday, July 19, 2010 5:01 AM
> To: tsv-area@ietf.org
> Subject: How to transport BFCP in the presence of NATs
> 
> Folks,
> 
> BFCP (Binary Floor Control Protocol), defined in RFC 4582, runs between
> a client and a floor control server. Generally, the floor control
> server
> has a public IP address. The client establishes a TCP connection
> towards
> the floor control server so that, even if the client is behind a NAT,
> everything works.
> 
> However, in some existing deployment scenarios the floor control server
> functionality is implemented in an endpoint, which may be behind a NAT.
> A typical session between two endpoints in these scenarios consist of a
> BFCP connection and one or more media streams (e.g., audio and video)
> between them. In this type of scenario, NAT traversal becomes a
> problem.
> 
> Existing deployments implement different approaches to address the fact
> that the floor control server is not directly reachable. One of these
> approaches consists of transporting BFCP over UDP instead of over TCP
> (this approach is documented in the draft below). In this way, the
> endpoints can use ICE to find connectivity between them.
> 
> https://datatracker.ietf.org/doc/draft-sandbakken-xcon-bfcp-udp/
> 
> An alternative approach would be to still use TCP as a transport and
> use ICE TCP. However, the success rate of ICE TCP is not high enough 
> at this point. 

ICE TCP would do a TCP simultaneous-open ("SO") which can work in some NAT
environments, without needing to resort to building the application over
UDP.  If relying on hole punching (that is, an outgoing TCP SYN), the
environment depends on the OS and depends on the NAT.  With a TCP-based
connectivity check (like what ICE does), it can be better than building the
application over UDP.  See "P2PNAT" in
http://saikat.guha.cc/pub/imc05-tcpnat.pdf.  However, I don't know how well
TCP SO works with typical enterprise firewalls and typical enterprise NATs,
which I suppose is the primary place we would see BFCP.

> Yet another alternative would be to tunnel BFCP over TCP over
> UDP.  The XCON WG is aware of the guidelines given in RFC 5405 but would
like
> to ask the transport community for further guidance on this issue.

Using an ICE-like mechanism to determine which IP addresses work, and (of
those addresses) which works best (e.g., shortest path, least encapsulation
overhead) seems to provide the best union of pragmatism (making it work)
while still following IETF guidance (including "use TCP instead of UDP,
where possible").

Q: how quickly does the signaling channel with the BFCP server need to
be established?  

> Note that this is actually a general issue that will affect any
> protocol
> for which TCP would be the natural transport but that would need to run
> between endpoints in NATted environments. RELOAD
> (draft-ietf-p2psip-base) would be an example of a similar protocol
> (which currently intends to use ICE TCP).

I can tell that UPnP IGD / NAT-PMP would not be suitable, because BFCP is
used in enterprise networks where UPnP IGD / NAT-PMP are not available in
enterprise-class routers.

-d


> Given that this issue appear to be more general than BFCP and may
> affect
> other protocols, we would appreciate to get input on how to proceed.
> 
> Thanks,
> 
> Gonzalo