Juniper – Cisco STP

Cisco ships their equipment with their proprietary RPVST – Rapid Per VLAN Spanning-Tree

Juniper ships their equipment with the standard RSTP – Rapid Spanning-Tree.

These two protocols are not compatible and when you attempt to throw them into an environment together your Cisco equipment will err-disable the involved interfaces in an effort to protect the network.

In this instance and these examples I am using an EX series switch running version 15 code. QFX devices will have a slightly different configuration which require you to specify the interfaces you want to participate in spanning-tree.

There are two options to make these two devices cooperate with each other.

1 – Deploy VSTP on your Juniper equipment. VSTP is interoperable with with Cisco’s RPVST.

2 – Deploy MSTP on both Cisco and Juniper equipment.

Lets look at the configuration of both of these. In both cases I will explicitly configure Cisco to be root with a priority of 8192

For option 1, deploying VSTP on Juniper equipment there are no changes needed on your Cisco gear. Older gear that ships with PVST as well as newer gear that ships with RPVST will both interoperate with Juniper’s VSTP. But there are limitations. Juniper only supports 250ish VLANs on most platforms. Some higher end platforms support up to 500 some-odd VLANs.

Your Cisco configuration will look like the following

cisco# show run | in spanning-tree
spanning-tree vlan 1-4094 priority 8192
!
spanning-tree mode pvst
or
spanning-tree mode rapid-pvst
!
interface GigabitEthernet1/0/7
 switchport trunk encapsulation dot1q
 switchport mode trunk
!
interface GigabitEthernet1/0/8
 switchport trunk encapsulation dot1q
 switchport mode trunk
!

Your Juniper configuration will look like the following

root@juniper# show protocols 
rstp;
vstp {
    vlan all;
}
ge-0/0/0 {
    unit 0 {
        family ethernet-switching {
            port-mode trunk;
            vlan {
                members all;
            }
            native-vlan-id 1;
        }
    }
}
ge-0/0/1 {
    unit 0 {
        family ethernet-switching {
            port-mode trunk;
            vlan {
                members all;
            }
            native-vlan-id 1;
        }
    }
}

To validate that spanning-tree is operating as expected we should see both interfaces Desg FWD on the Cisco device. On the Juniper device we should have one interface Root FWD and one interface Alkt BLK. Well only be looking at VLAN 1-3 for brevity.

cisco#show spanning-tree 

VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    8193
             Address     0016.c8b5.8f80
             This bridge is the root
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    8193   (priority 8192 sys-id-ext 1)
             Address     0016.c8b5.8f80
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time  300 sec

Interface           Role Sts Cost      Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi1/0/7             Desg FWD 4         128.7    P2p 
Gi1/0/8             Desg FWD 4         128.8    P2p 

          
VLAN0002
  Spanning tree enabled protocol ieee
  Root ID    Priority    8194
             Address     0016.c8b5.8f80
             This bridge is the root
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    8194   (priority 8192 sys-id-ext 2)
             Address     0016.c8b5.8f80
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time  300 sec

Interface           Role Sts Cost      Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi1/0/7             Desg FWD 4         128.7    P2p 
Gi1/0/8             Desg FWD 4         128.8    P2p 

          
VLAN0003
  Spanning tree enabled protocol ieee
  Root ID    Priority    8195
             Address     0016.c8b5.8f80
             This bridge is the root
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    8195   (priority 8192 sys-id-ext 3)
             Address     0016.c8b5.8f80
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time  300 sec

Interface           Role Sts Cost      Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi1/0/7             Desg FWD 4         128.7    P2p 
Gi1/0/8             Desg FWD 4         128.8    P2p 
root@juniper# run show spanning-tree interface    

Spanning tree interface parameters for instance 0

Interface            Port ID   Designated    Designated       Port   State Role
                                port ID      bridge ID        Cost
ge-0/0/0.0             128:513     128:8  8193.0016c8b58f80    20000 BLK   ALT  
ge-0/0/1.0             128:514     128:7  8193.0016c8b58f80    20000 FWD   ROOT 

Spanning tree interface parameters for VLAN 2

Interface            Port ID   Designated    Designated       Port   State Role
                                port ID      bridge ID        Cost
ge-0/0/0.0             128:513     128:8  8194.0016c8b58f80    20000 BLK   ALT  
ge-0/0/1.0             128:514     128:7  8194.0016c8b58f80    20000 FWD   ROOT 

Spanning tree interface parameters for VLAN 3

Interface            Port ID   Designated    Designated       Port   State Role
                                port ID      bridge ID        Cost
ge-0/0/0.0             128:513     128:8  8195.0016c8b58f80    20000 BLK   ALT  
ge-0/0/1.0             128:514     128:7  8195.0016c8b58f80    20000 FWD   ROOT 

Option 2 is to use MSTP. A simple configuration using a single MSTI is below.

The Cisco configuration will look like the following:

cisco# show running | in spanning-tree
spanning-tree mode mst
!
spanning-tree mst configuration
 name MSTP
!
spanning-tree vlan 1-4094 priority 8192
!

The Juniper configuration will look like the following:

root@juniper# show protocols 
mstp {
    configuration-name MSTP;
}

We can validate the configuration by looking at the spanning-tree interfaces again.

cisco#show spanning-tree

MST0
  Spanning tree enabled protocol mstp
  Root ID    Priority    32768
             Address     0016.c8b5.8f80
             This bridge is the root
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    32768  (priority 32768 sys-id-ext 0)
             Address     0016.c8b5.8f80
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

Interface           Role Sts Cost      Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi1/0/7             Desg FWD 20000     128.7    P2p 
Gi1/0/8             Desg FWD 20000     128.8    P2p 
root@juniper# run show spanning-tree interface 

Spanning tree interface parameters for instance 0

Interface            Port ID   Designated    Designated       Port   State Role
                                port ID      bridge ID        Cost
ge-0/0/0.0             128:513     128:8 32768.0016c8b58f80    20000 BLK   ALT  
ge-0/0/1.0             128:514     128:7 32768.0016c8b58f80    20000 FWD   ROOT 

Leave a comment