Chapter 35. Configuring iSCSI Offload and Interface Binding This chapter describes how to set up iSCSI interfaces in order to bind a session to a NIC port when using software iSCSI. It also describes how to set up interfaces for use with network devices that support offloading; namely, devices from Chelsio, Broadcom and ServerEngines. The network subsystem can be configured to determine the path/NIC that iSCSI interfaces should use for binding. For example, if portals and NICs are set up on different subnets, then it is not necessary to manually configure iSCSI interfaces for binding. Before attempting to configure an iSCSI interface for binding, run the following command first: If ping fails, then you will not be able to bind a session to a NIC. If this is the case, check the network settings first. 35.1. Viewing Available iface Configurations From Red Hat Enterprise Linux 5.5 iSCSI offload and interface binding is supported for the following iSCSI initiator implementations: Software iSCSI - like the scsi_tcp and ib_iser modules, this stack allocates an iSCSI host instance (i.e. scsi_host ) per session, with a single connection per session. As a result, /sys/class_scsi_host and /proc/scsi will report a scsi_host for each connection/session you are logged into. Offload iSCSI - like the Chelsio cxgb3i , Broadcom bnx2i and ServerEngines be2iscsi modules, this stack allocates a scsi_host for each PCI device. As such, each port on a host bus adapter will show up as a different PCI device, with a different scsi_host per HBA port. To manage both types of initiator implementations, iscsiadm uses the iface structure. With this structure, an iface configuration must be entered in /var/lib/iscsi/ifaces for each HBA port, software iSCSI, or network device ( eth X ) used to bind sessions. To view available iface configurations, run iscsiadm -m iface . This will display iface information in the following format: Refer to the following table for an explanation of each value/setting. Table 35.1. iface Settings Setting Description iface_name iface configuration name. transport_name Name of driver hardware_address MAC address ip_address IP address to use for this port net_iface_name Name used for the vlan or alias binding of a software iSCSI session. For iSCSI offloads, net_iface_name will be <empty> because this value is not persistent across reboots. initiator_name This setting is used to override a default name for the initiator, which is defined in /etc/iscsi/initiatorname.iscsi Example 35.1. Sample output of the iscsiadm -m iface command The following is a sample output of the iscsiadm -m iface command: For software iSCSI, each iface configuration must have a unique name (with less than 65 characters). The iface_name for network devices that support offloading appears in the format transport_name . hardware_name . Example 35.2. iscsiadm -m iface output with a Chelsio network card For example, the sample output of iscsiadm -m iface on a system using a Chelsio network card might appear as: It is also possible to display the settings of a specific iface configuration in a more friendly way. To do so, use the option -I iface_name . This will display the settings in the following format: Example 35.3. Using iface settings with a Chelsio converged network adapter Using the example, the iface settings of the same Chelsio converged network adapter (i.e. iscsiadm -m iface -I cxgb3i.00:07:43:05:97:07 ) would appear as:

Commands:
ping -I eth X target_IP
iface_name transport_name , hardware_address , ip_address , net_ifacename , initiator_name
iface0 qla4xxx,00:c0:dd:08:63:e8,20.15.0.7,default,iqn.2005-06.com.redhat:madmax iface1 qla4xxx,00:c0:dd:08:63:ea,20.15.0.9,default,iqn.2005-06.com.redhat:madmax
default tcp,<empty>,<empty>,<empty>,<empty> iser iser,<empty>,<empty>,<empty>,<empty> cxgb3i.00:07:43:05:97:07 cxgb3i,00:07:43:05:97:07,<empty>,<empty>,<empty>
iface. setting = value
BEGIN RECORD 2.0-871 iface.iscsi_ifacename = cxgb3i.00:07:43:05:97:07 iface.net_ifacename = <empty> iface.ipaddress = <empty> iface.hwaddress = 00:07:43:05:97:07 iface.transport_name = cxgb3i iface.initiatorname = <empty> END RECORD