130 likes | 321 Views
Pseudowire Hashing. Vach Kompella Joe Regan Shane Amante IETF 71. D. C. A. B. E. F. Problem Statement. A PW can carry many different flows How can the multiple PSN paths in a network be exploited to balance the flows?. PW Hashing Fields.
E N D
Pseudowire Hashing Vach Kompella Joe Regan Shane Amante IETF 71 draft-vkompella-pwe3-hash-label-00
D C A B E F Problem Statement • A PW can carry many different flows • How can the multiple PSN paths in a network be exploited to balance the flows? draft-vkompella-pwe3-hash-label-00
PW Hashing Fields • At ingress: L2 fields are available to choose among the first hop multi-paths • At LSR: Not determinable what is available • Heuristic for IP: look for first nibble = 4/6 for IP • No heuristic for L2 traffic because no protocol type available • Incoming packet has label stack with tunnel encap and PW label • Not enough to provide second hop diversity draft-vkompella-pwe3-hash-label-00
Example • Ethernet PW • Typical hash fields are MAC SA/DA, ethertype, VLAN • PSN supports ECMP • Ingress only hashing gives the following paths • Four available paths D C A B E F draft-vkompella-pwe3-hash-label-00
Example • Ethernet PW • Typical hash fields are MAC SA/DA, ethertype, VLAN • LAG between A-C, C-D, and D-B supports ECMP • Ingress only hashing gives the following paths • Four available paths D C A B draft-vkompella-pwe3-hash-label-00
Solution (Ingress) • A and B exchange a range of labels called Hash Labels, H[0] … H[n] • For traffic from A to B • A hashes L2 fields to figure out nexthop C or E, say C • A hashes L2 fields to n buckets, gets index k • A determines PW label, say PWL for this Attachment Circuit • A determines PSN encap to C, say tunnel label TL1 • A pushes PWL, H[k], TL1 and sends to C TL1 H[k] PWL Payload draft-vkompella-pwe3-hash-label-00
Solution (LSR) • C receives label stack (TL1, H[k], PWL). • C hashes on label stack to determine next hop • With H[k] varying over the flows of the PW, this will not be a single next hop • C swaps tunnel label TL1 to TL2, leaving rest of label stack in place • Alternatively, if C has a LAG in its PSN, then C can hash on the label stack to pick a link in the LAG group TL2 H[k] PWL Payload draft-vkompella-pwe3-hash-label-00
Solution (Egress) • B receives label stack (TL2, H[k], PWL). • B pops TL2 • B pops H[k] (action for all Hash Labels is pop • B identifies PW using PWL and processes packet TL2 H[k] PWL Payload draft-vkompella-pwe3-hash-label-00
Benefits of the Approach • Ingress holds only one set of labels per peer • Egress distributes only one set of labels • Extensible to PSN level also • Provides “hashable” information that is: • stable per flow at intermediate nodes • uses MPLS methods • requires no changes to CE • minimizes the labels allocated and programmed per node • Allows label stacking of Hash labels for more diversity • I know that some P routers don’t hash this way (order of labels) and I would like to understand if we should switch the order of labels draft-vkompella-pwe3-hash-label-00
Is this Extensible to PSN? • The goal is to adapt this method for the PSN • Avoid looking below label stack at LSRs • General thoughts: • {A, C}, {C, D}, {D, B} exchange Hash labels • {A, E}, {E, F}, {F, B} exchange Hash labels • {C, F}, {E, D} exchange Hash labels draft-vkompella-pwe3-hash-label-00
Ingress PSN Behavior • For PSN traffic from A to B • A hashes incoming fields to figure out nexthop C or E, say C • A hashes incoming fields to n buckets, gets index k • A determines PSN encap to C, say tunnel label TL1 • A pushes TL1, H[k] and sends to C H[k] TL1 Payload draft-vkompella-pwe3-hash-label-00
PSN LSR Behavior • C receives label stack (H[k], TL1). • C hashes on label stack to determine next hop D or F • With H[k] varying over the flows of the PSN, this will not be a single next hop, say D • C hashes incoming label stack to n buckets, gets index m • C pops H[k] • C swaps TL1 to TL2 • C pushes H[m], TL2 and sends to D H[m] TL2 Payload draft-vkompella-pwe3-hash-label-00
Questions • Placement of Hash Label • Before the PW label • Leave PW label processing to the end • Avoid switching on PW label at S-PE • Before the Tunnel label • Must process hash label before swapping label • Avoid switching on tunnel label at LSR • Existing implementations? • Is Hash Label exchange a FEC or just a Capabilities exchange? • Can we do the same for diversity for BGP label exchanges? • Should this be done in mpls wg? • Could this be used to explore PW paths like lsp-ping multi-path? draft-vkompella-pwe3-hash-label-00