[BEHAVE] Transport of ICMP errors in TURN

Marc Petit-Huguenin <petithug@acm.org> Sat, 24 November 2007 21:01 UTC

Return-path: <behave-bounces@ietf.org>
Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1Iw28R-0007FD-IE; Sat, 24 Nov 2007 16:01:55 -0500
Received: from behave by megatron.ietf.org with local (Exim 4.43) id 1Iw28Q-0007F6-Dg for behave-confirm+ok@megatron.ietf.org; Sat, 24 Nov 2007 16:01:54 -0500
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1Iw28Q-0007Ey-4E for behave@ietf.org; Sat, 24 Nov 2007 16:01:54 -0500
Received: from server.implementers.org ([69.55.225.91]) by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1Iw28N-0001wa-HO for behave@ietf.org; Sat, 24 Nov 2007 16:01:54 -0500
Received: by server.implementers.org (Postfix, from userid 1001) id DC3A4D9D4038; Sat, 24 Nov 2007 13:01:50 -0800 (PST)
Received: from [192.168.1.3] (c-24-4-253-5.hsd1.ca.comcast.net [24.4.253.5]) by server.implementers.org (Postfix) with ESMTP id 3D6B87F001C for <behave@ietf.org>; Sat, 24 Nov 2007 13:01:48 -0800 (PST)
Message-ID: <4748913B.8090806@acm.org>
Date: Sat, 24 Nov 2007 13:01:47 -0800
From: Marc Petit-Huguenin <petithug@acm.org>
User-Agent: Mozilla-Thunderbird 2.0.0.6 (X11/20071008)
MIME-Version: 1.0
To: behave@ietf.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Spam-Score: 0.0 (/)
X-Scan-Signature: 8b431ad66d60be2d47c7bfeb879db82c
Subject: [BEHAVE] Transport of ICMP errors in TURN
X-BeenThere: behave@ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: mailing list of BEHAVE IETF WG <behave.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/behave>, <mailto:behave-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www1.ietf.org/pipermail/behave>
List-Post: <mailto:behave@ietf.org>
List-Help: <mailto:behave-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/behave>, <mailto:behave-request@ietf.org?subject=subscribe>
Errors-To: behave-bounces@ietf.org

draft-ietf-mmusic-ice-17 section 7.1.2.1 says that "[a]gents MAY support
receipt of ICMP errors for connectivity check."  Unfortunately there is
no way to receive a ICMP error when the connectivity check is carried
over TURN.  Here's an example:

+------ Client -----+
ICE       Turn client                         Turn Server       Peer
 | Binding Req |                                  |               |
 |------------>| 0 Send(123, peer, Binding Req)   |               |
 |             |--------------------------------->| Binding Req   |
 |             |  0 Channel Confirmation Ind(123) |-------------->|
 |             |<---------------------------------|        ICMP 3 |
 |             |                                  |<--------------|
 | Binding Req |                                  |               |
 |------------>| 123 Binding Req                  |               |
 |             |--------------------------------->| Binding Req   |
 |             |                                  |-------------->|
 |             |                                  |        ICMP 3 |
 |             |                                  |<--------------|
 :             :                                  :               :


I suggest to add a new indication that will carry the ICMP content to
the TURN client so the Binding transaction can fail earlier:

+------ Client -----+
ICE       Turn client                         Turn Server       Peer
 | Binding Req |                                  |               |
 |------------>| 0 Send(123, peer, Binding Req)   |               |
 |             |--------------------------------->| Binding Req   |
 |             |  0 Channel Confirmation Ind(123) |-------------->|
 |             |<---------------------------------|        ICMP 3 |
 |             |  0 Icmp Ind(source, data)        |<--------------|
 |      ICMP 3 |<---------------------------------|               |
 |<------------|                                  |               |


The new indication contains a PEER-ADDRESS attribute that contain the
source IP address/port of the ICMP packet, some other attributes to
carry the ICMP values (type, code and next-hop MTU) and a DATA attribute
that contain the data copied from the original UDP packet.  The ICMP
spec mandates to copy only the IP header and 8 additional bytes, i.e.
the UDP header, which should be enough to match the Binding transaction
if there is only one pending.  Some IP implementations returns even more
data, so the STUN transaction Id could be available to find the transaction.

-- 
Marc Petit-Huguenin           [                                 ]
Home: marc@petit-huguenin.org [RFC1855-compliant space for rent ]
Work: marc@8x8.com            [                                 ]
[                                                               ]


_______________________________________________
Behave mailing list
Behave@ietf.org
https://www1.ietf.org/mailman/listinfo/behave