Subject: [Anima-signaling] GRASP and unicast UDP

From: Brian E Carpenter <[email-masked]>
Date: Wed, 17 Aug 2016 16:42:40 +1200

To entertain myself while waiting for comments on other matters, I spent
quite some time (and swear words) on hacking the prototype GRASP to use
UDP instead of TCP for unicast operations (i.e. discovery responses,
synchronization responses, and negotiation).

My conclusion is that it's a fairly silly thing to do, except possibly
for discovery, which only involved a normal amount of debugging. I'm sure
this is something that DNS server developers are very familiar with:
writing a robust server handling things over UDP is a great deal harder
than doing it with TCP. In fact I gave up when I realised that for
the negotiation case (where there are an unpredictable number of messages
in both directions) I was basically going to have to rewrite half of TCP,
and still not have a robust solution. Without a lot more work, the UDP
solution is riddled with timing-dependent issues. (At one point, adding
a print statement for debugging fixed the bug, so that I simply couldn't
debug it...)

Of course, all this could be solved with more work, but I'm really not
sure we should recommend UDP at all, except for discovery responses.
I can't really imagine a real autonomic node that doesn't have TCP code.

Comments?

    Brian

---

From: Toerless Eckert <[email-masked]>
Date: Tue, 16 Aug 2016 23:23:14 -0700

Thanks a lot for the insight. How about trying CoAP ?

On Wed, Aug 17, 2016 at 04:42:40PM +1200, Brian E Carpenter wrote:
> _______________________________________________
> Anima-signaling mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/anima-signaling

---

From: Toerless Eckert <[email-masked]>
Date: Wed, 17 Aug 2016 13:15:31 -0700

Thanks, Brian

I think your self-experience with UDP should help to rule that out.
Not sure how much of that experience summary could go for example
into explanatory draft text. I am always a fan of that, but most people
on the IETF seemingly not.

Wrt to CoAP: I would hope that similar to bootstrap, we could define
CoAP as an extension, so that we can continue to keep the main GRASP
draft on a fast track to WGLC.

Cheers
    Toerless

On Thu, Aug 18, 2016 at 08:10:23AM +1200, Brian E Carpenter wrote:
> On 17/08/2016 18:23, Toerless Eckert wrote:
> Two comments on that.
> 1) I woke up before the alarm went off this morning, and had exactly that
> thought. But I'd have to study CoAP in detail to understand whether it
> helps. Maybe Carsten can advise on this.
> 
> (In GRASP, you may get multiple simultaneous requests or multiple simultaneous
> discovery responses. The problem in a nutshell is that with TCP you have
> accept(), which fires up a new socket for each incoming transaction, but with
> UDP you have to manage sharing the socket yourself.)
> 
> 2) I also realised that we can't leave it open in GRASP whether discovery
> uses TCP or UDP for the discovery response. Otherwise discovery might not work
> between two random implementations.
> 
>    Brian
> 
> > 

-- 
---
Toerless Eckert, [email-masked]

---

From: Brian E Carpenter <[email-masked]>
Date: Thu, 18 Aug 2016 08:10:23 +1200

Two comments on that.

   Brian

---

From: Brian E Carpenter <[email-masked]>
Date: Thu, 18 Aug 2016 16:42:07 +1200

> on the IETF seemingly not.

I will tune the section on Transport Layer Usage accordingly, and
maybe add a note to the Implementation Status section.

> draft on a fast track to WGLC.

Yes, I agree. I will also add a note that other transports are "out
of scope for this document."

    Brian