Re: [Taps] Drive-by comments on draft-fairhurst-taps-transports-usage-udp-01

Joe Touch <touch@isi.edu> Thu, 07 April 2016 19:24 UTC

Return-Path: <touch@isi.edu>
X-Original-To: taps@ietfa.amsl.com
Delivered-To: taps@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1DFD912D5BF for <taps@ietfa.amsl.com>; Thu, 7 Apr 2016 12:24:02 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.91
X-Spam-Level:
X-Spam-Status: No, score=-6.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, T_RP_MATCHES_RCVD=-0.01] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id eNsvGpP5iMYe for <taps@ietfa.amsl.com>; Thu, 7 Apr 2016 12:23:59 -0700 (PDT)
Received: from vapor.isi.edu (vapor.isi.edu [128.9.64.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 62E9B12D54F for <taps@ietf.org>; Thu, 7 Apr 2016 12:23:58 -0700 (PDT)
Received: from [207.151.56.219] (guest-wireless-207-151-056-219.usc.edu [207.151.56.219]) (authenticated bits=0) by vapor.isi.edu (8.13.8/8.13.8) with ESMTP id u37JNHZr000469 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Thu, 7 Apr 2016 12:23:27 -0700 (PDT)
To: "Dale R. Worley" <worley@ariadne.com>, gorry@erg.abdn.ac.uk
References: <87egahtg5d.fsf@hobgoblin.ariadne.com>
From: Joe Touch <touch@isi.edu>
Message-ID: <5706B3A3.3090309@isi.edu>
Date: Thu, 07 Apr 2016 12:23:15 -0700
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.7.1
MIME-Version: 1.0
In-Reply-To: <87egahtg5d.fsf@hobgoblin.ariadne.com>
Content-Type: text/plain; charset="windows-1252"
Content-Transfer-Encoding: 7bit
X-ISI-4-43-8-MailScanner: Found to be clean
X-MailScanner-From: touch@isi.edu
Archived-At: <http://mailarchive.ietf.org/arch/msg/taps/aJW3xX4ASIJCMAQQRV9Rgcfwj7I>
Cc: taps@ietf.org, touch@isi.edu
Subject: Re: [Taps] Drive-by comments on draft-fairhurst-taps-transports-usage-udp-01
X-BeenThere: taps@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Discussions on Transport Services <taps.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/taps>, <mailto:taps-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/taps/>
List-Post: <mailto:taps@ietf.org>
List-Help: <mailto:taps-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/taps>, <mailto:taps-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 07 Apr 2016 19:24:02 -0000


On 4/7/2016 11:42 AM, Dale R. Worley wrote:
> gorry@erg.abdn.ac.uk writes:
>> I agree - the current format from the text comes from the existing text 
>> for TCP and SCTP in another draft. and I think we  may need to work out
>> how to handle
>> [...]
>> I probably need help - I think there are different many ways in which UDP
>> uses ports. Offers from anyone on how to get started would be great.
> 
> Even in TCP, the semantics of connection setup is more complicated that
> you'd think at first.  If I have it correctly, it runs:
> 
> 	Passive		Active
> 	Endpoint	Endpoint
> 
> 	Create socket
> 	Bind socket to listening address

There's a step here where you get to set the limit on how many pending
connection requests can be allowed (the listen() call), but that's an
OS-ism IMO, not a protocol or API issue.

> 	Activate listening
> 
> 			Create socket

optionally bind to local address

> 			Connect
> 
> 	Incoming connection event
> 	Accept connection

an optional parameter to this accept call involves whether the remote
socket pair is specified or not.

> At least in the protocol, it's possible for both endpoints to be active,
> but they have to have prior agreement regarding the addresses and ports

almost - they only need to agree on the port one one side exactly; in
both cases, the addresses need to reach each other but could be one of
any number of addresses on the machine.

E.g.:

	A calls B.alpha using dest port 80
while
	B calls A.omega using source port 80

> and send their initial packets within one RTT of each other, so I don't
> know if that possibility is ever used in practice. 

It happens routinely if you end up calling yourself.

> Or whether the
> Berkeley sockets API supports it.

It should, as per above.

> OTOH, the TAPS work might not be attempting to capture the semantics of
> connection setup.

It had better, IMO.

> The process for UDP is not much simpler.  My memory is:
> 
> 	Passive		Active
> 	Endpoint	Endpoint
> 
> 	Create socket
> 	Bind socket to listening address
you only need to bind to a port; the address can float

you can optionally also lock the remote address using the "connect"
call, even though it doesn't issue a connection.

> 			Create socket
> 			Send-to -or- Connect, then Send

or bind too. Same reasons - you can pin the local or remote socket pair.


> 	Incoming connection event
> 	Connect (in the TAPS paradigm)

IMO, this should be removed. There can't be state associated with UDP.

> 	Incoming packet event
> 	Receive packet

The receive packet for UDP passes more information than for TCP; in UDP,
you need to indicate where the message came from too.