At 09:11 PM 9/5/2002 +0800, Jason Gao wrote:
--- TCP with ECN extension
has already been a practice of fuzzy-layering.
TCP in the end system and IP in the intermediate systems share the two ECN
bits in the IP header.
that is incorrect. First off, IP also is found in the end system, and uses
the ECN bits.
More important, though, is that TCP uses an IP service, through an
IP-provided API. The TCPs negotiate whether they are willing to run ECN,
and if they agree, they (on transmission) use the API feature that says
"please tell my peer if this datagram experiences congestion", and (on
reception) use the API feature that says whether or not congestion was
experienced somewhere in the network. All other communication regarding ECN
is via the transport header. SCTP also has a defined facility for the
transport exchange relevant to ECN.
If your implementation delivers the IP header to or from TCP or SCTP, then
the implementation of the API in question is the passage of that header. I
know of a number of implementations that do that; it certainly is a
convenient approach. However, I don't see any requirement that the API take
that form, and I know some very common implementations that don't.
I don't see any significant difference between using a service of this
type, and using a service that says "please send this message as urgent
data" to TCP, or "please send this message with this DSCP" to IP, or
"please send this message without permitting fragmentation" to IP. It's
just a service accessed through the API.