Subject: [Idr] Routing directorate review of draft-ietf-idr-flow-spec-v6-17

From: Jonathan Hardwick <[email-masked]>
Date: Wed, 21 Oct 2020 19:11:57 +0000

Hello,

I have been selected as the Routing Directorate reviewer for this draft. The Routing Directorate seeks to review all routing or routing-related drafts as they pass through IETF last call and IESG review, and sometimes on special request. The purpose of the review is to provide assistance to the Routing ADs. For more information about the Routing Directorate, please see ​http://trac.tools.ietf.org/area/rtg/trac/wiki/RtgDir

Although these comments are primarily for the use of the Routing ADs, it would be helpful if you could consider them along with any other IETF Last Call comments that you receive, and strive to resolve them through discussion or by updating the draft.

Document: draft-ietf-idr-flow-spec-v6-17
Reviewer: Jon Hardwick
Review Date: 21 Oct 2020
IETF LC End Date: 21 Oct 2020
Intended Status: Standards Track

Summary:

I have some minor concerns (questions, really) about this document that I think should be resolved before publication.

Comments:

Overall a well written and easy-to-understand draft. Thank you!

Major issues:

None.

Minor issues:

Section 3.6
I note that this is consistent with rfc5575bis, but it left me with several questions.
What is an implementation to do if contradictory bits are set in the same bitmask? (IsF & FF)? (FF & LF)?
Same question if contradictory bits are set in successive bitmasks and the “AND” bit is set in bitmask_op?
What is the effect of setting / clearing the “match” bit in bitmask_op?

Section 3.3
“Type 3 component values SHOULD be encoded as single octet” – why not a MUST?

Nits:

Section 3.1
Suggest rewording “of N first bits of the address” -> “the first N bits of the address”
I find the “length” field oddly named. I misunderstood it at first as the length of the pattern. I think “end_offset” might have been a better choice. Not a big deal though.

---

From: Christoph Loibl <[email-masked]>
Date: Thu, 22 Oct 2020 12:52:31 +0200

Hi Jonathan,

Thanks for reviewing the document. Please see my comments on the minor issues you raised inline.

> On 21.10.2020, at 21:11, Jonathan Hardwick <[email-masked]> wrote:
> 
> Minor issues:
>  
> Section 3.6

That depends on the setting of the match-bit in the bitmask operator. If, for example FF and LF are set in the bitmask and the m-bit=0 packets will match where either the FF OR the LF test results in True. If the m-bit=1 both the FF AND the LF test must result in True (which is not possible) and it will never match any packets. Side-note: in the m-bit=1 case also the IsF is taken into account and the result must match the bitmask (0 or 1). 

> What is the effect of setting / clearing the “match” bit in bitmask_op?

See the match-bit above. The numeric operator as well as the bitmask operator allows multiple operations to be chained:

<type (1 octet), [bitmask_op, bitmask]+>

So the encoding can express the following:

0x0c (Type=Fragment), bitmask_op1, bitmask1, bitmask_op2, bitmask2, …

When the AND bit is *not* set match is based on result1 OR result2 (either result1 gives a match OR result2). If the AND bit is set the result of the match is result1 AND result2. Especially in the case of the numeric operator you can use this for matching ranges like this:

(port < 1000) & (port > 2000) 

> “Type 3 component values SHOULD be encoded as single octet” – why not a MUST?

Simply to have it aligned with rfc5575(bis) where we had no consensus to change this to a MUST. Keeping this in sync may allow reusable code.  

> I find the “length” field oddly named. I misunderstood it at first as the length of the pattern. I think “end_offset” might have been a better choice. Not a big deal though.

This is true - I will add this to the list of potential issues. In case of offset=0 this length-field is very much like the prefix-length in the ipv6 nlri.

Thanks.

Cheers 
Christoph

-- 
Christoph Loibl
[email-masked] | CL8-RIPE | PGP-Key-ID: 0x4B2C0055 | http://www.nextlayer.at

---

From: Jonathan Hardwick <[email-masked]>
Date: Fri, 23 Oct 2020 08:36:30 +0000

Hi Christoph, many thanks for the reply.  Please see [JEH] inline below.
Cheers
Jon

<snip>
Section 3.6

[JEH] OK, thanks. What I was getting at is whether m=1, FF=1, LF=1 should be considered malformed or if an implementation should accept it and never match any packets. Your answer clears this up for me.

[JEH] Thanks.  Again I was wondering if (FF=1) AND (LF=1) was allowed given that it matches nothing; you have clarified that it is.

Section 3.3

[JEH] Agree that there should be consistency between these two drafts and RFC 5575.  I now understand that SHOULD is appropriate in both drafts because RFC 5575 did not comment on whether the IP protocol is encoded in 1, 2, 4 or 8 bytes (hence an implementation of it might have chosen to use >1 bytes).

Nits:

Section 3.1

[JEH] Thanks.