Hey Huaimo,
Wow! What a lot of work on the new revision. Thanks for the effort and the quick turn-around. The only thing I am struggling with is the metrics in the node abstraction case. I still can't see how the nodes outside the domain correctly compute the paths across the virtual node. You are saying, "Some of the routes may not be optimal after the abstraction." Perhaps this is enough (after all, we don't achieve multi-AS shortest path routing), but it seems a very big change in behavior compared to how the area operated without the TTZ. The "suboptimality" may (will?) attract traffic to the TTZ and will substantially change the balance of traffic in the network. This ought, at least, to come with advice to operators that they should carefully reconsider all of their metrics after introducing a TTZ. Cheers, Adrian From: Huaimo Chen <huaimo.c...@futurewei.com> Sent: 24 February 2021 02:02 To: 'lsr' <lsr@ietf.org>; adr...@olddog.co.uk Cc: draft-ietf-lsr-isis-...@ietf.org Subject: Re: A review of draft-ietf-lsr-isis-ttz Hi Adrian, Thank you very much for your valuable comments. My answers/explanations are inline below with prefix [HC]. Best Regards, Huaimo on behalf of authors From: Adrian Farrel <adr...@olddog.co.uk <mailto:adr...@olddog.co.uk> > Sent: Saturday, February 13, 2021 3:34 PM To: 'lsr' <lsr@ietf.org <mailto:lsr@ietf.org> > Cc: draft-ietf-lsr-isis-...@ietf.org <mailto:draft-ietf-lsr-isis-...@ietf.org> <draft-ietf-lsr-isis-...@ietf.org <mailto:draft-ietf-lsr-isis-...@ietf.org> > Subject: A review of draft-ietf-lsr-isis-ttz Hi all, Acee leant on me to do a review of this work (so blame him :-) It's good to see this document adopted and progressing. Particularly good to see the realistic compromise of making this Experimental. I have a few comments, below. Best, Adrian === I have a largish issue with the fact that the document offers a choice of how to aggregate the zone: virtual node or full mesh. Firstly, it is not helpful to offer options without guidance about which option to pick if you're an implementer or a deployer. You also need to specify whether the choice MUST be a configuration option, and how to handle when some nodes in the zone think one option and the others think the other option. [HC]: Added the advantages and disadvantages of two choices into the document, which may help an implementer or a deployer. Possibly you can make this part of the experiment (see below for notes on the experiment). I have some pretty strong opinions on the idea of a single node abstraction. The main challenge comes when there is a partial failure in the zone such that the zone is partitioned (or the path between two zone neighbors across the zone is severely degraded). It is not possible to represent this in the node model since your only options are: - drop the connection to a neighbor - move to represent the zone as two nodes [HC]: To resolve the partition of a zone is challenging. One possible solution is that when a zone is partitioned, it is abstracted as two virtual nodes. One (the first) part of the zone is abstracted as one (the first) virtual node, the other (second) part (which is disconnected from the first part through zone links) is abstracted as another (second) virtual node. In fact, both models (node and mesh) are subject to disruption when there is a connectivity failure within the zone, but if we think about the mesh model, it doesn't actually need to be advertised as a full mesh: partial mesh is easily handled. Nevertheless, the use of a single zone leader to perform the aggregation has problems if the zone is partitioned in some way - perhaps this is addressed by the partitioned zone simply electing two distinct leaders and declaring itself as two zones. [HC]: When a partial mesh is used, some of routes may not be optimal after a zone is abstracted as a partial mesh among the zone edges. When a zone is abstracted as a full mesh of zone edges, the routes keep unchanged. The routes that are optimal before the abstraction are still optimal after the abstraction. For node model, a zone is abstracted as a single virtual node. When there is a connectivity failure within the zone, the failure is not seen from any node outside of the zone. The routes computed in any node outside of the zone will not change. For mesh model, a zone is abstracted as a full mesh of zone edges. Some of the routes will change. The route changes are consistent. This discussion of faults within the zone seems (to me) to be pretty important. I am also struggling with metrics and route computation when the zone is viewed from outside the zone. 4.1.5 tells us about route computation, but it is not until 4.3.1 that we discover: The metric to the neighbor is the metric of the shortest path to the edge node within the zone. This text applies to the full mesh case, and we don't have anything about the node model, so we might assume that the metrics on the edge circuits are unchanged. [HC]: Added forward pointers accordingly. For the node model, every node outside of the zone has no change on the metrics; every node inside the zone sees the metric of a link outside of the zone is one order of magnitude larger than the metric of a link inside the zone. Obviously, this is important, and it feels that something is broken for the virtual node case. Consider Figure 1. Without the zone (and assuming link metrics of 1), the cost of the path R15-R61-R71-R67-R31 is 4, and this route might not be preferred if some other route R15-x-y-R31 exists with cost 3. However, once we have introduced the zone using the virtual node approach, there is an available route R15-Rz-R31 that appears to have a preferable metric of 2. I would say that the route R15-x-y-R31 should still be preferred. [HC]: Added some text about this. After a zone is abstracted as a single virtual node, some routes will be changed since the block of an area (zone) becomes a single node. Some of the routes may not be optimal after the abstraction. This point certainly needs to be called out in the text, and maybe this gives some input to the choice between models. Perhaps the metrics in the ISN and ESN TLVs are related to this point, but section 4.2.1 gives no hint about how to set these values. Actually, I suspect that what is going on here is that all of the metrics advertised to outside the zone are controlled by the zone leader and advertised in the ISN/ESN - but I don't find that actually stated anywhere. [HC]: Added some text about this. Node model has a higher abstraction rate than mesh model. The mesh model does not scale when the number of edge nodes of a zone is large. The mesh model keeps the routes unchanged. After a zone is abstracted as the full mesh of the edges of the zone, every route is still optimal. The TLVs are not used to advertise anything inside a zone to outside of the zone. They are used to indicate the zone links of a zone edge node and are used by the zone nodes. For the node model, nothing inside a zone is advertised outside except for some prefixes inside the zone. All this said, I find it notable that this document focusses almost completely (sections 4 and 5 - section 4.3 is a very small section) on the virtual node model. It would be good to provide an example like Figure 2, but for the mesh model. [HC]: Added an example with a figure accordingly. Perhaps rather than deferring this to be an outcome of the experiment, this document should spend some time comparing the two models *or* it might even be time to abandon one of the models. [HC]: Added the text comparing the two models. --- Obviously, at some point before this goes forward for publication, you'll need to reduce to no more than five front-page authors. [HC]: Will reduce to five. --- I think the Abstract might usefully mention IS-IS. Probably the first sentence could read: This document specifies a topology-transparent zone in an IS-IS area. [HC]: Updated the document according to your suggestion. --- The document really needs a section to scope the Experiment. [HC]: Added a section for this. - How is the experiment kept separate and safe from the Internet or indeed from any non-participating routers? [HC]: A new TLV (called Zone ID TLV) is defined for TTZ. Any router that does not support TTZ (or non-participating router) and is outside of a TTZ zone will ignore this TLV. - What happens if the boundary of the experiment are breached? (To expand on this, what happens if there is a misconfiguration so that a Zone Internal Node thinks its neighbor is also in the Zone when it is actually unaware of these extensions and should be treated as a Zone External Node? This misconfiguration has a node that should be a Zone Edge/Border Node acting as a Zone Internal Node.) [HC]: When there is a misconfiguration on a zone (a block of an area not using TTZ), a zone should not be transformed to a virtual node. A misconfiguration of a Zone Edge/Border Node to a Zone Internal node can be detected automatically. Every adjacent node of a Zone Internal node is a Zone node and has the same zone ID. When the Zone Internal node detects that one of its adjacent nodes is not a zone node, it should alarm the misconfiguration. - How is the success (or failure!) of the experiment assessed? [HC]: Backward compatible is verified and abstraction works as expected. Some critical misconfigurations should be detected and alarmed. - Are there plans to bring this back for consideration on the standards track if certain criteria are satisfied? [HC]: We have a plan for using IS-IS TTZ, which may help. - Is evaluation of the relative merits of node and mesh abstraction part of the experiment? [HC]: The evaluation will focus on node model. --- Section 1 The WG may have established a different practice, but it used to be normal to reference RFC 1195 alongside ISO 10589. (You do have 1195 listed in the references section, but you don't actually reference it). [HC]: Added reference to RFC 1195. --- Section 1 There are scalability issues in using areas as the number of routers in a network becomes larger and larger. Maybe what you're trying to say in this section (and it is important because it gives the whole motivation for this work) is that there are scalability issues with a single IS-IS area as the number of routers in the area grows. (You might explain what those issues are.) [HC]: Added some details. When an IS-IS area becomes larger, its convergence on a network event such as a link down will take a longer time. During the period of network converging, more traffic that is transported through the network area will get lost. Then you can go on to say how splitting into multiple levels and having multiple L1 areas mitigates the scaling issues. And then you can continue with your text about why splitting an IS-IS system as it grows can be hard. [HC]: Added some details. It needs a careful planning and many configurations on the network. --- Section 2 A Topology-Transparent Zone (TTZ) may be deployed to resolve some critical issues such as scalability in existing networks and future networks. This sounds like you have a number of critical issues in mind, but you only mention scalability. Are there others you can list, or should you reduce this text to just... A Topology-Transparent Zone (TTZ) may be deployed to resolve the critical issue of scalability in existing network and future networks. [HC]: Updated the text as you suggested. --- Section 2 o Abstracting a zone as a TTZ virtual entity, which is a single virtual node or zone edges' mesh, SHOULD be smooth with minimum service interruption. I *think* you are talking about the transition from not using TTZ to using TTZ, but it could be a lot clearer. A forward pointer to 4.1.4 might be useful. And 4.1.4 really should describe some of the processing governed by the OPS bits in 4.2.1. [HC]: Updated the text accordingly. --- Section 2 o De-abstracting (or say rolling back) a TTZ virtual entity to a zone SHOULD be smooth with minimum service interruption. This is similarly unclear, and it sounds like you might be talking about turning off a zone (i.e., moving all of the Zone Nodes into the surrounding area and removing the zone), or you could be talking about moving a single node from inside to outside the zone. [HC]: Updated the text accordingly. Transforming (or say rolling back) a TTZ virtual entity using TTZ back to its zone (i.e., its original block of network area not using TTZ) (refer to Section 5.2) SHOULD be smooth with minimum service interruption. --- Section 2 o Users SHOULD be able to easily set up an end-to-end service crossing TTZs. I am not clear what a "service" is in this context. Assuming we're not talking about TE extensions, isn't the service simply that the user sends packets and they are routed by the network? [HC]: Removed it. --- Section 4 I think the start of this section needs to add a little about the limits of a TTZ. In particular: - Is a TTZ restricted to reside within a single level? [HC]: All the nodes in a zone must be L1 nodes except for some zone edge nodes are L1/L2 nodes; All the nodes in a zone must be L2 nodes except for some zone edge nodes are L1/L2 nodes; or All the nodes in a zone must be L1/L2 nodes. - Is a TTZ restricted to lie within a single area? [HC]: Yes. - What happens if one of the zone nodes is an L1/L2 router? [HC]: In this case, if the other zone nodes are L1 routers, all the zone nodes are abstracted to be an L1 virtual node; if the other zone nodes are L2 routers, all the zone nodes are abstracted to be an L2 virtual node. - Presumably, depending on the answer to the first question, this could only happen if the node in question is a zone edge/border node But, even then it is complicated: does the abstracted node become an L1/L2 router? [HC]: If all the zone nodes are L1/L2 routers, the abstracted node becomes an L1/L2 router. --- 4.1 OLD Each of these links connects a zone neighbor. NEW Each of these links connects to a zone neighbor. END [HC]: Changed the text as you suggested. --- 4.1 The virtual node ID may be derived from the zone ID. Maybe say how else it could be specified and how the implementer or deployer makes this choice. [HC]: Added more details. --- A useful modification to Figures 1 and 2 would be to add a circuit from R15 to R65 in Figure 1 and show how this becomes a second 'parallel' circuit from R15 to Rz in Figure 2. [HC]: Added the circuit from R15 to R65 as you suggested. --- 4.1.1 A TTZ MUST hide the information inside the TTZ from the outside. It MUST NOT directly distribute any internal information about the TTZ to a router outside of the TTZ. For instance, the TTZ in the figure above MUST NOT send the information about TTZ internal router R71 to any router outside of the TTZ in the routing domain; it MUST NOT send the information about the circuit between TTZ router R61 and R65 to any router outside of the TTZ. These "for instance" examples are good in that they are true. But they imply some things by omission, and I don't think you mean to make those implications. That is, the first paragraph is much clearer and definitive. But your second paragraph, by calling out some special cases of "internal information" makes it ambiguous whether, for example, the router R61 is advertised outside the TTZ. (Of course, it isn't.) It may be better to delete the second paragraph, and go straight to the following paragraph that describes what is seen outside the TTZ by directly describing what *is* advertised rather than providing a partial list of what is not advertised. [HC]: Removed the second paragraph accordingly. --- I think that the subsections of 4.1 cover all of the necessary information. My list of things to cover is: - zone edge/border nodes form adjacencies with zone neighbor nodes using the identity of the aggregate zone node and not their own identities [HC]: In Section 4.1.4. Adjacency Establishment - zone nodes continue to operate IS-IS as normal to advertise zone nodes and zone links within the zone [HC]: In Section 4.4.1. Advertisement of LSPs within Zone - zone edge/border nodes do not advertise or readvertise LSPs that originated within the zone to neighbors outside the zone [HC]: In Section 4.1.4. Adjacency Establishment In Section 4.4.1. Advertisement of LSPs within Zone - zone nodes continue to operate IS-IS as normal to re-advertise LSP that originated outside the zone [HC]: In Section 4.1.4. Adjacency Establishment In Section 4.4.2. Advertisement of LSPs through Zone - the zone leader is responsible for deriving the aggregate node information that represents the node and for originating LSPs for this aggregate node [HC]: In Section 4.1.3. LS Generation for Zone as a Single Node - zone nodes re-advertise LSPs originated by the zone leader on behalf of the aggregate zone node on all circuits including those that connect to zone neighbor nodes [HC]: In Section 4.1.3. LS Generation for Zone as a Single Node - when a zone edge/border node readvertises the LSPs for the aggregate zone node, it does so as it had originated the LSP [HC]: In Section 4.1.4. Adjacency Establishment - when any zone edge/border node receives an LSP that reports itself as originating from the aggregate zone node, the edge/border node suppresses the LSP [HC]: In Section 4.1.4. Adjacency Establishment In Section 5.1. Transfer Zone to a Single Node - zone nodes do not install routing state resulting from advertisements of LSPs describing the aggregate zone node [HC]: In Section 4.1.5. Computation of Routes As I say, I think you have all this in the subsections of 4.1, but I had to hunt around to find all of this. It might be helpful to give a clear summary of the behaviors. [HC]: Added a summary of these behaviors with forward pointers. --- 4.1.2 The leader election mechanism described in [I-D.ietf-lsr-dynamic-flooding] may be used to elect the leader for the zone. "may be used" or "are used"? [HC]: Changed it accordingly. --- 4.1.2 Somewhere you need to cover what happens if the zone leader fails but the zone remains otherwise fully connected. Does the new leader start from scratch, or does it try to retain the zone ID etc.? [HC]: Added the text below: When the existing zone leader fails, a new zone leader is elected. The new leader originates the LSPs for the virtual node based on the LSPs received from the failed leader. It retains the System ID of each LSP ID and the live adjacencies between the virtual node and the zone neighbors. --- 4.1.4 attempts to do two things: - describe the migration from not-a-zone to the use of a zone - describe the steady state zone behavior I think it would be helpful to split these out into separate sections. In particular, the migration from not-a-zone to zone is only needed in operational networks. [HC]: Split these into two separate sections. --- 4.2 The following TLV is defined in IS-IS. I think... This document defines a new TLV for use in IS-IS as follows. [HC]: Used the text as you suggested. --- 4.2.1 The format of IS-IS Zone ID TLV is illustrated below. It may be added into an LSP for a zone node. s/may/MUST/ [HC]: Changed "may" to "MUST". --- 4.2.1 If every link of a zone edge node is a zone link Doesn't that mean that the zone edge node is not a zone edge node? [HC]: Removed the related text. --- 4.2.1 To be honest, I found the description of the processing governed by the OPS bits to be pretty complicated. I would recommend adding a new section (related to 4.1.4) that talks through the process in clear steps. Then this txt can just list the meanings of the bits and point back to the process description. Maybe this is what sections 5, 6.2, and 6.3 are for, in which case cut down the explanation here and provide forward pointers. [HC]: Cut down the text here and added forward pointers. --- Figures 4 and 5. I think you have defined the types for these two sub-TLVs (1 and 2). [HC]: Changed them accordingly. --- 4.2.1 I wonder how many neighbors a zone might have. It could be a fairly big number, I suspect, although obviously it depends on how the operator decides to chop up the area into zones (for which I don't find any guidance). The size of the ISN and ESN would appear to be a function of the number of neighbors times (IDlength+3). Is there a practical constraint on the size of the TLVs which places a limit on the number of neighbors that a zone can have? This would be an important design consideration for the operator. Maybe it is another feature for experimentation. [HC]: The number of zone neighbors may be big. When a zone is abstracted as a single virtual node, all these zone neighbors are put into one or more extended IS reachability TLVs in the LSPs for the virtual node, which are originated by the leader of the zone. One TLV can store 20+ neighbors. Ten TLVs in two LSPs can contain 200+ neighbors. --- 4.2.1 The same neighbour may have two links to the zone and not necessarily through the same edge/border node (see my previous point). In this case, might the different links have different metrics? I think so, but I don't see how that is encoded in the sub-TLVs. [HC]: This may follow a normal implementation. In default, one link with lower metric is included in the LSPs originated for the virtual node. --- 6.1 There is probably something to be said about what happens if the configuration of the zone ID is not consistent across the zone. Is it as simple as you ending up with two zones? [HC]: When the configuration of the zone ID is not consistent across the zone, some unexpected results will be generated. For example, when two different zone IDs are configured for the zone, two virtual nodes for two zones may be seen in the network. These are not expected. Once the unexpected results are seen, the inconsistent configurations MUST be fixed. What is the scope of uniqueness of the zone ID? I think it only has to be unique in the zone and with the neighbors. Obviously there are ways to make this safe (such as area or global uniqueness). What are the constraints? [HC]: Added some constraints. A zone ID MUST be unique in an AS. It MUST not be any IP address in the AS from which a system ID is transformed to and used. --- 6.2 When receiving the command, the node distributes it to every zone node. Is this in the management plane or in IS-IS? I can see how it could be in IS-IS if the configured node is the zone leader and it just starts sending the zone TLV and all of the edge nodes are identified in sub-TLVs such that a receiving node is either an edge or an internal node. But I don't see how it works if the configured node is just some internal or edge node and the leader has to be elected. Similarly... If automatic transferring zone to node is enabled, the user does not need to issue the command. A zone node, such as the zone leader, will distribute the "command" to every zone node after determining that the configuration of the zone has been finished. ...what is the command and how is it distributed? Same sort of issues in 6.3 [HC]: Updated the related text and referred to Section 5.1. --- Section 7 is a bit suspect! What would happen if a zone TLV was sent by a compromised router or added to an LSP by a mid-wire attacker? I would be sympathetic to you saying that if an attacker can do either of these things then there are many far worse things they can do, but I think you should call out: - what sort of attacks are possible - what damage they might do - how these attacks might be detected - what protections are available (references would be enough) [HC]: Added text for this. --- Section 8 Under the registry name "IS-IS TLV Codepoints", IANA is requested to assign a new registry type for Zone ID as follows: I think... IANA is requested to make a new allocation in the "IS-IS TLV Codepoint Registry" under the registry name "IS-IS TLV Codepoints" as follows: [HC]: Updated the text as you suggested. --- Section 8 I recommend you tell IANA whether you want the new TLV type to be less than or greater than 255. [HC]: Added some text for this. --- Section 8 IANA is requested to create a new sub-registry "Adjacent Node ID Sub- TLVs" on the IANA IS-IS TLV Codepoints web page as follows: I recommend you call the new sub-registry "Sub-TLVs for TLV type TBD1 (Zone ID TLV)" [HC]: Updated the text accordingly.
_______________________________________________ Lsr mailing list Lsr@ietf.org https://www.ietf.org/mailman/listinfo/lsr