Subject: [Spud] Balancing optimiizations (was SPUD Scope)

From: Ted Hardie <[email-masked]>
Date: Mon, 8 Jun 2015 09:21:10 -0700

Howdy,

So, reading through
​the comment thread on scope, I felt again that we're missing the character
of the work as experimental and, more importantly, as supporting
experimentation.

The question we're asking, at its core, is how do we increase the ability
of protocols to explore different congestion control, pacing, and
reliability parameters (a.k.a. how do we evolve the protocols using the
network)?

It has become apparent that some of that experimentation is going on in
user space, using UDP as a substrate.  SPUD is trying to extend that
substrate to provide a common mechanism for indicating specific packets are
grouped together, so that experiments can determine whether network
treatment can vary when they are so grouped.  The extensions beyond that
are to determine whether network treatment can be influenced by semantics
attached to the grouping.  The core commands are similar to those already
shared by TCP:  open, close, ack, normal data.

​All the declaration bits after that point are potential optimizations that
can be dropped​ at any time by any party, but the experiments the
availability of those bits allow you to run are important.  A core question
behind those experiements is  "Can you tell the path something the elicits
specific network treatment without disclosing more than the desired
treatment?".  The corresponding question is "Can how the application puts
traffic onto a path vary in response to path indications without simply
trusting those declarations?"  The experiments may end up answering those
questions with "Yes" or "No", but we'd like to run the experiments to see.

No one thinks SPUD is done or ready for standardization; it's not.
​It's context for a set of experiments, not a solution. The result may tell
us that the grouping mechanism does no good and the whole effort should
drop.  It may tell us that the grouping is useful and some, but not all, of
the core commands work.  It may tell us that only declarative bits like
"discard-preferred" are safe.​

But if we can't experiment at all with what common substrates would look
like, we know our evolution has limits.  Those limits don't necessarily
produce better privacy results; it just pushes the problem into each
protocol built on UDP and ossifies whatever choices made it through
middleboxes already.
​I think the community should see if that's better before deciding it is so.
​

No hats,

Ted