Earlier this year, I wrote a series of blog posts which introduced Nimble Fibre Channel - A Detailed Exploration. As part of that series I made a recommendation with regards to planning your zoning strategies in the Nimble Fibre Channel: In the Zone - A discussion around best practice with Fibre Channel Zones blog. This was because the WWPN's on the Nimble array are not known until the array is setup and my recommendation was to use Port Zoning, if your Fibre Channel zones couldn't be altered in the production day (Port Zones do not require a WWPN in advance).
In Nimble OS 2.2.5, we added a new piece of functionality which allows the user to define the arrays WWPN to be something that is selectable and customisable. The major benefit of this lets you dictate what your WWNN/WWPN will be prior to installation, allowing you to predefine the arrays FC identity and therefore use aliases / WWPN zoning pre-install.
So what's the taxonomy of a Nimble WWNN/WWPN ?
Here is a standard Nimble WWPN:
The first set of characters in green will always be the same. They are Nimble's IEEE designated Organisationally Unique Identifier. These are unique for each vendor (for instance Qlogic's are 21:00:00:e0, Emulex's are 10:00:00:00).
The next set of characters are customisable, prior to Nimble OS 2.2.5 they were randomly generated on install. In 2.2.5 onwards they are still randomly generated however they can be set to something specific post install.
The final two characters denote the Node (00) or the ports (01 through 12) depending on the number of FC ports in a specific CS Controller.
How do I change the WWWN / WWPN's of an Array ?
A user can change the World Wide Node Name and World Wide Port Name's of an array to something that is custom-defined by logging into the the CLI and running the fc --regenerate_wwn command, as a user with Administration privileges.
The regenerate command, allows the user to specify what customisable portion should be, in the form of three hexadecimal pairs , in the format XX:XX:XX.
The range has to be between 00:00:01 and FF:FF:FF.
Once issued the array's WWNN will be renamed to 56:C9:CE:90:XX:XX:XX:00 and each port will be numbered 56:C9:CE:90:XX:XX:XX:nn
where XX:XX:XX is the string you entered in the command and nn is the port number 1 through to 12.
Would you do this on a live array ?
No, I would recommend not doing this on a Live array, it's really designed to be done at the time of the install. This is because the WWPN's are changing so this operation has the potential to be very disruptive. Zoning will break and Persistent Binding at the host will also break and IO will be disrupted. So the strong recommendation is not to perform this operation on live array. This isn't a problem, as there is no real reason to change an array's WWN post implementation.
Any other gotcha's ?
Yes, of course the numbers you choose MUST be unique within the same fabric! A clash in WWPN's will result in the array not being able to perform a successful fabric login. So develop a consistent model whereby you start at 00:00:01 and perhaps increment the numbering with each new array! Maybe use the first string as a site identifier.
This change allows you to perform your zoning up front without knowing the WWPN's and then at install time resetting the array to known value.
If you want more info then please feel free to comment below or take a look at the 2.2.5 release notes or type man fc on the array . The change is fully documented there as well!