[e2e] Layering vs. modularization
David P. Reed
dpreed at reed.com
Thu May 15 15:20:48 PDT 2008
Two challenges to proponents of the thesis that "layering can be done
a) What specific problem in network systems design does a particular
layering solve? Can you quantify the adequacy of solution (without
resorting to use of the concept of layering in a circular manner). And
is there an alternative solution to that problem? I'd suggest that if
you can't state the problem unambiguously and in a way that admits of
alternative approaches, then layering always "works". It's like saying
that evolution creates the optimum result. It's either vacuous to say
that, or worse, it's eugenicism. As a matter of rhetoric, saying that
"layering" works when "done right" is unfalsifiable. It's a tautology
because it's essentially just uninterpreted symbols on the page.
(I would be presumptive to state the problem, since I would claim that
it's not very useful. But I'd be convinced, for example, if someone
picked a problem like: "allowing the Internet to evolve with minimum
disruption due to new applications demanded by users". An alternative
approach would be to state that all implementations of network protocols
should be written in a common language with an open source license
agreement and a community process. One could then test the hypothesis
that layering helps by various evaluative metrics).
b) Explain protocol encapsulation (sending IPv6 datagrams within UDP
VPN packets over a TCP based overlay network implemented in userspace
stacks on machines that offload part of the VPN implementation to a peer
within a bluetooth subnet) as a form of layering? It seems to me that
encapsulation is akin to allowing recursion in one's language.
Languages that allow recursion are unlike FORTRAN 77, which is "layered".
c) where does "security" go in a functional layering? I would argue -
everywhere, and nowhere. Information leaks at all levels of a layered
system. Denial of service is possible at all layers.
It seems to me that "layering" is a collective hallucination.
Joe Touch wrote:
> John Day wrote:
>> Gee, the only layering I have ever seen that had problems were the
>> ones done badly, such as with the Internet and OSI. In my
>> experience, if you do it right, it actually helps rather than gets in
>> the way.
> That's been my perspective as well; most of the issues I've seen with
> layering problems - including "layer violation" really turned out to
> be gaps in the layering structure that were patched over with
> violations rather than fixed correctly.
> We've seen a few key issues with layering (insert self promotion
> warning here), and our observations suggest that it may be a
> fundamental construct, rather than an artifact to be "erased" in a
> clean-slate approach:
> 1. layering often focuses on the layers and ignores the inter-layer
> glue; Yu-Shun Wang's thesis (a recent PhD student of mine) focused on
> this issue, and found numerous ways in which the interlayer glue was
> similar at nearly every layer boundary, and could be addressed by an
> additional, meaningful generic mechanism
> 2. layering disagreements sometimes revolve around what each layer
> means, as unique from other layers; our NSF FIND "RNA" project (to
> appear at ICCCN, Future Internet track) is exploring the ways in which
> layers are internally similar, but their behavior is governed by their
> relative position (what's above and below) and their scope
> (distance/time extent). This turns the "one layer to bind them all"
> (ala XTP) into a single 'stem cell' layer that acts like different,
> well-known OSI layers when stacked. The idea is that the environment
> of a layer defines the layer, and that layering is semantically useful
> in composing services on each other.
More information about the end2end-interest