Briefly: please don’t spend time on this review right now — It was (despite the 
header) a review of version 9. I’m revising my ballot for version 10, and will 
update it shortly. 

Thanks and sorry for the noise,

—John

> On Aug 19, 2024, at 8:12 PM, John Scudder via Datatracker <nore...@ietf.org> 
> wrote:
> 
> [External Email. Be cautious of content]
> 
> 
> John Scudder has entered the following ballot position for
> draft-ietf-bess-evpn-fast-df-recovery-10: Discuss
> 
> When responding, please keep the subject line intact and reply to all
> email addresses included in the To and CC lines. (Feel free to cut this
> introductory paragraph, however.)
> 
> 
> Please refer to 
> https://urldefense.com/v3/__https://www.ietf.org/about/groups/iesg/statements/handling-ballot-positions/__;!!NEt6yMaO-gk!B3untsTS8AFOED1akXrUy5rMMVOGawxGSkE84X_nYynb5LWbHIXbXc4V8pT7oNla_vh__vnwi8Ib$
> for more information about how to handle DISCUSS and COMMENT positions.
> 
> 
> The document, along with other ballot positions, can be found here:
> https://urldefense.com/v3/__https://datatracker.ietf.org/doc/draft-ietf-bess-evpn-fast-df-recovery/__;!!NEt6yMaO-gk!B3untsTS8AFOED1akXrUy5rMMVOGawxGSkE84X_nYynb5LWbHIXbXc4V8pT7oNla_vh__pa0Ay9k$
> 
> 
> 
> ----------------------------------------------------------------------
> DISCUSS:
> ----------------------------------------------------------------------
> 
> # John Scudder, RTG AD, comments for draft-ietf-bess-evpn-fast-df-recovery-10
> CC @jgscudder
> 
> Thanks for this document. I appreciate the fact it was straightforward to read
> and review, and of course, I appreciate the work on a useful protocol 
> extension!
> 
> ## DISCUSS
> 
> I have two concerns I'd like to discuss.
> 
> ### "Unreasonable" SCT offsets
> 
> Apart from a few words in the Security Considerations section, you don't
> provide any instructions to the implementer about what to do with unreasonable
> SCT offsets, in particular unreasonable SCT future offsets. The language from
> Section 5 is,
> 
>   It is left to implementations to
>   decide what consists an "unreasonably large" SCT value.
> 
> The quotation marks imply that you think the implementor should do something
> about unreasonably large SCT values, but the spec doesn't supply any clarity
> about it. That's too bad, it should. I accept the argument in the preceding
> Security Considerations sentences (not quoted) that the ability to signal
> unreasonable SCT values doesn't introduce a new vulnerability vis-à-vis the
> pre-existing specifications. Nonetheless, it does seem like this specification
> should advise implementers to impose an upper limit on what SCT future offset
> they will accept. The quoted sentence is a backhanded hint in that direction. 
> I
> think you should make it explicit, probably in Section 2 since that seems to 
> be
> where elements of procedure mostly go (see also my later remarks about this in
> the COMMENTS section).
> 
> One way to address this would be to insert something into Section 2.2, along
> the lines of,
> 
>   - Initialize SCT_delay to 0.
>   - If an SCT timestamp is present (etc etc), then,
>     - If the SCT timestamp is further in the future than max_SCT_delay,
>       SCT_delay = max_SCT_delay.
>     - If the SCT timestamp is less than SCT_skew time units in the future,
>       SCT_delay = 0. (This includes the case where it is in the past.)
>     - Else SCT_delay = (SCT timestamp value) - (present time) - SCT_skew
> 
> and then write 9.1 in terms of "wait SCT_delay before proceeding to 9.2".
> 
> This is crudely written, I don't expect you to use the text above, although
> you're welcome to if you want. I'm just trying to demonstrate one way to close
> the gap.
> 
> In addition to inventing SCT_delay and max_SCT_delay, I've incorporated skew
> into the above (and renamed it SCT_skew). An underspecification of skew is
> another, lesser, concern I had (see COMMENTS) and this seemed the natural 
> place
> to work it in.
> 
> ### Assumptions about synchronized clocks
> 
> Although the document assumes synchronized clocks, it doesn't provide any
> details about its assumptions, e.g. how close synchronization needs to be and
> what the consequences are if the requirement isn't met. Normally,
> specifications assuming synchronized clocks will provide at least some basic
> analysis.
> 
> I think probably if you fix the max_SCT_delay thing, the analysis would be 
> easy
> because it would in effect bound the maximum effect of clock 
> desynchronization,
> and I bet the analysis would amount to "if you don't have badly desynchronized
> clocks, it acts like RFC7432." (But this is just a guess, you are the 
> experts.)
> 
> If you choose to add a short analysis, I could see it being a bullet in 
> Section
> 1.4.
> 
> 
> ----------------------------------------------------------------------
> COMMENT:
> ----------------------------------------------------------------------
> 
> ## COMMENTS
> 
> ### Section 1.4, this sentence no verb
> 
>   *  The fast DF recovery solution maintains backwards-compatibility
>      (see Section 4) by ensuring that PEs any unrecognized new BGP
>      Extended Community.
> 
> The second clause should have a verb, but it doesn't. I'd propose a rewrite if
> I knew what you were trying to say.
> 
> ### Section 1.4, "normalizes"
> 
>   *  The fast DF recovery solution is agnostic of the actual time
>      synchronization mechanism used, and normalizes to NTP for EVPN
>      signalling only.
> 
> I don't understand what you mean by this, in particular by "normalizes to NTP
> for EVPN signalling only". Can you rephrase it? (Also, BTW, "signaling" has
> only one ell.)
> 
> ### Sections 2 and 3 aren't well-divided
> 
> Section 2 is called "DF Election Synchronization Solution". Based on that, I
> would assume that the entire solution would be specified in this section and
> its subsections. Section 3 is called "Synchronization Scenarios". Based on
> that, I would assume it contains examples, intended to help the reader
> understand the operation of the solution.
> 
> Unfortunately, that's not entirely the case. Section 3 contains instances of
> normative, or should-be-normative, text. I think you should restructure these
> two sections to put the entire solution in Section 2 and keep Section 3 as
> examples. By the way, I did find the examples very useful, thank you for
> including them. I've flagged suggestions for restructuring in other more
> specific comments.
> 
> For that matter, there's also normative text in Section 5: "the receiving PE
> SHALL treat the DF Election at the peer as having occurred already, and 
> proceed
> without starting any timer to futher delay service carving". That's not a
> consideration, that's a requirement, and I think it should also go into 
> Section
> 2. The approach suggested in my DISCUSS would fix this issue. (Also
> s/futher/further/.)
> 
> ### Section 2, several things about skew
> 
>   The receiving partner PEs add a skew (default = -10ms) to
>   the Service Carving Time to enforce this mechanism.  The previously
>   inserted PE(s) must perform service carving first, followed shortly
>   by the newly insterted PE, after the specified skew delay.
> 
> The first sentence says that the default is -10 ms, so the receiving partner
> adds -10 ms, or more simply put, the receiving partner subtracts 10 ms. I 
> think
> the whole quote holds together but it’s unnecessarily hard to follow. Perhaps
> something as basic as,
> 
> NEW:
>   The receiving partner PEs subtract a skew (default = 10ms) from
>   the Service Carving Time to enforce this mechanism.  The previously
>   inserted PE(s) must perform service carving first, followed shortly
>   by the newly inserted PE, after the specified skew delay.
> 
> Note I also made the correction s/insterted/inserted/
> 
> Of somewhat greater concern, I don't think Section 2 is precise enough about
> when and how the skew is applied. It's possible to work it out by referring to
> the example in Section 3, but it shouldn't be necessary to do this to glean
> what an implementation MUST do.
> 
> The approach suggested in my DISCUSS would probably make the problem go away.
> 
> ### Section 2.1, that's not 8 octets
> 
> ```
>   A new BGP extended community is defined to communicate the Service
>   Carving Timestamp for each Ethernet Segment.
> 
>   A new transitive extended community where the Type field is 0x06, and
>   the Sub-Type is 0x0F is advertised along with the Ethernet Segment
>   route.  The expected Service Carving Time is encoded as an 8-octet
>   value as follows:
> 
>                        1                   2                   3
>    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 5 6 7 8 9 0 1
>   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
>   | Type = 0x06   | Sub-Type(0x0F)|      Timestamp Seconds        ~
>   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
>   ~  Timestamp Seconds            | Timestamp Fractional Seconds  |
>   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> ```
> 
> Did you mean six octets? Because that’s what the diagram shows... unless 
> you're
> calling 0x060F part of the service carving time, which doesn't make much 
> sense.
> I don't know, maybe you meant that it's an eight-octet value encoded in six
> octets, but you explain that just fine in the text that follows. I think you'd
> be better off simplifying the introductory text to something like this,
> 
> NEW:
>   A BGP extended community, with Type 0x06 and Sub-Type 0x0F, is defined
>   to communicate the Service Carving Timestamp for each Ethernet Segment:
> 
>                        1                   2                   3
>    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 5 6 7 8 9 0 1
>   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
>   | Type = 0x06   | Sub-Type(0x0F)|      Timestamp Seconds        ~
>   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
>   ~  Timestamp Seconds            | Timestamp Fractional Seconds  |
>   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> 
> Note I also elided "new" because fairly soon after publication as an RFC, the
> community will no longer be "new". Then you let the following text supply the
> additional detail that I've removed from my NEW text.
> 
> ### Section 2.1, "outside of the scope of this document"
> 
> “A DF Election operation occurring exactly at the Era transition boundary some
> time in 2036 is outside of the scope of this document.”
> 
> That’s fine as long as the consequences of such an incident wouldn’t be
> serious. Have you analyzed this? A few words to this effect would be 
> desirable;
> the rollover is less than twelve years in the future and your specification is
> likely to still be in use then.
> 
> I bet that, again, the change suggested in my DISCUSS would make this easy to
> cover because even a naïve implementation would treat era rollover as nothing
> worse than severe clock skew, and the window of vulnerability would be bounded
> to max_SCT_delay. I'd still encourage you to say a few words about it, to
> console any readers doing a Y2036 review sometime in the future.
> 
> ### Section 3.1, concurrent elections
> 
>   In the case of multiple concurrent DF elections, each initiated by
>   one of the recovering PEs, the SCTs must be ordered chronologically.
>   All PEs shall execute only a single DF Election at the service
>   carving time corresponding to the largest (latest) received timestamp
>   value.  This DF Election will involve all active PEs in a unified DF
>   Election update.
> 
> This looks and feels exactly like normative specification, which makes me 
> think
> it belongs in Section 2. I also wonder if you want SHALL instead of "shall".
> 
> ## Notes
> 
> This review is in the ["IETF Comments" Markdown format][ICMF], You can use the
> [`ietf-comments` tool][ICT] to automatically convert this review into
> individual GitHub issues.
> 
> [ICMF]: 
> https://urldefense.com/v3/__https://github.com/mnot/ietf-comments/blob/main/format.md__;!!NEt6yMaO-gk!B3untsTS8AFOED1akXrUy5rMMVOGawxGSkE84X_nYynb5LWbHIXbXc4V8pT7oNla_vh__hYvFh_S$
> [ICT]: 
> https://urldefense.com/v3/__https://github.com/mnot/ietf-comments__;!!NEt6yMaO-gk!B3untsTS8AFOED1akXrUy5rMMVOGawxGSkE84X_nYynb5LWbHIXbXc4V8pT7oNla_vh__tnvVed1$
> 
> 
> 
> _______________________________________________
> BESS mailing list -- bess@ietf.org
> To unsubscribe send an email to bess-le...@ietf.org
_______________________________________________
BESS mailing list -- bess@ietf.org
To unsubscribe send an email to bess-le...@ietf.org

Reply via email to