Internet-Draft SR based SFC Metadata September 2021
Liu Expires 19 March 2022 [Page]
Workgroup:
SPRING Working Group
Internet-Draft:
draft-liu-spring-sr-sfc-metadata-01
Published:
Intended Status:
Standards Track
Expires:
Author:
Yao. Liu
ZTE Corporation

Metadata in SR-MPLS Service Programming

Abstract

This document proposes methods to carry metadata in SR service programming with SR-MPLS data plane.

Status of This Memo

This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on 19 March 2022.

Table of Contents

1. Introduction

Service Function Chaining (SFC)[RFC7665] provides support for the creation of composite services that consist of an ordered set of Service Functions (SF) that are to be applied to packets and/or frames selected as a result of classification. [I-D.ietf-spring-sr-service-programming] describes how a service can be associated with a SID and how to achieve service function chaining in SR-enabled MPLS and IPv6 networks.

Metadata is defined in [RFC7665] as providing the ability to exchange context information between classifiers and SFs, and among SFs. In the context of Service Function Chaining, metadata provides contextual information about the data packets which traverse a Service Function Chain.

For service programming with the SR-MPLS data plane, [I-D.ietf-spring-sr-service-programming] proposes that a SRH inserted between the last MPLS label and the MPLS payload can be used as a metadata container. The SRH does not carry any segment but only the mandatory header fields required for transporting the metadata, which means a new header needs to be defined based on the SRH to carry the metadata. As for the indication the presence of metadata, [I-D.ietf-spring-sr-service-programming] provides two possible methods, one is to add the indication about the presence of metadata in the semantic of the service SIDs, another is to introduce a protocol identifier field within the MPLS packet as described in [I-D.xu-mpls-payload-protocol-identifier].

To summarize, there're requirements to carry metadata in SR service programming with SR-MPLS data plane and the methods need to be standardized.

To carry metadata in SR-MPLS service programming scenario, this document proposes how to utilize the existing mechanism, and considering the ongoing work in MPLS OPEN DT, a new method is introduced as well.

2. Metadata in SR-MPLS Data Plane

2.1. the RFC8595 Method

[RFC8595] provides method to realize SFC in an MPLS network by means of using a logical representation of the Network Service Header (NSH) in an MPLS label stack.

[RFC8595] chapter 12 describes how metadata is associated with user data packets or programmed in-band by introducing new eSPL and Metadata Label. As specified in [RFC8595], the methods can only be used for carrying metadata that is "per-SFP" or "per-flow" [RFC8393], but cannot support "per-packet" metadata, where the metadata needs to be carried with payload in each packets.

If it's not required to carry metadata and payload together in the packet, similar approaches MAY be used for SR-MPLS service programming.

The main ideas of the approaches are described in section 2.1.1 and section 2.1.2

2.1.1. Indicating Metadata in User Data Packets

                        +-------------------+
                        ~   Other Labels   ~
                        +-------------------+  ------------
                        |   Extension = 15  |
                        +-------------------+
                        |      MLI=16       |    Metadata
                        +-------------------+  Label Triple
                        |  Metadata Label   |
                        +-------------------+  ------------
                        ~       Other       ~
                        |      Metadata     |
                        ~   Label Triples   ~
                        +-------------------+
                        |                   |
                        ~      Payload      ~
                        |                   |
                        +-------------------+
Figure 1: Figure 1: Indicating Metadata in User Data Packets

An extended special-purpose label called the Metadata Label Indicator (MLI) (value 16) is defined in [RFC8595]to indicate the presence of the Metadata Label.

The Metadata Label value is an index into a table of metadata that is programmed into the network using in-band or out-of-band mechanisms. The metadata itself is not carried in the packet.

If this method is used for SR-MPLS service programming, the Metadata Label Triples(i.e, <15,MLI, Metadata Label>) SHOULD be placed at the bottom of the label stack.

2.1.2. In-Band Programming of Metadata

                +-------------------+
                ~   Other Labels   ~
                +-------------------+
                |   Extension = 15  |
                +-------------------+
                |    MPI=17         |
                +-------------------+
                |  Metadata Label   |
                +-------------------+
                |                   |
                ~    Metadata       ~
                |                   |
                +-------------------+

Figure 2: Figure 2: In-Band Programming of Metadata

An extended special-purpose label called the Metadata Present Indicator (MPI) (value 17) is defined in [RFC8595]to indicate the presence of the Metadata Label and the metadata field.

If this method is used for SR-MPLS service programming, the Metadata Label Triple(i.e, <15,MPI, Metadata Label>) SHOULD be placed in the bottom of the label stack.

Instead of user payload data, metadata is included after the bottom of the MPLS label stack. The metadata is formatted as a TLV as defined in [RFC8595].

2.2. Per Packet Metadata

The methods described above can only partially meet the requirements of carrying metadata in SR-MPLS service programming. How to carry the metadata in the user data packets still needs to be solved.

This section proposes a method to fulfill the requirements to carry metadata with/without the user payload in the packets for SR-MPLS traffic.

Note:There's a an ongoing work in MPLS OPEN DT to figure out the format and processing procedure of the indicator in the label stack and the data carried in/after the bottom of stack. So the method introduced in this section will be modified in the future version to follow the specification of the DT.

Firstly, an indicator in the label stack is needed to indicate the presence of metadata after the bottom of stack. This indicator may be an SPL or eSPL.

The metadata can be carried for SR-MPLS traffic between the last MPLS label and the MPLS payload, or it can also be carried after the BOS without the payload. In the latter case, the method introduced in section 2.1.2 are no longer necessary.

Two types of metadata for SR-MPLS service programming are required: fixed-length metadata and variable-length metadata.

The format of fixed-length metadata field is shown in figure 3, where:


    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Length    |   Next Header |                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
   |                                                               |
   |                       Service Metadata                        |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 3: Figure 3: Fixed-Length Service Metadata

Length: 14.

Next Header: This field identifies the type of the header immediately following the metadata field

Service Metadata: 14-octet field to carry metadata.

The variable-length metadata is a container to carry Service Metadata in the form of Variable-Length Metadata as defined in [RFC8300] for NSH MD Type 2. The format is shown in figure 4, where:


    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Length    |   Next Header |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
   //            Service Metadata                                 //
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 4: Figure 4: Variable-Length Service Metadata

Length: The total length of the Variable-Length Metadata field.

Next Header: This field identifies the type of the header immediately following the metadata field

Service Metadata: a list of Service Metadata TLV as defined in [RFC8300] for NSH MD Type 2.

A potential requirement is to carry the service function path(SFP) identifier in the packets for SR-MPLS service programming. One possible solution is to carry it in the metadata, another is to carry in the label stack. This will discussed in future versions.

3. Security Considerations

This document does not change the underlying security issues inherent in [I-D.ietf-spring-sr-service-programming].

4. IANA Considerations

TBD

5. References

5.1. Normative References

[I-D.ietf-spring-sr-service-programming]
Clad, F., Xu, X., Filsfils, C., Bernier, D., Li, C., Decraene, B., Ma, S., Yadlapalli, C., Henderickx, W., and S. Salsano, "Service Programming with Segment Routing", Work in Progress, Internet-Draft, draft-ietf-spring-sr-service-programming-05, , <https://www.ietf.org/archive/id/draft-ietf-spring-sr-service-programming-05.txt>.
[I-D.xu-mpls-payload-protocol-identifier]
Xu, X., Assarpour, H., Ma, S., and F. Clad, "MPLS Payload Protocol Identifier", Work in Progress, Internet-Draft, draft-xu-mpls-payload-protocol-identifier-09, , <https://www.ietf.org/archive/id/draft-xu-mpls-payload-protocol-identifier-09.txt>.
[RFC4928]
Swallow, G., Bryant, S., and L. Andersson, "Avoiding Equal Cost Multipath Treatment in MPLS Networks", BCP 128, RFC 4928, DOI 10.17487/RFC4928, , <https://www.rfc-editor.org/info/rfc4928>.
[RFC7274]
Kompella, K., Andersson, L., and A. Farrel, "Allocating and Retiring Special-Purpose MPLS Labels", RFC 7274, DOI 10.17487/RFC7274, , <https://www.rfc-editor.org/info/rfc7274>.
[RFC7665]
Halpern, J., Ed. and C. Pignataro, Ed., "Service Function Chaining (SFC) Architecture", RFC 7665, DOI 10.17487/RFC7665, , <https://www.rfc-editor.org/info/rfc7665>.
[RFC8300]
Quinn, P., Ed., Elzur, U., Ed., and C. Pignataro, Ed., "Network Service Header (NSH)", RFC 8300, DOI 10.17487/RFC8300, , <https://www.rfc-editor.org/info/rfc8300>.
[RFC8393]
Farrel, A. and J. Drake, "Operating the Network Service Header (NSH) with Next Protocol "None"", RFC 8393, DOI 10.17487/RFC8393, , <https://www.rfc-editor.org/info/rfc8393>.
[RFC8595]
Farrel, A., Bryant, S., and J. Drake, "An MPLS-Based Forwarding Plane for Service Function Chaining", RFC 8595, DOI 10.17487/RFC8595, , <https://www.rfc-editor.org/info/rfc8595>.

5.2. Informative References

[RFC8660]
Bashandy, A., Ed., Filsfils, C., Ed., Previdi, S., Decraene, B., Litkowski, S., and R. Shakir, "Segment Routing with the MPLS Data Plane", RFC 8660, DOI 10.17487/RFC8660, , <https://www.rfc-editor.org/info/rfc8660>.

Author's Address

Liu Yao
ZTE Corporation
Nanjing
China