Hi John, Thanks a lot about the detailed review.
My comments inline. > On 1 Jun 2022, at 21:53, John Scudder via Datatracker <[email protected]> > wrote: > > John Scudder has entered the following ballot position for > draft-ietf-lisp-6834bis-12: 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://www.ietf.org/about/groups/iesg/statements/handling-ballot-positions/ > for more information about how to handle DISCUSS and COMMENT positions. > > > The document, along with other ballot positions, can be found here: > https://datatracker.ietf.org/doc/draft-ietf-lisp-6834bis/ > > > > ---------------------------------------------------------------------- > DISCUSS: > ---------------------------------------------------------------------- > > This spec makes liberal use of the approach of dropping any packet received > with an unloved Map-Version number, for example (but not limited to) > > 2. The packet arrives with a Dest Map-Version number newer (as > defined in Section 6) than the one stored in the EID-to-RLOC > Database. Since the ETR is authoritative on the mapping, meaning > that the Map-Version number of its mapping is the correct one, > this implies that someone is not behaving correctly with respect > to the specifications. In this case, the packet carries a > version number that is not valid and packet MUST be silently > dropped. > > Isn’t it the case that by definition the packet has arrived at a valid ETR for > the mapping (since as the text says, “the ETR is authoritative”)? Isn’t the > map-version more in the nature of a hint than a critical-for-correctness > field? > What bad behavior is being protected against by silently dropping this > traffic, > that has arrived at a correct endpoint albeit with an incorrect hint? The packet did not necessarily arrive at the correct ETR. We can take for instance the scenario depicted in Section A.3, where you want to shutdown an RLOC. Map-Versioning allows to trigger Map-Requests to make sure everybody uses the lates mapping, which in the example in Section A.3 means not using an ETR anymore. If the ETR continues to accept traffic and the IRT ignore the messages hinting at updating the mapping this will create problems. We may want to consider “Do we really need to drop in each and every case?" May be not, but it is hard to define exactly when dropping is too much. Incidentally, the MUST was previously a SHOULD, but we were unable to give a good definition of when the packets should not be dropped. > > At various points in the document there's a kind of vague assertion that > incorrect map-versions could be an attack. While I don't deny that, the > assertion isn't supported or elaborated on anywhere that I saw, which is > worrying and also makes it less convincing. Shouldn't the Security > Considerations talk about this? The risk of attack is mentioned only twice in the document. Yes, in a general way, because can be DDoS, spoofing, or amplification. These are discussed in RFC 7835. Security consideration has a whole paragraph about DDoS. I am unsure on what exactly you consider as missing. > I did also go have a look at the Security > Considerations in draft-ietf-lisp-rfc6833bis-31, which also didn't help me. > RFC > 7835 §3.3 does touch on this, suggesting that maybe an attacker could use a > spoofed Map-Version to trigger a DoS attack. But this, too, is an unsatisfying > rationale, since as you take pains to point out, rate limiting of Map-Requests > and such is required. Which allows not to flood the network but can itself be attacked. If a create a lot of false packets triggering Map-Requests trigger a lot of Map-Requests that will fill up the rate limit. This is just another form of DoS. > Furthermore, if triggering Map-Requests is the concern, > couldn't the packet still be delivered, without triggering a Map-Request? Yes, you disable Map-Versioning ;-) More seriously, not every packet will cause sending a Map-Request because of the rate limitation. I do not see other implementable mechanisms to make a more fine grained decision. Or do you have something specific in mind? > > When this was an Experimental protocol this kind of thing was probably less > crucial to justify and explain, but I would have expected the experiment to > produce results that could be fed into this document. At the moment, the "drop > any packet that doesn't comply with expectations" design feels arbitrary and > potentially brittle. I would appreciate some discussion of this design choice, > thanks in advance. We had long discussions about security in the bis documents with Ben Kaduk (former Security AD) and my impression was that is better to be a bit conservative. But I am not a security expert either. I am not sure the above explanation are sufficient. Revision -13 has only some fixes for the IESG telecast. We can certainly discuss more your concerns and better identify what is missing afterwards. I will anyway issue a -14 revision to fix the comments below Thanks Ciao L. > > (I do acknowledge that security matters can be subtle, and I'm not a SEC AD > after all... but all the more reason for the document to be explicit about > what > the security concerns are instead of just gesturing toward them and leaving > the > reader to guess.) > > > ---------------------------------------------------------------------- > COMMENT: > ---------------------------------------------------------------------- > > I support Roman Danyliw's DISCUSS position. > > I have a number of further questions and comments -- > > 1. In §6.1: > > If an ETR receives LISP-encapsulated packets with the V-bit > set, when the original mapping in the EID-to-RLOC Database has the > version number set to the Null Map-Version value, then those packets > MUST be silently dropped. > > What does “original” mean in this context? Couldn’t the mapping in the db once > have had a value but in a later revision, had its value changed to the null > value? Presumably in such a situation packets would be lost until the ITR > decided to issue a new map-request. > > 2. In §7.1 (3): > > According to rate > limitation policy defined in [I-D.ietf-lisp-rfc6833bis] for Map- > Request messages, after 10 retries Map-Requests are sent every 30 > seconds, if in the meantime the Dest Map-Version number in the > packets is not updated, the ETR SHOULD drop packets with a stale > Map-Version number. > > What exactly is “the meantime”? Does that mean “after 10 retries”? After 30 > seconds? Basically, what precisely is the grace period extended to the ITR > have > to come into compliance before being blocked? This seems important to be clear > about -- even if the clarity is in the form of "it's > implementation-dependent". > > 3. In §7.1, final paragraph: > > LISP-encapsulated packets cannot transport a Dest Map-Version number > equal to the Null Map-Version number, because in this case the ETR is > signaling that Map-Version numbers are not used for the mapping of > the destination EID (see Section 6.1). > > Considering that the Null Map-Version number is just the distinguished value > 0, > the first clause is prima facie wrong -- it's possible to encode 0 in that > field. I think what you mean is something more along the lines of > > It is a protocol violation for LISP-encapsulated packets to contain a > Dest Map-Version number equal to the Null Map-Version number, see > Section 6.1. > > Please don't try to explain it again in-line as you've done, it just confuses > the reader (well, it confused me!). Instead, refer them back to the place > where > you specified the rule. > > It does seem unfortunate that in this case, it's not possible to include a > Source Map-Version number, even if that would be helpful to do, since the V > bit > is required to be set to 0 and covers both Source and Dest. > > 4. §7.1 (3), nit: s/The packets arrive/The packet arrives/ > > 5. In §7.1 and §7.2: > > A check on this version number SHOULD be > done, where the following cases can arise: > > and > > If the ETR has an entry in its EID-to-RLOC > Map-Cache for the source EID, then a check SHOULD be performed and > the following cases can arise: > > What are the cases under which the check can be omitted? Please consider > adding > discussion about those cases. Alternately, consider making the SHOULD a MUST > if > there are no such cases. > > 6. In §7.2: > > 3. The packet arrives with a Source Map-Version number smaller > (i.e., older) than the one stored in the local EID-to-RLOC Map- > Cache. Such a case is not valid with respect to the > specifications. > > The final sentence ("not valid") seems like it must be wrong: consider for > example the case of out-of-order packets. Other scenarios also exist, such as > transient non-synchronization between ETRs during convergence. I notice that > §9 > talks about the lack of synchronization mechanisms in LISP, other than > diligent > consistency of configuration. So, I guess there's a good chance that > "convergence" means "someone updating mapping configurations by hand" and so > version skew could exist for human-scale periods of time. Of greatest concern > is if "human-scale periods of time" means "hours or days" in the case where a > mistake with operational procedures leaves the hand-configured databases on > two > ETRs out of sync with one another. > > I guess a minimum fix would be to simply cut the wrong sentence and slightly > re-word, e.g.: > > 3. The packet arrives with a Source Map-Version number smaller > (i.e., older) than the one stored in the local EID-to-RLOC Map- > Cache. Note that if the mapping is already present in the > EID-to-RLOC Map-Cache, this means that an explicit Map-Request > has been sent and a Map-Reply has been received from an > authoritative source. In this situation, the packet SHOULD be > silently dropped. Operators can configure exceptions to this > recommendation, which are outside the scope of this document. > > 7. In §7.2: > > If the ETR does not have an entry in the EID-to-RLOC Map-Cache for > the source EID, then the Source Map-Version number MUST be ignored. > > I think it would be nice to have an xref to §A.1, where the reason for this is > explained. Otherwise it seems rather arbitrary. > > 8. In §8: > > I see that in -12 you cut the text that in -11 used to say > > Map-Versioning MUST NOT be used over the public Internet and SHOULD > only be used in trusted and closed deployments. > > I note that the requirement continues to exist however, since normative > reference draft-ietf-lisp-rfc6830bis-38 §4.1 says > > Several of the mechanisms in this document are intended for > deployment in controlled, trusted environments, and are insecure for > use over the public Internet. In particular, on the public internet > xTRs: > ... > * MUST NOT use Gleaning or Locator-Status-Bits and Map-Versioning, > as described in Section 13 to update the EID-to-RLOC Mappings. > Instead relying solely on control-plane methods. > > Thus it still seems to me that the questions others raised about this > requirement may be relevant. > > So, I question whether cutting the text is the right way to fix the concerns. > It makes sense in an Experimental document, but perhaps not in a Standards > Track one. > > 9. In §9: > > LISP requires ETRs to provide the same mapping for the same EID- > Prefix to a requester. > > What does this mean? Same as what? I guess maybe what you mean here is "LISP > requires multiple ETRs within the same site to provide identical mappings for > a > given EID-Prefix"? If so, please say that (or something else clearer than > what's there now). If not, please help? > > 10. In §A.1: > > The ETR checks only the Dest Map-Version number as described in > Section 7, ignoring the Source Map-Version number. > > I would rewrite as > > The ETR checks only the Dest Map-Version number, > ignoring the Source Map-Version number as specified in > the final sentence of Section 7,. > > 11. In §A.2: > > LISP interworking > defines three techniques to make LISP sites and non-LISP sites, > namely Proxy-ITR, LISP-NAT, and Proxy-ETR. > > This isn't a complete sentence. I guess what you mean is something like "LISP > interworking defines three techniques to allow communication between LISP and > non-LISP sites"? > > 12. In §A.2.1: > > With this setup, LISP Domain A is able to check whether the PITR is > using the latest mapping. > > First, how does Domain A check this? Second, the latest mapping for what? I > suppose you might mean something like "Domain A is able to check whether the > PITR is using the latest mapping for the destination EID, by inspecting the > Destination Map-Version as detailed in Section 7.1"? > > 13. In §A.2.3: > > With this setup, the Proxy-ETR, by looking at the Source Map-Version > Number, is able to check whether the mapping has changed. > > Again, what mapping, and how? I guess it must be the source EID. (The version > 12 text, which I've quoted here, makes that clearer, although it would still > be > even clearer to write "... check whether the Source EID-to-RLOC mapping has > changed.") Why does the ETR care about that? I guess there's the assumption it > might be an ITR/ETR passing traffic bidirectionally, in which case the source > EID might be useful, but if that's the reason then some words to that effect > would help. > > > _______________________________________________ lisp mailing list [email protected] https://www.ietf.org/mailman/listinfo/lisp
