- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
02-11-2014 12:11 PM - edited 08-28-2017 03:03 AM
- Introduction
- Scalable Ethernet over MPLS (ScEoMPLS) Operation
- Imposition Path
- Confirming the HW programming
- Checking the dataplane forwarding
- Disposition Path
- Confirming the HW programming
- Checking the dataplane forwarding
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:

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.

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.

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!
