Which is easier to use: FC, FCoE, or iSCSI?
This is the question we wanted to answer as we set out few months ago to test a series of nine configurations in the lab. Our approach was to determine the number of provisioning steps required when using each protocol to connect to storage and then compare them. We felt if one of the protocols was significantly more labor intensive than another, then perhaps this would shed some light on some of the recent trends we had been noticing. Actually to put a sharper point on it, we wanted to determine why iSCSI seems to be more attractive than FC or FCoE in low end server virtualization environments. A summary of the data we captured as well as the testing process used have been included below, but they were summed up perfectly by Mark Lippitt, one of EMC’s Distinguished Engineers, when he said something along the lines of:
“FC and FCoE provisioning are Network-centric and iSCSI provisioning is End-Node-centric.”
Before I explain what he meant by this statement, let me start by stating (yet again), we don’t *really* care what protocol you use between your host and storage; we’ll support them all! We do want to make sure that whatever protocol you have chosen to use is the best fit for your environment and it provides you with easy and error free operation. Getting to the bottom of why iSCSI is successful in certain circumstances is important to us because it represents a change.
The testing results are shown the following table and I believe clearly show:
- Native FC requires the least number of configuration steps when compared with both iSCSI and FCoE.
- Configuring FCoE requires many more network configuration steps and requires fewer configuration steps on each individual host when compared with iSCSI.
- Configuring iSCSI requires much more work on each individual host and requires fewer configuration steps in the network when compared with FCoE.
I’ll describe why this matters in a bit.
A few notes about the numbers in the table:
- The steps that were counted and entered into each cell have been included for your reference at the end of this post. See “Configuration steps”
- Since we had to deal with the comparison of “mouse clicks” and “CLI commands”, we tried to break them down into logical steps. With the CLI this was basically one step for every CLI command. For the GUI, we tried to count one step per dialog box unless I had to type in a value and then we counted each value entered as one step. Perfect? No! But we tried to be fair..
- I have not counted steps that are common to all protocols such as attaching cables.
- I’ve also included information that shows how TDZ would reduce the total number of provisioning steps.
Getting to the point
As you may have noticed, in terms of the number of provisioning steps, the difference between FC, FCoE and iSCSI is not that great. In fact, based on the numerous “FC is harder to use that iSCSI” complaints I’ve heard over the past couple of years, I was very surprised to see that FC requires 1/3 the number of configuration steps as iSCSI and I was also surprised to discover how many configuration steps are required to configure FCoE. If you were just to look at these numbers you may come to the conclusion that FC is the clear winner and it will continue to dominate in the SAN, but then how do we explain iSCSI’s growth in the server virtualization space. Obviously there are multiple factors at play but again Mark had a hypothesis about this that resonates as true to me “reducing the number of user interfaces is more important the reducing the total number of configuration steps”. And this is where the concepts of “Network-centric” and “End-Node-centric” environments come into play.
Network-centric
FC and FCoE are Network-centric. Both protocols rely on fact that the network will control what each end device has access to. This control is centrally managed and requires a special set of FC skills to administer properly. Since these are fairly specialized skills, I think you are more likely to find people that possess them in large organizations where controlling access to a pool of shared storage is a necessity. In addition, since control is centrally managed, the end devices have evolved so that they will try and utilize every device that they can discover in the SAN. This evolved behavior is one of the things that made the T11 FC-SCM technical report so difficult to write and unfortunately so un-implementable. The bottom line is a Network-centric approach is probably better suited for large organizations that need centralized control of access to storage resources.
End-Node-centric
iSCSI is End-Node-centric. iSCSI relies on the fact that the network will allow communication between the iSCSI Initiator and whatever iSCSI Target the Server Admin points the Initiator at. iSCSI requires no special set of FC SAN Administration skills, so it provides a very low hurdle for entry into the SAN space. I suspect this low hurdle is the reason for uptick in iSCSIs adoption in the low end of the server virtualization space. In addition, since control is managed at each individual end point, the end devices have evolved so that they will only discover what they are told to discover. Maybe this partially explains why the iSCSI iSNS has been adopted by so few. The bottom line is an End-Node-centric approach is probably better suited to smaller organizations that do not need centralized control of access to storage resources.
LUN Masking
In both the Network-centric and End-Node-centric provisioning models, there is typically some kind of LUN Masking implemented on the storage array. I suppose that this could be viewed as a centralized control of storage resource but since it is common across both iSCSI and FC/FCoE, I’m assuming that it would not influence the decision to use one protocol over another.
Conclusion
So which one is right for you?
I don’t know! Figure it out for yourself!!! :-)
Seriously, it depends on what you need:
- if you require a separate high performance (up to 16GB/s) and fault tolerate SAN, then choose FC or FCoE.
- If you are just entering into the SAN space and want to connect to your external storage without having to learn about FC/FCoE, then iSCSI is probably the best fit for you.
- If you are somewhere in the middle, then it's mostly a matter of personal preference and you should choose what works best in your environment.
Topology tested
Configuration steps
Note: Please keep in mind that the steps listed below are just a description of each task and do not necessarily represent all of the details required to complete that particular task. An example is “Install HBA”, obviously there is a reboot implied in this step. I didn’t include all of the detail because the document that contains all of details was 50+ pages long..
Hosts
Windows:
FC:
- Install HBA
- Install Driver
FCoE:
- Install CNA
- Install Driver
iSCSI:
- Locate the adapter that will be used for iSCSI in the “Network Connections” dialog
- Right click the adapter, select properties, then select “TCP/IPv4” and click properties
- Select “Use the following IP Address”
- Enter an IP address
- Enter a subnet mask
- Enter a default gateway
- Click OK and then close.
- Install the Microsoft iSCSI Initiator software (can be downloaded from microsoft.com if necessary)
- Open the Microsoft iSCSI Initiator properties dialog by clicking Start / Administrative Tools / iSCSI Initiator.
- Add an iSCSI Target by clicking the Discovery Tab and then Add Portal…
- Enter the IP Address of both iSCSI Targets into the “IP address or DNS name:” field as shown below:
- Click Advanced and the Advanced Settings dialog is displayed
- In the Local Adapter field, choose Microsoft iSCSI Initiator from the pull down list.
- In the Source IP field, choose the IP Address of the Adapter that will be used to access this target.
- Click OK and then OK again.
- Click on the Targets tab and the iSCSI Targets should be displayed
- Select the correct target in the list and then click Log on…, the Log On to Target dialog is displayed
- Ensure that the Automatically restore this connection when the computer starts checkbox is selected.
- Click OK.
Linux:
FC (FC drivers supported by EMC are inbox):
- Install HBA
FCoE (FCoE drivers supported by EMC are inbox):
- Install CNA
iSCSI:
- Download the appropriate driver
- Unzip the driver
- Install the driver and interact with installation script
- Start the iSCSI driver
- Verify the iSCSI driver was started
- Edit the /etc/iscsi/iscsid.conf file and verify:
- node.session.iscsi.InitialR2T is set to yes;
- node.session.iscsi.ImmediateData is set to No; and
- node.session.timeo.replacement_timeout is set to 60.
- Set the run levels of the iSCSI daemon to automatically start at boot and to shut down when the server is brought down using chkconfig –level 345 iscsid
- Assign an IP Address to the NIC that is to be used as the iSCSI initiator.
- Use service network restart to allow the IP Address change to take effect.
- Discover the Symmetrix iSCSI target using iscsiadm –m discovery –t st –p 10.246.54.109
- Log into the storage using iscsiadm –m node –L all
VMware:
FC:
- Install HBA
FCoE:
- Install CNA
iSCSI:
- launch the vSphere client and login
- Select a host from the inventory panel.
- Click the Configuration tab and click Networking.
- In the Virtual Switch view, click Add Networking.
- Select VMkernel and click Next.
- Select Create a virtual switch to create a new vSwitch.
- Select a NIC to use for iSCSI traffic.
- Click Next.
- Enter a network label - A network label is a friendly name that identifies the VMkernel adapter that you are creating, for example, iSCSI.
- Click Next.
- Specify the IP settings and click Next.
- Review the information and click Finish. Verify the vSwitch that was created is show\
- Select the host from the inventory panel of the vSphere client
- Click on the configuration tab and then storage adapters.
- Click on “add” above the storage adapters field and select Software iSCSI Adapter. The iSCSI Software Adapter will be shown in the Storage Adapters section.
- Select the iSCSI adapter and click properties in the details text area and the iSCSI Initiator Properties dialog is displayed.
- Click on the Network Configuration tab and then Add.
- Select the appropriate VMkernel Adapter and then OK.
- Repeat for the other VMkernel Adapters. When done, the iSCSI Initiator Properties dialog will appear as follows.
- Click the Static Discovery tab and then click Add
- Enter the IP Address of the iSCSI Target and it’s IQN.
- Click OK.
- Click OK and a rescan will be performed. Once LUNs have been made available from the storage, perform a re-scan and devices should be visible from ESX.
Network – Not operating system specific:
FC:
Zoning:
- Create Zone
- Add WWPN member 1
- Add WWPN member 2
- Add zone to configuration
- Activate configuration
FCoE:
- Enable FCoE Feature (one time)
- system qos (The following QOS settings are done once)
- service-policy type qos input
- fcoe-default-in-policy
- service-policy type queuing input
- fcoe-default-in-policy
- service-policy type queuing output
- fcoe-default-out-policy
- service-policy type network-qos
- fcoe-default-nq-policy
- vsan 600 (one time)
- vlan 600 (one time)
- fcoe vsan 600 (one time)
- int vfc 5
- bind int e1/5
- switchport trunk allowed vsan 600
- no shut
- int vfc 6
- bind int e1/6
- switchport trunk allowed vsan 600
- no shut
- int e1/5
- switchport mode trunk
- switchport trunk allowed vlan 1, 600
- spanning-tree port type edge trunk
- int e1/6
- switchport mode trunk
- switchport trunk allowed vlan 1, 600
- spanning-tree port type edge trunk
- vsan database
- vsan 600 interface vfc5
- vsan 600 interface vfc6
- Create Zone
- Add WWPN of host
- Add WWPN of target
- Add zone to configuration
- Activate configuration
iSCSI:
- VLAN 700 (one time)
- int e1/5
- switchport access vlan 700
- no shut
- int e1/6
- switchport access vlan 700
- no shut
Storage – Not protocol specific:
- Create the storage group
- Add storage devices to the storage group
- Create the port group
- Add Symmetrix interfaces to the port group
- Create the initiator group
- Add the initiator to the initiator group
- Create a masking view
Thanks for reading!