Hi again,

see below.

On 21.10.2015 18:19, Eric Rescorla wrote:
          > 8) Further the draft says in section 6, that there are two options
          > for implementation. And I disagree there. tcpinc should always be
          > implemented in the kernel and only if there is potentially an app
          > that also implements TLS there might be a config option to allow the
          > app to do the TLS handling if successfully negotiated in TCP. It is
          > not an option to have a tcpinc implementation that relies on the
          > possibility that the app might have TLS implemented because then we
          > are end up at a the state where we already are.

        We're defining a wire protocol here, so specifying particular
        implementation tactics seems out of scope. With that said, I
        don't think your assessment that we're back at the same state
        we always were. As I think I pointed out when I first introduced
        this draft, it addresses two problems with the same wire protocol:

        1. The basic TCPINC use case.
        2. Out-of-band negotiation of application-level TLS.

        An application-level implementation is totally consistent with #2.


    First of all, you have a section on implementation in the draft, I'm just
    commenting on what's written there.

    I think David, made this point as well: tcpinc is charter for case 1,
    that means there MUST be a kernel implementation.


I don't think this follows at all. The charter doesn't say anything about kernel
implementations. It says "The protocol must be usable by unmodified
applications" and
"The protocol must not require any authentication or configuration", but neither
of these require a *kernel* implementation. For example, one might implement
things with a divert socket (as the tcpcrypt implementation at
https://github.com/scslab/tcpcrypt does, though I know they have a kernel
implementation.). So this means you need a whole-system implementation
but doesn't mean you need a kernel one.

Okay, you are right, I was using 'kernel implementation' as a synonym for 'stand-alone implementation' or 'whole system implementation' as you just named it and that's wrong; sorry. And I was also naturally assuming that we sooner or later want to provide a kernel implementation here. But that's a different story.

However, the point is that the second option where tcpinc would rely on an implementation in the app as written in you draft is not an option for tcpinc:

"   o  Implement just the TCP-TLS negotiation option in the operating
      system kernel with an interface to tell the application that TCP-
      TLS has been negotiated and therefore that the application must
      negotiate TLS."


Another concrete scenario (which is attractive for a TLS implementation) is to
use a minimal kernel component (or a divert socket) to do the ENO options
with a modified libc to actually do the TLS negotiation and data handling.
This would also provide system-wide support but would not be in the kernel.
I don't see anything in the charter which prohibits this.

In don't really see how to deploy this, because than you have a kernel implementation that requires a certain lib to be installed. In this case you probably should implement the lib in the kernel right away.



    Case 2 might be supported but doesn't have to to fulfill our charter. Of
    course I agree that case 2 makes a lot of sense if we use tls.

    However, the point is, as long as the doc says that you can fulfill the
    specification of tcpinc even though you have an implementation that only
    uses tcpinc if TLS is supported by the app, this doc is not a tcpinc doc
    because it does not address our charter.


I think this is kind of a semantic distinction, but would you consider it
satisfactory
if this were rewritten to indicate that it is possible to build an
implementation which will
interoperate with a system-wide implementation (scenario 1) using solely an
application-level
technique?

If you mean a user-space implementation as provided by tcpcrypt, where you redirect TCP traffic back into user-space (and all tcpinc is implemented in user space without kernel modifications), then yes that's okay.

At this point it is important to have a full and stand-alone implementation that can be used with any app to show the feasibility and check that the given specification is clear and complete.

However, this can, from my point of view, only be a intermediate solution to enable faster deployment, where the final goal would still be a kernel implementation. But that's my personal point of view here.

Mirja



_______________________________________________
Tcpinc mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/tcpinc

Reply via email to