RFC 8249

Transparent Interconnection of Lots of Links (TRILL): MTU Negotiation

πŸ“… published September 2017, from ietf

RFC 8249: TRILL MTU Negotiation πŸŽ€

okay bestie, this is RFC 8249 πŸ’– It's a Standards Track doc from the Internet Engineering Task Force (IETF), dated September 2017, and its ISSN is 2070-1721 ✨

The authors are M. Zhang and X. Zhang, D. Eastlake 3rd (Huawei), R. Perlman (Dell EMC), and S. Chatterjee (Cisco) 🫢

It updates RFCs 6325, 7177, and 7780 πŸ”₯ There's no "Obsoletes" line in the header, so it isn't replacing anything, just tweaking those three.


Transparent Interconnection of Lots of Links (TRILL): MTU Negotiation πŸ¦‹


Abstract 🌸

okay so the base TRILL protocol (Transparent Interconnection of Lots of Links) has a campus-wide MTU feature from RFC 6325 and RFC 7177 πŸ“ It makes sure link-state changes can get flooded all over the campus, and it still lets you use a campus-wide setup that supports jumbo packets πŸ“¦

This doc is about recommended updates to that MTU feature. The big idea is that appropriate link-local packets can use link-local MTUs that are bigger than the TRILL campus MTU 🧚 It also brings in an efficient algorithm for local MTU testing πŸ’…

This document updates RFCs 6325, 7177, and 7780. πŸ‘‘

Status of This Memo ✨

this is an Internet Standards Track document πŸ’–

it's a product of the Internet Engineering Task Force (IETF), and it represents the consensus of the IETF community 🫢 it got public review and was approved for publication by the Internet Engineering Steering Group (IESG) πŸ”₯ for more on Internet Standards, check Section 2 of RFC 7841 🌈

for the current status, any errata, and how to give feedback, go to https://www.rfc-editor.org/info/rfc8249 πŸ’œ

Copyright (c) 2017 IETF Trust and the persons identified as the document authors. All rights reserved. πŸŽ€

this document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) as in effect on the date of publication πŸ“œ please actually read these, because they spell out your rights and restrictions for this doc πŸ™ˆ Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they're provided without warranty as described in the Simplified BSD License ✨

Table of Contents πŸ—‚οΈ

   1. Introduction ....................................................3
      1.1. Conventions Used in This Document ..........................3
   2. Link-Wide TRILL MTU Size ........................................4
      2.1. Operations .................................................5
   3. Testing Link MTU Size ...........................................6
   4. Refreshing Sz ...................................................8
   5. Relationship between Port MTU, Lz, and Sz .......................9
   6. LSP Synchronization ............................................10
   7. Recommendations for Traffic Link Testing of MTU Size ...........10
   8. Backward Compatibility .........................................11
   9. Security Considerations ........................................11
   10. Additions to Configuration ....................................12
      10.1. Per-RBridge Configuration ................................12
      10.2. Per-RBridge Port Configuration ...........................12
   11. IANA Considerations ...........................................12
   12. References ....................................................12
      12.1. Normative References .....................................12
      12.2. Informative References ...................................14
   Acknowledgements ..................................................14
   Authors' Addresses ................................................14

1. Introduction 🌷

okay so [RFC6325] explains how RBridges agree on the campus-wide minimum acceptable inter-RBridge MTU (Maximum Transmission Unit) size, which is called "Sz" πŸ’… That's how link-state flooding works properly and every RBridge ends up with the same link state πŸ”₯ For TRILL (Transparent Interconnection of Lots of Links) IS-IS to work right, all RBridges format their Link State Protocol Data Units (LSPs) to fit in Sz πŸ“¦

[RFC7177] diagrams the state transitions of an adjacency πŸ¦‹ If MTU testing is turned on, "Link MTU size is successfully tested" is part of an event (event A6) that moves an adjacency from the "2-Way" state [RFC7177] to the "Report" state πŸ’– That means the link MTU testing of size x succeeds and x is greater than or equal to Sz [RFC6325] 🫢 If a link can't support an MTU of Sz, it doesn't get reported as part of the campus topology πŸ™ˆ

here's the new bit: this document specifies a new RECOMMENDED link-wide minimum inter-RBridge MTU size called "Lz" ✨ As Section 2 goes into more detail on, if you calculate and use Lz the way this doc describes, link-scoped Protocol Data Units (PDUs) can be formatted bigger than Sz, up to the link-wide minimum acceptable inter-RBridge MTU size πŸš€ That can make link utilization more efficient and speed up link-state convergence 🌈

there's also an optional TRILL MTU size-testing algorithm, specified in Section 3, that's a more efficient way to update the old MTU testing method from Section 4.3.2 of [RFC6325] and from [RFC7177] πŸ’œ The new method here is backward compatible with the old one πŸŽ€ Multicasting the MTU-probes is recommended when multiple RBridges on a link respond to the probing with an MTU-ack [RFC7177] 🧚 The testing method and rules in this document are built to minimize the number of MTU-probes, which means fewer multicast packets for MTU testing πŸ’…

this document updates RFCs 6325, 7177, and 7780. The update to [RFC6325] and [RFC7177] is specified in Section 3. The update to [RFC7780] is specified in Section 4. πŸ‘‘

1.1. Conventions Used in This Document πŸŽ€

the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here πŸ€“


this document specifies a new value "Lz" for the minimum acceptable inter-RBridge link MTU size on a local link πŸ¦‹ The link-wide Lz is the minimum Lz supported and agreed on by all RBridges on a specific link 🫢 If the link is usable, Lz will be greater than or equal to Sz ✨

some TRILL IS-IS PDUs only get exchanged between neighbors instead of across the whole campus 🌸 Those are confined by the link-wide Lz instead of Sz πŸ’… Complete Sequence Number PDUs (CSNPs) and Partial Sequence Number PDUs (PSNPs) are examples of these πŸ“ They're only exchanged on the local link 🧚 (TRILL IS-IS Hellos are also link local, but they're always limited to 1470 bytes for robustness πŸ›‘οΈ)

[RFC7356] defines the PDUs that support flooding scopes in addition to area-wide scopes and domain-wide scopes πŸ”₯ As specified in [RFC8139], RBridges support the Extended L1 Circuit Scope (E-L1CS) Flooding Scope LSP (FS-LSP) [RFC7780] 🌈 The originatingSNPBufferSize for a port is the minimum of two quantities, but never less than 1470 bytes: (1) the MTU of the port, and (2) the maximum LSP size that the TRILL IS-IS implementation can handle πŸ“¦ They use that flooding to exchange their maximum supported value of "Lz" πŸ’œ The smallest Lz advertised by the RBridges on a link, as long as it isn't less than Sz, is the link-wide Lz πŸ‘‘ An RBridge on a local link can tell which other RBridges support E-L1CS FS-LSPs because, as [RFC7780] requires, all RBridges include the Scope Flooding Support TLV [RFC7356] in their TRILL Hellos πŸŽ€

the maximum size for a level-1 link-local PDU (like a PSNP or CSNP) that a system can generate is controlled by the management parameter originatingL1SNPBufferSize πŸ™ˆ That value determines Lz πŸ’– The TRILL APPsub-TLV shown in Figure 1 SHOULD be included in a TRILL GENINFO TLV [RFC7357] in an E-L1CS FS-LSP fragment zero 🫢 If it's missing from an E-L1CS FS-LSP fragment zero, or there's no E-L1CS FS-LSP fragment zero at all, it's assumed that its originating IS is implicitly advertising its originatingSNPBufferSize value as Sz octets 🧚

E-L1CS FS-LSPs are link local and can also be sent up to a size of Lz πŸ¦‹ But for robustness, E-L1CS FS-LSP fragment zero MUST NOT exceed 1470 bytes πŸ›‘οΈ bestie, that one's a hard rule 😭

          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
          | Type = 21                     |   (2 bytes)
          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
          | Length = 2                    |   (2 bytes)
          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
          | originatingSNPBufferSize      |   (2 bytes)
          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

         Figure 1: The originatingSNPBufferSize APPsub-TLV

here's how each field in that APPsub-TLV works πŸŽ€

  • Type: set to the originatingSNPBufferSize APPsub-TLV (TRILL APPsub-TLV type 21) πŸ’… It's two bytes, because this APPsub-TLV shows up in an extended TLV [RFC7356] ✨
  • Length: set to 2 🌸
  • originatingSNPBufferSize: the local value of originatingL1SNPBufferSize as an unsigned integer, limited to the range from 1470 to 65,535 bytes πŸ“ (A value less than 1470 will be ignored πŸ™ˆ)

2.1. Operations ✨

Okay so, Lz MAY be reported using an originatingSNPBufferSize APPsub-TLV that shows up in fragment zero of the RBridge's E-L1CS FS-LSP πŸŽ€. If an originatingSNPBufferSize APPsub-TLV turns up in any other fragment, it gets ignored πŸ™ˆ. And if there's more than one in fragment zero, the winner is the one advertising the smallest originatingSNPBufferSize value, as long as that value is not less than 1470 bytes πŸ’….

Here's the thing, though. Even if every RBridge on a link agrees on the link-wide Lz based on what they advertised, that does NOT mean they can safely swap PDUs with each other 😭. Figure 2 is a total corner case. RB1, RB2, and RB3 are all on the same link with an Lz of 1800, so the link-wide Lz is 1800 🌸. Then there's an intermediate bridge (let's call it B1) sitting between RB2 and RB3, and its port MTU size is 1700 πŸ’€. If RB2 sends PDUs chunked at 1800, B1 is going to throw them out, and that is so not it πŸ‘‘.

                         Lz:1800               Lz:1800
                          +---+         |         +---+
                          |RB1|(2000)---|---(2000)|RB2|
                          +---+         |         +---+
                                        |
                  Lz:1800               |
                   +---+               +--+
                   |RB3|(2000)---(1700)|B1|
                   +---+               +--+
                                        |

Figure 2: Link-Wide Lz = 1800 vs. Tested Link MTU Size = 1700

So the link MTU size SHOULD be tested πŸ¦‹. Once the link MTU size of an adjacency has been successfully tested, those link-local PDUs (CSNPs, PSNPs, and E-L1CS FS-LSPs) will be formatted no bigger than the tested link MTU size, and they'll get across the link safely ✨.

As for Sz, RBridges keep sharing their originatingL1LSPBufferSize across the campus by advertising LSPs, as defined in Section 4.3.2 of [RFC6325] 🌈. The smallest Sz value advertised by any RBridge, as long as it's not less than 1470, becomes the Sz πŸ‘‘. Then every RBridge formats its "campus-wide" PDUs (LSPs, for example) so they're no bigger than what it has worked out as Sz 🫢.

[RFC7177] defines event A6 as indicating that the MTU test was successful, provided MTU testing is enabled πŸ’œ. As described in Section 4.3.2 of [RFC6325], this is a combo of the following event and condition:

  • Event: The link MTU size has been tested.
  • Condition: The link can support Sz.

The condition can be checked efficiently with the "binary search algorithm" and rules below, which is lowkey genius 🧚. This updates [RFC6325] and [RFC7177] πŸ”₯.

x, lowerBound, and upperBound are local integer variables πŸ“. The MTU-probe and MTU-ack PDUs are specified in Section 3 of [RFC7176]. It is RECOMMENDED that one Round-Trip Time (RTT) between the two adjacent RBridges be used as the minimum interval between two successive probes 🌸. RTT estimation is out of scope for this document, so don't look for it here πŸ™ˆ. If operators cannot estimate the RTT, the default value of 5 milliseconds should be assumed.

Step 0: RB1 sends an MTU-probe padded to the size of link-wide Lz.

  • 1) If RB1 successfully receives the MTU-ack from RB2 to the probe of the value of link-wide Lz within k tries (where k is a configurable parameter whose default is 3), the link MTU size is set to the size of link-wide Lz. Stop.
  • 2) RB1 tries to send an MTU-probe padded to 1470 bytes.
    • a) If RB1 fails to receive an MTU-ack from RB2 after k tries (an MTU-ack should be considered to have failed two RTTs after the probe is sent out), RB1 sets the "failed minimum MTU test" flag for RB2 in RB1's Hello. Stop.
    • b) The link MTU size is set to 1470; lowerBound is set to 1470; upperBound is set to the link-wide Lz; x is set to [(lowerBound + upperBound) / 2], rounded down to the nearest integer.

Step 1: RB1 tries to send an MTU-probe padded to the size x.

  • 1) If RB1 fails to receive an MTU-ack from RB2 after k tries: upperBound is set to x - 1; x is set to [(lowerBound + upperBound) / 2], rounded down to the nearest integer.
  • 2) If RB1 receives an MTU-ack to a probe of size x from RB2: The link MTU size is set to x; lowerBound is set to x; x is set to [(lowerBound + upperBound) / 2], rounded down to the nearest integer. If lowerBound equals upperBound - 1, then x is set to upperBound.
  • 3) If lowerBound >= upperBound or Step 1 has been repeated n times (where n is a configurable parameter whose default value is 5), stop.
  • 4) Repeat Step 1.

After the testing, the two connected RBridges agree on the value of the link MTU size 🫢. MTU testing is only done in the Designated VLAN [RFC7177]. Since running the algorithm above can eat up a lot of resources 😭, it is RECOMMENDED that the Designated RBridge (DRB) [RFC7177] take on the testing job πŸ‘‘. Multicast MTU-probes are used instead of unicast when multiple RBridges should respond with an MTU-ack on the link ✨. The binary search here is all about minimizing probing attempts, so it cuts down the number of multicast packets used for MTU-probing πŸ¦‹.

The following rules decide whether that "Condition" holds πŸ’….

RBridges have worked out the upper and lower bounds of the link MTU size by running the algorithm above. If Sz is smaller than the lower bound or greater than the upper bound, RBridges can directly judge whether the link supports Sz without MTU-probing 🌈.

  • (a) If lowerBound >= Sz, this link can support Sz.
  • (b) Else if upperBound <= Sz, this link cannot support Sz.

Otherwise, RBridges SHOULD test whether the link can support Sz as in item (c) below. If they don't, the only safe assumption is that the link cannot support Sz πŸ’€. That assumption, made without testing, might rule out a link that can actually handle packets up to Sz, and in the worst case it could cause unnecessary network partition 😭.

  • (c) lowerBound < Sz < upperBound. RBridges probe the link with MTU-probe messages padded to Sz. If an MTU-ack is received within k tries, this link can support Sz. Otherwise, this link cannot support Sz. Through this test, the lower and upper bounds of the link MTU size can be updated accordingly πŸŽ€.

4. Refreshing Sz ✨

RBridges may join or leave the campus, and that may change Sz πŸ¦‹.

1) Joining

  • a) When a new RBridge joins the campus and its originatingL1LSPBufferSize is smaller than the current Sz, reporting its originatingL1LSPBufferSize in its LSPs will cause other RBridges to decrease their Sz. Then, any LSP greater than the reduced Sz MUST be split, and/or the LSP contents in the campus MUST be otherwise redistributed so that no LSP is greater than the new Sz πŸ”₯.
  • b) If the joining RBridge's originatingL1LSPBufferSize is greater than or equal to the current Sz, reporting its originatingL1LSPBufferSize will not change Sz 🌸.

2) Leaving

  • a) From the Joining process spec, we know that if an RBridge's originatingL1LSPBufferSize is smaller than Sz, that RBridge will not join this campus πŸ™…β€β™€οΈ.
  • b) When an RBridge leaves the campus and its originatingL1LSPBufferSize equals Sz, its LSPs are purged from the rest of the campus after reaching MaxAge [IS-IS]. Sz MAY be recalculated and MAY increase. In other words, while in most cases RB1 ignores link-state information for IS-IS unreachable RBridge RB2 [RFC7780], originatingL1LSPBufferSize is still meaningful 🧚. Its value, even from IS-IS unreachable RBridges, is used when determining Sz πŸ‘‘. This updates [RFC7780].
  • c) When an RBridge leaves the campus and its originatingL1LSPBufferSize is greater than Sz, Sz will not be updated, since Sz is determined by another RBridge with a smaller originatingL1LSPBufferSize πŸ’œ.

Frequent LSP "resizing" is harmful to campus stability, so upward resizing SHOULD be dampened to avoid it 😭. When an upward resizing event is noticed by an RBridge, it is RECOMMENDED that a timer be set at that RBridge via a configurable parameter, LSPresizeTime, whose default value is 300 seconds ⭐. Until that timer expires, all subsequent upward resizing gets dampened (ignored) πŸ™ˆ. Of course, in a well-configured campus where every RBridge has the same originatingL1LSPBufferSize, no resizing will ever be needed 🫢. It doesn't matter if different RBridges have different dampening timers, or if some RBridges resize upward faster than others πŸ’….

If the refreshed Sz is smaller than the lower bound or greater than the upper bound of the tested link MTU size, the resource cost of testing the link MTU size can be avoided by applying rule (a) or (b) from Section 3 🌈. Otherwise, RBridges test the link MTU size according to rule (c) πŸŽ€.

5. Relationship between Port MTU, Lz, and Sz πŸ¦‹

When the port MTU of an RBridge is smaller than the local originatingL1SNPBufferSize of that RBridge (an inconsistent configuration), that port SHOULD be disabled, since an adjacency can't be formed through it anyway πŸ™…β€β™€οΈ. On the other hand, when an RBridge receives an LSP or E-L1CS FS-LSP larger than the link-wide Lz or Sz but not larger than its port MTU size, that LSP is processed normally 🌸. If an LSP is bigger than the MTU size of a port it's supposed to be propagated over, the LSP MUST NOT be sent over that port, and an LSPTooLargeToPropagate alarm shall be generated [IS-IS] 🚨.

6. LSP Synchronization πŸ’–

An RBridge takes part in LSP synchronization on a link as soon as it has at least one adjacency on that link that has advanced to at least the 2-Way state [RFC7177] 🧚. On a LAN link, CSNPs and PSNPs are used for synchronization. On a point-to-point link, only PSNPs are used πŸ“.

CSNPs and PSNPs can be chunked to (at most) link-wide Lz, but they're processed normally if they arrive bigger than that 🫢. The link MTU size may not have been tested yet in the 2-Way state, so link-wide Lz may be greater than the supported link MTU size 😭. In that case, a CSNP or PSNP may get discarded. Once the link MTU size is successfully tested, RBridges begin formatting these PDUs with a size no greater than that MTU, so these PDUs will eventually get through πŸ¦‹.

Also, the link MTU size is frequently greater than Sz 🌈. Link-local PDUs are limited in size by the link MTU size rather than Sz, and when Lz is greater than Sz, that promises fewer PDUs and a faster LSP synchronization process πŸ‘‘.

okay so bestie, Sz and link-wide Lz only limit the size of most TRILL IS-IS PDUs 🧚 They are NOT the same thing as the MTU that restricts the size of TRILL Data packets πŸ’… A TRILL Data packet is limited by the physical MTU of every port and link it crosses. So it's totally possible for a TRILL Data packet to make it through the campus just fine even though it's bigger than the Sz or link-wide Lz values πŸ™ˆ

The link MTU testing algorithm can also be reused for TRILL traffic MTU size testing ✨ When you do that, the link-wide Lz gets swapped out for the port MTU of the RBridge that's sending the MTU-probes. A size x that passes the test MAY be advertised as an attribute of that link, using the MTU sub-TLV defined in [RFC7176] πŸ¦‹

Here's the tea πŸ«– End stations do NOT take part in exchanging TRILL IS-IS PDUs, so they can't figure out the traffic link MTU size of a TRILL campus on their own 😭 An operator can gather these values with network management tools like TRILL ping or TraceRoute 🌸 Then the path MTU can be set to the smallest tested link MTU along that path, and end stations should not generate frames that, once encapsulated as TRILL Data packets, exceed this path MTU πŸ‘‘

8. Backward Compatibility πŸ’œ

Lz-ignorant and Lz-aware RBridges can be mixed on the same link 🌈 This setup behaves properly, although it may not be as efficient as it would be if every RBridge on the link were Lz aware 🫢

For an Lz-ignorant RBridge, TRILL IS-IS PDUs are always formatted no greater than Sz πŸ“ Lz-aware RBridges that receive these PDUs can handle them with no drama, since they can't be bigger than the link-wide Lz ✨

For an Lz-aware RBridge, if the link-wide Lz is greater than Sz, it can send larger link-local TRILL IS-IS PDUs to boost efficiency πŸš€ Lz-ignorant RBridges that receive them won't have any problem, because the originatingL1LSPBufferSize value of those RBridges has already been tested, and the link-wide Lz is not greater than that value πŸ’–

An Lz-ignorant RBridge might not support the link MTU size-testing algorithm defined in Section 3, but it could be using some other algorithm just to test for the Sz MTU on the link πŸ”₯ Either way, if an RBridge per [RFC6325] receives an MTU-probe, it MUST respond with an MTU-ack padded to the same size as the MTU-probe πŸ’…

9. Security Considerations πŸ”

This document raises no significant new security issues for TRILL 🌸 In TRILL, RBridges are generally considered to be trusted devices 🫢 Protection against forged TRILL IS-IS PDUs, including forged Hellos containing originatingSNPBufferSize APPsub-TLVs, can be obtained through IS-IS PDU cryptographic authentication [RFC5310] πŸ›‘οΈ

⚠️ The worst thing an RBridge can do by reporting an erroneous originatingSNPBufferSize is reduce Lz to Sz 😱 That takes away the optimization of using link MTUs that exceed the campus-wide MTU for link-local TRILL IS-IS PDUs. It's not a total disaster, but it's still not giving.

For general and adjacency-related TRILL security considerations, see [RFC6325] and [RFC7177] πŸ¦‹

10. Additions to Configuration πŸŽ€

Implementing the features in this document adds two RBridge configuration parameters, as follows 🧁

10.1. Per-RBridge Configuration

Each RBridge implementing the RECOMMENDED LSP resizing damping strategy specified in Section 4 has an LSPresizeTime parameter ⏱️ It's an integer in the range of 0-65,535 and defaults to 300 ✨ It is the number of seconds for which an RBridge determines that Sz has increased before it will create any LSP or E-L1FS FS-LSP fragments πŸ’œ

10.2. Per-RBridge Port Configuration

Each RBridge port on which the calculation and use of Lz are implemented has an originatingL1SNPBufferSize parameter 🌈 It's an integer in the range of 1470-65,535 πŸ’… This parameter defaults to the minimum of the size that the port can accommodate and the link-local IS-IS PDU size that the TRILL implementation can accommodate πŸ“

11. IANA Considerations πŸ“‹

IANA has assigned a new APPsub-TLV type for the TRILL originatingSNPBufferSize APPsub-TLV defined in Section 2 of this document πŸŽ‰ This new type comes from the range less than 256 in the "TRILL APPsub-TLV Types under IS-IS TLV 251 Application Identifier 1" registry πŸ—‚οΈ The entry is as follows:

   Type  Name                      Reference
   ----  ------------------------  ---------
   21    originatingSNPBufferSize  RFC 8249

12. References πŸ“š

12.1. Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC5310]  Bhatia, M., Manral, V., Li, T., Atkinson, R., White, R.,
              and M. Fanto, "IS-IS Generic Cryptographic
              Authentication", RFC 5310, DOI 10.17487/RFC5310,
              February 2009, <https://www.rfc-editor.org/info/rfc5310>.

   [RFC6325]  Perlman, R., Eastlake 3rd, D., Dutt, D., Gai, S., and A.
              Ghanwani, "Routing Bridges (RBridges): Base Protocol
              Specification", RFC 6325, DOI 10.17487/RFC6325, July 2011,
              <https://www.rfc-editor.org/info/rfc6325>.

   [RFC7176]  Eastlake 3rd, D., Senevirathne, T., Ghanwani, A., Dutt,
              D., and A. Banerjee, "Transparent Interconnection of Lots
              of Links (TRILL) Use of IS-IS", RFC 7176,
              DOI 10.17487/RFC7176, May 2014,
              <https://www.rfc-editor.org/info/rfc7176>.

   [RFC7177]  Eastlake 3rd, D., Perlman, R., Ghanwani, A., Yang, H., and
              V. Manral, "Transparent Interconnection of Lots of Links
              (TRILL): Adjacency", RFC 7177, DOI 10.17487/RFC7177,
              May 2014, <https://www.rfc-editor.org/info/rfc7177>.

   [RFC7356]  Ginsberg, L., Previdi, S., and Y. Yang, "IS-IS Flooding
              Scope Link State PDUs (LSPs)", RFC 7356,
              DOI 10.17487/RFC7356, September 2014,
              <https://www.rfc-editor.org/info/rfc7356>.

   [RFC7357]  Zhai, H., Hu, F., Perlman, R., Eastlake 3rd, D., and O.
              Stokes, "Transparent Interconnection of Lots of Links
              (TRILL): End Station Address Distribution Information
              (ESADI) Protocol", RFC 7357, DOI 10.17487/RFC7357,
              September 2014, <https://www.rfc-editor.org/info/rfc7357>.

   [RFC7780]  Eastlake 3rd, D., Zhang, M., Perlman, R., Banerjee, A.,
              Ghanwani, A., and S. Gupta, "Transparent Interconnection
              of Lots of Links (TRILL): Clarifications, Corrections, and
              Updates", RFC 7780, DOI 10.17487/RFC7780, February 2016,
              <https://www.rfc-editor.org/info/rfc7780>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in
              RFC 2119 Key Words", BCP 14, RFC 8174,
              DOI 10.17487/RFC8174, May 2017,
              <https://www.rfc-editor.org/info/rfc8174>.

12.2. Informative References

   [IS-IS]    International Organization for Standardization,
              "Information technology -- Telecommunications and
              information exchange between systems -- Intermediate
              System to Intermediate System intra-domain routeing
              information exchange protocol for use in conjunction with
              the protocol for providing the connectionless-mode network
              service (ISO 8473)", ISO/IEC 10589:2002, Second Edition,
              November 2002.

   [RFC8139]  Eastlake 3rd, D., Li, Y., Umair, M., Banerjee, A., and
              F. Hu, "Transparent Interconnection of Lots of Links (TRILL):
              Appointed Forwarders", RFC 8139, DOI 10.17487/RFC8139,
              June 2017, <https://www.rfc-editor.org/info/rfc8139>.

Acknowledgements 🫢

The authors would like to thank Vishwas Manral for his comments and suggestions πŸ’œ

Authors' Addresses 🏑

   Mingui Zhang
   Huawei Technologies
   No. 156 Beiqing Rd. Haidian District
   Beijing  100095
   China

   Phone: +86-13810702575
   Email: zhangmingui@huawei.com


   Xudong Zhang
   Huawei Technologies
   No. 156 Beiqing Rd. Haidian District
   Beijing  100095
   China

   Email: zhangxudong@huawei.com

   Donald Eastlake 3rd
   Huawei Technologies
   155 Beaver Street
   Milford, MA  01757
   United States of America

   Phone: +1-508-333-2270
   Email: d3e3e3@gmail.com


   Radia Perlman
   Dell EMC
   505 1st Ave South
   Seattle, WA  98104
   United States of America

   Email: radia@alum.mit.edu


   Somnath Chatterjee
   Cisco Systems
   SEZ Unit, Cessna Business Park
   Outer Ring Road
   Bangalore  560087
   India

   Email: somnath.chatterjee01@gmail.com

That's the whole spec, bestie! 🌈✨ We made it through all three parts πŸ’– Go flex it on your team πŸ’…πŸ‘‘

πŸ“¦ where this page comes from