How To Build a Ruckus ICX Switch Stack

Home/Denton Business Solutions Blog, Instructional / How-to, Ruckus/How To Build a Ruckus ICX Switch Stack

Cisco may be the global leader in LAN switching, but there are several other companies out there with great switches.  Ruckus is definitely one of these.  While most people probably think of wireless access points when they hear Ruckus, Ruckus actually has an extremely robust line of LAN switches.
Ruckus switches switches used to be sold under the Brocade brand.  While Brocade in its day was probably best-known for its data center and SAN switches, I can say from first-hand experience that Ruckus LAN switches are pretty great too.  They pack speed, power, and features into a chassis that’s priced too well to ignore.

How to Stack Ruckus ICX Switches

Preparation / Layout

Ruckus Switches - ICX 7150 Family

The Ruckus ICX 7150 LAN Switch Family

Without further ado, let’s get down to it.  The first step in stacking your switches of course is to unbox and assemble them all.  I do love working with Ruckus switches but it seems like they require a lot more assembly than other switches I’ve worked with in the past.  Every single PSU, fan, network module, Twinax cable, and SFP/SFP+ comes in its own baggie in its own box so it can take a while just to get all your switches assembled properly.  When I do consulting projects, I actually recommend that my clients assemble their own switches to keep project costs down.

Once you get all your switches assembled, stack them on a table in the order in which you plan to deploy them in your racks.  Personally, I like to label my switches from top to bottom so that’s how I stage them as well.  In this example I’m building a stack with seven stack members (switches) so I put switch 7 on the table and built up from there so switch 1 is on top. Make sure you gather the switch MAC addresses and serial numbers as you stack your switches!  You’ll need the MAC addresses when we configure the stack and you’ll need the serial numbers down the road in case you need to RMA the switch later. For some reason Ruckus puts the serial number of a switch on the BOTTOM of the chassis so it’s basically inaccessible once racked. Just trust me and write down all the info.

Once the switches are stacked on the table, you’ll need to upgrade each of them to the current recommended firmware level.  If you need help with that process, we wrote an excellent article on How to do a Ruckus Switch Firmware Upgrade last year.

If your switches are not all running the same version of firmware they will not be able to join the stack!

Next, go ahead and connect all the stacking cables.  Unlike Cisco, which generally uses dedicated stacking ports on its stackable switches, the Ruckus ICX switches actually have 10GB dual-purpose ports.  Depending on the exact model of ICX switch you have, you’ll end up with either 2 or 4 ports eligible to become stacking ports (assuming your switch is licensed for more than 2x10GB ports).  I usually use the odd ports for stacking since they’re all rightside-up.  That means I use 1/3/1 and 1/3/3 on 48-port ICX 7150s.  On the 7150-48ZP the stacking ports are in the same place but the nomenclature is different so we use ports 1/2/1 and 1/2/3 there.

Ruckus ICX Switch Stack Diagram

Ruckus ICX Switch Stack Diagram (in backwards order)

I generally try to use the same ports all the way through a stack so I can easily figure out what’s connected to what.  For example, switch 1 stacking port 3 connects to switch 2 stacking port 1.  Then switch 2 stacking port 3 goes to switch 3 stacking port 1.  In the end I connect 3-to-1 | 3-to-1 | 3-to-1 all the way down.  Now, again, I number my switches top to bottom.  In the diagram I included here, Ruckus numbered the switches from 1 to 4 from the bottom to the top.  I don’t know anyone who builds their stacks this way so I apologize that this is upside-down an confusing but it does illustrate that switch one to switch two goes 3-to-1.  It’s just upside-down…

One thing I really like about Ruckus switches is that you can issue the command “show stack” and the switch will report back on the current switch topology.  As you can see from this simple ASCII diagram, port 3 on any given upstream switch connects to port 1 on the downstream switch.


    active       standby
    +---+        +---+        +---+        +---+        +---+        +---+
-2/1| 1 |2/3--3/1| 2 |3/3--3/1| 3 |3/3--3/1| 4 |3/3--3/1| 5 |3/3--3/1| 6 |3/3-
|   +---+        +---+        +---+        +---+        +---+        +---+   |
|                                                                            |
|                                                       +---+        +---+   |
-----------------------------------------------------3/3| 8 |3/1--3/3| 7 |3/1-
                                                        +---+        +---+

 

ICX Switch Stack Configuration

Once the switch stack is powered on and interconnected, login into the switch that you intend to be the stack master.  Usually this is switch 1 for me.  Then go into config mode to enable stacking.


ICX7150-48ZP Switch#conf t
ICX7150-48ZP Switch(config)#stack enable
Enable stacking. This unit actively participates in stacking
ICX7150-48ZP Switch(config)#end
ICX7150-48ZP Switch#

Next, you’ll have to wait upwards of 30 seconds for the switch stacking process to fully initialize. Continue on with the next steps and you’ll see what I mean. As soon as you’re able to, issue the command “stack secure-setup” from enable mode. This will kick off the stack construction.


ICX7150-48ZP Switch#stack secure-setup
ICX7150-48ZP Switch#Discovering the stack topology...

Current Discovered Topology - RING

Available UPSTREAM units
Hop(s) Id Type Mac Address
1 new ICX7150-48PF 609c.9fe9.2ff0
2 new ICX7150-48PF 609c.9fea.2c28
3 new ICX7150-48PF 609c.9fea.2720
4 new ICX7150-48PF 609c.9ffd.bb9c
5 new ICX7150-48PF 609c.9fe9.fd20
6 new ICX7150-48PF 609c.9ffc.f064
7 new ICX7150-48PF 609c.9fe9.31b0

Available DOWNSTREAM units
Hop(s) Id Type Mac Address
1 new ICX7150-48PF 609c.9fe9.31b0
2 new ICX7150-48PF 609c.9ffc.f064
3 new ICX7150-48PF 609c.9fe9.fd20
4 new ICX7150-48PF 609c.9ffd.bb9c
5 new ICX7150-48PF 609c.9fea.2720
6 new ICX7150-48PF 609c.9fea.2c28
7 new ICX7150-48PF 609c.9fe9.2ff0

Do you accept the topology (RING) (y/n)?: y

This is where the magic happens! As soon are you kick off “stack secure-setup,” the stack master (the switch you’re consoled into) will auto-discover all the switches attached to it. This is INCREDIBLY helpful, especially if you’re going through this process while using long-distance stacking between closets (yes you can do that with Ruckus switches). So make sure all your switches are present and connected in the order that you expected. Note in the table above that the master switch is NOT listed because only upstream and downstream switches are discovered.

If everything looks to be in order type ‘y’ to accept the topology.


Do you accept the topology (RING) (y/n)?: y

Selected Topology:
Active Id Type Mac Address
1 ICX7150-48ZP 78a6.e141.b27c

Selected UPSTREAM units
Hop(s) Id Type Mac Address
1 2 ICX7150-48PF 609c.9fe9.2ff0
2 3 ICX7150-48PF 609c.9fea.2c28
3 4 ICX7150-48PF 609c.9fea.2720
4 5 ICX7150-48PF 609c.9ffd.bb9c
5 6 ICX7150-48PF 609c.9fe9.fd20
6 7 ICX7150-48PF 609c.9ffc.f064
7 8 ICX7150-48PF 609c.9fe9.31b0

Selected DOWNSTREAM units
Hop(s) Id Type Mac Address
1 8 ICX7150-48PF 609c.9fe9.31b0
2 7 ICX7150-48PF 609c.9ffc.f064
3 6 ICX7150-48PF 609c.9fe9.fd20
4 5 ICX7150-48PF 609c.9ffd.bb9c
5 4 ICX7150-48PF 609c.9fea.2720
6 3 ICX7150-48PF 609c.9fea.2c28
7 2 ICX7150-48PF 609c.9fe9.2ff0

Do you accept the unit id's (y/n)?: n

Next you get a chance to change the unit IDs. For example, if you’re sure the stack is cabled properly but the stack was discovered in “backwards order” you can change the unit IDs on the fly. In the next block you can see where I flipped all the unit IDs into the reverse order from how the stack was discovered.


Unit ID change may modify stack configuration. Please Save config
and Reload after stack is ready
Press Ctrl-C to exit the session...

Enter an unused id for the UPSTREAM ICX7150-48PF 609c.9fe9.2ff0 at 1 hop(s) (1-12)[2]: 8
Enter an unused id for the UPSTREAM ICX7150-48PF 609c.9fea.2c28 at 2 hop(s) (1-12)[3]: 7
Enter an unused id for the UPSTREAM ICX7150-48PF 609c.9fea.2720 at 3 hop(s) (1-12)[4]: 6
Enter an unused id for the UPSTREAM ICX7150-48PF 609c.9ffd.bb9c at 4 hop(s) (1-12)[5]: 5
Enter an unused id for the UPSTREAM ICX7150-48PF 609c.9fe9.fd20 at 5 hop(s) (1-12)[4]: 4
Enter an unused id for the UPSTREAM ICX7150-48PF 609c.9ffc.f064 at 6 hop(s) (1-12)[3]: 3
Enter an unused id for the UPSTREAM ICX7150-48PF 609c.9fe9.31b0 at 7 hop(s) (1-12)[2]: 2

As soon as I entered the new Stack ID for the last stack member you’ll see below that the stack had a stack master election and the master switch (switch 1 that I was consoled into) remained master. Switches must reboot in order to join a new stack and you can see some of that process below.


ICX7150-48ZP Switch#T=1d22h5m34.6: Election, was alone --> active, ID=1, pri=128, 8U(1-8), A=u1, nbr#=7 7, reason: u5: SecureS, ,
T=1d22h5m37.2: Election, was active, no change, ID=1, pri=128, 8U(1-8), A=u1, nbr#=7 7, reason: u1: stk-po-chg, ,
T=1d22h5m40.2: reset unit 2: u2 bo-id=1
T=1d22h5m40.2: reset unit 3: u3 bo-id=1
T=1d22h5m40.2: reset unit 4: u4 bo-id=1
T=1d22h5m40.2: reset unit 5: u5 bo-id=1
T=1d22h5m40.2: reset unit 6: u6 bo-id=1
T=1d22h5m40.2: reset unit 7: u7 bo-id=1
T=1d22h5m40.2: reset unit 8: u8 bo-id=1
Debug: Jan 2 22:07:38
Config changed due to add/del units. Do write mem if you want to keep it
T=1d22h5m45.2: Active U1 deletes U2 and its config because it is learned.
Debug: Jan 2 22:07:41 T=1d22h5m45.2: Unit 1 loses all neighbors.
T=1d22h5m45.2: Active U1 deletes U3 and its config because it is learned.
T=1d22h5m45.3: Active U1 deletes U4 and its config because it is learned.
T=1d22h5m45.3: Active U1 deletes U5 and its config because it is learned.
T=1d22h5m45.4: Active U1 deletes U6 and its config because it is learned.
T=1d22h5m45.4: Active U1 deletes U7 and its config because it is learned.
T=1d22h5m45.4: Active U1 deletes U8 and its config because it is learned.
T=1d22h8m2.1: Election, was active, no change, ID=1, pri=128, 8U(1-8), A=u1, nbr#=7 7, reason: u8: port-up, ,
Detect stack member 2 POE capable
Debug: Jan 2 22:09:59 Detect stack unit 2 has different ssl client key, will synchronize it
Debug: Jan 2 22:09:59 T=1d22h8m3.7: Synchronize webauth files to u2
Detect stack member 3 POE capable
Debug: Jan 2 22:09:59 Detect stack unit 3 has different ssl client key, will synchronize it
Debug: Jan 2 22:09:59 T=1d22h8m3.7: Synchronize webauth files to u3
Detect stack member 4 POE capable
Debug: Jan 2 22:10:00 Detect stack unit 4 has different ssl client key, will synchronize it
Debug: Jan 2 22:10:00 T=1d22h8m3.7: Synchronize webauth files to u4
Detect stack member 5 POE capable
Debug: Jan 2 22:10:00 Detect stack unit 5 has different ssl client key, will synchronize it
Debug: Jan 2 22:10:00 T=1d22h8m3.7: Synchronize webauth files to u5
Detect stack member 7 POE capable
Debug: Jan 2 22:10:00 Detect stack unit 7 has different ssl client key, will synchronize it
Debug: Jan 2 22:10:00 T=1d22h8m3.7: Synchronize webauth files to u7
Detect stack member 6 POE capable
Debug: Jan 2 22:10:00 Detect stack unit 6 has different ssl client key, will synchronize it
Debug: Jan 2 22:10:00 T=1d22h8m3.7: Synchronize webauth files to u6
Detect stack member 8 POE capable
Debug: Jan 2 22:10:00 Detect stack unit 8 has different ssl client key, will synchronize it
Debug: Jan 2 22:10:00 T=1d22h8m3.8: Synchronize webauth files to u8
T=1d22h8m5.0: Election, was active, no change, ID=1, pri=128, 8U(1-8), A=u1, nbr#=7 7, reason: u1: stk-po-chg, ,
2000 log entries of PoE Event Trace Log Buffer is allocated on unit 1 for unit 2
T:1d22h8m5.2: Done hot swap: active controller u1 sets u2 to Ready.
2000 log entries of PoE Event Trace Log Buffer is allocated on unit 1 for unit 3
T:1d22h8m5.5: Done hot swap: active controller u1 sets u3 to Ready.
2000 log entries of PoE Event Trace Log Buffer is allocated on unit 1 for unit 4
T:1d22h8m5.7: Done hot swap: active controller u1 sets u4 to Ready.
2000 log entries of PoE Event Trace Log Buffer is allocated on unit 1 for unit 5
T:1d22h8m5.9: Done hot swap: active controller u1 sets u5 to Ready.
2000 log entries of PoE Event Trace Log Buffer is allocated on unit 1 for unit 6
T:1d22h8m6.1: Done hot swap: active controller u1 sets u6 to Ready.
2000 log entries of PoE Event Trace Log Buffer is allocated on unit 1 for unit 7
T:1d22h8m6.4: Done hot swap: active controller u1 sets u7 to Ready.
2000 log entries of PoE Event Trace Log Buffer is allocated on unit 1 for unit 8
T:1d22h8m6.6: Done hot swap: active controller u1 sets u8 to Ready.
PoE: Stack unit 3 Power supply 1 with 740000 mwatts capacity is up
PoE: Stack unit 6 Power supply 1 with 740000 mwatts capacity is up
PoE: Stack unit 5 Power supply 1 with 740000 mwatts capacity is up
PoE: Stack unit 2 Power supply 1 with 740000 mwatts capacity is up
PoE: Stack unit 8 Power supply 1 with 740000 mwatts capacity is up
PoE: Stack unit 4 Power supply 1 with 740000 mwatts capacity is up
Debug: Jan 2 22:10:06
Config changed due to add/del units. Do write mem if you want to keep it
PoE: Stack unit 7 Power supply 1 with 740000 mwatts capacity is up
T=1d22h9m7.3: Assigned unit 2 to be standby
Debug: Jan 2 22:11:05 T=1d22h9m9.3: start running config sync to standby u2
Debug: Jan 2 22:11:06 T=1d22h9m9.9: Running config sync to standby u2 is complete

The switches have all rebooted and pulled their config from the stack master.  You’re done!  Now all you have to do is verify the status of the stack using “show stack”:

ICX7150-48ZP Switch#
ICX7150-48ZP Switch#sh stack
T=1d22h9m19.5: alone: standalone, D: dynamic cfg, S: static
ID   Type          Role    Mac Address    Pri State   Comment
1  S ICX7150-48ZP  active  78a6.e141.b27c 128 local   Ready
2  D ICX7150-48PF  standby 609c.9fe9.31b0   0 remote  Ready
3  D ICX7150-48PF  member  609c.9ffc.f064   0 remote  Ready
4  D ICX7150-48PF  member  609c.9fe9.fd20   0 remote  Ready
5  D ICX7150-48PF  member  609c.9ffd.bb9c   0 remote  Ready
6  D ICX7150-48PF  member  609c.9fea.2720   0 remote  Ready
7  D ICX7150-48PF  member  609c.9fea.2c28   0 remote  Ready
8  D ICX7150-48PF  member  609c.9fe9.2ff0   0 remote  Ready
active     standby
+---+        +---+        +---+        +---+        +---+        +---+
-2/1| 1 |2/3--3/1| 2 |3/3--3/1| 3 |3/3--3/1| 4 |3/3--3/1| 5 |3/3--3/1| 6 |3/3-
|   +---+        +---+        +---+        +---+        +---+        +---+   |
|                                                                            |
|                                                       +---+        +---+   |
-----------------------------------------------------3/3| 8 |3/1--3/3| 7 |3/1-
+---+        +---+
Standby u2 - Learn other units for 6 sec, protocols may not be ready in 64 s.
Role history: N: standalone, A: active, S: standby, M: member
U1: N->A
Current stack management MAC is 78a6.e141.b27c
ICX7150-48ZP Switch#

Notice that all switches are online and connected in the proper order AND connected with the proper ports – 3-to-1 all the way around. When doing remote configuration this is a great way to make sure a stack is built properly before starting the actual configuration work.

Now that the we’ve built and verified the stack my job here is done… for now!  If you have any questions about this article feel free to leave a comment below and I’ll answer as soon as I can.  Also, if you need help with with our own Ruckus project please do reach out to us.  We’d love to help.  We are extremely partner-friendly with extremely competitive rates!  Otherwise, thank you for reading.  I hope this article helped you get your project started off on the right foot!

About the Author:

Phil is the President and founder of Denton Business Solutions. He's had a fascination with technology for as long as he can remember. Phil uses that fascination to guide manufacturers to technology solutions for enhancing their plant safety, cybersecurity, and productivity. Outside the office, Phil enjoys cooking, spending time with his wife and son, and reading up on the latest manufacturing news. You can connect with Phil on Facebook, Twitter, and LinkedIn!

Leave A Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.