RFC 7179
Transparent Interconnection of Lots of Links (TRILL): Header Extension
Transparent Interconnection of Lots of Links (TRILL): Header Extension π
Okay bestie, this is RFC 7179 π It's a Standards Track doc, published May 2014, with ISSN 2070-1721. The authors are D. Eastlake 3rd (Huawei), A. Ghanwani (Dell), V. Manral (Ionos Corp.), Y. Li (Huawei), and C. Bestler (Nexenta Systems) π«Ά It updates RFC 6325, which is the TRILL base protocol. The header doesn't list anything it obsoletes, so nothing gets replaced here β¨
Abstract
The TRILL base protocol (RFC 6325) gives you minimal hooks so TRILL Headers can be extended safely π‘οΈ This doc adds a first extension that brings extra flag bits, and it defines some of those bits. It updates RFC 6325 π
Status of This Memo
This is an Internet Standards Track document π¦
It's a product of the Internet Engineering Task Force (IETF), so it reflects what the IETF community agrees on. It got public review and was approved for publication by the Internet Engineering Steering Group (IESG). If you want more on Internet Standards, check Section 2 of RFC 5741 π
Info about the current status, any errata, and how to send feedback lives at http://www.rfc-editor.org/info/rfc7179 πΈ
Copyright Notice
Copyright (c) 2014 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 (http://trustee.ietf.org/license-info) as they stand on the publication date. Please read these carefully, because they spell out your rights and restrictions with respect to this document βοΈ Any Code Components pulled out of this document must include the Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come with no warranty, as the Simplified BSD License describes π
Table of Contents
1. Introduction ....................................................3
1.1. Conventions Used in This Document ..........................3
2. TRILL Header Extensions .........................................3
2.1. RBridge Extended Flag Handling Requirements ................5
2.2. No Critical Surprises ......................................5
2.3. Extended Header Flags ......................................6
2.3.1. Critical Summary Bits ...............................7
2.4. Conflict of Extensions .....................................8
3. Specific Extended Header Flags ..................................9
3.1. RBridge Channel Alert Extended Flags .......................9
4. Additions to IS-IS ..............................................9
5. IANA Considerations ............................................10
6. Security Considerations ........................................10
7. Acknowledgements ...............................................11
8. References .....................................................11
8.1. Normative References ......................................11
8.2. Informative References ....................................11
1. Introduction β¨
So the base TRILL protocol [RFC6325] has a TRILL Header extension feature and minimal hooks to safely support header extensions π§ (This feature is called "options" in Section 3.8 of [RFC6325].) The catch is that, except for the first two bits, the TRILL base protocol doc doesn't spell out how extensions to the TRILL Header are structured, or the details of any particular extension π
This document is consistent with [RFC6325] and goes deeper. It specifies an initial extension word that brings extra flag bits, and it specifies some of those bits. Later docs can add more extensions, including TLV-encoded options, for example [Options] and [Options2] π
Section 2 covers the general principles of TRILL Header extensions along with this first extension. Section 3 specifies a pair of flags in this initial extension π
1.1. Conventions Used in This Document
The terminology and acronyms from [RFC6325] mean the same thing here π Devices that implement the TRILL protocol are called RBridges (Routing Bridges) or TRILL Switches.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119] π₯
2. TRILL Header Extensions π¦
The base TRILL protocol has a feature for extending the TRILL Header (see [RFC6325], Sections 3.5 and 3.8) π
The 5-bit Op-Length header field gives the length of the TRILL Header extensions in units of 4 octets, so you can have up to 124 octets of header extension. If Op-Length is zero, there are no header extensions present. Otherwise, the extension area comes right after the Ingress RBridge Nickname field of the TRILL Header. The first 32-bit word of the optional extensions area holds an extended flags area and critical summary bits, as specified in this document π
Here's what's provided, as described below:
- hop-by-hop flags, which might affect any RBridge that receives a TRILL Data frame with such a flag set,
- ingress-to-egress flags, which would only necessarily affect the RBridge(s) where a TRILL frame is decapsulated,
- flags affecting an as-yet-unspecified class of RBridges, for example, border RBridges in a TRILL campus extended to support multi-level IS-IS (Intermediate System to Intermediate System) [MultiLevel], and
- both "critical" and "non-critical" flags.
Any RBridge that receives a frame with a critical hop-by-hop extension it doesn't implement MUST discard the frame π« It's unsafe to process a frame without understanding a critical extension like that.
Any egress RBridge that receives a frame with a critical ingress-to-egress extension it doesn't implement MUST drop the frame if it's a unicast frame (TRILL Header M bit = 0). If it's a multi-destination TRILL Data frame (M=1), then it MUST NOT be egressed at that RBridge, but the egress RBridge still forwards such a frame on the distribution tree πΈ
Non-critical extensions can be safely ignored π«§
Any extended flag that signals a significant change in the structure or interpretation of later parts of the frame, where ignoring it could cause a failure of service or a violation of security policy, MUST be a critical extension. If such an extended flag affects any fields that transit RBridges will examine, it MUST be a hop-by-hop critical extended flag π
Note: Most RBridge implementations are expected to be optimized for simple and common cases of frame forwarding and processing. The hard limit on the header extensions area length, the 32-bit alignment of the extension area, and the presence of critical extension summary bits (described below) are all meant to help with efficient hardware processing of frames that have a TRILL Header extensions area. Even so, including extensions may push frame processing onto a "slow path" with worse performance than "fast path" processing. Limited slow path throughput for such frames could cause some of them to be discarded. π’
2.1. RBridge Extended Flag Handling Requirements
All RBridges MUST check whether there are any critical flags set that are necessarily applicable to their processing of the frame π To help with this, critical summary bits are provided. They cover not only the extended flags specified here but also any further extensions that future documents might specify, for example [Options] and [Options2]. If an RBridge doesn't implement all critical flags in a TRILL Data frame, it MUST treat the frame as having an unimplemented critical extension, as described in Section 2. A transit or egress RBridge MAY assume that the critical summary bits are correct π«Ά
On top of that, a transit RBridge:
- MAY set or clear hop-by-hop flags as specified for such flags;
- MUST adjust the length of the extensions area, including changing
Op-Lengthin the TRILL Header, as appropriate if it adds or removes the extended header flags word; - MUST, if it adds the word of extended header flags or changes any critical flags, correctly set the critical summary bits in the extended header flags word;
- MUST NOT remove the extended header flags word unless it is all zero (either on arrival or after permitted modifications); and
- MUST NOT set or clear ingress-to-egress or reserved extended header flags except as specifically permitted in the specification of such flags π ββοΈ
2.2. No Critical Surprises π
RBridges advertise the extended header flags they support in IS-IS PDUs (Protocol Data Units) [RFC7176] π£ Unless an RBridge advertises support for a critical extended header flag, it will not normally receive frames with that flag set. An RBridge is not required to support any extensions π·
An RBridge SHOULD NOT set a critical extended flag in a frame unless:
- for a critical hop-by-hop extended header flag, it has determined that the next hop RBridge or RBridges that will accept the frame support that flag,
- for a critical ingress-to-egress extended header flag, it has determined that the RBridge or RBridges that will egress the frame support that flag, or
- for a critical reserved extended header flag, it may set such a flag only if it understands which RBridges it is applicable to and has determined that those RBridges that will accept the frame support that flag π§
"SHOULD NOT" is written that way because there may be cases where it's acceptable for those frames, particularly in the multi-destination case, to be discarded or not egressed by any RBridges that don't implement the extended flag π
2.3. Extended Header Flags β¨
okay so bestie, if there are any extensions in a TRILL Header (you can tell because Op-Length is non-zero π), the first 32 bits of that extensions area are the extended header flags π. Anything after those first 32 bits can be defined in later documents, like [Options] and [Options2] π .
Any RBridge that adds an extensions area to a TRILL Header MUST set those first 32 bits to zero π«Ά, unless it's permitted or required to set one or more of them. For TRILL Data frames that have extensions, any transit RBridge that doesn't discard the frame MUST transparently copy the extended flags word πΈ, except for changes that an extension it implements is allowed to make π§.
Here's what the extended header flags word looks like, and the list after the figure explains what each bit means π:
0 1 2 3
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Crit.| CHbH | NCHbH |CRSV | NCRSV | CItE | NCItE |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... additional optional 32-bit aligned words of extension |
| possibly including TLV extensions ...
(The first two critical summary bits come from [RFC6325] π¦. This document tacks an "S", for Summary, onto the end of their acronyms. There's also a third critical summary bit specified here, and its acronym ends with an "S" too, for consistency β¨.)
Bits Description
--------------------
0-2 Crit.: Critical summary bits.
0 CHbHS: Critical Hop-by-Hop extension(s) are present.
1 CItES: Critical Ingress-to-Egress extension(s) are present.
2 CRSVS: Critical Reserved extension(s) are present.
3-7 CHbH: Critical Hop-by-Hop extended flag bits.
8-13 NCHbH: Non-critical Hop-by-Hop extended flag bits.
14-16 CRSV: Critical Reserved extended flag bits.
17-20 NCRSV: Non-critical Reserved extended flag bits.
21-26 CItE: Critical Ingress-to-Egress extended flag bits.
27-31 NCItE: Non-critical Ingress-to-Egress extended flag bits.
2.3.1. Critical Summary Bits π₯
okay the top three bits of the extended header flags area (bits 0, 1, and 2 above) are called the critical summary bits π. They basically summarize whether critical extensions are around:
- CHbHS: if this bit is one, one or more critical hop-by-hop extensions are present π. Those could be critical hop-by-hop extended header flags, or critical hop-by-hop extensions after the first word of the extensions area. Transit RBridges that don't support all of the critical hop-by-hop extensions present (for example, an RBridge that supports no critical hop-by-hop extensions at all) MUST drop the frame π. If CHbHS is zero, the frame is safe for a transit RBridge to forward, no matter what extensions that RBridge does or doesn't support π«§.
- CItES: if this bit is a one, one or more critical ingress-to-egress extensions are present π. Those could be critical ingress-to-egress extended header flags, or critical ingress-to-egress extensions after the first word of the extensions area. If CItES is zero, no such extensions are present π. If either CHbHS or CItES is non-zero, egress RBridges that don't support all the critical extensions present (for example, an RBridge that supports no critical extensions) MUST drop the frame π. If both CHbHS and CItES are zero, the frame is safe for an egress RBridge to process, no matter what extensions that RBridge does or doesn't support π .
- CRSVS: if this bit is a one, one or more critical extensions are present that are reserved to apply to a class of RBridges to be specified in the future π§. The example given is border RBridges in a TRILL campus extended to support multi-level IS-IS, and that class will be a subset of transit RBridges πΈ. RBridges in this class MUST drop frames with the CRSVS bit set unless they implement all critical hop-by-hop and all critical reserved extensions present in the frame π.
These summary bits make life simple and efficient π¦. Egress RBridges that support no critical extensions, transit RBridges that support no critical hop-by-hop extensions, and RBridges in the reserved class that support no critical hop-by-hop or reserved extensions can all get by with the same quick check: is Op-Length non-zero? If it is, look at the top one, two, or three bits just after the fixed portion of the TRILL Header β¨. From those bits they can decide whether to discard the frame or forward/process it π.
2.4. Conflict of Extensions π
Defining TRILL extensions, including extended header flags, that conflict with each other would be a total mess π©. If conflicting extensions show up in the same packet and different implementations process them in different orders, the results could be unpredictable π. You could write rules to spell out how to process conflicting extensions predictably, but those rules would limit implementation flexibility and could pile on serious processing burdens π ββοΈ.
Conflicting extensions SHOULD NOT be defined π«. But if they are, careful thought should go into whether and how to specify how conflicting extensions get handled π§ .
3. Specific Extended Header Flags π
Here's the table showing the current state of TRILL Header extended flag assignments π. See Section 5 for IANA Considerations π·.
Bits Purpose Section
----------------------------------------------------------------
0-2 Critical Summary Bits 2.3.1
3-6 available critical hop-by-hop flags
7 Critical Channel Alert flag 3.1
8 Non-critical Channel Alert flag 3.1
9-13 available non-critical hop-by-hop flags
14-16 available critical reserved flags
17-20 available non-critical reserved flags
21-26 available critical ingress-to-egress flags
27-31 available non-critical ingress-to-egress flags
Table 1: Extended Header Flags Area
3.1. RBridge Channel Alert Extended Flags π
The RBridge Channel Alert extended header flags say that the frame is an RBridge Channel frame [RFC7178] that asks for processing at each hop π£.
If the Critical Channel Alert flag (bit 7) is a one, and the RBridge doesn't implement the RBridge Channel feature or the particular RBridge Channel protocol involved [RFC7178], or the frame doesn't actually look like an RBridge Channel message, then the frame is discarded ποΈ. This lets you do things like a channel message that needs strict source routing (or something similar) πΊοΈ, and you get the assurance that it'll be discarded instead of wandering off the directed path π«.
If the frame isn't discarded as described above, then either the Critical or the Non-critical Channel Alert flag tells transit RBridges that an RBridge Channel message [RFC7178] is present and might need special handling π¨. The non-critical alert flag supports things like an RBridge Channel protocol message with a "record route" function, where it's fine for transit RBridges that don't support this function to not be recorded π€οΈ.
4. Additions to IS-IS π
RBridges use IS-IS Link State PDUs (LSPs) to tell other RBridges which extended header flags they support π‘. The IS-IS PDU(s), TLV(s), or sub-TLV(s) used to encode and advertise this info are specified in a separate document [RFC7176] π.
5. IANA Considerations ποΈ
IANA has created a "TRILL Extended Header Flags" subregistry within the TRILL Parameters registry ποΈ. That subregistry is initially populated as specified in Table 1 in Section 3. References in that table to sections of this document have been swapped out in the IANA subregistry for references to this document as an RFC π.
New TRILL extended header flags are allocated by IETF Review [RFC5226] π.
To indicate support of extended header flags, IANA has assigned the following bits in the TRILL-VER and PORT-TRILL-VER Sub-TLV Capability Flag registries created by [RFC7176] π:
- Bits 3-13 of the PORT-TRILL-VER Sub-TLV Capability Flags have been assigned to indicate support of TRILL hop-by-hop extended header flags 3-13.
- Bits 14-31 of the TRILL-VER Sub-TLV Capability Flags have been assigned to indicate support of TRILL extended header flags 14-31.
6. Security Considerations π¨
For general TRILL protocol security considerations, see [RFC6325] π‘οΈ.
For security considerations related to extended header flags, see the document where the flag is specified π.
It is really important that the critical summary bits in the extended header flags word are set properly π±. If they're set when critical extensions of the appropriate category aren't present, frames may get discarded for no reason π€. If they're not set when critical extensions are present, frames may be mishandled or corrupted, and intended security policies may be violated π.
The RBridge Channel Alert extended header flags come with the following security considerations π΅οΈ. Implementations should keep in mind that these flags might be set in a frame by mistake π. If either RBridge Channel Alert flag is found set in a frame that isn't an RBridge Channel message [RFC7178], the flag MAY be cleared, and it should have no effect except, possibly, delaying processing of the frame π« . If either RBridge Channel Alert flag is accidentally left out of a frame, the desired per-hop processing for that frame may not happen π¬.
7. Acknowledgements π
Huge thanks, listed in alphabetical order, to these legends for their valuable contributions π: Ben Campbell, Adrian Farrel, Barry Leiba, and Thomas Narten π«Ά.
8. References π
8.1. Normative References π
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing
an IANA Considerations Section in RFCs", BCP 26, RFC
5226, May 2008.
[RFC6325] Perlman, R., Eastlake 3rd, D., Dutt, D., Gai, S., and
A. Ghanwani, "Routing Bridges (RBridges): Base Protocol
Specification", RFC 6325, July 2011.
[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, May
2014.
[RFC7178] Eastlake 3rd, D., Manral, V., Li, Y., Aldrin, S., and
D. Ward, "Transparent Interconnection of Lots of Links
(TRILL): RBridge Channel Support", RFC 7178, May 2014.
8.2. Informative References β¨
Okay bestie, these are the "extra reading" refs, the ones the RFC mentions for context and doesn't need you to implement anything from π
- [MultiLevel] Perlman, R., Eastlake 3rd, D., Ghanwani, A., and H. Zhai, "Flexible Multilevel TRILL (Transparent Interconnection of Lots of Links)", Work in Progress, January 2014. πΈ
- [Options] Eastlake 3rd, D., Ghanwani, A., Manral, V., and C. Bestler, "RBridges: Further TRILL Header Extensions", Work in Progress, June 2012. π¦
- [Options2] Eastlake 3rd, D., "RBridges: More Proposed TRILL Header Options", Work in Progress, October 2011. β¨
Authors' Addresses π
Meet the squad who wrote this whole thing, with their contact info so you can slide into their inbox if you have questions π«Ά
Donald Eastlake 3rd
Huawei R&D USA
155 Beaver Street
Milford, MA 01757
USA
Phone: +1-508-333-2270
EMail: d3e3e3@gmail.com
Anoop Ghanwani
Dell
5450 Great America Parkway
Santa Clara, CA 95054
USA
EMail: anoop@alumni.duke.edu
Vishwas Manral
Ionos Corp.
4100 Moorpark Ave.
San Jose, CA 95117
USA
EMail: vishwas@ionosnetworks.com
Yizhou Li
Huawei Technologies
101 Software Avenue,
Nanjing 210012
China
Phone: +86-25-56622310
EMail: liyizhou@huawei.com
Caitlin Bestler
Nexenta Systems
455 El Camino Real
Santa Clara, CA 95050
USA
EMail: caitlin.bestler@nexenta.com
π¦ where this page comes from
- ietf: rfc7179 2014-05
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms