Cisco Support Community
cancel
Showing results for 
Search instead for 
Did you mean: 

Scalable Ethernet over MPLS (ScEoMPLS) Operation on 7600 Series Routers

 

 

Introduction

This document provides the steps for troubleshooting Scalable Ethernet over MPLS (ScEoMPLS) on 7600 Series Routers. More specifically this document specifies the commands that can be used to confirm the dataplane forwarding decisions.

 

Scalable Ethernet over MPLS (ScEoMPLS) Operation

Scalable Ethernet over MPLS (ScEoMPLS) is a scenario in which xconnect is configured on an Ethernet Virtual Circuit (EVC). On 7600 Series Routers, such configuration is supported only if the access facing line card is ES+ or 7600-SIP-400 line card.

 

Sample configuration:

ScEoMPLS_a.png

 

Imposition flow:

  • In case of ScEoMPLS, the Network Processor (NP) on the access-facing line card performs the VC label imposition, while the L3 forwarding engine (EARL) performs only the MPLS forwarding. The NP does the following:
    • imposes a dummy ethernet header with protocol type MPLS (0x8847). This is later updated by the L3 forwaridng engine to match the source MAC of the core facing interafce and destinaton MAC of the next hop.
    • imposes two MPLS labels: the inner label is the VC label signalled by the remote PE and the outer label is the local VC label.

ScEoMPLS_b.png

 

Disposition flow:

  • L3 forwarding engine on the core facing card receives the frame with a singe MPLS label, representing the VC.
  • core facing card swaps ethernet header and the label. New source MAC indicates that this is a pseudowire and the new label indicates the internal pseudowire id.
  • Access facing line cards pops the label and sends the frame out of the EVC with appropriate dot1q tags, as specified by the rewrite command in the EVC definition.

 

ScEoMPLS_disp.png

 

Imposition Path

 

Confirming the HW programming

First check what is the VC label:

 

PE1#show mpls l2transport vc 3512 detail

Local interface: Gi2/11 up, line protocol up, Eth VLAN 12 up

  Interworking type is Ethernet

  Destination address: 5.5.5.5, VC ID: 3512, VC status: up

    Output interface: Po1.35, imposed label stack {22}

...

    MPLS VC labels: local 16, remote 22

 

Next confirm that the VC lable imposition table on the ES+ NP is correct:

 

PE1#remote login module 2

Trying Switch ...

Entering CONSOLE for Switch

Type "^C^C^C" to end this session

 

PE1-dfc2#sh platform npc atom interface g2/11 efp_id 12

ScEoMPLS (xconnect) entry on GigabitEthernet2/11 if_number 17 efp_id 12 NP[1]

******************** NP AToM IMP Entry ********************

AToM Pseudo Ckt Index: 3 (primary)

        Remote VC label: 22, Local Label: 20

        LTL: 0x00000000

        Vlan: 1047

        Stats id: 311956

        Imposition flags: 0x2

        Control Word (YES) - VC type4 (NO)

 

******************** NP AToM DISP Entry *******************

AToM Pseudo Ckt Index: 3 (table_index 32771) (primary)

        XLIF id: 4138

        Stats id: 311958

        Ctrl_ft_bits: 0x2

        Control Word (YES) - VC type4 (NO)

        EFP id: 12

 

PE1-dfc2#exit

 

[Connection to Switch closed by foreign host]

PE1#show vlan internal usage | i 1047

1047 GigabitEthernet2/11

PE1#

 

 

Relevant fields to check in the imposition entry:

  • Vlan: internal VLAN into which the packet is forwarded towards the L3 forwarding engine. It corresponds to the internal vlan of the access interface. Run the "show vlan internal usage | i 1047" on the RP to confirm this. This should be used when performing the ELAM capture in the imposition path.
  • Remote VC label: VC label advertised by the remote PE. Should match the label in the output of the "show mpls l2transport vc 3512 detail" command.
  • Local label: This is not the local VC label advertised by the local PE. This label is of internal scope, it will be swapped or popped by the L3 forwarding engine on the same line card. In this example there is no P router between the two PEs, so the label will be popped by the L3 forwarding engine. If there was a P router, the L3 forwarding engine would swap the local label with the IGP label corresponding to the remote PE.

 

Next step is to confirm the programming of the L3 forwarding engine. Since there will aways be an inner label, the (EOS) entry in the MLS table can be ignored:

 

 

PE1#remote login module 2

Trying Switch ...

Entering CONSOLE for Switch

Type "^C^C^C" to end this session

PE1-dfc2#show mls cef mpls labels 20

Codes: + - Push label, - - Pop Label         * - Swap Label, E - exp1

Index  Local            Label                  Out i/f

       Label             Op

2185   20  (EOS)        ( - )                 Po1.35        , 001c.58d4.58c0

2188   20               ( - )                 Po1.35        , 001c.58d4.58c0

PE1-dfc2#show mls cef mpls labels 20 detail

Codes: M - mask entry, V - value entry, A - adjacency index, P - FIB Priority

       D - FIB Don't short-cut, m - mod-num, E - ELSP?

Format: MPLS - (b | xtag vpn pi cr mcast label1 exp1 eos1 valid2 label2 exp2 eos2)

V(2185   ): B | 1 0    0 0 0 20      0 1 0 0       0 0 (A:212992 ,P:0,D:0,m:0 :E:1)

M(2185   ): F | 1 FFF  0 0 1 FFFFF   0 1 0 0       0 0

V(2188   ): B | 1 0    0 0 0 20      0 0 0 0       0 0 (A:278528 ,P:0,D:0,m:0 :E:1)

M(2188   ): F | 1 FFF  0 0 1 FFFFF   0 1 0 0       0 0

PE1-dfc2#show mls cef adjacency entry 278528 detail

Index: 278528  smac: 001f.9ed2.7100, dmac: 001c.58d4.58c0

               mtu: 9234, vlan: 35, dindex: 0x0, l3rw_vld: 1

               format: MPLS, flags: 0x1000208408

               label0: 0, exp: 0, ovr: 0

               label1: 0, exp: 0, ovr: 0

               label2: 0, exp: 0, ovr: 0

               op: POP

               packets: 3, bytes: 276

PE1-dfc2#exit

 

[Connection to Switch closed by foreign host]

 

AV-3-7606#show vlan internal usage | i 35 

35   Port-channel1.35

 

  • Relevant fields in the output:
    • this is an MPLS adjacency
    • source MAC should match the MAC address of the core facing interface. Destination MAC should match the MAC address of the next hop towards the remote PE.
    • destination vlan is 35. This should match the internal vlan of the core facing interface. Run the "show vlan internal usage | i 35" on the RP to confirm this.
    • since there is no P router in this example, the outer label imposed by the NP will simply be popped.

 

ECMP Considerations

In case of Equal Cost Multi-Path topologies, hash calculation for load balancing is done based on the remote VC label and local label from the NP AToM IMP Entry. MLS CEF Adjacency table will have multiple adjacencies (indicated by the "m" value; zero-based).

PE-1#remote command switch show mls cef mpls lab 342 det

Codes: M - mask entry, V - value entry, A - adjacency index, P - FIB Priority
       D - FIB Don't short-cut, m - mod-num, E - ELSP?
Format: MPLS - (b | xtag vpn pi cr mcast label1 exp1 eos1 valid2 label2 exp2 eos2)
V(150477 ): B | 1 0    0 0 0 342     0 0 0 0       0 0 (A:278730 ,P:0,D:0,m:1 :E:1)
M(150477 ): F | 1 FFF  0 0 1 FFFFF   0 0 0 0       0 0

For a given remote VC label and local label from NP AToM IMP Entry, use the "show mls cef mpls exact-route label <local_label> label <VC_label>" command to determine the exact output interface for this VC.

 

Checking the dataplane forwarding

To confirm the forwarding decision use the ELAM capture on the access facing line card.

 

Creating the ELAM trigger based on the packet recived on the access interface:

  • Slot on which the capture has to be performed is slot 2 (access facing card).
  • MAC address of the CPE1 is 0005.019a.4019. This is the source MAC address in the frame that we want to capture.
  • MAC address of the CPE2 is 001d.7025.85fa. This is the destination MAC in the frame that we want to capture.
  • Internal VLAN from the NP imposition table is 1047.
  • Trigger command:
    • show platform capture elam trigger dbus others if data = 0 0 0 0x88470000 0 0 0x0000001D 0x702585FA 0x0005019A 0x40190000 [ 0 0 0 0xffff0000 0 0 0x0000ffff 0xffffffff 0xffffffff 0xffff0000 ] VLAN=1047
    • if a control word is not used, remove 4 bytes after the MPLS type field:
      • show platform capture elam trigger dbus others if data = 0 0 0 0x88470000 0 0x0000001D 0x702585FA 0x0005019A 0x40190000 [ 0 0 0 0xffff0000 0 0x0000ffff 0xffffffff 0xffffffff 0xffff0000 ] VLAN=1047

 

  • Make sure traffic is running between CPE1 and CPE2!!! Otherwise there is nothing to capture.

 

 

 

PE1-dfc2#show platform capture elam asic superman slot 2

 

PE1-dfc2#show platform capture elam trigger dbus others if data = 0 0 0 0x88470000 0 0 0x0000001D 0x702585FA 0x0005019A 0x40190000 [ 0 0 0 0xffff0000 0 0 0x0000ffff 0xffffffff 0xffffffff 0xffff0000 ] VLAN=1047

 

 

PE1-dfc2#show platform capture elam start

 

PE1-dfc2#show platform capture elam status

active ELAM info:

Slot Cpu   Asic   Inst Ver PB Elam

---- --- -------- ---- --- -- ----

2    0   ST_SMAN  0    3.2    Y   

DBUS trigger: FORMAT=OTHERS DATA = 0 0 0 0X88470000 0 0 0X0000001D 0X702585FA 0X0005019A 0X40190000 [ 0 0 0 0XFFFF0000 0 0 0X0000FFFF 0XFFFFFFFF 0XFFFFFFFF 0XFFFF0000 ] VLAN=1047

elam capture completed

 

PE1-dfc2#show platform capture elam data

DBUS data:

SEQ_NUM                          [5] = 0x14

QOS                              [3] = 0

QOS_TYPE                         [1] = 0

TYPE                             [4] = 0 [ETHERNET]

STATUS_BPDU                      [1] = 0

IPO                              [1] = 0

NO_ESTBLS                        [1] = 0

RBH                              [3] = b000

CR                               [1] = 0

TRUSTED                          [1] = 1

NOTIFY_IL                        [1] = 0

NOTIFY_NL                        [1] = 0

DISABLE_NL                       [1] = 0

DISABLE_IL                       [1] = 0

DONT_FWD                         [1] = 0

INDEX_DIRECT                     [1] = 0

DONT_LEARN                       [1] = 0

COND_LEARN                       [1] = 0

BUNDLE_BYPASS                    [1] = 0

QOS_TIC                          [1] = 0

INBAND                           [1] = 0

IGNORE_QOSO                      [1] = 0

IGNORE_QOSI                      [1] = 0

IGNORE_ACLO                      [1] = 1

IGNORE_ACLI                      [1] = 1

PORT_QOS                         [1] = 0

CACHE_CNTRL                      [2] = 0 [NORMAL]

VLAN                             [12] = 1047

SRC_FLOOD                        [1] = 0

SRC_INDEX                        [19] = 0x4A

LEN                              [16] = 144

FORMAT                           [2] = 3 [OTHERS]

PACKET_TYPE                      [3] = 0 [ETHERNET]

L3_PROTOCOL                      [4] = 15 [INVALID]

L3_PT                            [8] = 0

FF                               [1] = 0

MN                               [1] = 0

RF                               [1] = 0

SC                               [1] = 0

CARD_TYPE                        [4] = 0x0

ISL                              [16] = 0x0

DATA [592]

0000:  00 1F 9E D2 71 00 00 00 00 00 00 00 88 47 00 01   "....q........G.."

0010:  40 FF 00 01 61 FF 00 00 00 00 00 1D 70 25 85 FA   "@...a.......p%.."

0020:  00 05 01 9A 40 19 08 00 45 00 00 64 D9 6E 00 00   "....@...E..d.n.."

0030:  FF 01 C6 0A 02 0A 0C 02 02 0A 0C 0A 08 00 8E 48   "...............H"

0040:  00 05 0D A7 00 00 00 00 38 95                     "........8."

CRC                              [16] = 0x8916

 

 

RBUS data:

SEQ_NUM                          [5] = 0x14

CCC                              [3] = b100 [L3_RW]

CAP1                             [1] = 0

CAP2                             [1] = 0

QOS                              [3] = 0

EGRESS                           [1] = 0

DT                               [1] = 1 [GENERIC]

TL                               [1] = 0 [B32]

FLOOD                            [1] = 1

DEST_INDEX                       [19] = 0x23

VLAN                             [12] = 35

RBH                              [3] = b010

RDT                              [1] = 0

GENERIC                          [1] = 0

EXTRA_CICLE                      [1] = 0

FABRIC_PRIO                      [1] = 0

L2                               [1] = 0

FCS1                             [8] = 0x1

DELTA_LEN                        [8] = 252

REWRITE_INFO

i0  - replace bytes from ofs 0 to ofs 13 with seq '00 1C 58 D4 58 C0 00 1F 9E D2 71 00 88 47'.

       remove bytes from ofs 14 to ofs 17.

i1  - replace byte at ofs 21 with value 'FE'.

FCS2                             [8] = 0x0

 

 

Control signals:

rb_stat                          [3] = 0x7

PE1-dfc2#

 

 

Use any offline decoder tool (e.g. tcpdump) to decode the data section of the output to confirm that this is the packet that you wanted to capture. Remember that the L3 forwarding engine only sees the frame header, not the whole frame. When decoding with offline tool, frame will show up as truncated.

 

How to read the forwarding result (i.e. "RBUS data:"):

  • operation to be performed is L3 rewrite [L3_RW]
  • output vlan is 35. This should match the MLS adjacency programming shown earlier in the document.
  • rewrite info is changing the source and destination MAC and source MAC of the encapsulation frame to match taht of the core facing interface and next-hop.
  • since the remote PE is directly connected, the outer label is popped. If there was a P inbetween, this operation would be a swap of the local label imposed by the NP.
  • byte at ofset 21 happens to be the TTL in the inner MPLS header. It's decremented by one, from 0xFF to 0xFE.

 

Decode of the data section:

 

Frame 1 (74 bytes on wire, 74 bytes captured)

    Arrival Time: Jan  1, 1970 01:00:00.000000000

    [Time delta from previous captured frame: 0.000000000 seconds]

    [Time delta from previous displayed frame: 0.000000000 seconds]

    [Time since reference or first frame: 0.000000000 seconds]

    Frame Number: 1

    Frame Length: 74 bytes

    Capture Length: 74 bytes

    [Frame is marked: False]

    [Protocols in frame: eth:mpls:pwethheuristic:pwethcw:eth:ip:icmp:data]

Ethernet II, Src: 00:00:00:00:00:00 (00:00:00:00:00:00), Dst: 00:1f:9e:d2:71:00 (00:1f:9e:d2:71:00)

    Destination: 00:1f:9e:d2:71:00 (00:1f:9e:d2:71:00)

        Address: 00:1f:9e:d2:71:00 (00:1f:9e:d2:71:00)

        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)

        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)

    Source: 00:00:00:00:00:00 (00:00:00:00:00:00)

        Address: 00:00:00:00:00:00 (00:00:00:00:00:00)

        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)

        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)

    Type: MPLS label switched packet (0x8847)

MultiProtocol Label Switching Header, Label: 20, Exp: 0, S: 0, TTL: 255

    MPLS Label: 20

    MPLS Experimental Bits: 0

    MPLS Bottom Of Label Stack: 0

    MPLS TTL: 255

MultiProtocol Label Switching Header, Label: 22, Exp: 0, S: 1, TTL: 255

    MPLS Label: 22

    MPLS Experimental Bits: 0

    MPLS Bottom Of Label Stack: 1

    MPLS TTL: 255

PW Ethernet Control Word

    Sequence Number: 0

Ethernet II, Src: 00:05:01:9a:40:19 (00:05:01:9a:40:19), Dst: 00:1d:70:25:85:fa (00:1d:70:25:85:fa)

    Destination: 00:1d:70:25:85:fa (00:1d:70:25:85:fa)

        Address: 00:1d:70:25:85:fa (00:1d:70:25:85:fa)

        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)

        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)

    Source: 00:05:01:9a:40:19 (00:05:01:9a:40:19)

        Address: 00:05:01:9a:40:19 (00:05:01:9a:40:19)

        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)

        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)

    Type: IP (0x0800)

Internet Protocol, Src: 2.10.12.2 (2.10.12.2), Dst: 2.10.12.10 (2.10.12.10)

    Version: 4

    Header length: 20 bytes

    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)

        0000 00.. = Differentiated Services Codepoint: Default (0x00)

        .... ..0. = ECN-Capable Transport (ECT): 0

        .... ...0 = ECN-CE: 0

    Total Length: 100

    Identification: 0x89e9 (35305)

    Flags: 0x00

        0.. = Reserved bit: Not Set

        .0. = Don't fragment: Not Set

        ..0 = More fragments: Not Set

    Fragment offset: 0

    Time to live: 255

    Protocol: ICMP (0x01)

    Header checksum: 0x1590 [correct]

        [Good: True]

        [Bad : False]

    Source: 2.10.12.2 (2.10.12.2)

    Destination: 2.10.12.10 (2.10.12.10)

Internet Control Message Protocol

    Type: 8 (Echo (ping) request)

    Code: 0 ()

    Checksum: 0xdbe0 [incorrect, should be 0x360b]

    Identifier: 0x0003

    Sequence number: 35290 (0x89da)

    Data (6 bytes)

 

 

0000  00 00 00 00 38 17                                 ....8.

        Data: 000000003817

        [Length: 6]

 

 

Edit the data section in an editor to manually apply the rewrite action. Decode after the rewrite:

 

Frame 1 (70 bytes on wire, 70 bytes captured)

    Arrival Time: Jan  1, 1970 01:00:00.000000000

    [Time delta from previous captured frame: 0.000000000 seconds]

    [Time delta from previous displayed frame: 0.000000000 seconds]

    [Time since reference or first frame: 0.000000000 seconds]

    Frame Number: 1

    Frame Length: 70 bytes

    Capture Length: 70 bytes

    [Frame is marked: False]

    [Protocols in frame: eth:mpls:pwethheuristic:pwethcw:eth:ip:icmp:data]

Ethernet II, Src: 00:1f:9e:d2:71:00 (00:1f:9e:d2:71:00), Dst: 00:1c:58:d4:58:c0 (00:1c:58:d4:58:c0)

    Destination: 00:1c:58:d4:58:c0 (00:1c:58:d4:58:c0)

        Address: 00:1c:58:d4:58:c0 (00:1c:58:d4:58:c0)

        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)

        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)

    Source: 00:1f:9e:d2:71:00 (00:1f:9e:d2:71:00)

        Address: 00:1f:9e:d2:71:00 (00:1f:9e:d2:71:00)

        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)

        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)

    Type: MPLS label switched packet (0x8847)

MultiProtocol Label Switching Header, Label: 22, Exp: 0, S: 1, TTL: 254

    MPLS Label: 22

    MPLS Experimental Bits: 0

    MPLS Bottom Of Label Stack: 1

    MPLS TTL: 254

PW Ethernet Control Word

    Sequence Number: 0

Ethernet II, Src: 00:05:01:9a:40:19 (00:05:01:9a:40:19), Dst: 00:1d:70:25:85:fa (00:1d:70:25:85:fa)

    Destination: 00:1d:70:25:85:fa (00:1d:70:25:85:fa)

        Address: 00:1d:70:25:85:fa (00:1d:70:25:85:fa)

        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)

        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)

    Source: 00:05:01:9a:40:19 (00:05:01:9a:40:19)

        Address: 00:05:01:9a:40:19 (00:05:01:9a:40:19)

        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)

        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)

    Type: IP (0x0800)

Internet Protocol, Src: 2.10.12.2 (2.10.12.2), Dst: 2.10.12.10 (2.10.12.10)

    Version: 4

    Header length: 20 bytes

    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)

        0000 00.. = Differentiated Services Codepoint: Default (0x00)

        .... ..0. = ECN-Capable Transport (ECT): 0

        .... ...0 = ECN-CE: 0

    Total Length: 100

    Identification: 0x89e9 (35305)

    Flags: 0x00

        0.. = Reserved bit: Not Set

        .0. = Don't fragment: Not Set

        ..0 = More fragments: Not Set

    Fragment offset: 0

    Time to live: 255

    Protocol: ICMP (0x01)

    Header checksum: 0x1590 [correct]

        [Good: True]

        [Bad : False]

    Source: 2.10.12.2 (2.10.12.2)

    Destination: 2.10.12.10 (2.10.12.10)

Internet Control Message Protocol

    Type: 8 (Echo (ping) request)

    Code: 0 ()

    Checksum: 0xdbe0 [incorrect, should be 0x360b]

    Identifier: 0x0003

    Sequence number: 35290 (0x89da)

    Data (6 bytes)

 

 

0000  00 00 00 00 38 17                                 ....8.

        Data: 000000003817

        [Length: 6]

 

 

Disposition Path

Confirming the HW programming

 

Checking the disposition path is more complex. This document will show only the parts that are feasible to check in production networks.

 

Check the NP programming on the access facing card and conform the pseudo circuit index:

 

 
 

PE1-dfc2#sh platform npc atom interface g2/11 efp_id 12

ScEoMPLS (xconnect) entry on GigabitEthernet2/11 if_number 17 efp_id 12 NP[1]

******************** NP AToM IMP Entry ********************

AToM Pseudo Ckt Index: 3 (primary)

        Remote VC label: 22, Local Label: 20

        LTL: 0x00000000

        Vlan: 1047

        Stats id: 311956

        Imposition flags: 0x2

        Control Word (YES) - VC type4 (NO)

 

******************** NP AToM DISP Entry *******************

AToM Pseudo Ckt Index: 3 (table_index 32771) (primary)

        XLIF id: 4138

        Stats id: 311958

        Ctrl_ft_bits: 0x2

        Control Word (YES) - VC type4 (NO)

        EFP id: 12

 

 

Relevant output:

  • pseudocircuit index. Use explained later in the document.
  • XLIF ID is the unique indicator of the ethernet service instance on the access facing NP.

 

On the core facing line card, in this case slot 4, confirm the MPLS table programming for the VC label advertised by the local PE.

 

PE1#show mpls l2transport vc 3512 detail

Local interface: Gi2/11 up, line protocol up, Eth VLAN 12 up

  Interworking type is Ethernet

  Destination address: 5.5.5.5, VC ID: 3512, VC status: up

    Output interface: Po1.35, imposed label stack {22}

<...>

    MPLS VC labels: local 16, remote 22

PE1#sh interfaces port-channel 1 etherchannel

<...>

Index   Load    Port      EC state        No of bits

------+------+--------+------------------+-----------

  0     FF     Gi4/21     Active             8

<...>

PE1#remote login module 4

Trying Switch ...

Entering CONSOLE for Switch

Type "^C^C^C" to end this session

 

PE1-dfc4#show mpls forwarding-table labels 16

Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop   

Label      Label      or Tunnel Id     Switched      interface             

16         No Label   l2ckt(2)         0             Gi2/11     point2point

PE1-dfc4#

PE1-dfc4#show mls cef mpls labels 16 detail

Codes: M - mask entry, V - value entry, A - adjacency index, P - FIB Priority

       D - FIB Don't short-cut, m - mod-num, E - ELSP?

Format: MPLS - (b | xtag vpn pi cr mcast label1 exp1 eos1 valid2 label2 exp2 eos2)

V(2181   ): B | 1 0    0 0 0 16      0 1 0 0       0 0 (A:376832 ,P:0,D:0,m:0 :E:1)

M(2181   ): F | 1 FFF  0 0 1 FFFFF   0 1 0 0       0 0

PE1-dfc4#show mls cef adjacency entry 376832 detail

Index: 376832  smac: a100.0003.0003, dmac: 0000.0000.0003

               mtu: 1548, vlan: 1047, dindex: 0x4A, l3rw_vld: 1

               format: MPLS, flags: 0x8600

               label0: 0, exp: 0, ovr: 0

               label1: 0, exp: 0, ovr: 0

               label2: 3, exp: 0, ovr: 0

               op: REPLACE_LABEL2

               packets: 264596, bytes: 35810118

 

 

Relevant output:

  • MPLS packet coming in with label 16 will have that label swapped with label 3 (which corresponds to the pseudowire index mentioned earlier) and it will be forwarded to internal VLAN 1047, which corresponds to the interface Gig2/11. Packet is forwarded to access facing line card with some special programming (explained later) to signal to the egress L3 forwarding engine that the MPLS label is actualy the pseudowire index.

 

Checking the dataplane forwarding

 

Elam capture can be taken on the core facing line card using the VC label advertised by the local PE (in this example 16) as trigger:

 

PE1-dfc4#show platform capture elam asic superman slot 4

PE1-dfc4#show platform capture elam trigger dbus others if data = 0 0 0 0x88470001 0 0 0 0 0 0 [ 0 0 0 0xffffffff 0xf0000000 0 0 0 0 0 ]

PE1-dfc4#show platform capture elam stat

active ELAM info:

Slot Cpu   Asic   Inst Ver PB Elam

---- --- -------- ---- --- -- ----

4    0   ST_SMAN  0    3.2    Y   

DBUS trigger: FORMAT=OTHERS DATA = 0 0 0 0X88470001 0 0 0 0 0 0 [ 0 0 0 0XFFFFFFFF 0XF0000000 0 0 0 0 0 ]

elam capture completed

PE1-dfc4#show platform capture elam data

DBUS data:

SEQ_NUM                          [5] = 0xB

QOS                              [3] = 0

QOS_TYPE                         [1] = 0

TYPE                             [4] = 0 [ETHERNET]

STATUS_BPDU                      [1] = 0

IPO                              [1] = 0

NO_ESTBLS                        [1] = 0

RBH                              [3] = b000

CR                               [1] = 0

TRUSTED                          [1] = 1

NOTIFY_IL                        [1] = 0

NOTIFY_NL                        [1] = 0

DISABLE_NL                       [1] = 0

DISABLE_IL                       [1] = 0

DONT_FWD                         [1] = 0

INDEX_DIRECT                     [1] = 0

DONT_LEARN                       [1] = 0

COND_LEARN                       [1] = 0

BUNDLE_BYPASS                    [1] = 0

QOS_TIC                          [1] = 0

INBAND                           [1] = 0

IGNORE_QOSO                      [1] = 0

IGNORE_QOSI                      [1] = 0

IGNORE_ACLO                      [1] = 0

IGNORE_ACLI                      [1] = 0

PORT_QOS                         [1] = 0

CACHE_CNTRL                      [2] = 0 [NORMAL]

VLAN                             [12] = 35

SRC_FLOOD                        [1] = 0

SRC_INDEX                        [19] = 0x340

LEN                              [16] = 140

FORMAT                           [2] = 3 [OTHERS]

PACKET_TYPE                      [3] = 0 [ETHERNET]

L3_PROTOCOL                      [4] = 15 [INVALID]

L3_PT                            [8] = 0

FF                               [1] = 0

MN                               [1] = 0

RF                               [1] = 0

SC                               [1] = 0

CARD_TYPE                        [4] = 0x0

ISL                              [16] = 0x0

DATA [592]

0000:  00 1F 9E D2 71 00 00 1C 58 D4 58 C0 88 47 00 01   "....q...X.X..G.."

0010:  01 FE 00 00 00 00 00 05 01 9A 40 19 00 1D 70 25   "..........@...p%"

0020:  85 FA 08 00 45 00 00 64 BA 99 00 00 FF 01 E4 DF   "....E..d........"

0030:  02 0A 0C 0A 02 0A 0C 02 00 00 80 DA 00 08 0F 86   "................"

0040:  00 00 00 00 38 F1 BC F0 AB CD                     "....8....."

CRC                              [16] = 0xE476

 

 

RBUS data:

SEQ_NUM                          [5] = 0xB

CCC                              [3] = b100 [L3_RW]

CAP1                             [1] = 0

CAP2                             [1] = 0

QOS                              [3] = 0

EGRESS                           [1] = 0

DT                               [1] = 1 [GENERIC]

TL                               [1] = 0 [B32]

FLOOD                            [1] = 0

DEST_INDEX                       [19] = 0x4A

VLAN                             [12] = 1047

RBH                              [3] = b000

RDT                              [1] = 1

GENERIC                          [1] = 0

EXTRA_CICLE                      [1] = 0

FABRIC_PRIO                      [1] = 0

L2                               [1] = 0

FCS1                             [8] = 0x1

DELTA_LEN                        [8] = 0

REWRITE_INFO

i0  - replace bytes from ofs 0 to ofs 17 with seq '00 00 00 00 00 03 A1 00 00 03 00 03 88 47 00 00 31 FE'.

FCS2                             [8] = 0x0

 

 

Control signals:

rb_stat                          [3] = 0x7

 

 

Rewrite result indicates that the existing ethernet header and MPLS header will be swapped so that:

  • destination VLAN is 1047, which corresponds to the access faing interface (happens to be Gi2/11 in this example).
  • source MAC address is 0xA1xx.xxxx.xx03. This is a special MAC address that indicates to the access facing card that the MPLS label should be used as an index into the table of pseudo-circuit identifiers.
  • MPLS label 16 is swapped by MPLS label 3. 000031FE at the end of the rewrite info translates to {TAG:3  EXP:0  BOTTOM:1  TTL:254}.

 

Confirm that pseudo circuit index 3 corresponds to the EVC 12 on Gig2/11:

 

 

PE1#remote login module 2

Trying Switch ...

Entering CONSOLE for Switch

Type "^C^C^C" to end this session

 

 

PE1-dfc2#show platform npc xlif interface g2/11 efp 12

EFP XLIF(GigabitEthernet2/11, efp12)[np1] = 4138

 

<...>

----- AToM data ------

pseudo_ckt_idx:       3      

efp_id:               12      

<...>

 

Egress XLIF table fields

 

<...>

Dbus VLAN:              1047   

<...>

Inner rewrite VLAN:     0      

Outer rewrite VLAN:     12     

<...>

 

 

Relevant output:

  • XLIF ID corresponds to the one from the MPL AToM imposition/disposition table on the access facing NP.
  • pseudocircuit index matches the one from the MPL AToM imposition/disposition table on the access facing NP.
  • Only one dot1q header is pushed on the frame (indicated by inner VLAN being 0)
  • The VLAN tag in the pushed dot1q header is matching the ethernet service instance (EVC) definition.

 

 

That's all folks!

Version history
Revision #:
2 of 2
Last update:
‎08-28-2017 03:03 AM
Updated by:
 
Labels (1)
Contributors