Re: SACRED Protocol (long!)

Dave Crocker <[email protected]> Mon, 10 Dec 2001 13:46:19 -0700
Newsgroups gmane.ietf.sacred
Message-ID <[email protected]>
Dale,

At 09:01 AM 12/10/2001 -0600, Dale Gustafson wrote:
>As it's currently defined, the base SACRED protocol is fairly straightforward:
>
>  - Mutually authenticate client and server,

A function that SASL already performs


>  - dynamically negotiate a strong encryption key (session key) known only to
>client and server,

A function that SASL already performs


>  - client sends in a single request message (encrypted with session key),
>  - server returns a single response message (encrypted with session key).

Functions that require some infrastructure, above TCP and below the SACRED 
semantics.

No matter how few or simple the interactions.


>It appears that BEEP is aimed primarily at simplifying and accelerating the
>design and implementation of sophisticated application protocols.

Primarily?  Sophisticated?  No and No.

All applications need framing and error codes and basic mechanisms for 
exchanging things.  BEEP standardizes these.  If you do not use BEEP, you 
must (re-)invent some other method of performing them.

Negotiating options, such as SASL, is typically required.  Again if you do 
not use BEEP, you must re-invent them.  However if an application does not 
need negotiation, the cost of it is not incurred.  For SACRED, it appears 
that SASL can solve some standard requirements in a standardized way.  Why 
anyone would want to re-invent mechanisms that are a) already working well, 
and b) difficult to design and deploy successfully, is a matter of some 
curiosity and should be a matter of very great concern.

The multiplexing mechanism of BEEP is a different matter from the 
others.  It is somewhat innovative (or at least unusual), not simple enough 
to call trivial, and does not yet have large amounts of operational 
experience.  So it is nicely convenient that if you do not need its 
benefits, you do not incur its costs.  On the other hand, if you DO need 
those facilities, you should be eager to avoid re-inventing them, since 
they are known to carry significant risk.

The bottom line, therefore, is that the BEEP method of performing 
particular functions adds essentially no overhead to a protocol that needs 
those functions.  And for protocols that do not need particular BEEP 
sub-functions, BEEP adds no overhead at all.

The only question, therefore, is where the pieces come from.  They can come 
from a standardized place, like BEEP, or they can be 
re-invented.  (Re-)inventing mechanisms -- even very small bits of 
mechanism -- carries far more cost and risk than is generally 
appreciated.  What is small and simple and easy for an individual developer 
is different for an Internet-scale effort.  Internet efforts are always 
large, expensive and risky.  (For those so inclined, think of it as the 
difference in cost between engineering a product vs. total life-cycle cost 
for the product, and in risk between building something simple vs. ensuring 
that the business selling it is successful.)

The premise behind BEEP is that using BEEP saves the community considerable 
effort/cost and reduces risk.  Again, let me caution that we distinguish 
between an individual's perspective on effort and risk, versus the 
community view.  Most people do an analysis in personal terms, rather than 
knowing or thinking about community-level issues.


>   The SACRED request-response protocol seems to be a relatively poor fit 
> for BEEP's
>capabilities

On the contrary, it seems like an excellent fit, as noted above.


>A dominant techical factor affecting the SACRED protocol is that it will often
>be used with highly constrained client devices.  It may not yet be clear 
>to many
>how much that technical factor tends to overwhelm others.

Perspective on "highly constrained" changes over the years.  From an 
historical perspective, the idea that anything that is considered highly 
constrained would use HTTP is, in fact, downright amusing.

Less frivolously, I challenge the claim that BEEP somehow introduces 
significant overhead, beyond that inherent in the functions it 
performs.  That is, for the substructure functions that SACRED needs to 
perform, I challenge that they can be performed with massively less 
overhead than BEEP incurs.

The one point of debate might be default data encoding, since MIME and XML 
are not maximally efficient.  This issue is a matter of long-standing 
debate in the applications protocol community, and has generally 
demonstrated preference and success for text encoding.


>  I think it's easier to see that Magnus'
>conclusion that it's preferable to include all functions described above 
>within
>the SACRED protocol (e.g., sooner rather than later) is probably unavoidable
>and, most importantly, it would be significantly less painful to establish 
>such
>a stucture now.

It always seems better to create a fully self-contained facility.  For 
Internet design, the history is that it is not only NOT better, but in fact 
it is just plain wrong.



At 11:37 AM 12/10/2001 -0500, Linn, John wrote:
>  Relative to most applications, SACRED is quite
>a special case.

Every application is special.

What are the specific technical or operational aspects of SACRED that make 
it unique?  I am hoping that there is more than you cited in your note.


>As far as transport integration is concerned, is there any existing practice
>in evaluating how effectively and comprehensively non-BEEP transports can be
>applied to implement the BEEP interface?  As applications go, I think
>SACRED's transport requirements will be fairly simple (e.g., purely
>synchronous exchanges)

OK.  That means you do not need BEEP's asynchrony.  So, don't use it.


>, but other applications where SACRED might be
>incorporated as an element will probably establish their transport choices
>against their own priorities and constraints.

There is a fascinating effect caused by creating a separate 
"layer":  People often tend to think that because it is separate it is 
extra or different, whereas tight integration automatically makes things 
cleaner, simpler, and/or more efficient.

That thinking is quite simply wrong.

Somethat that I create is more familiar to me than something I get from 
elsewhere.  However the fact of familiarity does not have any relationship 
to quality, ease or cost, no matter how wonderful I might think my own 
creation.

d/


----------
Dave Crocker  <mailto:[email protected]>
Brandenburg InternetWorking  <http://www.brandenburg.com>
tel +1.408.246.8253;  fax +1.408.273.6464


d/

----------
Dave Crocker  <mailto:[email protected]>
Brandenburg InternetWorking  <http://www.brandenburg.com>
tel +1.408.246.8253;  fax +1.408.273.6464