Sommario

Introduzione

Prerequisiti

Requisiti

Componenti usati

Risoluzione dei problemi

Radice STP

Interfaccia STP

Indagine BPDU con Ethanalyzer

Convergenza STP

Mappatura della VLAN esterna

Debug STP

Nexus 5000 non ha elaborato le BPDU

Introduzione

Questo documento descrive vari metodi per risolvere i problemi comuni relativi allo Spanning Tree Protocol (STP).

Prerequisiti

Requisiti

Cisco raccomanda la conoscenza dei seguenti argomenti:

- CLI del sistema operativo Nexus

- STP

Componenti usati

Il documento può essere consultato per tutte le versioni software o hardware.

Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.

Risoluzione dei problemi

In questa sezione vengono illustrati alcuni metodi per risolvere i problemi comuni relativi a STP.

Radice STP

Per risolvere un problema relativo a STP, è importante sapere quale switch è attualmente la radice. Per visualizzare la radice STP su uno switch Nexus serie 5000, eseguire il comando:

Nexus-5000# show spanning-tree vlan 1

VLAN0001

Spanning tree enabled protocol rstp

Root ID    Priority    32769

Address     c84c.75fa.6000

This bridge is the root

Hello Time  2  sec  Max Age 20 sec  Forward Delay 15 sec

Bridge ID  Priority    32769  (priority 32768 sys-id-ext 1)

Address     c84c.75fa.6000

Hello Time  2  sec  Max Age 20 sec  Forward Delay 15 sec

Di seguito sono riportati altri comandi importanti:

Nexus-5000# show spanning-tree vlan 1 detail

Nexus-5000# show spanning-tree vlan 1 summary

Una volta determinata la radice corrente, è possibile controllare la cronologia eventi per verificare se è stata modificata e da dove ha origine le notifiche di modifica della topologia.

Nexus-5000# show spanning-tree internal event-history tree 1 brief

2012:11:06 13h:44m:20s:528204us T_EV_UP

VLAN0001 [0000.0000.0000.0000 C 0 A  0 R none P none]

2012:11:06 13h:44m:21s:510394us T_UT_SBPDU

VLAN0001 [8001.547f.ee18.e441 C 0 A  0 R none P Po1]

2012:11:06 13h:44m:21s:515129us T_EV_M_FLUSH_L

VLAN0001 [1001.001b.54c2.5a42 C 6 A  5 R Po1 P none]

2012:11:06 13h:44m:23s:544632us T_EV_M_FLUSH_R

VLAN0001 [1001.001b.54c2.5a42 C 6 A  5 R Po1 P Po1]

2012:11:06 13h:44m:24s:510352us T_EV_M_FLUSH_R

VLAN0001 [1001.001b.54c2.5a42 C 6 A  5 R Po1 P Po1]

Suggerimento: Di seguito sono riportate alcune definizioni per gli acronimi visualizzati nell'output dei comandi. Unità SPD: Ricevuta unità dati di protocollo di collegamento superiore; FLUSH_L: scarico locale; FLUSH_R: Scaricamento dallo switch remoto.

Nota: Le versioni NX-OS precedenti alla versione 5.1(3)N1(1) non registrano più di 149 eventi e il registro non viene eseguito.

Interfaccia STP

Questo comando è usato per visualizzare gli eventi di un'interfaccia.

Nexus-5000# show spanning-tree internal event-history tree 1 interface

ethernet 1/3 brief

2012:11:05 13h:42m:20s:508027us P_EV_UP   Eth1/3   [S DIS  R Unkw  A  0  Inc no]

2012:11:05 13h:42m:20s:508077us P_STATE   Eth1/3   [S BLK  R Desg  A  0  Inc no]

2012:11:05 13h:42m:20s:508294us P_STATE   Eth1/3   [S LRN  R Desg  A  0  Inc no]

2012:11:05 13h:42m:20s:508326us P_STATE   Eth1/3   [S FWD  R Desg  A  0  Inc no]

Questo comando è usato per analizzare le modifiche STP su un'interfaccia. Questo output offre molti dettagli:

Nexus-5000# show spanning-tree internal info tree 1 interface port-channel 11

------- STP Port Info (vdc 1, tree 1, port Po11) ---------

dot1d info: port_num=4106, ifi=0x1600000a (port-channel11)

ISSU FALSE non-disr, prop 0, ag 0, flush 0 peer_not_disputed_count 0

if_index               0x1600000a

namestring             port-channel11

....................        cut to save space        ............

stats

fwd_transition_count   1       bpdus_in      40861   bpdus_out    40861

config_bpdu_in         0       rstp_bpdu_in  40861   tcn_bpdu_in  0

config_bpdu_out        0       rstp_bpdu_out 40861   tcn_bpdu_out 0

bpdufilter_drop_in     0

bpduguard_drop_in      0

err_dropped_in         0

sw_flood_in            0

....................        cut to save space        ............

Indagine BPDU con Ethanalyzer

In questa sezione viene descritto come usare Ethanalyzer per acquisire BPDU:

Ethanalyzer local interface inbound-hi display-filter "vlan.id == 1 && stp"

Example:

Nexus-5000# ethanalyzer local interface inbound-hi display-filter "vlan.id

== 1 && stp"

Capturing on eth4

2013-05-11 13:55:39.280951 00:05:73:f5:d6:27 -> 01:00:0c:cc:cc:cd STP RST.

Root = 33768/00:05:73:ce:a9:7c  Cost = 1  Port = 0x900a

2013-05-11 13:55:40.372434 00:05:73:ce:a9:46 -> 01:00:0c:cc:cc:cd STP RST.

Root = 33768/00:05:73:ce:a9:7c  Cost = 0  Port = 0x900a

2013-05-11 13:55:41.359803 00:05:73:f5:d6:27 -> 01:00:0c:cc:cc:cd STP RST.

Root = 33768/00:05:73:ce:a9:7c  Cost = 1  Port = 0x900a

2013-05-11 13:55:42.372405 00:05:73:ce:a9:46 -> 01:00:0c:cc:cc:cd STP RST.

Root = 33768/00:05:73:ce:a9:7c  Cost = 0  Port = 0x900a

Per visualizzare i pacchetti dettagliati, usare il comando detail:

Nexus-5000# ethanalyzer local interface inbound-hi detail display-filter

"vlan.id == 1 && stp"

Capturing on eth4

Frame 7 (68 bytes on wire, 68 bytes captured)

Arrival Time: May 11, 2013 13:57:02.382227000

[Time delta from previous captured frame: 0.000084000 seconds]

[Time delta from previous displayed frame: 1368280622.382227000 seconds]

[Time since reference or first frame: 1368280622.382227000 seconds]

Frame Number: 7

Frame Length: 68 bytes

Capture Length: 68 bytes

[Frame is marked: False]

[Protocols in frame: eth:vlan:llc:stp]

Ethernet II, Src: 00:05:73:ce:a9:46 (00:05:73:ce:a9:46), Dst: 01:00:0c:cc:cc:cd

(01:00:0c:cc:cc:cd)

Destination: 01:00:0c:cc:cc:cd (01:00:0c:cc:cc:cd)

Address: 01:00:0c:cc:cc:cd (01:00:0c:cc:cc:cd)

.... ...1 .... .... .... .... = IG bit: Group address (multicast/broadcast)

.... ..0. .... .... .... .... = LG bit: Globally unique address

(factory default)

Source: 00:05:73:ce:a9:46 (00:05:73:ce:a9:46)

Address: 00:05:73:ce:a9:46 (00:05:73:ce:a9:46)

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

.... ..0. .... .... .... .... = LG bit: Globally unique address

(factory default)

Type: 802.1Q Virtual LAN (0x8100)

802.1Q Virtual LAN

111. .... .... .... = Priority: 7

...0 .... .... .... = CFI: 0

.... 0000 0000 0001 = ID: 1

Length: 50

Logical-Link Control

DSAP: SNAP (0xaa)

IG Bit: Individual

SSAP: SNAP (0xaa)

CR Bit: Command

Control field: U, func=UI (0x03)

000. 00.. = Command: Unnumbered Information (0x00)

.... ..11 = Frame type: Unnumbered frame (0x03)

Organization Code: Cisco (0x00000c)

PID: PVSTP+ (0x010b)

Spanning Tree Protocol

Protocol Identifier: Spanning Tree Protocol (0x0000)

Protocol Version Identifier: Rapid Spanning Tree (2)

BPDU Type: Rapid/Multiple Spanning Tree (0x02)

BPDU flags: 0x3c (Forwarding, Learning, Port Role: Designated)

0... .... = Topology Change Acknowledgment: No

.0.. .... = Agreement: No

..1. .... = Forwarding: Yes

...1 .... = Learning: Yes

.... 11.. = Port Role: Designated (3)

.... ..0. = Proposal: No

.... ...0 = Topology Change: No

Root Identifier: 33768 / 00:05:73:ce:a9:7c

Root Path Cost: 0

Bridge Identifier: 33768 / 00:05:73:ce:a9:7c

Port identifier: 0x900a

Message Age: 0

Max Age: 20

Hello Time: 2

Forward Delay: 15

Version 1 Length: 0

Per scrivere queste informazioni in un file PCAP, utilizzare questo comando:

Nexus-5000# ethanalyzer local interface inbound-hi display-filter

"vlan.id == 1 && stp" write bootflash:bpdu.pcap

Capturing on eth4

3  << Lists how many packets were captured.

Nelle acquisizioni BPDU, l'indirizzo MAC di origine è l'indirizzo MAC di interfaccia del dispositivo più lontano.

Nell'acquisizione di Ethanalyzer, la porta viene visualizzata in formato esadecimale. Per identificare il numero di porta, è necessario innanzitutto convertire il numero in esadecimale:

0x900a (dalla traccia precedente) = 36874

Questo è il comando che decodifica quel numero in una porta:

Nexus-5000# show spanning-tree internal info all  |

grep -b 50 "port_id                36874" | grep "Port Info"

------- STP Port Info (vdc 1, tree 1, port Po11) ----------

------- STP Port Info (vdc 1, tree 300, port Po11) ---------

------- STP Port Info (vdc 1, tree 800, port Po11) ---------

------- STP Port Info (vdc 1, tree 801, port Po11) ---------

------- STP Port Info (vdc 1, tree 802, port Po11) ---------

------- STP Port Info (vdc 1, tree 803, port Po11) ---------

------- STP Port Info (vdc 1, tree 999, port Po11) ---------

In questo caso, è port-channel 11.

Convergenza STP

Per analizzare la convergenza STP, usare il comando show spanning-tree internal interactions. Questo comando fornisce informazioni dettagliate sugli eventi che hanno attivato le modifiche STP. È importante raccogliere queste informazioni non appena si verifica il problema, in quanto i registri sono di grandi dimensioni e vanno a capo nel tempo.

Nexus-5000#show spanning-tree internal interactions

- Event:(null), length:123, at 81332 usecs after Sat May 11 12:01:47 2013

Success: pixm_send_set_mult_cbl_vlans_for_multiple_ports, num ports 1

VDC 1, state FWD, rr_token 0x21b9c3 msg_size 584

- Event:(null), length:140, at 81209 usecs after Sat May 11 12:01:47 2013

vb_vlan_shim_set_vlans_multi_port_state(2733): Req (type=12) to PIXM

vdc 1, inst 0, num ports 1, state FWD

[Po17 v 800-803,999-1000]

- Event:(null), length:123, at 779644 usecs after Sat May 11 12:01:46 2013

Success: pixm_send_set_mult_cbl_vlans_for_multiple_ports, num ports 1

VDC 1, state FWD, rr_token 0x21b99a msg_size 544<

- Event:(null), length:127, at 779511 usecs after Sat May 11 12:01:46 2013

vb_vlan_shim_set_vlans_multi_port_state(2733): Req (type=12) to PIXM

vdc 1, inst 0, num ports 1, state FWD

[Po17 v 300]

- Event:(null), length:123, at 159142 usecs after Sat May 11 12:01:32 2013

Success: pixm_send_set_mult_cbl_vlans_for_multiple_ports, num ports 1

VDC 1, state LRN, rr_token 0x21b832 msg_size 584

- Event:(null), length:140, at 159023 usecs after Sat May 11 12:01:32 2013

vb_vlan_shim_set_vlans_multi_port_state(2733): Req (type=12) to PIXM

vdc 1, inst 0, num ports 1, state LRN

[Po17 v 800-803,999-1000]

- Event:(null), length:123, at 858895 usecs after Sat May 11 12:01:31 2013

Success: pixm_send_set_mult_cbl_vlans_for_multiple_ports, num ports 1

VDC 1, state LRN, rr_token 0x21b80b msg_size 544

- Event:(null), length:127, at 858772 usecs after Sat May 11 12:01:31 2013

vb_vlan_shim_set_vlans_multi_port_state(2733): Req (type=12) to PIXM

vdc 1, inst 0, num ports 1, state LRN

[Po17 v 300]

.................... cut to save space ............

Mappatura della VLAN esterna

Gli switch Nexus serie 5000 usano le VLAN interne per il mapping ai numeri di VLAN esterni per l'inoltro. A volte l'ID VLAN è l'ID VLAN interno. Per ottenere il mapping a una VLAN esterna, immettere:

Nexus-5000# show platform afm info global

Gatos Hardware version 0

Hardware instance mapping

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

Hardware instance:  0  asic id: 0  slot num: 0

-------------- cut to save space  --------------------------

Hardware instance: 12  asic id: 1  slot num: 3

AFM Internal Status

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

[unknown label                                     ]: 324

[no free statistics counter                        ]: 2

[number of verify                                  ]: 70

[number of commit                                  ]: 70

[number of request                                 ]: 785

[tcam stats full                                   ]: 2

Vlan mapping table

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

Ext-vlan: 1     -  Int-vlan: 65

Debug STP

Un altro modo per risolvere i problemi relativi a STP è utilizzare i debug. Tuttavia, l'uso dei debug STP potrebbe causare un picco nell'utilizzo della CPU, il che produce problemi in alcuni ambienti. Per ridurre drasticamente l'utilizzo della CPU durante l'esecuzione dei debug, utilizzare un filtro di debug e registrare l'attività in un file di log.

1. Creare il file di log, che viene salvato nel log della directory.

Nexus-5000#debug logfile spanning-tree.txt

Nexus-5548P-L3# dir log:

31 Nov 06 12:46:35 2012 dmesg

----- cut to save space----

7626 Nov 08 22:41:58 2012 messages

0 Nov 08 23:05:40 2012 spanning-tree.txt

4194304 Nov 08 22:39:05 2012 startupdebug

2. Eseguire il debug.

Nexus-5000# debug spanning-tree bpdu_rx interface e1/30

<<< setup your spanning-tree for bpdus

Nexus-5000# copy log:spanning-tree.txt bootflash:

Esempio dal file di log:

2012 Nov 8 23:08:24.238953 stp: BPDU RX: vb 1 vlan 300, ifi 0x1a01d000

(Ethernet1/30)

2012 Nov 8 23:08:24.239095 stp: BPDU Rx: Received BPDU on vb 1 vlan 300

port Ethernet1/30 pkt_len 60 bpdu_len 36 netstack flags 0x00ed enc_type ieee

2012 Nov 8 23:08:35.968453 stp: RSTP(300): Ethernet1/30 superior msg

2012 Nov 8 23:08:35.968466 stp: RSTP(300): Ethernet1/30 rcvd info remaining 6

2012 Nov 8 23:08:36.928415 stp: BPDU RX: vb 1 vlan 300, ifi 0x1a01d000

(Ethernet1/30)

2012 Nov 8 23:08:36.928437 stp: BPDU Rx: Received BPDU on vb 1 vlan 300

port Ethernet1/30 pkt_len 60 bpdu_len 36 netstack flags 0x00ed enc_type ieee

2012 Nov 8 23:08:36.928476 stp: RSTP(300): msg on Ethernet1/30

....................        cut to save space        ............

Nexus 5000 non ha elaborato le BPDU

Per risolvere il problema, controllare la cronologia eventi per determinare se lo switch Nexus serie 5000 ha assunto la radice. Nexus 5000 presume la radice se non elabora le BPDU o non le riceve. Per individuare la causa del problema, è necessario determinare se altri switch collegati al bridge designato hanno anch'essi causato il problema. Se nessun altro ponte ha avuto il problema, è molto probabile che il Nexus 5000 non abbia elaborato i BPDU. Se il problema persiste anche su altri ponti, è molto probabile che il ponte non abbia inviato i BPDU.

Nota: Prestare attenzione quando si risolvono i problemi relativi a STP e Virtual Port Channel (vPC). Solo il dispositivo primario vPC invia pacchetti BPDU. Quando il dispositivo secondario vPC è la radice STP, il dispositivo principale invia comunque le BPDU. Se la radice è connessa tramite un vPC, solo i contatori Rx BPDU primari vengono incrementati, anche quando vengono ricevuti dal secondario.