An SFL is defined to be a label that causes exactly the same behavior at the egress Label Edge Router (LER) as the label it replaces, except that it also causes one or more additional actions that have been previously agreed between the peer LERs to be executed on the packet. There are many possible additional actions, such as measuring the number of received packets in a flow, triggering an IP Flow Information Export (IPFIX) [
RFC 7011] capture, triggering other types of deep packet inspection, or identifying the packet source. For example, in a Performance Monitoring (PM) application, the agreed action could be recording the receipt of the packet by incrementing a packet counter. This is a natural action in many MPLS implementations, and where supported, this permits the implementation of high-quality packet loss measurement without any change to the packet-forwarding system.
To illustrate the use of this technology, we start by considering the case where there is an
application label in the MPLS label stack. As a first example, let us consider a pseudowire (PW) [
RFC 3985] on which it is desired to make packet loss measurements. Two labels, synonymous with the PW labels, are obtained from the egress terminating provider edge (T-PE). By alternating between these SFLs and using them in place of the PW label, the PW packets may be batched for counting without any impact on the PW forwarding behavior [
RFC 8321] (note that strictly only one SFL is needed in this application, but that is an optimization that is a matter for the implementor). The method of obtaining these additional labels is outside the scope of this text; however, one control protocol that provides a method of obtaining SFLs is described in [
MPLS-SFL-CONTROL].
Next, consider an MPLS application that is multipoint to point, such as a VPN. Here, it is necessary to identify a packet batch from a specific source. This is achieved by making the SFLs source specific, so that batches from one source are marked differently from batches from another source. The sources all operate independently and asynchronously from each other, independently coordinating with the destination. Each ingress LER is thus able to establish its own SFL to identify the subflow and thus enable PM per flow.
Finally, we need to consider the case where there is no MPLS application label such as occurs when sending IP over a Label Switched Path (LSP), i.e., there is a single label in the MPLS label stack. In this case, introducing an SFL that was synonymous with the LSP label would introduce network-wide forwarding state. This would not be acceptable for scaling reasons. Therefore, we have no choice but to introduce an additional label. Where penultimate hop popping (PHP) is in use, the semantics of this additional label can be similar to the LSP label. Where PHP is not in use, the semantics are similar to an MPLS Explicit NULL [
RFC 3032]. In both of these cases, the label has the additional semantics of the SFL.
Note that to achieve the goals set out above, SFLs need to be allocated from the platform label table.