Hi!

In general, I think that this document could use being cleaned up and 
tightened; there are parts that could be clearer and better specified.  For 
example, many of state variables in rfc5880 seem to apply here, but they are 
not explicitly mentioned, the document claims to solve the use cases (in 
I-D.ietf-bfd-seamless-use-case), but is not explicit about how it does it, etc. 
 Please take a look at my Major comments below.

As I mention in the review for draft-ietf-bfd-seamless-ip, please consider 
merging the two documents.  I will keep this document under AD Evaluation (and 
not return it to the WG) unless the WG Chairs consider that it is necessary to 
WGLC the resulting document.

Thanks!

Alvaro.


Major:

  1.  Section 1. (Introduction) says that "This document extends BFD to provide 
solutions to use cases listed in [I-D.ietf-bfd-seamless-use-case].”  Maybe it’s 
just me, but I fail to see how all the use cases are satisfied — in part 
because the requirements in I-D.ietf-bfd-seamless-use-case are not clear (see 
my review for that document), and in part because this document isn’t explicit 
about how the specification solves the use cases.  For example, how does this 
document provide a solution for the use case in section 3.6. (BFD for Anycast 
Address)?
  2.  Normative References
     *   I-D.ietf-bfd-multipoint should clearly be Normative because of the new 
bfd.SessionType state variable
     *   I-D.ietf-bfd-generic-crypto-auth should also be Normative because of 
how the Security Considerations are written: pointing to is as a “MUST".  Given 
that (as far as I can tell) there aren’t implementations of 
I-D.ietf-bfd-generic-crypto-auth, we could end up with a Normative reference 
that blocks the publication of this document.  I want to suggest that the 
comments be reworded as a suggestion or pointer to potential solutions, not as 
a mandate to use them.  [Disclaimer: we will still need the SecDir to review.]
  3.  Related to 7.2.2 and 7.3.2 (see below for more), I’m assuming that all 
session variables are the same state variables defined in rfc5880, and that 
there are no new S-BFD-specific variables.  Is that correct?  If so, then many 
of my questions/comments below refer to the use of those variables and their 
mention in the text.  What seems to be different is not a specific variable, 
but how it is maintained.
  4.  Section 7.2.2. (Transmission of S-BFD Control Packet by SBFDInitiator)
     *   The header of the description uses a “MUST”, so the other rfc2119 
keywords used later are redundant (as in another “MUST”) or in contradiction:  
what does “MAY” mean in presence of a preceding “MUST”?
     *   BTW, it may be easier to just point out the differences with respect 
to Section 6.8.7. (Transmitting BFD Control Packets) in rfc5880.
     *   "Diagnostic (Diag)   MAY be set to appropriate value for communicating 
with peer”  The obvious question is: which values?  Section 7.4. (Diagnostic 
Values) tries to address that, but it says that "Diagnostic value in both 
directions MAY be set to a certain value…details of such are outside the scope 
of this specification.”  What about bfd.LocalDiag?  Are those values still 
valid?  As long as 7.4 is there, you could explain a little bit more why this 
doesn’t matter.
     *   "State (Sta)   Set to the value indicated by local state.”  Would that 
local state be bfd.SessionState, or is there a new state variable?
     *   "Poll (P)” …add "or 0 if not.”  (?)
     *   "Detect Mult   MUST be set to a value describing locally used 
multiplier value.”  Do you mean bfd.DetectMult?
     *   "My Discriminator   Set to value assigned by local node.”  Do you mean 
bfd.LocalDiscr?
     *   "Your Discriminator   Set to value corresponding to remote entity.”  
Do you mean bfd.RemoteDiscr?  BTW, I think you should explain how this variable 
is initialized.
     *   "Desired Min TX Interval   MUST be set to a value describing local 
desired minimum transmit interval.”  Do you mean bfd.DesiredMinTxInterval?
     *   You didn’t say anything about the "Authentication Section”.
  5.  Section 7.3.2. (Transmission of S-BFD Control Packet by SBFDReflector): 
note that some of the comments are different.
     *   The header of the description uses a “MUST”, so the other rfc2119 
keywords used later are redundant (as in another “MUST”) or in contradiction:  
what does “MAY” mean in presence of a preceding “MUST”?
     *   BTW, it may be easier to just point out the differences with respect 
to Section 6.8.7. (Transmitting BFD Control Packets) in rfc5880.
     *   "Diagnostic (Diag)   MAY be set to appropriate value for communicating 
with peer”  The obvious question is: which values?  Section 7.4. (Diagnostic 
Values) tries to address that, but it says that "Diagnostic value in both 
directions MAY be set to a certain value…details of such are outside the scope 
of this specification.”  What about bfd.LocalDiag?  Are those values still 
valid?  As long as 7.4 is there, you could explain a little bit more why this 
doesn’t matter.
     *   "State (Sta)   MUST be set to UP or ADMINDOWN.”  Even though the 
states are not all of the ones in rfc5880, the state itself still refers to 
bfd.SessionState, right?   It would be really nice to include a state machine 
for the SBFDReflector (similar to the one in Section 7.2.1. (SBFDInitiator 
State Machine), where the states are clarified).  BTW, the text also says 
"Clarification of reflector BFD session state is described in Section 7.8.”, 
but that section doesn’t really clarify anything related to the session states.
     *   Several fields are set to the value copied from the received packet 
(Detect Mult, My Discriminator, Your Discriminator and Desired Min TX 
Interval).  I’m assuming that all these values are copied into the state 
variables defined in rfc5880.  What may change then is not the fact that Detect 
Mult (for example) is set to bfd.DetectMult, but how the variable is 
initialized/maintained.
     *   "Required Min RX Interval   …how many incoming control packets this 
reflector BFD session can handle.”  Over a period or time?  If it end up being 
different than bfd.RequiredMinRxInterval, then we’ll need a new state variable
     *   You didn’t say anything about the "Authentication Section”.
  6.  Section 10. (S-BFD Echo Function)
     *   “…it is RECOMMENDED that the "Required Min Echo RX Interval” field 
simply be set to zero in both directions.”, but Section 7.3.2. (Transmission of 
S-BFD Control Packet by SBFDReflector) says  about the same field that "If 
device supports looping back S-BFD echo packets” then it "MUST set non-zero 
value desired by local device.”   Those two statements are in contradiction.
     *   Unlike rfc5880, this document doesn’t explicitly mention that "Some 
form of authentication SHOULD be included, since Echo packets may be spoofed.”  
 The recommendation of sending both S-BFD control and echo packets points at 
alleviating some of the spoofing concerns even though they are independent 
packets (in other words: the Echo packet can still u-turn at a different node). 
 Please include a discussion of the alleviated security concern in the Security 
Considerations (since it is different than rfc5880).  Also, it would be nice if 
it was mentioned explicitly whether authentication for Echo packets is 
needed/recommended or not.
  7.  Section 11. (Security Considerations)
     *   "crypto sequence number”  What are you referring to?  I’m guessing the 
Sequence Number field in the Authentication Section — is that a good guess?  
Please be specific and include a reference.
     *   The text says that the "SBFDReflector MUST compute the Authentication 
data”, but that it "MUST NOT look at the crypto sequence number”.  Is that a 
contradiction?  As defined in rfc5880, the Authentication Data seems to include 
everything in the Authentication Section, including the sequence number.
     *   Why isn’t the “loop problem” in Appendix A mentioned?
  8.  Nowhere in this document (or draft-ietf-bfd-seamless-ip) is congestion 
mentioned.  rfc5880 talks about some of the considerations.  Are there new 
congestion-related considerations that arise because of eliminating some of the 
negotiation aspects?  Thinking out loud: if a session doesn’t have to be 
established (and everyone knows a remote discriminator), then there’s a 
possibility of more nodes sending traffic to a specific reflector (just as an 
example).  Please include some text indicating any congestion issues — or at 
least explaining why there aren’t any new ones.


Minor:

  1.  Updates to rfc5880.  This document is marked as updating rfc5880.  It 
would be nice to have a section (or maybe just a couple of sentences) 
summarizing what the updates are.
  2.  The base document is not describing the operation in IP and MPLS 
environments, are  the references to rfc5881, rfc5883, rfc5884 and rfc5885 
needed in 7.3 and 11?  And do the procedures and security considerations really 
apply?
  3.  Section 4.1. (S-BFD Discriminator Uniqueness)  I think the text in this 
section is a little confusing.  The requirement (the "S-BFD discriminator…MUST 
be unique within an administrative domain”) is clearly stated at the start, but 
then the justification of why goes into how is IP is used (with no reference to 
where S-BFD for IP is specified) and concludes that (in that case) the "S-BFD 
discriminator only has to be unique within a local node” — at first read it 
sounds like there is a contradiction in the text.  The paragraph closes with a 
reiteration of the uniqueness.  Please clarify — maybe specifically state that 
the discussion (maybe in a separate paragraph) is to justify the uniqueness..
  4.  Section 6.2. (State Variable Initialization and Maintenance)  "Some state 
variables…”  But only one is listed.  Is this the only one?  Please include a 
reference to rfc5880 (for ease of readability).
  5.  Section 7.1. (Demultiplexing of S-BFD Control Packet)
     *   What happens if the “your discriminator” field doesn’t match an 
existing SBFDReflector session?  I think the piece where the packet is 
discarded is missing.  Section 7.3.1. (Responder Demultiplexing) does say that 
in that case the packet "MUST NOT be considered for this mechanism”.  Does that 
mean that the packets are to be discarded, or something else?
     *   Is there a reason for having 7.3.1?  IOW, can anything extra there be 
included in 7.1?
     *   It may be the indenting, but it looks like the logic says: if the 
packet doesn’t correspond to an SBFDInitiator session, then discard it.
     *   "More details on S-BFD control packet demultiplexing are described in 
relevant S-BFD data plane documents.”  Section 4. (S-BFD Control Packet 
Demultiplexing) of draft-ietf-bfd-seamless-ip actually has less details: it 
doesn’t include the step about discarding if there’s no corresponding 
SBFDInitiator session, nor the last ELSE.
  6.  Appendix A. (Loop Problem)  s/reflectors MUST set the TTL/reflectors must 
set the TTL    This text is not the normative text, put a reference to rfc5880 
instead.

Nits:

  1.  Missing references in Terminology: "The reader is expected to be familiar 
with the BFD, IP and MPLS terminologies and protocol constructs."
  2.  Section 3. (Seamless BFD Overview): "The IS-IS with..”   The IS-IS what?
  3.  Section 7.2. (Initiator Procedures)
     *   The example and the figure seem out of place in this section as the 
responder procedures haven’t been introduced yet.
     *   s/ASCII art/Figure 3
  4.  Section 7.6. (Control Plane Independent (C)) does not seem to say 
anything different from rfc5880.  Maybe we can get rid of it.
  5.  Maybe Section 7.7. (Additional SBFDInitiator Behaviors) should be a 
subsection of Section 7.2. (Initiator Procedures).
     *   The same for 7.8. (Additional SBFDReflector Behaviors) and 7.3. 
(Responder Procedures)
  6.  Section 8. (Scaling Aspect)  The text indirectly implies that the scaling 
is better by saying that the number of sessions is less.. I understand the 
point, but it just sounds like a superfluous section to me.
  7.  Section 9. (Co-existence with Classical BFD Sessions) is another 
superfluous section; there’s nothing here that you couldn’t have said in 7.1.

Reply via email to