Re: Last Call: <draft-ietf-tcpm-urgent-data-06.txt> (On the implementation of the TCP urgent mechanism) to Proposed Standard

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Sep 7, 2010, at 11:06 PM, Fernando Gont wrote:

Hi, Keith,

* No requirements are imposed on TCP implementations.
The "requirement" on TCP implementations is in Section 4 (page 7).
However, it doesn't use RFC 2119 language as the text that it is
updating (RFC 793, RFC 1122) doesn't use RFC-2119, either.

Mumble.  I really don't like the term "updating" when referring to
existing RFCs because we don't change the text of those RFCs.  

RFC's that update other RFCs explicitly indicate so in the front page.
So I don't see there's a conflict with the use of the term "Updates".

I wouldn't call it a conflict.   More like a lack of clarity.   To me, the document reads as if you're imposing more of a burden on applications than you are on TCP stacks.

* This document also does not place any constraints on
intermediaries, even though the document itself acknowledges that
intermediaries interfere with operation of the TCP urgent
facility.
No TCP specs that I know of accommodate packet scrubbers or
firewalls that simply decide to clear a bit, etc (except for NATs,
which are a completely different issue). When they do (e.g., ECN),
it's to discourage such behavior.

Mumble.  This is obviously a lot bigger problem than just this one
document.  But it is a huge problem that IETF has, and (because it's
so limited in scope) your document is as good a place as any to start
addressing it.

IETF nearly always takes a "somebody else's problem" view with
respect to intermediaries.    IETF will impose requirements on
endpoints, or make recommendations for endpoints, to work around
harmful behavior of intermediaries.   But IETF rarely imposes
requirements on intermediaries, or makes recommendations for
intermediaries to follow.

I guess the rationale is that any intermediary that clears e.g. the URG
bit is violating the specs. So the advice would be "don't violate the
specs".

An I really doubt it that even if you had RFCs that explicitly required
intermediaries to not do these things (e.g. clear bits in the TCP
header), they wouldn't mind.

Well, something's wrong, because we keep writing documents that describe how to work around problems caused by intermediaries, but mostly not trying to fix the actual problems.  

There are lots of problems with this approach, not the least of which
is that IETF is in nowhere nearly as good a position to communicate
to application developers, as it is to communicate to vendors of
intermediaries.     Another reason I believe this approach is
unsound, is that it constantly shifts the burden of coping with
violations of the Internet Protocol to endpoints - host stacks and
applications - to the point that there is very little that endpoints
can safely assume about the behavior of the network anymore.

I agree. But the world is... what it is. Once those boxes are there
(deployed), you cannot assume the mechanism is reliable.

Cisco Pix, a widely deployed device, clears the URG bit. Hence I don't
think you can assume that the urgent mechanism is reliable anymore.

Serious question:  What can an application assume is reliable any more?    

Firewalls second-guess apps, and apps second-guess firewalls.   Maybe the right thing for everybody to do is not try to second-guess what kind of brain damage Cisco or anyone else is going to put into their products, and just expect the Internet to work as it was intended.  That way, when such products break things, it will be very clear that it's those vendors' responsibility to fix it, and not the apps developers.

Granted, there's a lot worse breakage out there than clearing the URG bit, because not many applications use TCP urgent data.


I also note that section 6 imposes a MUST requirement on
applications that depends on a non-standard TCP sockets API
feature (SO_OOBINLINE)
I guess this could be rephrased as "applications that still decide
to employ it MUST process the "urgent data" in-line, as intended by
the ETF specifications (e.g., by setting the SO_OOBINLINE socket
option)"?

Pretty much.  Assuming, of course, that the host stack and API used
by the application actually have the ability to do that. (maybe you
should just make it a SHOULD for that reason)

Applications that are processing "urgent data" as "out of band" data
area already violating the specs -- hence the "MUST".

Ah, I think see what you mean.   But aren't you essentially requiring the application developer to work around a bug which might or might not be present in his network stack, using an API feature that might or might not be present?  What bugs me about that it's sort of out of the control of the application developer.   

Keith

_______________________________________________
Ietf mailing list
Ietf@xxxxxxxx
https://www.ietf.org/mailman/listinfo/ietf

[Index of Archives]     [IETF Annoucements]     [IETF]     [IP Storage]     [Yosemite News]     [Linux SCTP]     [Linux Newbies]     [Fedora Users]