3.2 Front End Directors

Front End Directors (FEDs) are installed in pairs, with one board being installed to Cluster 1 and the other to Cluster 2. If a FED is described as being an 8 port feature, this means 4 ports per FED board and 8 ports across the pair.

The front end ports on the USP V are fibre channel ports equipped with either shortwave or longwave SFP transceivers and can operate at 1Gbps, 2Gbps or 4Gbps and can auto-negotiate. They can also operate in a variety of topologies including FC-AL and Fabric Point- to-Point. Fabric point-to-point being the standard topology for attachment to Fibre Channel
SAN switches.

Individual transceivers (ports) as well as the FED boards themselves are hot pluggable (by a qualified engineer and NOT by a user or storage administrator). Each front end port has its own WWPN that is based on the serial number of the array and
the port identifier. Therefore replacing a port or even a FED does not change the associated WWPNs of the ports.

* The last two digits of the WWPN relate to the port number.
* The 4 digits prior to that are a hex representation of the serial number of the array.

Microprocessors

Behind each port is a microprocessor (MP). Depending on the model of FED installed, each front end port either has its own dedicated MP or shares an MP with one other port. Obviously the FEDs with a 1:1 ratio of ports to MPs are higher performing.

For performance and redundancy, two ports sharing the same MP should be considered the same port. For example, the two red ports in the diagram above share the same MP. Therefore you would never put two paths from the same host on them as failure of the MP would render both ports “down”. The MPs on the FEDs run a portion of the microcode (DKCMain) and are responsible for all IO until it is completed to disk. They also run the code necessary for copy or replication programs such as HDP and TrueCopy. These functions all cause overhead for the MPs. For example, a front end port with HDP LUNs that are being TrueCopied, ShadowImaged, Copy-On-Writed, LUSEd and on Concatenated Array Groups will push its associated MP harder than a front end port that has non-HDP LUNs that are not replicated or copied etc.

Port Modes

Each port can be configured in any of the following modes -
* Target – Standard port that hosts connect to. Has LUNs presented on it.
* Initiator – Used for TrueCopy and HUR. Sends data to a remote USP V
* MCU Target – Used for TrueCopy and HUR. Receives data from a remote USP V
* External – Used to connect a USP V to an external storage subsystem (emulates a
Windows initiator).

When using FEDs with two front end ports per MP, setting a port to one of the above modes forces its buddy port on to the same mode (buddy ports are ports that share the same MP). Basically the MP can only support one mode for both ports.
Access to Cache Each FED and BED (Back End Director) is connected to Cache via multiple paths to the Cache Switches (CSW). These paths operate at 1064MB/sec. The CSWs themselves are fully non-blocking crossbar switches with multiple paths to the FEDs BEDs and Cache.

Each MP actually has two ASICs. One is responsible for passing data to the CSWs and the other is responsible for sending control data to Shared Memory via the dedicated point-to-point Shared Memory network (non switched). This architecture allows for separation of user data and control data making for better throughput and reducing bandwidth and other resource contention between user data and control data.

All MPs, on FEDs and BEDs can access both sides of cache and shared memory. So if cache A is lost, all FED and BED ports can still see cache B.

LUN Mapping

Sometimes people, or the documentation, may state that you can attach up to 2048 hosts per port. Although theoretically this is true, each host could only have a single LUN with a queue depth of 1 without risking overrunning the target queue depth. Basically each port has a supported queue depth of 2048. The same would also hold for any claims that you can present 2048 LUNs per port. Theoretically this may be true, however, each LUN could only have a single outstanding IO without overrunning the port. 2048 is the queue depth for the port. Although the port has a queue depth of 2048 each LUN has its own max queue depth of 32.

The FC/SCSI protocol specification only allows for a single byte for a LUN number you may expect a limitation of 256 LUNs per port. However, this is overcome by implementing virtual buses on each port. When internal LDEVs are mapped to front end ports they are referred to as LUNs Host Storage Domains Each front end port can be divided into multiple secure virtual ports called Host Storage Domains (HSD). This allows each port to have multiple hosts simultaneously and securely connected via a SAN switch. It is not uncommon to see between 10 or 20 hosts connected to a single port, each with its own secure Host Storage Domain (performance must be taken in to account when deciding how many hosts access a single port). Access to LUNs presented to an HSD is managed via WWPNs with only the hosts who’s WWPNs are configured for the HSD being able to access the LUNs in the particular HSD. Each secure HSD has its own LUN address space allowing each to have its own LUN 0.

Each HSD has a mode that is set according to the Operating System connecting to the HSD. For example there is a Host Mode for Windows, and another for HP-UX and another for AIX etc. These modes ensure that the correct SCSI code pages and OS specific requirements are adhered to. In addition to Host Modes, certain Host Mode Options can be configured via
the SVP if specific non standard behaviour is required. If Mainframe hosts are connected to the USP V, it is the CHA Adapters (FEDs) where the CKD<->FBA conversion takes place. This is required because all disks and cache slots in the
USP V are SCSI FBA (Open Systems style fixed block architecture).