Certainly you are familiar with DiffServ in QoS. This is the Differentiated Services approach that is so popular in enterprise networks today. As you recall, this is where traffic is classified and marked and then treated with an appropriate level of service on a hop by hop basis through the network. But what happens when we are in an MPLS environment?
First off, we remember that a key for DiffServ is marking traffic. How is this done for MPLS? It is those Experimental Bits (EXP). The three bits in the MPLS label part that have become used for QoS. Certainly these bits can convey the IP Precedence bit setting in the IP packet header.
What is the default behavior for these IP precedence and experimental bits in the MPLS environment? Here is how it works:
Imposition of Label (IP –> Label):
- The IP precedence of the incoming IP packet is copied to the MPLS EXP bits of all pushed labels
- The first three bits of the DSCP bits are copied to the MPLS EXP bits of all pushed labels
MPLS forwarding (Label –> Label):
- The EXP bits are copied to the new labels that are swapped/pushed during forwarding or imposition
- At label imposition, the underlying labels are not modified with the value of the new label being added to the current label stack
- At label disposition, the EXP bits are not copied down to the newly exposed label EXP bits
Disposition of Label (Label –> IP):
- At label disposition the EXP bits are not copied down to the IP precedence/DSCP field of the newly exposed IP packet
The great news is that you can control the behavior of these markings since about IOS12.X. This feature is called the DiffServ Tunneling modes and you have three options for how markings will function. There is uniform mode, pipe mode, and short-pipe mode.
DiffServ Tunneling Uniform Mode permits you to implement “seamless” QoS with the MPLS tunnels.
Here is how it works step by step:
- The ingress PE router copies the DSCP from the incoming IP packet into the MPLS EXP bits of the imposed labels
- As the EXP bits travel through the core, they may or may not be modified by intermediate P routers
- At the egress PE router, the EXP bits are copied to the DSCP bits of the newly exposed IP packet
Diffserv Tunneling Pipe Mode uses two layers of QoS. There is the QoS for the underlying data. This QoS setting remains unchanged as the packet traverses the core. Then there is the “per-core QoS” as it is called. This is separate QoS from the underlying data in the packet. This per-core QoS remains transparent to end users.
With the pipe mode in use, when a packet reaches the edge of the MPLS core, the egress PE router classifies the newly exposed IP packets for outbound queuing based on the MPLS PHB from the EXP bits of the recently removed label.
Diffserv Tunneling Short-Pipe Mode uses the same rules and techniques across the core as described in the Pipe Mode of operation. The difference is at the egress PE router. Here the PE routers classifies the newly exposed IP packets for outbound queuing based on the IP PHB from the DSCP value of this IP packet. Note that this is in contrast to the Pipe Mode that used the EXP bits for this setting.
This is heat another one of those areas in networking where it is so great that we have options. We want to ultimate in flexibility when it comes to QoS settings across service provider environments. The Tunnel modes available for QoS in this regard are just what we would want.