A. With the increase in use of iSCSI, there are often questions around whether a software or hardware iSCSI initiator should be used to connect to the iSCSI target.

With a software iSCSI initiator, the only hardware the server requires is a Gigabit networking card. All of the processing for the iSCSI communication is performed by the server's resources, such as CPU and, to a lesser extent, memory. This means on a busy server, the iSCSI traffic processing may actually use up CPU resources that could be used for application needs. Windows has an iSCSI initiator built into the OS.

On the other hand, a hardware iSCSI initiator is a Host Bus Adapter (HBA) that appears to the OS as a storage device. All of the overhead associated with iSCSI is performed by the iSCSI HBA instead of server resources. In addition to minimizing the resource use on the server hardware, a hardware iSCSI HBA also allows additional functionality, because the iSCSI HBA is viewed as a storage device. You can boot a server from iSCSI storage, which is something you can't do with a software iSCSI initiator. The downside is that iSCSI HBAs typically cost ten times what a Gigabit NIC would cost, so you have a cost vs. functionality and performance trade-off.

Most production environments with high loads will opt for hardware iSCSI HBA over software iSCSI, especially when other features such as encryption is considered. There is a middle ground, though. Some network cards offer TCP/IP Offload Engines (TOE) that perform most of the IP processing that the server would normally need to perform. This lessens the resource overhead associated with software iSCSI because the server only needs to process the iSCSI protocol workload.

The picture below shows the difference in workloads associated with software vs. TOE NIC vs. iSCSI HBA.



Related Reading:



Check out hundreds more useful Q&As like this in John Savill's FAQ for Windows. Also, watch instructional videos made by John at ITTV.net.