Converting NX-OS BD’s and LTL’s to human readable format

You will recall in my article Single Packet Capture Under NX-OS the output from using the ELAM used foreign looking index values like so:

source_index = 0x00a22
length = 0×0042
compact_format = 0×0 (Ethernet IPv4)
result_control_bits = 0×0
(1:mcast L2 exp, 2: mcast L3 RW, 3: mcast L3&L2 exp, 4:RW, 0 & 5: no RW)
result_l2_fwd_frame = 0×0
result_rdt = 0×0
result_cap1 = 0×0
result_cap2 = 0×0
l3_packet_type = 0×0, (0:Ethernet, 1:IPX, 2-4: IEEE 802.3)
l3_protocol = 0×0   (0:IPv4, 6:IPv6)
l3_protocol_type = 0×11, (1:ICMP, 2:IGMP, 4:IP, 6:TCP, 17:UDP)
protocol_mask = 0×0
destination_flood = 0×0
destination_index = 0×00400

You can see in this particular output we have a source_index and a destination_index.  These are in a format that is used internally by the NX-OS known as Local Target Logic (LTL) To do this we use the Port Index Manager (PIXM).  Here is how we can decode the indexes:

NOR-NX7K01# show system internal pixm info ltl 0x00a22
LTLs allocated for Port Channels for VDC:1:
================================================
PC_TYPE    PORT    LTL      RES_ID       LTL_FLAG      CB_FLAG      MEMB_CNT
——————————————————————————
Normal    Po9     0x0a22    0x16000008   0x00000010    0x00000002   4
Member     if_idx        rbh_pattern    rbh_bit_cnt
Eth1/17     0x1a010000   0x000000c0      0x02
Eth1/18     0x1a011000   0x0000000c      0x02
Eth1/9     0x1a008000   0x00000011      0x02
Eth1/10     0x1a009000   0x00000022      0x02
BD      State                 Vlan
————————————-
1    FORWARDING     1
2    FORWARDING     2
3    FORWARDING     3
4    FORWARDING     4
5    FORWARDING     5
6    FORWARDING     6
7    FORWARDING     7
8    FORWARDING     8
9    FORWARDING     14
10    FORWARDING     15
11    FORWARDING     21
12    FORWARDING     25
13    FORWARDING     30
14    FORWARDING     35
15    FORWARDING     36
16    FORWARDING     50
17    FORWARDING     75
18    FORWARDING     76
19    FORWARDING     85
20    FORWARDING     86
21    FORWARDING     90
22    FORWARDING     101
23    FORWARDING     103
24    FORWARDING     104
25    FORWARDING     105
26    FORWARDING     106
27    FORWARDING     107
28    FORWARDING     108
29    FORWARDING     110
30    FORWARDING     112
31    FORWARDING     115
32    FORWARDING     117
34    FORWARDING     121
35    FORWARDING     201
36    FORWARDING     205
37    FORWARDING     207
38    FORWARDING     210
39    FORWARDING     253
45    FORWARDING     41
46    FORWARDING     51
47    FORWARDING     31
48    FORWARDING     91
Member info for LTL: 0x0a22
——————————–
LTL-Type/Port         IFIDX         LTL
Eth1/9                0x1a008000    0x048a
Eth1/10               0x1a009000    0x048b
Eth1/17               0x1a010000    0x0492
Eth1/18               0x1a011000    0x0493
FLOOD_W_FPOE          0x00000000    0x8001, 0x8002, 0x8003, 0x8004, 0x8005,
0x8006, 0x8007, 0x8008, 0x8009, 0x800a,
0x800b, 0x800c, 0x800d, 0x800e, 0x800f,
0x8010, 0x8011, 0x8012, 0x8013, 0x8014,
0x8015, 0x8016, 0x8017, 0x8018, 0x8019,
0x801a, 0x801b, 0x801c, 0x801d, 0x801e,
0x801f, 0x8020, 0x8022, 0x8023, 0x8024,
0x8025, 0x8026, 0x8027, 0x802d, 0x802e,
0x802f, 0x8030,
Port Channel LTL – PIOD mapping for VDC:1
0x0a22      Eth1/9, Eth1/10, Eth1/17, Eth1/18,

So we can see that this particular source index (LTL) maps to Po9, which is a Port Channel/vPC and it gives us the members which is quite useful.

You can also see how the NX-OS allocates these LTL’s, you can see that the above Port Channel was from the PC Pool:

NOR-NX7K01# show system internal pixm info ltl-region
LTL POOL TYPE                          SIZE        RANGE
=====================================================================
DCE/FC Pool                            1024       0x0000 to 0x03ff
SUP Inband LTL                           32       0x0400 to 0x041f
MD Flood LTL                              1       0x0420
Central R/W                               1       0x0421
UCAST Pool                             1536       0x0422 to 0x0a21
PC Pool                                1720       0x0a22 to 0x10d9
LC CPU Pool                              32       0x1152 to 0x1171
EARL Pool                                72       0x10da to 0x1121
SPAN Pool                                48       0x1122 to 0x1151
UCAST VDC Use Pool                       16       0x1172 to 0x1172
UCAST Generic Pool                       30       0x1182 to 0x119f
LISP Pool                                 4       0x1198 to 0x119b
Invalid SI                                1       0x119c to 0x119c
ESPAN SI                                  1       0x119d to 0x119d
Recirc SI                                 1       0x119e to 0x119e
Drop DI                                   2       0x119f to 0x11a0
UCAST (Fex/GPC/SVI-ES) Region          3680       0x11a1 to 0x2000
UCAST Reserved for Future Use Region   2048       0x2001 to 0x2800
======================> UCAST MCAST BOUNDARY <======================
VDC OMF Pool                             32       0x2801 to 0x2820
MCAST Reserved Pool                      96       0x2821 to 0x2880
MCAST (OTV/MD/MCAST) region           22397       0x2881 to 0x7ffe
Octopus Ucast Flood/Bit Bucket            1       0x7fff
BD With FPOE                          16384       0x8000 to 0xbfff
BD Without FPOE                       16384       0xc000 to 0xffff

You will also notice it talks of BD’s.  BD’s are Bridge Domains, which is the NX-OS’s way to internally describe VLAN’s.  You can figure out BD to VLAN mappings like so:

NOR-NX7K01# show system internal pixm info vlan-bd-db
VDC: 1
——-
VLAN    BD      BD LTL
=======================
1       1       0x8001
2       2       0x8002
3       3       0x8003
4       4       0x8004
5       5       0x8005
6       6       0x8006
7       7       0x8007
8       8       0x8008
14      9       0x8009
15      10      0x800a
21      11      0x800b
25      12      0x800c
30      13      0x800d

.

.

These commands are mostly helpful when you are doing various debug commands, or looking at some of the “internal” commands, or some of the commands that are used off the actual linecards, such as the ELAM commands I mentioned in a previous post.  In many of these they don’t use easy human readable identifiers and instead use more internal type identifiers (LTL’s, BD’s, etc).  The good news is you can easily map these to something you can understand.

Some of this also comes in handy when tracing mac-addresses through the system.  You can do typical mac-address lookups like so:

NOR-NX7K01# show mac address-table vlan 1
Legend:
* – primary entry, G – Gateway MAC, (R) – Routed MAC
age – seconds since last seen,+ – primary entry using vPC Peer-Link
VLAN     MAC Address      Type      age     Secure NTFY    Ports
———+—————–+——–+———+——+—-+——————
G 1        0026.980a.35c1    static       –       F    F  sup-eth1(R)
* 1        0000.0c07.ac01    dynamic   30         F    F  Eth3/1
* 1        0001.e6a0.140e    dynamic   0          F    F  Eth8/9
* 1        0006.5bf3.d17a    dynamic   30         F    F  Eth3/1
* 1        0006.5bf6.a862    dynamic   0          F    F  Po9
* 1        0006.d731.c6fb    dynamic   30         F    F  Eth8/1

The line-cards themselves actually have there own forwarding tables, stored in hardware, distributed forwarding tables if you will.  You view these using the show hardware mac address-table form of these commands.  These give the outputs with BD’s and LTL’s:

NOR-NX7K01# show hardware mac address-table 1 vlan 1
Valid| PI |  BD   |      MAC      |  Index | Stat| SW | Modi| Age | Tmr | GM | Sec| TR | NT | RM | RMA | Cap | Fld | Always
|    |       |               |        |  ic |    | fied| Byte| Sel |    | ure| AP | FY |    |     | TURE|     |  Learn
—–+—-+——-+—————+——–+—–+—-+—–+—–+—–+—-+—-+—-+—-+—-+—–+—–+—–+——–
1     1    1     000d.566f.bb24  0x00a22    0     3    0     250   1     0    0    0    0    0     0     0     0   0
1     0    1     0014.38c8.c704  0x0042a    0     3    0     250   1     0    0    0    0    0     0     0     0   0
1     0    1     0050.dab9.399a  0x00422    0     3    0     249   1     0    0    0    0    0     0     0     0   0
1     0    1     0013.726e.2ef7  0x0042e    0     3    0     250   1     0    0    0    0    0     0     0     0   0
1     0    1     0017.a4fa.48db  0x0042e    0     3    0     247   1     0    0    0    0    0     0     0     0   0

So in order to find out what interface is actually being used, you need to use the pixm commands to decode the BD’s and LTL’s.

This entry was posted in Nexus, NX-OS. Bookmark the permalink.

Leave a Reply