Sunday, August 28, 2011

What is Entropy Label?

In any network currently load balancing is achieved by Link Aggregation or Equal Cost Multipath (ECMP) mechanism. ECMP is multiple paths with same cost to reach a particular destination. Ay path can be used to reach the destination.

While ECMP load balancing can be per packet, it may result in Jitter or delay and even Out-of-Order packets to ultimate destination. Current ECMP load balancing is flow specific where it will consider Src/Dst IP address, Transport protocol (UDP or TCP), and Src/Dst Port details from the packet, collectively can be considered as KEYS and input the same to load balancing algorithm to get the egress link.

With MPLS network, Transit LSR in order to get the KEYS for load balancing algorithm may require to perform deep packet inspection. A new idea is proposed to eliminate the need to have Transit LSR to perform deep packet inspection. The Idea is to have ingress LER pull the KEYS from the native packet, input the same to load balancing algorithm and place the resulting value as label known as ENTROPY LABEL and send across the MPLS network. Any LSR along the path can use the, already hashed value in entropy label for load balancing.

Below are few points to remember about Entropy label,

• Will not be used for forwarding decision and is used only to carry load balancing information.
• Will be generated by Ingress LER
• Must be at the bottom of the label stack with Bottom of Stack set to 1
• Must have TTL value set to “0”

Since Entropy label will now be the bottom most label, application label like VPN label (in case of MPLS VPN) or Tuel label (In case of L2VPN) will not be with BoS=1. Any egress (supporting entropy label feature) when receiving MPLS packet with Application label with BoS=0, understands that there is one more label which is entropy label and will pop the same and send across.

What is Entropy Label Indicator?

In Some applications like MPLS VPN, egress PE will have Application label as the bottom most and so can understand that there is entropy label if the application label is with BoS=0. But there are few applications like CsC VPN, where the egress PE of Carrier provider will pop the application label and will send labeled packet to Carrier customer device. In this case, the application label will always be with BoS=0. So we need other way to identify if there is Entropy label. This is does by Entropy Label Indicator (ELI).


 
On control plane, Egress LER will signal ELI value (label assignment as usual) to remote Ingress LER devices. So when Entropy label is pushed by Ingress, it will push ELI label on top of Entropy label with BoS=0 and TTl=0.


 

How Entropy Label Support and optional Entropy Label Indicator signaled between LER?

With LDP signaling, a new SUB-TLV (Entropy Label SUB-TLV) is used (Type to be decided). It contains 20 bit “VALUE” space which will be zero when ELI is not required and will be non-zero if ELI is required and this value will be used in ELI label.

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |U|F|        Type (TBD)         |           Length (8)          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |               Value                   |     Must Be Zero      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

With BGP Signaling, a new Optional, Transitive Path Attribute (Tentatively known as Entropy Label Attribute) will be used in BGP UPDATE while advertising the NLRI.

With RSVP-TE, Entropy Label Attribute TLV will be signaled in LSP_ATTRIBUTES OBJECT in both PATH message and RESV message.



How does it function at DataPlane?


 
1.       Ingress LER on receiving the packet will look into FIB table to identify the egress LER and the associated label details.
2.       Once Egress LER is identified, it will check if Entropy label is supported by egress LER. If it doesn’t support, it simply pushes the label details and send across to intermittent LSR devices.
3.       If Egress LER supports Entropy label and if it doesn’t require ELI, Ingress PE will push where TL is the Tunnel Label is the top label to reach Egress PE, AL is the Application Label and EL is the Entropy label with Entropy value which is calculated by running hashing function on KEYS from native packet; S=0; TTL=0.
4.       If Egress LER supports Entropy label and if it  requires ELI, Ingress PE will push where TL is the Tunnel Label is the top label to reach Egress PE, AL is the Application Label, ELI label is the one signaled by egress PE and EL is the Entropy label with Entropy value which is calculated by running hashing function on KEYS from native packet; S=0; TTL=0
5.       Any Transit LSR will use the value in Entropy Label if load balancing is required.
6.       Egress PE on receiving the MPLS packet will check if Application Label is set as Bottom of Stack. If yes, it will removes the last/bottom label and send across.
7.       If Application is not set as Bottom of stack, Egress PE will check if bottom label is set with S=0 and TTL=0. If yes, it will confirm if the ELI is the value advertised by self.
8.       If Application is not set as Bottom of stack, Egress PE will check if bottom label is set with S=1 and TTL=0, it understood that this is Entropy label and will remove before sending to CE device.




6 comments:

  1. Nice explanation, make life easy thanks for the effort!

    ReplyDelete
  2. excellent! could u also clarify on reserved label value for ELI?

    ReplyDelete
    Replies
    1. Hi,

      Apologies for the very late response. Yes, I havent mentioned anything about the ELI. While crafting this document, the machinery was a bit different and there was no ELI. Later with many discussion in IETF, it was included and I am yet to update it. I will update it soon with additional details.

      -Nagendra

      Delete
  3. really nice doc to understand this special label.
    but from ASIC/NP perspective it will lead to some unexpected bugs at first used case

    :)

    ReplyDelete