On 10/1/15 12:27 PM, Bob Briscoe wrote:
Robert, Mirja,
Responding (eventually) as one of the authors of conex-abstract-mech
First one point I picked up that might be a misconception from Robert:
On 26.08.2015 22:19, Robert Sparks wrote:
Should
there be a statement that this option must not be used unless by a
transport extension that's discussed how to use it? If not, then
shouldn't this document talk about what happens if there's no
transport header below to inform audit function behavior?
ConEx is designed so that audit is agnostic to the particular
transport behaviour. One would not expect the audit function to look
for a transport header and change its audit behaviour accordingly
(ConEx is designed on the assumption the transport header is or at
least could be encrypted). conex-abstract-mech says:
Transport Oblivious: Audit SHOULD NOT be designed around one
particular rate response, such as any particular TCP congestion
control algorithm or one particular resource sharing regime such
as TCP-friendliness [RFC5348 <https://tools.ietf.org/html/rfc5348>]. An
important goal is to give
ingress networks the freedom to unilaterally allow different rate
responses to congestion and different resource sharing regimes
[Evol_cc
<https://tools.ietf.org/html/draft-ietf-conex-abstract-mech-13#ref-Evol_cc>], without having to coordinate with other networks over
details of individual flow behaviour;
I'd be interested to know where in the docs you got a different
impression, because we ought to try to fix that.
I didn't actually think the audit function code would change per
transport. But as you point out, my suggested fix to the disconnect I
think I see implies that, so it is off the mark.
Your suggestions below will address the concern.
Now, responding to the conversation...
On 28/09/15 20:37, Robert Sparks wrote:
On 9/22/15 7:46 AM, Mirja Kühlewind wrote:
Hi,
regarding M1:
I don't think we can say much more in this doc than what is already
said in the abstract mechanism doc as we simply don't know which
protocol will be used on top of it.
So should this document restrict the use of the extension to those
protocols that are used on top of it where the discussion can be
concrete? (That's what I was suggesting when I asked " Should there
be a statement that this option must not be used unless by a
transport extension that's discussed how to use it?")
That /seems/ reasonable. But let's consider a test-case before
adopting this last sentence: e.g. DNS
I could implement ConEx for a sender of DNS datagrams (that receives
no congestion feedback). conex-abstract-mech says:
Alternatively, without sufficiently precise
congestion feedback from the receiver, the source may have to
conservatively send extra ConEx markings in order to avoid
understating congestion.
So, I could modify my DNS sender to add a CDO header to all IPv6
packets and always set the credit flag. Then, if my sender was behind
a ConEx policer, it would consume some degree of congestion allowance,
but it could never be accused of understating congestion by an audit
function.
Would I need a DNS-specific ConEx document to make this modification?
or could I just implement it based on conex-abstract-mech and
conex-dest-opt?
Actually just these two docs would be sufficient. A DNS-conex document
might be able to suggest a better more efficient mechanism, but it
wouldn't be /necessary/ to write that doc to implement ConEx in DNS.
The subtle point here is that the top-level requirement that ConEx
places on a transport protocol is merely not to understate the
congestion you cause. Any doc defining how a transport sets ConEx
information is really just guidance on how not to look like you are
being dishonest if you intend to be honest. The DNS example shows how
you can be sufficiently honest without a document.
I follow that.
It's a minor pedantic point, but I think the above indicates that
-destopt- doesn't define a concrete ConEx protocol by itself.
What we can do is to add one sentence saying that there must be a
way in the higher layer protocol to provide feedback about
congestion (loss and/or ECN) and that the specification for the
higher layer protocol must discuss how an audit function in the
network can access information on congestion on the forward path
(e.g. monitoring seq#).
That makes sense to me.
conex-abstract-mech deliberately does not require transports to use
congestion feedback (as in the DNS example above).
Also, as quoted above, conex-abstract-mech requires audit to be
transport-agnostic, altho optimisations are possible when the
transport is visible.
So please don't contradict conex-abstract-mech by saying either of
these things.
The way the ConEx docs are structured, conex-abstract-mech is the
place to state requirements on transport protocols and on audit, and I
haven't yet seen anything in this conversation to say we've missed one
(altho I have noticed below that we failed to act on one requirement).
I certainly agree that a doc giving examples of good audit functions
would be extremely useful. But I think the requirements on audit in
conex-abstract-mech are sufficient.
I know some people really want the rules to be clearer. But the
requirements for audit in conex-abstract-mech will still carry more
weight than how one particular example audit device works.
Right.
The "must discuss how" above was what was tempting for me.
Further regarding the abstract mechanism doc, it says the following:
"The general goal of an auditor is to make sure that any ConEx-enabled
traffic is sent with sufficient ConEx-Re-Echo and ConEx-Credit
signals. A concrete definition of the ConEx protocol MUST define
what sufficient means."
I'm not sure if this is a correct usage of normative language, but I
will double-check with the author of this document. However, I don't
think we can say more about what sufficient means that it is already
described in the abstract mechanism doc (further down in section 5.5).
It might also be the case that the authors actually meant to say
here something like
"A transport that uses the ConEx protocol MUST define
what sufficient means."
which would probably me more sensical. I'll check with them.
Bear in mind that abstract-mech is /ultra/ abstract (Matt Mathis
suggested this and we all agreed). abstract-mech envisages that
conex-dest-opt might not be the only concrete ConEx protocol. So this
sentence means that conex-dest-opt has to state the basic audit rules.
I.e. the three penalty criteria in
<https://tools.ietf.org/html/draft-wagner-conex-audit-01#section-2.3>
If David Wagner is not available to re-write these for conex-destopt
and the draft authors can't, I could have a go, but I have other stuff
I'm meant to be doing this week.
Sorry, when I reviewed conex-dest-opt for compliance with
abstract-mech, I failed to notice the gap where this important
requirement should have been satisfied - probably because we stuck the
requirement in section "5.5 Audit", whereas we should have added it to
the list in "3.3. Requirements for non-abstract ConEx specifications".
I suspect fixing this will resolve your concern, Robert.
Yes.
I'm grateful you pointed this out - it is a huge omission - we were
all assuming it, but the actual writing has fallen between the cracks
of all the docs.
One more response in the nits below...
However, while writing these documents, we figured that we actually
would need another document on auditing because there are some
assumption that must be taken in the protocol design. The main
purpose of that doc is/was to give guidance how to design an audit
without caring of all the details in the tcp-mods doc. There is an
(expired) draft (draft-wagner-conex-audit-01) which we did not
follow because there was no energy in the wg and it was not in the
original milestone list. We should definitely consider to revisit
this draft if we plan further experimentation on ConEx.
Does this makes sense to you?
Yes.
Mirja
On 26.08.2015 22:19, Robert Sparks wrote:
I am the assigned Gen-ART reviewer for this draft. The General Area
Review Team (Gen-ART) reviews all IETF documents being processed
by the IESG for the IETF Chair. Please treat these comments just
like any other last call comments.
For more information, please see the FAQ at
<http://wiki.tools.ietf.org/area/gen/trac/wiki/GenArtfaq>.
Document: draft-ietf-conex-destopt-09
Reviewer: Robert Sparks
Review Date: 26 Aug 2015
IETF LC End Date: 31 Aug 2015
IESG Telechat date: 1 Oct 2015
Summary: On the right track with open issues
Major issues:
M1) This document claims to specify "the ConEx wire protocol in IPv6".
But it reads more like "this document just defines an option, other
documents will talk about how and when the option is used". The
abstract-mech document requires that concrete ConEx specifications
discuss the audit function explicitly, with several requirements for
detail scattered through that document. In particular, it asks for a
discussion of how the concrete protocol defends against a set of
likely attacks against the audit function. This document is silent,
and I think a side-effect of being processed in parallel with
tcp-modifications, and suspect most of the thinking on meeting the
requirements for discussing the audit function has concentrated there.
However, nothing in _this_ document restricts its use to other
transport extensions that have talked about these things. Should
there be a statement that this option must not be used unless by a
transport extension that's discussed how to use it? If not, then
shouldn't this document talk about what happens if there's no
transport header below to inform audit function behavior?
Minor issues:
m1) Figure 1 isn't right. I think what you want is:
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option Type | Option Length |X|L|E|C| res |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
m2) There is confusion in two places in the document where you discuss
where to put the CDO (at the end of page 5 and the end of page 7). The
current text says the option MUST be the first option in whatever
destination options block it appears in. That seems problematic. What
if some other option also declares it MUST be the first option? I
wonder if instead of trying to say "must be the first option in the
block" you are trying only to say "If you use a CDO, use it in the
destination options block that comes before an AH block, not the one
that might come after".
m3) Third paragraph of section 6: Should the last sentence end with
"in a given stream." ?
Nits/editorial comments:
Introduction: Should "Due to space limitation" be "Due to space
limitations in the IPV4 header"?
Section 4: Right after the definition of Reserved, there is a line
that says "foo". What should it say instead?
I noticed just after "foo" it says:
All packets sent over a ConEx-capable TCP connection or belonging to
the same ConEx-capable flow MUST carry the CDO.
I think this was meant to say:
All packets belonging to the same ConEx-capable flow (e.g. sent over
the same ConEx-capable TCP connection) MUST carry the CDO.
Thanks again, particularly for revealing the huge gap we had missed.
Regards
Bob
The last sentence on page 6: I don't think it's the network node that
you are saying must be aware. Perhaps you mean designers of network
nodes?
At the top of page 7, you have "They MAY log". You shouldn't use a
2119 MAY here - it's not part of the protocol. Similarly, in section
6, "MAY compare the two, and MAY log" should not use 2119.
First paragraph of section 6: "natively" is not clear. Perhaps
replacing "will not natively copy" with "will not normally copy"?
Second paragraph of section 6: I suggest replacing "ignore any
CDO" with "ignore any CDO in the outer header".
Consider moving the description of the bits in the option type field,
particularly the chg bit, earlier in the document. Right now, the
first mention is in the security consideration section, and most
of the definition doesn't happen until the IANA considerations.
It would help if it were clear what that bit was going to be before
you ever mention AH.
_______________________________________________
conex mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/conex
--
________________________________________________________________
Bob Briscoehttp://bobbriscoe.net/
_______________________________________________
Gen-art mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/gen-art