Re: [Spud] Connect and ACK Bits: Why?

Mirja Kühlewind <mirja.kuehlewind@tik.ee.ethz.ch> Mon, 13 July 2015 12:09 UTC

Return-Path: <mirja.kuehlewind@tik.ee.ethz.ch>
X-Original-To: spud@ietfa.amsl.com
Delivered-To: spud@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D54431ACDCA for <spud@ietfa.amsl.com>; Mon, 13 Jul 2015 05:09:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.011
X-Spam-Level:
X-Spam-Status: No, score=-2.011 tagged_above=-999 required=5 tests=[BAYES_20=-0.001, MIME_8BIT_HEADER=0.3, RCVD_IN_DNSWL_MED=-2.3, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
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 PpfG1nGj1UMI for <spud@ietfa.amsl.com>; Mon, 13 Jul 2015 05:09:48 -0700 (PDT)
Received: from smtp.ee.ethz.ch (smtp.ee.ethz.ch [129.132.2.219]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 2059B1ACD6A for <spud@ietf.org>; Mon, 13 Jul 2015 05:09:47 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1]) by smtp.ee.ethz.ch (Postfix) with ESMTP id 5A06AD9303; Mon, 13 Jul 2015 14:09:46 +0200 (MEST)
X-Virus-Scanned: by amavisd-new on smtp.ee.ethz.ch
Received: from smtp.ee.ethz.ch ([127.0.0.1]) by localhost (.ee.ethz.ch [127.0.0.1]) (amavisd-new, port 10024) with LMTP id MsAOyOQK0btt; Mon, 13 Jul 2015 14:09:46 +0200 (MEST)
Received: from [192.168.178.33] (x4d02d263.dyn.telefonica.de [77.2.210.99]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: mirjak) by smtp.ee.ethz.ch (Postfix) with ESMTPSA id BDE92D9302; Mon, 13 Jul 2015 14:09:45 +0200 (MEST)
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2102\))
From: =?utf-8?Q?Mirja_K=C3=BChlewind?= <mirja.kuehlewind@tik.ee.ethz.ch>
In-Reply-To: <CANJ8QndAWK1ErRsUNAUHkA00aA5xzFsaQHiArCaN9jr64qCSnQ@mail.gmail.com>
Date: Mon, 13 Jul 2015 14:09:44 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <FD304957-E34A-4CA5-B05A-3394D9062F1D@tik.ee.ethz.ch>
References: <CANJ8QndAWK1ErRsUNAUHkA00aA5xzFsaQHiArCaN9jr64qCSnQ@mail.gmail.com>
To: Jacob Chappell <chappellind@gmail.com>
X-Mailer: Apple Mail (2.2102)
Archived-At: <http://mailarchive.ietf.org/arch/msg/spud/BEacSYRei2kLsQG-wWnDEmxrUSk>
Cc: spud@ietf.org
Subject: Re: [Spud] Connect and ACK Bits: Why?
X-BeenThere: spud@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Session Protocol Underneath Datagrams <spud.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/spud>, <mailto:spud-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/spud/>
List-Post: <mailto:spud@ietf.org>
List-Help: <mailto:spud-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/spud>, <mailto:spud-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 13 Jul 2015 12:09:51 -0000

Hi Jacob,

I believe nobody answered this mail so far, so I’ll have a try. We’ve been discussing this a lot and also have not decided if we will need these flags or not. See further below.


> Am 08.07.2015 um 19:32 schrieb Jacob Chappell <chappellind@gmail.com>om>:
> 
> Good afternoon, everyone.
> 
> There's been something bothering me since I started working with SPUD. Now that I realize there's a mailing list, I figure why not ask here?
> 
> My question is, why is connect/ack part of the SPUD protocol? The purpose of these commands does not seem clear from the draft.

May I ask which draft you are referring here? The prototype draft really only is a prototype which mean one example protocol that might or might not address the needs. In the mean time there is also a requirement draft as well as a use case draft that are basically independent of the finally protocol design. The both also suggest to have a start flag as well as an ACK and maybe give slightly more discussion on this (but might also need more discussion). While it is less clear if we actually need a start bit, we definitely would like to require SPUD to basically send an ACK… see below.

> For one, SPUD runs over UDP, so there's no guarantee the connect or ack will even make it to the other side. Second, a previous message on this mailing list from the archives indicates that you don't even have to wait for an ack to send a data packet. This makes sense, because the ack may be lost in transit (or maybe the original connect was lost in transit). But if this is the case, what's the point in even having connect/ack as part of the protocol?

The idea is to assist network devices to set up state. E.g. a firewall might forward the connect/start packet to the receiver behind the firewall but is only willing to forward additional packets if the receiver send at least one packet to confirm that this is a wanted connection. That’s why we think an ACK is useful.

The connect/start is rather to distinguish if there actually is a newly starting flow or a middlebox only sees the middle of a flow because the flow was e.g. rerouted. In this case the middlebox might not be willing to sst up state but maybe sends an error message to the sender instead. As I said this is all still under discussion.

The question if you are going to resent a connect/start packet in SPUD because it or the corresponding ACK packet was lost depends on the higher layer protocol you are using over SPUD. SPUD (over UDP) is not indented to be used as a stand-alone transport protocol but is rather a shim layer between network and transport. So you could have e.g. TCP over SPUD over UDP or UDP over SPUD over UDP. In case of TCP you probably retransmit the SYN and therefore also the SPUD connect. In case of UDP you might not retransmit and simply try to send data without knowing if they will be received or not as your application might do it over UDP today as well.

> 
> It seems like a possible alternative would be to just send data packets spontaneously. The client can just be sure to generate a new tube ID when sending to a new destination/port pair, and maintain that state. Ultimately, you're going to have to use timers to expire state in case of packet loss, so why not just use timers exclusively?

As described above it’s more about network state then client state. However, you probably will always need timers because you can never be sure that certain information will be delivered. However, if you can get more explicitly signals (and that’s why we also would like to have a SPUD finish/stop packet) you can assist network nodes as well as end host to e.g remove state quicker  and maybe also use SPUD to set timer values correctly (see the use case draft).

Mirja


> 
> Jacob Chappell
> _______________________________________________
> Spud mailing list
> Spud@ietf.org
> https://www.ietf.org/mailman/listinfo/spud