Dear authors/WG:

While I appreciate the small number of changes from rfc6834 and the
original intent (from 2018) of processing this document quickly, but
it requires a non-trivial amount of work.  It is now going for
Proposed Standard, so we need to be more rigorous.

I put detailed comments inline (below).  There are two main themes
that I want to highlight here:

(1) Duplication and overlap

   Several parts of this document describe the same or related behaviors.
   This issue has resulted in duplicate descriptions and specifications, not
   all of them saying the same thing. :-(  The problem extends beyond this
   document into both rfc6830bis and rfc6833bis.  I pointed and cross-
   referenced the sections as best as I could below.

   In general, please specify the behavior only once.  Doing so in multiple
   places can be confusing and, as in this case, result in the specifications
   not being in sync.

   Note that to address this point we may need to update rfc6830bis and
   rfc6833bis.  I would prefer to see as much of the specification related to
   Map-Versioning as possible (all?) in this document.  Removing pieces and
   referencing this document shouldn't require removing them from the RFC
   Editor's queue -- and they both Normatively depend on this document anyway.

   One specific action is to remove the text from §13.2/rfc6830bis.  Some of
   it is already covered in this document -- the remaining pieces, which I
   believe are only the last couple of paragraphs, can find a better home.


(2) Document Structure

   As I started reading this document, I found myself going back to rfc6830bis
   to look for packet formats -- and I wasn't even past the Introduction!  I
   then realized that some of the information was in this document but an
   unexpected order.  Some actionable comments:

   (1) Simplify the Introduction; there's too much detail.  For example, it
   mentions the location of the Map-Version in excruciating detail ("the 24
   low-order bits of the first longword of the LISP header"), but the
   description is wrong (see more inline).  There are explanations about the
   topics later on but no forward references.  Instead, paint a high-level
   picture and tell the reader where to find the details.

   (2) Beyond the Introduction, the document is ordered in a cumbersome way:
   The location and format of the Map-Version are presented in §6, but both
   §4/§5 describe how the versions are handled.  It would be much better for
   the reader if §6 were moved forward.  This is my suggested ordering:

   6.  LISP Header and Map-Version Numbers
   7.  Map Record and Map-Version (this could be a subsection)
   4.  EID-to-RLOC Map-Version Number
   5.  Dealing with Map-Version Numbers

   Also, I suggest moving §8 to an Appendix.


As we have a constrained timeline for this document, I would like to
start the IETF Last-Call by the end of this month.  I have a lot of
comments, but I don't think they will be hard to address.

Please reply inline to this message to expedite my review of any
updates.  Also, if you think talking would clear things up faster,
feel free to find time on my calendar:
https://doodle.com/mm/alvaroretana/book-a-time


Padma:  As Shepherd, I'll need you to please update the writeup when
the final version is ready.


Thanks!!

Alvaro.


[Line numbers from idnits.]

...
13      Abstract

15         This document describes the LISP (Locator/ID Separation Protocol)
16         Map-Versioning mechanism, which provides in-packet information about
17         Endpoint ID to Routing Locator (EID-to-RLOC) mappings used to
18         encapsulate LISP data packets.  The proposed approach is based on
19         associating a version number to EID-to-RLOC mappings and the
20         transport of such a version number in the LISP-specific header of
21         LISP-encapsulated packets.  LISP Map-Versioning is particularly
22         useful to inform communicating Ingress Tunnel Routers (ITRs) and
23         Egress Tunnel Routers (ETRs) about modifications of the mappings used
24         to encapsulate packets.  The mechanism is optional and transparent to
25         implementations not supporting this feature, since in the LISP-
26         specific header and in the Map Records, bits used for Map-Versioning
27         can be safely ignored by ITRs and ETRs that do not support or do not
28         want to use the mechanism.

[minor] s/proposed//g
This mechanism is now on the standards track, so it is not "proposed"
any more. :-)


...
93      1.  Introduction

[] As I mentioned above, please simplify this section.  I left
comments below, but I think that most of the text can be changed for a
high-level description.


...
113        When Map-Versioning is used, LISP-encapsulated data packets contain
114        the version number of the two mappings used to select the RLOCs in
115        the outer header (i.e., both source and destination RLOCs).  These
116        version numbers are encoded in the 24 low-order bits of the first
117        longword of the LISP header and indicated by a specific bit in the
118        flags (first 8 high-order bits of the first longword of the LISP
119        header).  Note that not all packets need to carry version numbers.

[major] "version numbers are encoded in the 24 low-order bits of the
first longword of the LISP header"

Wow!  That's not an easy reference to follow!

I went to find the "LISP Header" and found this definition in rfc6830bis:

   LISP Header:   LISP header is a term used in this document to refer
      to the outer IPv4 or IPv6 header, a UDP header, and a LISP-
      specific 8-octet header that follow the UDP header and that an ITR
      prepends or an ETR strips.

If the LISP Header includes the "outer IPv4 or IPv6 header, a UDP
header, and a LISP-specific 8-octet header" then the "24 low-order
bits of the first longword" maps to something different. :-(

Instead, it would be easier for everyone to simple show the header
with the V-bit set (from rfc6830bis):

     0 x 0 1 x x x x
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |N|L|E|V|I|R|K|K|  Source Map-Version   |   Dest Map-Version    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                 Instance ID/Locator-Status-Bits               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


[major] "indicated by a specific bit in the flags (first 8 high-order
bits of the first longword of the LISP header)."

Please replace that with a specific mention to the V-bit.


121        When an ITR (Ingress Tunnel Router) encapsulates a data packet, with
122        a LISP header containing the Map-Version numbers, it puts in the
123        LISP-specific header two version numbers:

125        1.  The version number assigned to the mapping used to select the
126            source RLOC (contained in the EID-to-RLOC Database).

128        2.  The version number assigned to the mapping used to select the
129            destination RLOC (contained in the EID-to-RLOC Map-Cache).

[major] Please use the names in the packet formats: indicate which is
the "Source Map-Version" and which the "Dest Map-Version".


...
154     3.  Definitions of Terms

156        This document uses terms already defined in the main LISP
157        specification ([I-D.ietf-lisp-rfc6830bis],
158        [I-D.ietf-lisp-rfc6833bis]).  Here, we define the terms that are
159        specific to the Map-Versioning mechanism.  Throughout the whole
160        document, Big Endian bit ordering is used.

[major] Please avoid redefining terms that are already defined
elsewhere.  Changes in either (even if editorial) may cause the
documents to fall out of sync.  If you want to call attention to
specific terms, please point at the original definition or a specific
section.

For example:

   Map-Version Number:  as defined in §7.


162        Map-Version number:  An unsigned 12-bit integer is assigned to an
163          EID-to-RLOC mapping, excluding the value 0 (0x000).

[major] Beyond being a 12-bit integer, this definition doesn't say
what the Map-Version number is.  §7 contains a much better
description.


165        Null Map-Version:  The 12-bit null value of 0 (0x000) is not used as
166          a Map-Version number.  It is used to signal that no Map-Version
167          number is assigned to the EID-to-RLOC mapping.

[] Suggestion>
   Null Map-Version:  A Map-Version number with a value of 0x000 (zero),
      used to signal that no Map-Version number is assigned to the
      EID-to-RLOC mapping (Section 4.1).


169        Source Map-Version number:  This Map-Version number of the EID-to-
170          RLOC mapping is used to select the source address (RLOC) of the
171          outer IP header of LISP-encapsulated packets.

[major] This definition describes what the Source Map-Version number
is used for, but not what it is.  Also, the definition in §6 is
different from the one here -- it is close, but not the same.  Please
define terminology in only one place.  It seems to me that leaving
this definition up to §6 would be best.


173        Destination Map-Version number:  This Map-Version number of the EID-
174          to-RLOC mapping is used to select the destination address (RLOC) of
175          the outer IP header of LISP-encapsulated packets.

[major] The packet format in rfc6830bis uses "Dest Map-Version"
instead of "Destination Map-Version".  Please use the same terminology
in the packet format and throughout the document.


[major] Same comment as above: it describes what it's used for, not
what it is.  There's a different definition in §6.


177     4.  EID-to-RLOC Map-Version Number

179        The EID-to-RLOC Map-Version number consists of an unsigned 12-bit
180        integer.  The version number is assigned on a per-mapping basis,
181        meaning that different mappings have a different version number,
182        which is also updated independently.  An update in the version number
183        (i.e., a newer version) consists of incrementing by one the older
184        version number.

[major] "incrementing by one"

There's an exception in the case where V1+1 would result in 0, right?
Please mention it.

I later found that the last paragraph in §4.1 explains this exception.
Please point to if from here, or move the paragraph to this section.
Note that the text in §4.1 normatively requires (MUST) the increment,
but the description here doesn't use normative language.  Please be
consistent.


...
212        Map-version numbers are assigned to mappings by configuration.  The
213        initial Map-Version number of a new EID-to-RLOC mapping SHOULD be
214        assigned randomly, but it MUST NOT be set to the Null Map-Version
215        value (0x000), because the Null Map-Version number has a special
216        meaning (see Section 4.1).

[major] "Map-version numbers are assigned to mappings by
configuration.  The initial Map-Version number of a new EID-to-RLOC
mapping SHOULD be assigned randomly..."

This sounds like a contradiction: configure, but make it random.  I
assume that you mean that manual configuration may be the exception.

Suggestion>
   The initial Map-Version number of a new EID-to-RLOC mapping SHOULD be
   assigned randomly; it MUST NOT be set to the Null Map-Version value
   (0x000) (see Section 4.1).  Optionally, the initial Map-Version number
   may be configured.


...
224     4.1.  The Null Map-Version

[] The comments below indicate that there are multiple places that
overlap with this section.  The text from this section may be
relocated (and clarifying actions taken) to make the document clearer.
This section could then be eliminated.

   Paragraph 1 could be moved to §6.

   Paragraph 2 could be moved to §5/§5.1/§5.2.

   Paragraph 3 could be moved to §7.

   Paragraph 4 could be moved to §4.


226        The value 0x000 (zero) is not a valid Map-Version number indicating
227        the version of the EID-to-RLOC mapping.  Such a value is used for
228        special purposes and is named the Null Map-Version number.

230        The Null Map-Version MAY appear in the LISP-specific header as either
231        a Source Map-Version number (cf.  Section 5.2) or a Destination Map-
232        Version number (cf.  Section 5.1).  When the Source Map-Version
233        number is set to the Null Map-Version value, it means that no map
234        version information is conveyed for the source site.  This means that
235        if a mapping exists for the source EID in the EID-to-RLOC Map-Cache,
236        then the ETR MUST NOT compare the received Null Map-Version with the
237        content of the EID-to-RLOC Map-Cache.  When the Destination Map-
238        Version number is set to the Null Map-Version value, it means that no
239        map version information is conveyed for the destination site.  This
240        means that the ETR MUST NOT compare the value with the Map-Version
241        number of the mapping for the destination EID present in the EID-to-
242        RLOC Database.

[major] "Null Map-Version MAY appear"

s/MAY/may

This is a statement of fact, not a Normative statement.


[nit] s/cf.  //g


[minor] Please put a forward reference to §5.1/§5.2 where "MUST NOT
compare" is used above.  §5.1/§5.2 don't use "compare" as part of
their specification, but pointing to them should keep us from changing
the language here.


244        The other use of the Null Map-Version number is in the Map Records,
245        which are part of the Map-Request, Map-Reply, and Map-Register
246        messages (defined in [I-D.ietf-lisp-rfc6833bis]).  Map Records that
247        have a Null Map-Version number indicate that there is no Map-Version
248        number associated with the mapping.  This means that LISP-
249        encapsulated packets destined to the EID-Prefix referred to by the
250        Map Record MUST either not contain any Map-Version numbers (V bit set
251        to 0) or, if they contain Map-Version numbers (V bit set to 1), then
252        the destination Map-Version number MUST be set to the Null Map-
253        Version number.  Any value different from zero means that Map-
254        Versioning is supported and MAY be used.

[] See comments in §7 about the requirements in this paragraph.


[nit] s/(defined in [I-D.ietf-lisp-rfc6833bis])/[I-D.ietf-lisp-rfc6833bis]/g


[major] "Any value different from zero means that Map-Versioning is
supported and MAY be used."


256        The fact that the 0 value has a special meaning for the Map-Version
257        number implies that, when updating a Map-Version number because of a
258        change in the mapping, if the next value is 0, then the Map-Version
259        number MUST be incremented by 2 (i.e., set to 1 (0x001), which is the
260        next valid value).

[] See my comment in §4 about this exception.


262     5.  Dealing with Map-Version Numbers
...
272        To each mapping, a version number is associated and changes each time
273        the mapping is changed.  Note that Map-Versioning does not introduce
274        new problems concerning the coordination of different ETRs of a
275        domain.  Indeed, ETRs belonging to the same LISP site must return for
276        a specific EID-prefix the same mapping, including the same Map-
277        Version number.  This is orthogonal to whether or not Map-Versioning
278        is used.  The synchronization problem and its implications on the
279        traffic are out of the scope of this document.

[] See my comment in §7 about leaving this out of scope and the
requirement from rfc6833bis.


...
304        If one or both of the above conditions do not hold, the ETR can send
305        a Map-Request either to make the ITR aware that a new mapping is
306        available (see Section 5.1) or to update the mapping in the local
307        EID-to-RLOC Map-Cache (see Section 5.2).

[major] Should this behavior be Normative (MUST/SHOULD)?  The text
currently says that "the ETR can send"; if the text doesn't require
(or at least recommend) an action then it looks like this document
just talks about carrying extra numbers around that don't serve a
specific purpose.  I believe that §10 makes a good case for an action
to be specified.


309     5.1.  Handling Destination Map-Version Number

311        When an ETR receives a packet, the Destination Map-Version number
312        relates to the mapping for the destination EID for which the ETR is
313        an RLOC.  This mapping is part of the ETR EID-to-RLOC Database.
314        Since the ETR is authoritative for the mapping, it has the correct
315        and up-to-date Destination Map-Version number.  A check on this
316        version number can be done, where the following cases can arise:

[major] "A check on this version number can be done..."  Same comment
as above: Should this behavior be Normative (MUST/SHOULD)?


...
323        2.  The packet arrives with a Destination Map-Version number greater
324            (i.e., newer) than the one stored in the EID-to-RLOC Database.
325            Since the ETR is authoritative on the mapping, meaning that the
326            Map-Version number of its mapping is the correct one, this
327            implies that someone is not behaving correctly with respect to
328            the specifications.  In this case, the packet carries a version
329            number that is not valid; otherwise, the ETR would have the same
330            number, and the packet SHOULD be silently dropped.

[minor] The "otherwise" in this last sentence gives the impression
that the packet is dropped "otherwise" (i.e. when the version is not
greater).

Suggestion>
  In this case, the packet carries a version number that is not valid
  and the packet SHOULD be silently dropped.


[major] When is it ok for the packet not to be dropped?  Why is this
action recommended and not required?


332        3.  The packets arrive with a Destination Map-Version number smaller
333            (i.e., older) than the one stored in the EID-to-RLOC Database.
334            This means that the ITR sending the packet has an old mapping in
335            its EID-to-RLOC Map-Cache containing stale information.  The ETR
336            MAY choose to normally process the encapsulated datagram
337            according to [I-D.ietf-lisp-rfc6830bis]; however, the ITR sending
338            the packet has to be informed that a newer mapping is available.
339            This is done with a Map-Request message sent back to the ITR.
340            The Map-Request will either trigger a Map-Request back using the
341            Solicit-Map-Request (SMR) bit or it will piggyback the newer
342            mapping.  These are not new mechanisms; how to use the SMR bit or
343            how to piggyback mappings in Map-Request messages is already
344            described in [I-D.ietf-lisp-rfc6833bis].  One feature introduced
345            by Map-Version numbers is the possibility of blocking traffic not
346            using the latest mapping.  Indeed, after a certain number of
347            retries, if the Destination Map-Version number in the packets is
348            not updated, the ETR MAY drop packets with a stale Map-Version
349            number while limiting the rate of Map-Request messages.  This is
350            because either the ITR is refusing to use the mapping for which
351            the ETR is authoritative, or (worse) it might be some form of
352            attack.

[major] (Related to the last comment in §5.) "the ITR sending the
packet has to be informed that a newer mapping is available"

"has to be informed" sounds like a requirement.  Should this action be
Normative?


[minor] If you're going to point at rfc6833bis anyway, don't go into
unnecessary detail.

OLD>
       This is done with a Map-Request message sent back to the ITR.
       The Map-Request will either trigger a Map-Request back using the
       Solicit-Map-Request (SMR) bit or it will piggyback the newer
       mapping.  These are not new mechanisms; how to use the SMR bit or
       how to piggyback mappings in Map-Request messages is already
       described in [I-D.ietf-lisp-rfc6833bis].

NEW>
   This is done with a Map-Request message sent back to the ITR, as
   specified in [I-D.ietf-lisp-rfc6833bis].


[major] "after a certain number of retries...the ETR MAY drop packets"

If this is a Normative action, then the number of retries should be
indicated or at least suggested.  §5.3/rfc6833bis mentions this:

   Map-Requests MUST be rate-limited to 1 per second per EID-prefix.
   After 10 retransmits without receiving the corresponding Map-Reply
   the sender MUST wait 30 seconds.

Would 10 reties be appropriate in this case?


[major] "ETR MAY drop packets"

Why is this an optional action and not required?  What should the ETR
take into account when deciding if the packets are to be dropped or
not?


354        The rule in the third case MAY be more restrictive.  If the mapping
355        has been the same for a period of time as long as the Time To Live
356        (TTL) (defined in [I-D.ietf-lisp-rfc6833bis]) of the previous version
357        of the mapping, all packets arriving with an old Map-Version SHOULD
358        be silently dropped right away without issuing any Map-Request.  Such
359        action is permitted because if the new mapping with the updated
360        version number has been unchanged for at least the same time as the
361        TTL of the older mapping, all the entries in the EID-to-RLOC Map-
362        Caches of ITRs must have expired.  Hence, all ITRs sending traffic
363        should have refreshed the mapping according to
364        [I-D.ietf-lisp-rfc6833bis].  If packets with old Map-Version numbers
365        are still received, then either someone has not respected the TTL or
366        it is a form of spoof/attack.  In both cases, this is not valid
367        behavior with respect to the specifications and the packet SHOULD be
368        silently dropped.

[major] s/MAY be more restrictive/may be more restrictive
This is just a statement of fact, not a normative one.


[minor] "the Time To Live (TTL) (defined in
[I-D.ietf-lisp-rfc6833bis]) of the previous version"

I wasn't sure if you meant that the TTL was defined in rfc6833bis or
if a specific value was defined there.  But after looking at
rfc6833bis I am guessing that you mean something like this:

OLD>
   If the mapping has been the same for a period of time as long as
   the Time To Live (TTL) (defined in [I-D.ietf-lisp-rfc6833bis])
   of the previous version of the mapping, ...

NEW>
   If the Record TTL of the previous mapping has already expired, ...


[major] "all packets...SHOULD be silently dropped"

Why is this action recommended and not required?  When is it ok for
the the packets to not be dropped?


[minor] s/In both cases, this is not valid behavior with respect to
the specifications and the packet SHOULD be silently dropped./In both
cases, this is not valid behavior.

Please don't repeat the specification.


370        LISP-encapsulated packets with the V-bit set, when the original
371        mapping in the EID-to-RLOC Database has the version number set to the
372        Null Map-Version value, MAY be silently dropped.  As explained in
373        Section 4.1, if an EID-to-RLOC mapping has a Null Map-Version, it
374        means that ITRs, using the mapping for encapsulation, MUST NOT use a
375        Map-Version number in the LISP-specific header.

[major] "MAY be silently dropped" -- "As explained in Section 4.1..."

Please look at the related comments in §4.1/§7 about the required
behavior.  BTW, the reference should be to §7.

If there is a required (MUST) behavior in §4.1/§7, why is the behavior
specified here only optional (MAY)?  What should the ETR take into
account when making the decision?

Also, please just refer to other sections and don't repeat normative
language here.


377        For LISP-encapsulated packets with the V-bit set, when the original
378        mapping in the EID-to-RLOC Database has the version number set to a
379        value different from the Null Map-Version value, a Destination Map-
380        Version number equal to the Null Map-Version value means that the
381        Destination Map-Version number MUST be ignored.

[] I find this sentence (and the first one in the previous paragraph)
hard to read.

Suggestion>
   If the mapping in the EID-to-RLOC Database has a non-zero version
   number, LISP-encapsulated packets with the V-bit set and a Null
   Map-Version in the Dest Map-Version field MUST be ignored.


[minor] "MUST be ignored"

I'm assuming that ignoring a packet is the same as dropping it, right?
 The other instances talked about dropping, please be consistent.


383     5.2.  Handling Source Map-Version Number
...
391        1.  The packet arrives with the same Source Map-Version number as
392            that stored in the EID-to-RLOC Map-Cache.  This is the correct
393            regular case.  The ITR has in its EID-to-RLOC Map-Cache an up-to-
394            date copy of the mapping.  No further actions are needed.

[minor] s/ITR/ETR

396        2.  The packet arrives with a Source Map-Version number greater
397            (i.e., newer) than the one stored in the local EID-to-RLOC Map-
398            Cache.  This means that the ETR has in its EID-to-RLOC Map-Cache
399            a stale mapping that needs to be updated.  A Map-Request SHOULD
400            be sent to get the new mapping for the source EID.  This is a
401            normal Map-Request message sent through the mapping system and
402            MUST respect the specifications in [I-D.ietf-lisp-rfc6833bis],
403            including rate-limitation policies.

[major] "Map-Request SHOULD be sent"

Why is this action recommended and not required?  When is it ok for
the ETR to not send a Map-Request (in response to this event)?


[minor] The last sentence, specially the part requiring respect for
rfc6833bis is not needed.  Please take it out.


405        3.  The packet arrives with a Source Map-Version number smaller
406            (i.e., older) than the one stored in the local EID-to-RLOC Map-
407            Cache.  Such a case is not valid with respect to the
408            specifications.  Indeed, if the mapping is already present in the
409            EID-to-RLOC Map-Cache, this means that an explicit Map-Request
410            has been sent and a Map-Reply has been received from an
411            authoritative source.  Assuming that the mapping system is not
412            corrupted, the Map-Version in the EID-to-RLOC Map-Cache is the
413            correct one, while the one carried by the packet is stale.  In
414            this situation, the packet MAY be silently dropped.

[] "Assuming that the mapping system is not corrupted"

I don't think this text adds anything to the specification -- just
opens up questions of mapping system consistency, etc.. which we don't
want to address in this document.  Please take that part out.


[major] "the packet MAY be silently dropped"

Why is this action optional and not required?  The rest of the
paragraph talks about how this "case is not valid with respect to the
specifications" -- I then don't understand why it would only be
optional to drop the packet.


...
419        For LISP-encapsulated packets with the V-bit set, if the Source Map-
420        Version number is the Null Map-Version value, it means that the
421        Source Map-Version number MUST be ignored.

[] There is related text in §4.1.  Please specify actions only once.


423     6.  LISP Header and Map-Version Numbers

425        In order for the versioning approach to work, the LISP-specific
426        header has to carry both the Source Map-Version number and
427        Destination Map-Version number.  This is done by setting the V-bit in
428        the LISP-specific header as specified in [I-D.ietf-lisp-rfc6830bis].
429        When the V-bit is set and the N bit is reset (0), the low-order 24
430        bits of the first longword are used to transport both the source and
431        destination Map-Version numbers.  In particular, the first 12 bits
432        are used for the Source Map-Version number and the second 12 bits for
433        the Destination Map-Version number.

[minor] "... as specified in [I-D.ietf-lisp-rfc6830bis].  When the
V-bit is set and the N bit is reset (0), the low-order 24 bits of the
first longword are used to transport both the source and destination
Map-Version numbers.  In particular, the first 12 bits are used for
the Source Map-Version number and the second 12 bits for the
Destination Map-Version number."

rfc6830bis also shows (§5.3) that the E-bit is not set.  That makes
this description incomplete.  Instead of trying to repeat what
rfc6830bis already says, simply point at it.  Also, a picture is worth
a thousand words -- in this case it can replace cumbersome
descriptions:

Suggestion>
   ... as specified in [I-D.ietf-lisp-rfc6830bis].  The Source
   Map-Version and Dest Map-Version are included as shown in
   Figure x.


435        Below is an example of a LISP header carrying version numbers.

[major] s/LISP header/LISP-specific header

Note the definition of "LISP header" in rfc6830bis:

   LISP Header:   LISP header is a term used in this document to refer
      to the outer IPv4 or IPv6 header, a UDP header, and a LISP-
      specific 8-octet header that follow the UDP header and that an ITR
      prepends or an ETR strips.


437             0                   1                   2                   3
438             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
439            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
440          / |N|L|E|V|I|R|K|K|  Source Map-Version   |Destination Map-Version|
441        LISP+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
442          \ |                 Instance ID/Locator Status Bits               |
443            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

[minor] Please add a figure number/title to this and all the figures.


[minor] s/Locator Status Bits/Locator-Status-Bits/g


...
450        Destination Map-Version number (12 bits):  Map-Version of the mapping
451          used by the ITR to select the RLOC present in the "Destination
452          Routing Locator" field.  Section 5.1 describes how to set this
453          value on transmission and handle it on reception.

[minor] The description in §5.1 says that "the Destination Map-Version
number relates to the mapping for the destination EID for which the
ETR is an RLOC."  I know that this description is equivalent to "the
mapping used by the ITR to select the RLOC present in the "Destination
Routing Locator" field", but they are different.  It might be worth
spending a paragraph or two in the Introduction summarizing how LISP
works.  Or, even better, put an Informative reference to
lisp-introduction.

Suggestion (for the Introduction)>
   [lisp-introduction] describes the architecture of the Locator/ID
   Separation Protocol.  It is expected that the reader is familiar
   with this introductory document.


...
460     7.  Map Record and Map-Version

462        To accommodate the proposed mechanism, the Map Records that are
463        transported in Map-Request/Map-Reply/Map-Register messages need to
464        carry the Map-Version number as well.  For this purpose, the 12 bits
465        before the EID-AFI field in the Record that describes a mapping are
466        used (see [I-D.ietf-lisp-rfc6833bis] and reported here as an example.

[minor] "For this purpose, the 12 bits before the EID-AFI field in the
Record that describes a mapping are used (see
[I-D.ietf-lisp-rfc6833bis] and reported here as an example."

The description is again cumbersome ("12 bits before") -- simply point
at the figure.  Also, I'm not sure what the example part means.

Suggestion>
   For reference, the Map Register (specified in [I-D.ietf-lisp-rfc6833bis])
   is presented in Figure y.


468             0                   1                   2                   3
469             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
470        +-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
471        |   |                          Record TTL                           |
472        |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
473        R   | Locator Count | EID mask-len  | ACT |A|      Reserved         |
474        e   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
475        c   | Rsvd  |  Map-Version Number   |       EID-Prefix-AFI          |
476        o   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
477        r   |                          EID-Prefix                           |
478        d   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
479        |  /|    Priority   |    Weight     |  M Priority   |   M Weight    |
480        | L +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
481        | o |        Unused Flags     |L|p|R|           Loc-AFI             |
482        | c +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
483        |  \|                             Locator                           |
484        +-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

486        Map-Version Number:  Map-Version of the mapping contained in the
487          Record.  As explained in Section 4.1, this field can be zero (0),
488          meaning that no Map-Version is associated to the mapping; hence,
489          packets that are LISP encapsulated using this mapping MUST NOT
490          contain Map-Version numbers in the LISP-specific header, and the
491          V-bit MUST be set to 0.

[major] This description is not the same as what is specified in §4.1
or the definition in §5.4/rfc6833bis.  Please define this term only
once!


(A) "Section 4.1...hence, packets that are LISP encapsulated using
this mapping MUST NOT contain Map-Version numbers in the LISP-specific
header, and the V-bit MUST be set to 0."

The required actions here are different from the actions required in §4.1:

   This means that LISP-encapsulated packets destined to the EID-Prefix
   referred to by the Map Record MUST either not contain any Map-Version
   numbers (V bit set to 0) or, if they contain Map-Version numbers (V
   bit set to 1), then the destination Map-Version number MUST be set to
   the Null Map-Version number.  Any value different from zero means that
   Map-Versioning is supported and MAY be used.

Note that "MUST either" is not a valid construct because it doesn't
reflect a requirement, it indicates an option.


[B] §5.4/rfc6833bis contains a different definition of this field:

   Map-Version Number:  When this 12-bit value is non-zero, the Map-
      Reply sender is informing the ITR what the version number is for
      the EID record contained in the Map-Reply.  The ETR can allocate
      this number internally but MUST coordinate this value with other
      ETRs for the site.  When this value is 0, there is no versioning
      information conveyed.  The Map-Version Number can be included in
      Map-Request and Map-Register messages.  See Map-Versioning
      [I-D.ietf-lisp-6834bis] for more details.

The text in §5 is vague about the required coordination mentioned in
rfc6883bis.  In fact, it mentions this: "The synchronization problem
and its implications on the traffic are out of the scope of this
document."   This is a significant problem!

rfc6833bis requires (MUST) the coordination and points to this
document for more details.  However, this document declares the
problem out of scope.

To make it worst, rfc6830bis both leaves synchronization out of scope
*and* specifies a window for doing so: "synchronization protocol is
out-of-the-scope of this document, but MUST keep ETRs synchronized
within a 1 minute window."

How can the requirements in rfc6833bis/rfc6830bis be satisfied if the
mechanism is out of scope?


Personally, I am ok with the synchronization between ETRs to be out of
scope.  I need you to the come up with specific language that gets the
specs in sync.  That will require eliminating the normative language
and possibly updating rfc6830bis and rfc6833bis.


493        This packet format works perfectly with xTRs that do not support Map-
494        Versioning, since they can simply ignore those bits.

[nit] By "works perfectly" I assume you mean something less
"marketing" like "is backwards compatible".


496     8.  Benefits and Case Studies for Map-Versioning

[] I suggest this section be moved to an appendix.


...
502     8.1.  Map-Versioning and Unidirectional Traffic
...
521        In the case of the ITR, the ITR is able to put both the source and
522        destination version number in the LISP header, since the Source Map-
523        Version number is in the ITR's database, while the Destination Map-
524        Version number is in the ITR's cache.

[nit] NEW>
   An ITR is able to put both the source and destination version
   numbers in the LISP header since the Source Map-Version number
   is in its database while the Destination Map-Version number is
   in its cache.


526        In the case of the ETR, the ETR simply checks only the Destination
527        Map-Version number in the same way as that described in Section 5,
528        ignoring the Source Map-Version number.

[nit] NEW>
   The ETR checks only the Dest Map-Version number as described
   in Section 5, ignoring the Source Map-Version number.


...
612     8.4.  Map-Version Additional Use Cases

[] This use case, and specifically "a lightweight implementation of
LISP" seems inline with the experimental version of this document, but
not the current form.  Please remove it.

If there is a document describing that "lightweight implementation"
then a reference can be added.


...
628     9.  Security Considerations

630        Attackers can try to trigger a large number of Map-Requests by simply
631        forging packets with random Map-Versions.  The Map-Requests are rate-
632        limited as described in [I-D.ietf-lisp-rfc6833bis].  With Map-
633        Versioning it is possible to filter invalid version numbers before
634        triggering a Map-Request, thus helping to reduce the effects of DoS
635        attacks.  However, it might not be enough to really protect from a
636        DDoS attack.

[] Given what is specified here, are there other things that an
attacker could do?  For example, just thinking out loud, not sure if
these are possible:

- Can an attacker glean at headers and reuse the version numbers to
generate additional traffic (to overload a node, for example) with a
header that looks to be correct?

- If the network is configured to use Map-Versioning but a rogue node
decides to not use the V-bit, are there significant consequences?  I
don't think to, just asking.

- Is there any significant information (topology, cache content, for
example) that could be gleaned from knowing the Map-Versions at
different xTRs?  Besides the attack already mentioned, can an attacker
do anything else with this knowledge?


638        Robustness of the Map-Versioning mechanism leverages on a trusted
639        Mapping Distribution System.  A thorough security analysis of LISP is
640        documented in [RFC7835].

[major] We shouldn't get into aspects of what "trusted Mapping
Distribution System" may be.  Instead of this paragraph, let's add a
pointer to the base specs as the initial paragraph of this section.

Suggestion>
   This document builds on the specification and operation of the
   LISP control and data planes.  The Security Considerations of
   [I-D.ietf-lisp-rfc6830bis] and [I-D.ietf-lisp-rfc6833bis] apply.


642        As specified in [I-D.ietf-lisp-rfc6830bis], Map-Versioning MUST NOT
643        be used over the public Internet and SHOULD only be used in trusted
644        and closed deployments.

[major] Please don't specify things in two places!  If specified in
rfc6830bis and this section points there anyway there's no need to
even mention it.


646     10.  Deployment Considerations
...
692        The same problem can, however, arise without Map-Versioning, for
693        instance, if the two ITRs of Domain A send different Locator Status
694        Bits.  In this case, either the traffic is disrupted if ETR B trusts
695        the Locator Status Bits, or if ETR B does not trust the Locator
696        Status Bits it will start sending Map-Requests to confirm each change
697        in reachability.

[major] "ETR B trusts...ETR B does not trust"

Instead of talking about "trust", which may not convey the appropriate
intent, please talk about "verification" (using the language in
rfc6830bis) and how the ETR can verify and avoid disruptions.


699        So far, LISP does not provide any specific synchronization mechanism
700        but assumes that synchronization is provided by configuring the
701        different xTRs consistently.  The same applies for Map-Versioning.
702        If in the future any synchronization mechanism is provided, Map-
703        Versioning will take advantage of it automatically, since it is
704        included in the Record format, as described in Section 7.

[minor] Both §5/§7 talk about synchronization.  Please consolidate
this topic in one place.

[EoR -09]

_______________________________________________
lisp mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/lisp

Reply via email to