It’s been available since NX-OS 5.2(6), but is the community ready for a change? It seems the majority of SAN managers are still afraid to start using it, but why? the concept is so simple: it looks like the infamous “default zone” has made it’s way back to the storage area network, but with a twist.
When I was introduced to the world of Fibre Channel, over ten years ago, I remember going through the automatic steps of setting up a freshly powered-on SAN-switch and disabling the default zone, because that one makes that all initiators and targets can communicate with each other. And two initiators talking to each other is not done, because on the midrange arrays an initiator (used for data replication) can also be a target and you don’t want ports logging into each other.
What’s keeping people from using it?
Your guess is as good as mine, but I think the (somewhat) older generation of SAN admins still remembers the default zone and wants to stay away from 1 big pool where all wwns reside. But with smart zoning each wwn is now flagged as either an initiator, a target or both.
These Smart Zoning keywords are used to reduce the number of Access Control List (ACL) Ternary Content Addressable Memory (TCAM) entries and especially those for target-target and initiator-initiator connectivity. As I hinted before, these are typically useless, and can sometimes even cause problems, so it’s probably better not to have these in the first place.
The mostly used alternative is Single Initiator (or Single-Init, Single-Target or SIST as I call them) zones, but in large environments, the creation of all these separate zones is a big operational overhead. I can assure you that zoning 10 hosts to 3 storage arrays is a hell of a job (2 HBAs, 3 arrays, 4 ports per array = 12 zones per host, so 120 SIST zones). Scripting is what could be used, but that’s still a lot of copy / paste activity, which I don’t like. I’ve seen my MDS accept about half of the lines and then PUTTY quitting on me, leaving me with the question what lines have been accepted and which not. I don’t like to paste too many lines in my config. Even more: the less activity, the better.
Smart Zoning combines the benefits of both approaches
- Simplicity of management with a Single (Smart) Zone for all initiators and targets
- Less wasted (switch) resources as with two member zones (and much less work to implement too)
With Smart Zoning, if you want to add a new host to your cluster, you simply add one member to your zone and reactivate.
What does Smart Zoning look like?
zone name SmartZone vsan 1 member pwwn 10:00:00:00:c9:2f:02:db init member pwwn 21:00:00:04:cf:db:3e:a7 target member pwwn 21:00:00:20:37:15:dc:02 target member pwwn 10:00:00:00:c9:2e:ff:d5 init member pwwn 21:00:00:e0:8b:02:56:4b init member pwwn 21:00:00:e0:8b:03:43:6f init
Once enabled, you need to add the keywords init, target, and both to the member entry. The Smart Zoning feature only programs Ternary Content Addressable Memory (TCAM) with entries that connect initiators and targets.
For example, both is used in replication scenarios where storage copy ports act as both init and target when they replicate data. However, I would use an old-fashioned SIST zone for that purpose.
Convert to Smart Zoning
# conf t (config)# zone smart-zone enable vsan 1 Smart Zoning distribution initiated. Check zone status. (config)# zone convert smart-zone vsan 1 (config)# zoneset activate name ZS_VSAN1 vsan 1
Disable Smart Zoning
# conf t (config)# clear zone smart-zoning vsan 1 WARNING: This command will clear smart zoning configs from the specified zone/zoneset/fcalias/vsan. Do you want to continue? (y/n) [n] y (config)# no zone smart-zoning enable vsan 1 WARNING: Disabling Smart Zoning feature may result in TCAM space to exceed and zone to switch to soft zoning in case the current active database is more than specified limits. Do you want to continue? (y/n) [n] y Smart Zoning distribution initiated. check zone status (config)#
Disable Smart Zoning for only one zone
# conf t (config)# zone name DumbZone vsan 1 (config-zone)# attrib disable-smart-zoning
# show zone status vsan 1 # show zoneset active vsan 1 # show running zone vsan 1 # show zone internal vsan 1 # show zone internal rscn acl-table current vsan 1 # show zone internal rscn acl-table previous vsan 1 # show zone smart-zoning auto-conv status vsan 1 # show zone smart-zoning error-log