RFC 4207
Synchronous Optical Network (SONET)/Synchronous Digital Hierarchy (SDH) Encoding for Link Management Protocol (LMP) Test Messages
RFC 4207 π Synchronous Optical Network (SONET)/Synchronous Digital Hierarchy (SDH) Encoding for Link Management Protocol (LMP) Test Messages
Authors: J. Lang (Sonos, Inc.) and D. Papadimitriou (Alcatel) π Category: Standards Track π¦ Date: October 2005 πΈ Obsoletes/Updates: the header doesn't list any β¨
Status of This Memo π
okay so this doc is an Internet standards track protocol spec for the Internet community π«Ά It's also asking for discussion and suggestions for improvements, bestie. If you want to know where this protocol stands in the standardization process, check the current edition of "Internet Official Protocol Standards" (STD 1) π And distribution of this memo is unlimited, so share it with everyone π
Copyright Notice β¨
Copyright (C) The Internet Society (2005). π₯
Abstract π§
This doc spells out the SONET/SDH technology-specific info you need when you're sending Link Management Protocol (LMP) test messages. It's the cute little detail guide for the test messages π
1. Introduction π
okay picture this: for scalability, you can bundle up several physical resources that connect Label Switching Routers (LSRs) into one traffic engineering (TE) link, so path computation and signaling see one clean pipe π¦ Those resources can be one or more physical links between the LSRs, or they can be a Label Switched Path (LSP) when LSP hierarchy [RFC4206] is in use. Managing TE links isn't limited to in-band messaging either. You can also use out-of-band techniques, which is giving flexibility π
The Link Management Protocol (LMP) [RFC4204] was built as part of the Generalized MPLS (GMPLS) protocol suite to manage TE links π LMP has four main procedures right now. The first two are mandatory and the last two are optional:
- Control channel management
- Link property correlation
- Link verification
- Fault management
Control channel management sets up and keeps control channel connectivity between adjacent nodes β¨ It does this with a Config message exchange, then a lightweight keep-alive message exchange. Link property correlation aggregates multiple data links into a single TE Link and syncs up their link properties π«Ά Link verification checks the physical connectivity of the data links and swaps their Interface_Ids π₯ Fault management is mainly for suppressing alarms and localizing failures in both opaque and transparent networks π Now here's the twist: when LMP runs over SONET/SDH, the fault management procedures may not be needed, because existing SONET/SDH mechanisms can handle it π
So in this doc, we define the SONET/SDH technology-specific info for LMP. Specifically, we detail the SONET/SDH test procedures used for link verification and link property correlation π These procedures include the trace correlation transport mechanism (defined for J0, J1, J2), which separates the transport and control plane identifiers. That last procedure needs a new trace monitoring function, which this doc also covers π§ Once the data links are verified, they can be grouped to form TE links. Iconic, honestly π
2. Terminology π
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be read as described in [RFC2119] π
You're expected to already know the terminology in [RFC4204], [G.707], and [T1.105] π Here are the abbreviations this doc uses:
CRC-N: Cyclic Redundancy Check-N.
DCC: Data communications channel.
LOVC: Lower-order virtual container.
HOVC: Higher-order virtual container.
MS: Multiplex section.
MSOH: Multiplex section overhead.
POH: Path overhead.
RS: Regenerator section.
RSOH: Regenerator section overhead.
SDH: Synchronous digital hierarchy.
SOH: Section overhead.
SONET: Synchronous Optical Network.
STM(-N): Synchronous Transport Module (-N) (SDH).
STS(-N): Synchronous Transport Signal-Level N (SONET).
VC-n: Virtual Container-n (SDH).
VTn: Virtual Tributary-n (SONET).
3. Verifying Link Connectivity π¦
In [RFC4204], there's a link verification procedure where Test messages get sent in-band over the data links π This handles data plane discovery, Interface_Id exchange, and physical connectivity verification. Interface_Ids matter in GMPLS signaling either as port labels [RFC3471] or as component link identifiers [RFC4201], depending on how it's configured πΈ You can verify multiple data links in one go, and they get correlated using the Verify_Id assigned to the procedure β¨
As part of link verification, a BeginVerify message exchange agrees on the parameters for the Test procedure π«Ά It can kick off by sending a BeginVerify message over the control channel. That message has a BEGIN_VERIFY object full of fields, including the transmission (bit) rate, encoding type, and transport mechanisms for the Test Messages π₯ If the remote node gets a BeginVerify and is ready to start, it sends back a BeginVerifyAck message with the transport mechanism it wants for the Test messages. The remote node also assigns a Verify_Id to the procedure and puts it in the BeginVerifyAck message π
The transmission rate of the data link carrying the Test Messages is written in IEEE floating-point format, using a 32-bit number field and expressed in bytes per second π§ For the values defined for SONET/SDH, check [RFC3471] π
The encoding type tells you what encoding an interface supports π It's consistent with the LSP Encoding Type defined in [RFC3471]. For SONET/SDH, this value must equal the value given for "SDH ITU-T G.707/SONET ANSI T1.105" π
The transport mechanism is set with the Verify Transport Mechanism bit mask π The scope of this mask is limited to the link encoding type. Multiple bits can be set when this field shows up in the BeginVerify message, but only one bit can be set when it's in the BeginVerifyAck message π
Up next, the subsection defines the Verify Transport Mechanism options for SONET/SDH encoding. The trace correlation transport mechanism (defined for J0, J1, J2) separates the transport and control plane identifiers β¨
3.1. Verify Transport Mechanism πΈ
This field is 16 bits long π«Ά
This doc defines the flags for SONET/SDH encoding. All values are defined in network byte order (i.e., big-endian byte order) π
0x0001: Reserved0x0002 DCCS: Test Message over the Section/RS DCCπ¦ This one is capable of sending Test Messages using the DCC Section/RS Overhead bytes with bit-oriented High-Level Data Link Control (HDLC) framing format [RFC1662]. The Test Message gets sent as defined in [RFC4204] β¨0x0004 DCCL: Test Message over the Line/MS DCCπ₯ This one is capable of sending Test Messages using the DCC Line/MS Overhead bytes with bit-oriented HDLC framing format [RFC1662]. The Test Message gets sent as defined in [RFC4204] π0x0008 J0-trace: J0 Section Trace Correlationπ§ This one is capable of sending the SONET/SDH Section/RS trace over the J0 Section/RS overhead byte, as defined in [T1.105] and [G.707] π The Test Message doesn't go out using the J0 bytes (aka over the data link). It's sent over the control channel and correlated with the J0 pattern received, for consistency π«Ά To map the Interface_Id where the J0 Test Message is sent to the J0 pattern sent in-band, the transmitting node must provide the correlation between that pattern and the J0 Test Message π That correlation is done using the TRACE object defined in Section 4 π The Test Message format is as follows:
<Test Message> ::=<Common Header> <LOCAL_INTERFACE_ID>
<VERIFY_ID> <TRACE>
0x0010: Reservedπ0x0020: Reservedπ0x0040 J1-trace: J1 Path Trace Correlationπ This one is capable of sending the SONET/SDH STS SPE/HOVC Path trace over the J1 Path overhead byte, as defined in [T1.105] and [G.707] π The Test Message doesn't go out using the J1 bytes (aka over the data link). It's sent over the control channel and correlated with the J1 pattern received, for consistency πΈ To map the Interface_Id where the J1 Test Message is sent to the J1 pattern sent in-band, the transmitting node must provide the correlation between that pattern and the J1 Test Message. That correlation is done using the TRACE object defined in Section 4 β¨ The Test Message format is identical to the one defined above in J0-trace π¦0x0080 J2-trace: J2 Path Trace Correlationπ This one is capable of sending the SONET/SDH VT SPE/LOVC Path trace over the J2 Path overhead byte, as defined in [T1.105] and [G.707] π§ The Test Message doesn't go out using the J2 bytes (aka over the data link). It's sent over the control channel and correlated with the J2 pattern received, for consistency π«Ά To map the Interface_Id where the J2 Test Message is sent to the J2 pattern sent in-band, the transmitting node must provide the correlation between that pattern and the J2 Test Message. That correlation is done using the TRACE object defined in Section 4 π₯ The Test Message format is identical to the one defined above in J0-trace π
4. Trace Monitoring π
The trace monitoring features in this section let a node do trace monitoring using SONET/SDH capabilities π
- A node can ask its neighbor (the remote node) to monitor a link for a specific pattern in the overhead, using the TraceMonitor Message. An example of this overhead is the SONET Section Trace message sent in the J0 byte π If the actual trace message doesn't match the expected one, the remote node MUST report the mismatch condition π¨
- A node can request the current trace message value on a given data link using the TraceReq Message π§
- A node can ask a remote node to send a specific trace message over a data link using the InsertTrace Message π
4.1.1. TraceMonitor Message β¨
okay so the TraceMonitor message (Message Type 21) π gets sent over the control channel, and it's basically the node going "hey bestie, can you keep an eye on this data link for one specific trace value?" that value goes into the <TRACE> object π
<TraceMonitor Message> ::= <Common Header> <MESSAGE_ID>
<LOCAL_INTERFACE_ID> <TRACE>
The above transmission order SHOULD be followed. π§
The remote node MUST respond to a TraceMonitor message with either a TraceMonitorAck or TraceMonitorNack Message. no skipping the reply, periodt π
4.1.1.1. TRACE Object Class π¦
Class = 21
C-Type = 1, Trace
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|N| C-Type | Class | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Trace Type | Trace Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
// Trace Message //
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Trace Type: 16 bits πΈ
The type of the trace message. The following values are defined. All other values are reserved.
1 = SONET Section Trace (J0 Byte)2 = SONET Path Trace (J1 Byte)3 = SONET Path Trace (J2 Byte)4 = SDH Section Trace (J0 Byte)5 = SDH Path Trace (J1 Byte)6 = SDH Path Trace (J2 Byte)
Trace Length: 16 bits π
This is the length in bytes of the trace message (as specified by the Trace Type).
Trace Message: π₯
This is the value of the expected message to be received in-band. The valid length and value combinations are determined by the specific technology: for SONET see [T1.105] and for SDH see [G.707]. The message MUST be padded with zeros to a 32-bit boundary, if necessary. Trace Length does not include padding zeroes. the padding is a whole vibe, so don't forget it π«Ά
This object is nonnegotiable. π
4.1.2. TraceMonitorAck Message π
The TraceMonitorAck message (Message Type 22) is used to acknowledge receipt of the TraceMonitor message and indicate that all of the TRACE Objects in the TraceMonitor message have been received and processed correctly (i.e., no Trace Mismatch). the "all good, no drama" reply β¨
The format is as follows:
<TraceMonitorAck Message> ::= <Common Header> <MESSAGE_ID_ACK>
The above transmission order SHOULD be followed.
The MESSAGE_ID_ACK object is defined in [RFC4204]. The contents of the MESSAGE_ID_ACK object MUST be obtained from the TraceMonitor message being acknowledged.
4.1.3. TraceMonitorNack Message π
The TraceMonitorNack message (Message Type 23) is used to acknowledge receipt of the TraceMonitor message and indicate that the TRACE Object in the TraceMonitor message was not processed correctly. This could be because the trace monitoring requested is not supported or there was an error in the TRACE object value(s). the "uh, that didn't work" reply π
The format is as follows:
<TraceMonitorNack Message> ::= <Common Header> <MESSAGE_ID_ACK>
<ERROR_CODE>
The above transmission order SHOULD be followed.
The MESSAGE_ID_ACK and ERROR_CODE objects are defined in [RFC4204]. The contents of the MESSAGE_ID_ACK object MUST be obtained from the TraceMonitor message being acknowledged.
If the Trace type is not supported, the ERROR_CODE MUST indicate "Unsupported Trace Type" defined in Section 4.1.3.1.
If the TRACE object was not equal to the value seen in the trace, the TraceMonitorNack message MUST include the ERROR_CODE indicating "Invalid Trace Message". The TraceMismatch message (see Section 4.1.4) SHOULD NOT be sent as a result of the mismatch. π« don't spam the mismatch message here, bestie
The TraceMonitorNack message uses a new ERROR_CODE C-Type defined in Section 4.1.3.1. π§©
4.1.3.1. ERROR_CODE Class π
C-Type = 3, TRACE_ERROR
The following new error code bit-values are defined:
0x01 = Unsupported Trace Type
0x02 = Invalid Trace Message
All other values are Reserved.
Multiple bits may be set to indicate multiple errors. so you can stack your complaints π
This Object is nonnegotiable. π
4.1.4. TraceMismatch Message π¨
The TraceMismatch message (Message Type 24) is sent over the control channel and is used to report a trace mismatch on a data link for which trace monitoring was requested. The format is as follows:
<TraceMismatch message> ::= <Common Header> <MESSAGE_ID>
<LOCAL_INTERFACE_ID>
[<LOCAL_INTERFACE_ID> ...]
The above transmission order SHOULD be followed.
A neighboring node that receives a TraceMismatch message MUST respond with a TraceMismatchAck message. no leaving the group chat on this one π«Ά
The LOCAL_INTERFACE_ID object is defined in [RFC4204]. The LOCAL_INTERFACE_ID in this message is the local Interface Id of the data link that has a trace mismatch. A trace mismatch for multiple LOCAL_INTERFACE_IDs may be reported in the same message. so you can batch the tea β
4.1.5. TraceMismatchAck Message π
The TraceMismatchAck message (Message Type 25) is used to acknowledge receipt of a TraceMismatch message. The format is as follows:
<TraceMismatchAck Message> ::= <Common Header> <MESSAGE_ID_ACK>
The MESSAGE_ID_ACK object is defined in [RFC4204]. The contents of the MESSAGE_ID_ACK object MUST be obtained from the TraceMismatch message being acknowledged. π
4.1.6. TraceReq Message π§
The TraceReq message (Message Type 26) is sent over the control channel and is used to request the current trace value of a data link.
<TraceReq Message> ::= <Common Header> <MESSAGE_ID>
<LOCAL_INTERFACE_ID> <TRACE_REQ>
The above transmission order SHOULD be followed.
The format of the TRACE_REQ object is as follows:
Class = 22
O C-Type = 1, TraceReq
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|N| C-Type | Class | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Trace Type | (Reserved) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Trace Type: 16 bits πΈ
Defined in Section 4.1.1.1.
Reserved: 16 bits π«§
This field MUST be set to zero when sent and ignored when received. zeros out, nothing to see here π€«
4.1.7. TraceReport Message π£
The TraceReport message (Message Type 27) is sent over the control channel after receiving a TraceReq message.
<TraceReport Message> ::= <Common Header> <MESSAGE_ID_ACK> <TRACE>
The TraceReport message MUST include a TRACE Object (as described in Section 4.1.1.1) for the requested data link.
The MESSAGE_ID_ACK object is defined in [RFC4204]. The contents of the MESSAGE_ID_ACK object MUST be obtained from the TraceReq message being acknowledged. π
4.1.8. TraceReqNack Message π ββοΈ
The TraceReqNack message (Message Type 28) is sent over the control channel after receiving a TraceReq message.
<TraceReqNack Message> ::= <Common Header> <MESSAGE_ID_ACK>
<ERROR_CODE>
The above transmission order SHOULD be followed.
The MESSAGE_ID_ACK object is defined in [RFC4204]. The contents of the MESSAGE_ID_ACK object MUST be obtained from the TraceReq message being acknowledged.
The TraceReqNack message MUST include an ERROR_CODE Object (as defined in Section 4.1.3.1) for the requested data link. π₯²
4.1.9. InsertTrace Message π¦
The InsertTrace message (Message Type 29) is sent over the control channel and is used to request a remote node to send a specific trace message over a data link (this assumes that the remote knows the mapping between the local and remote interface_Ids before fulfilling such request). it's giving "you gotta know the map first" energy πΊοΈ
The format is as follows:
<InsertTrace Message> ::= <Common Header> <MESSAGE_ID>
<LOCAL_INTERFACE_ID> <TRACE>
The above transmission order SHOULD be followed.
A node that receives an InsertTrace message MUST respond with either an InsertTraceAck or an InsertTraceNack Message.
Once the InsertTraceAck message is received, the TraceMismatch message (see Section 4.1.4) is used to indicate a trace mismatch has occurred.
The MESSAGE_ID_object is defined in [RFC4204]. π·
4.1.10. InsertTraceAck Message π«Ά
The InsertTraceAck message (Message Type 30) is used to acknowledge receipt of the InsertTrace message and indicate that the TRACE Object in the InsertTrace message has been received and processed correctly (i.e., no Trace Mismatch). The format is as follows:
<InsertTraceAck Message> ::= <Common Header> <MESSAGE_ID_ACK>
The MESSAGE_ID_ACK object is defined in [RFC4204]. The contents of the MESSAGE_ID_ACK object MUST be obtained from the InsertTrace message being acknowledged. π
4.1.11. InsertTraceNack Message π
The InsertTraceNack message (Message Type 31) is used to acknowledge receipt of the InsertTrace message and to indicate that the TRACE Object in the InsertTrace message was not processed correctly. This could be because the trace monitoring requested is not supported or there was an error in the value.
The format is as follows:
<InsertTraceNack Message> ::= <Common Header> <MESSAGE_ID_ACK>
<ERROR_CODE>
The above transmission order SHOULD be followed.
The MESSAGE_ID_ACK object is defined in [RFC4204].
The InsertTraceNack message MUST include an ERROR_CODE Object (as defined in Section 4.1.3.1) for the requested data link. π
5. Security Considerations π
β οΈ this part is very serious bestie, so read it carefully!
LMP message security uses IPsec as described in [RFC4204]. This document introduces no other new security considerations not covered in [RFC4204]. the security stuff is handled by IPsec over in RFC 4204, so this doc doesn't add any new drama π‘οΈ
6. IANA Considerations π
LMP [RFC4204] defines the following name spaces and how IANA can make assignments in those namespaces:
- LMP Message Type.
- LMP Object Class.
- LMP Object Class type (C-Type) unique within the Object Class.
- LMP Sub-object Class type (Type) unique within the Object Class.
This memo introduces the following new assignments:
LMP Message Type:
o TraceMonitor message (Message type = 21)
o TraceMonitorAck message (Message type = 22)
o TraceMonitorNack message (Message type = 23)
o TraceMismatch message (Message type = 24)
o TraceMismatchAck message (Message type = 25)
o TraceReq message (Message type = 26)
o TraceReport message (Message type = 27)
o TraceReqNack message (Message type = 28)
o InsertTrace message (Message type = 29)
o InsertTraceAck message (Message type = 30)
o InsertTraceNack message (Message type = 31)
LMP Object Class name space and Class type (C-Type):
o TRACE Class name (21)
- Type 1 (C-Type = 1)
o TRACE REQ Class name (22)
- Type 1 (C-Type = 1)
7. References π
7.1. Normative References
okay so these are the must-reads, bestie πβ¨ the stuff the spec leans on hard:
- [RFC4201] Kompella, K., Rekhter, Y., and L. Berger, "Link Bundling in MPLS Traffic Engineering (TE)", RFC 4201, October 2005.
- [G.707] ITU-T Recommendation G.707, "Network node interface for the synchronous digital hierarchy (SDH)," October 2000.
- [RFC4204] Lang, J., Ed., "Link Management Protocol (LMP)", RFC 4204, October 2005.
- [RFC1662] Simpson, W., "PPP in HDLC-like Framing", STD 51, RFC 1662, July 1994.
- [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
- [RFC3471] Berger, L., "Generalized Multi-Protocol Label Switching (GMPLS) Signaling Functional Description", RFC 3471, January 2003.
- [T1.105] T1.105, "Revised Draft T105 SONET Base Standard," January 2001.
7.2. Informative References
the one extra read that's good to know about, but the spec doesn't need it to function π¦
- [RFC4206] Kompella, K., and Y. Rekhter, "Label Switched Paths (LSP) Hierarchy with Generalized Multi-Protocol Label Switching (GMPLS) Traffic Engineering (TE)", RFC 4206, October 2005.
8. Acknowledgements β¨
the authors gave a huge shoutout to Bernard Sales, Emmanuel Desmet, Gert Grammel, Jim Jones, Stefan Ansorge, John Drake, and James Scott for all their contributions to this doc π«Ά π
they also thanked Greg Bernstein and Michiel van Everdingen for their insightful comments and for showing a seriously strong mix of toughness, professionalism, and courtesy π iconic behaviour, honestly
Authors' Addresses π
Jonathan P. Lang Sonos, Inc. 223 E. De La Guerra St. Santa Barbara, CA 93101
EMail: jplang@ieee.org
Dimitri Papadimitriou Alcatel Francis Wellesplein 1 B-2018 Antwerpen, Belgium
EMail: dimitri.papadimitriou@alcatel.be
Full Copyright Statement π
Copyright (C) The Internet Society (2005).
This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.
This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property πΈ
The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.
Acknowledgement π§
funding for the RFC Editor function is currently provided by the Internet Society. π
π¦ where this page comes from
- ietf: rfc4207 2005-10
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms