21.11. 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:
ping -I ethX
target_IP
[]
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.
21.11.1. Viewing Available iface Configurations
Red Hat Enterprise Linux 5.5 supports iSCSI offload and interface binding 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 (ethX
) used to bind sessions.
To view available iface
configurations, run iscsiadm -m iface
. This will display iface
information in the following format:
iface_name
transport_name
,hardware_address
,ip_address
,net_ifacename
,initiator_name
Refer to the following table for an explanation of each value/setting.
Table 21.2. 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 |
The following is a sample output of the iscsiadm -m iface
command:
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
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
.
For example, the sample output of iscsiadm -m iface
on a system using a Chelsio network card might appear as:
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>
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:
iface.setting
= value
Using the previous example, the iface
settings of the same Chelsio video card (i.e. iscsiadm -m iface -I cxgb3i.00:07:43:05:97:07
) would appear as:
# 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