Method and apparatus for interfacing an operating system with a network interface device

A processing unit is configured to establish a driver relationship between a network interface driver and a network interface device, the network interface device being configured to carry out multiple functions through the operating system. The processing unit is also configured to associate the network interface driver with a first driver of the operating system to provide a first function pathway between the network interface device and the first driver of the operating system through the network interface driver. The processing unit is also configured to associate the network interface driver with a second driver of the operating system to provide a second function pathway between the network interface device and the second driver of the operating system through the network interface driver. The first function pathway and the second function pathway allow the network interface device to carry out the multiple functions through the operating system.

BACKGROUND

The expansion of information service and data processing industries has resulted in a need for computer systems to manage and store large amounts of data. Data storage system developers have responded to these types of data storage requirements by integrating large capacity data storage systems into networks called storage area networks (SANs). A SAN is a collection of networked data storage devices and storage processors that operate to serve data stored in the data storage devices to end-user or host devices. When exchanging data read/write requests with the SAN, the host device can utilize various types of communications protocols based upon the configuration of the SAN. For example, certain SANs (e.g., Internet Protocol (IP)-SANs) are configured to utilize the Internet Small Computer System Interface (iSCSI) protocol for exchanging SCSI commands and data over an Internet Protocol (IP) network. The iSCSI protocol allows the host device to access the storage devices over the IP network using block-based input/output (I/O) commands.

During operation, the storage processors of the IP-based SANs typically receive both iSCSI (e.g., block-based) traffic as well as TCP/IP (e.g., non-iSCSI) network traffic from host devices. Conventionally, within the IP-based SAN, iSCSI traffic constitutes a relatively high-volume of traffic while non-iSCSI (e.g., TCP/IP) traffic constitutes a relatively low volume of traffic supporting standard network services such as ping, trace route, iSNS, etc. In order to accelerate network input/output (I/O) within the IP-based SAN, the storage processors can be configured to process both the iSCSI traffic and the TCP/IP network traffic running the same proprietary driver. For example, conventional storage processors include TCP/IP offload engine (TOE) devices, such as iSCSI controller model ISP4010 distributed by QLogic Corporation, Aliso Viejo, Calif., to accelerate both iSCSI and the TCP/IP network traffic through the storage processors running the same device driver.

In certain IP-based SANs, the TOE devices are configured, in firmware, to differentiate between iSCSI and non-iSCSI traffic and direct the traffic to the appropriate driver for processing. For example,FIG. 1illustrates a conventional IP-based SAN10that includes a host device12in communication with a storage processor15via network14. The storage processor15includes a TOE device18coupled to a controller24by a PCI bus26. Once connected to the PCI bus26, during a boot-up procedure, the TOE device18presents two functions to the controller24over the PCI bus26: an iSCSI communications function and a non-ISCI communications function. As such, the TOE device18notifies the controller24that it is capable of handling both iSCSI and non-iSCSI traffic. The controller24, such as a microprocessor, runs an operating system that includes a proprietary iSCSI driver20and a standard network driver22(e.g., the Microsoft NDIS network driver), capable of processing iSCSI and non-iSCSI traffic, respectively, as received from the TOE device18.

During operation, when the TOE device18receives a communications packet from the host device12. In order to differentiate between iSCSI and non-iSCSI traffic, firmware logic25of the TOE device18examines a destination port number associated with the packet to determine the appropriate driver20,22to be used in processing the communications packet. For example, in the case where the destination port number is equal to a preset value, such as a port value of3260, the firmware logic25detects that the communications packet is part of an iSCSI communication from the host device12. As a result, the firmware logic25passes the packet to an iSCSI processing function30associated with the TOE device18which, in turn, passes the iSCSI packet to the iSCSI driver20, via the bus26, for processing. In the case where the destination port number is not equal to a preset value, such as a port value of3260, the firmware logic25detects that the communications packet is part of a non-iSCSI communication from the host device12. As a result, the firmware logic25passes the packet, via the bus26, to the network driver22, for processing by standard operating system network services.

SUMMARY

The TOE device18, as described above, includes firmware logic25that examines the destination port number associated with each packet received from the host device12in order to detect whether the packet is part of an iSCSI or non-iSCSI communication. Such examination of each packet can add latency into a communications session between the host device12and the storage processor15. Additionally, during a boot-up procedure, the TOE device18presents two separate functions, an iSCSI communications function and a non-ISCI communications function, to the controller24on the PCI bus26. The TOE device18, therefore, requires two separate PCI bus addresses for identification of the functions on the PCI bus26.

By contrast to conventional storage processor, embodiments of the present invention relate to a method and apparatus for interfacing an operating system with a network interface device. A storage processor includes a processing unit connected to the network interface device by a bus. The network interface device is configured to carry out multiple network functions, such as the exchange of iSCSI and TCP/IP commands between a host device and the processing unit. During initialization, the processing unit receives a network function identifier from the network interface device through a bus address on the bus. The network function identifier indicates, to the processing unit, the ability for the network interface device to perform multiple sub-functions. For example, the network function identifier can indicate to the processing unit that the network interface device is configured to direct network communications (e.g., a single network function), both iSCSI (e.g., a first network sub-function) and TCP/IP (e.g., a second network sub-function), through the operating system running on the processing unit. Based upon the network function identifier, the processing unit, through a specialized network interface driver, establishes separate pathways between the network interface device and the operating system drivers associated with each sub-function. By creating separate pathways, the processing unit provides the network interface device with access to multiple operating system drivers through a single bus address. Additionally, in one arrangement, for communication packets received from the network interface device, the network interface driver is configured to detect the appropriate pathway and driver used to process the communications packet. The network interface driver therefore offloads the driver selection process from the network interface device, thereby reducing latency in communications sessions carried between a host device and the storage processor.

One embodiment relates to a method for interfacing an operating system with a network interface device. The method includes establishing a driver relationship between a network interface driver and the network interface device, the network interface device being configured to carry out multiple functions through the operating system. The method also includes associating the network interface driver with a first driver of the operating system to provide a first function pathway between the network interface device and the first driver of the operating system through the network interface driver. The method also includes associating the network interface driver with a second driver of the operating system to provide a second function pathway between the network interface device and the second driver of the operating system through the network interface driver. The first function pathway and the second function pathway allow the network interface device to carry out the multiple functions through the operating system.

One embodiment relates to a storage processor having a network interface device configured to receive a communications signal from a host device via a network, a bus coupled to the network interface device, and a processing unit coupled to the bus. The processing unit is configured to establish a driver relationship between a network interface driver of an operating system executed by the processing unit and the network interface device, the network interface device being configured to carry out multiple functions through the operating system. The processing unit is also configured to associate the network interface driver with a first driver of the operating system to provide a first function pathway between the network interface device and the first driver of the operating system through the network interface driver. The processing unit is also configured to associate the network interface driver with a second driver of the operating system to provide a second function pathway between the network interface device and the second driver of the operating system through the network interface driver. The first function pathway and the second function pathway allow the network interface device to carry out the multiple functions through the operating system.

One embodiment relates to a method for processing a communications signal. The method includes receiving a communication signal from a TOE device, the communications signal directed toward a network address associated with the TOE device. The method includes comparing a processing indicator of the communications signal with a threshold value. The method also includes directing the communication signal to (i) a first driver when the processing indicator has a first value relative to the threshold value, and (ii) to a second driver when the processing indicator has a second value relative to the threshold value.

DETAILED DESCRIPTION

Embodiments of the present invention relate to a method and apparatus for interfacing an operating system with a network interface device. A storage processor includes a processing unit connected to the network interface device by a bus. The network interface device is configured to carry out multiple network functions, such as the exchange of iSCSI and TCP/IP commands between a host device and the processing unit. During initialization, the processing unit receives a network function identifier from the network interface device through a bus address on the bus. The network function identifier indicates, to the processing unit, the ability for the network interface device to perform multiple sub-functions. For example, the network function identifier can indicate to the processing unit that the network interface device is configured to direct network communications (e.g., a single network function), both iSCSI (e.g., a first network sub-function) and TCP/IP (e.g., a second network sub-function), through the operating system running on the processing unit. Based upon the network function identifier, the processing unit, through a specialized network interface driver, establishes separate pathways between the network interface device and the operating system drivers associated with each sub-function. By creating separate pathways, the processing unit provides the network interface device with access to multiple operating system drivers through a single bus address. Additionally, in one arrangement, for communication packets received from the network interface device, the network interface driver is configured to detect the appropriate pathway and driver used to process the communications packet. The network interface driver therefore offloads a decision making process from the network interface device to reduce latency in a communications session between a host device and the storage processor.

FIG. 2illustrates an example embodiment of a storage area network100having a host device102, a network104, a storage processor106, and one or more storage devices108such as disk drives or tape drives.

The host device102, such as a personal computer or laptop computer, communicates with the storage processor106through the network104, such as a Transmission Control Protocol/Internet Protocol (TCP/IP) configured local area network (LAN) or wide area network (WAN). The host device102is configured to exchange data read/write requests with the storage device108, through the network104and storage processor106, to access data from or store data to the storage device108. For example, the host can exchange block-based communications, such as Internet Small Computer System Interface (iSCSI) commands, with the storage processor106over the network104to read data from or write data to the storage device108. The host device102is also configured to exchange non block-based communications with the storage processor106. In one arrangement, the host device102is configured to exchange TCP/IP communications (e.g., packets) with the storage processor106to access certain network applications provided by the storage processor. For example, the host device102transmits TCP/IP communications to the storage processor to access ping, trace route, Simple Network Management Protocol (SNMP), or Internet Storage Name Service (iSNS) applications.

The storage processor106is configured to process both block-based communications, such as iSCSI communications, and non block-based communications, such as TCP/IP network communications, received from the host device102. For example, the storage processor106is configured with a single IP address to identify itself on the network104. In use, the storage processor106receives all network104communications destined for its IP address, both block-based and non block-based communications, directed from the host device102. In one arrangement, the storage processor106includes an adaptor110and a processing unit112interconnected via a bus115, such as a peripheral component interconnect (PCI) bus. As will be described in detail below, the adaptor110and processing unit112are configured to process the communications received from the host device102. The storage processor106also includes a fiber channel controller114coupled to the bus115, the fiber channel controller114being configured to provide data transfer between the host device102and the storage device108.

The adaptor110, such as a host bus adaptor, provides an interface between the host device102and the storage device108. For example, the adaptor110is operable to receive both block-based and non block-based communications from the host device102as destined for the IP address of the storage processor106. The adaptor110includes a network interface device118, such as a TOE device, configured to support block-based and non block-based communications, thereby allowing the host device102to communicate with the storage processor106using either iSCSI or TCP/IP communication protocols. In one arrangement, as will be described below, the network interface device118performs certain processing functions on block-based communications received by the storage processor106in order to accelerate processing of I/O received by the storage processor106.

The processing unit112, such as a central processing unit or microprocessor, is configured to run an operating system113, such as Microsoft Windows, which includes one or more drivers, such as first and second drivers122,124. A driver is an application configured to process commands associated with the control of a particular device. For example, with respect toFIG. 2, the operating system113of the processing unit112includes a network driver interface120that is configured to facilitate processing of either block-based or non block-based communications exchanged between the host device102and the storage processor106. The network interface driver120directs communications signals received from the network interface device118to either the first driver122or the second driver124of the operating system113. For example, the operating system113can include a block-based communication driver, such as an iSCSI driver, as the first driver122and a TCP/IP, non block-based communications (i.e., network) driver, such as an NDIS driver, as the second driver124. The iSCSI driver122is operable to process iSCSI communications received from the network interface device118for eventual transmission to the fiber channel controller114. For example, as indicated in the arrangement shown inFIG. 5, the iSCSI driver122processes the iSCSI communications and passes the iSCSI communication to a FLARE application212(e.g., an application used in CLARiiON networked storage systems as distributed by EMC Corporation, Hopkinton, Mass.). The FLARE application212then passes the iSCSI communication to a fiber channel driver214for eventual transmission to the fiber channel controller114. The NDIS driver124is operable to process network communications, such as TCP/IP communications, received from the network interface device118. For example, also as indicated in the arrangement shown inFIG. 5, the NDIS driver124passes the TCP/IP network communication to an IP layer,22, a TCP layer224, and a sockets layer226for processing by a network application228, such as SNMP or iSNS applications.

FIG. 3is a flowchart200that illustrates the steps performed by the processing unit112when interfacing the operating system113, running on the processing unit112, with the network interface device118.

In step202, the processing unit112establishes a driver relationship between the network interface driver120and the network interface device118, the network interface device118being configured to carry out multiple functions through the operating system113. In one arrangement, when establishing the driver relationship, the processing unit112detects the presence of the network interface device118on the bus115and maps the network interface device118to the network interface driver120.

For example, with reference toFIG. 2, when the storage processor106undergoes a boot-up process, the processing unit112scans the bus115to detect the presence or connection of devices on the bus115. In one arrangement, during a scanning procedure, the processing unit112identifies the connection of devices to the bus115by iterating through a series of known bus addresses (e.g., each bus address including a bus number, device number and function number) and transmitting a discovery signal to each known bus address. When the processing unit112transmits the discovery signal to the bus address of the network interface device118, in response to receiving the discovery signal, the network interface device118transmits a single network function identifier to the processing unit112. In one arrangement, the network function identifier includes a vendor identification number used to identify the manufacturer of the network interface device118and a device identification number used to identify the type of input/output function associated with the network interface device118.

In the present example, the network function identifier indicates to the processing unit that the network interface device118is configured to perform a single network function where the single network function150is composed of multiple sub-functions. For example, the network function identifier indicates to the processing unit112that the network interface device118is configured to direct network communications (e.g., a single network function)150, both block-based communications, such as iSCSI communications (e.g., a first network sub-function)152and non block-based communications, such as TCP/IP communications (e.g., a second network sub-function)154, through the operating system113. Based upon the network function identifier, to establish the driver relationship, the processing unit112maps the network interface device118to the network interface driver120such that all network communications from the network interface device118, whether block-based communications or non block-based communications, are received by the network interface driver120.

Returning toFIG. 3, in step204, the processing unit112associates the network interface driver120with a first driver122of the operating system113to provide a first function pathway130between the network interface device118and the first driver122of the operating system113through the network interface driver120. Furthermore in step206, the processing unit112associates the network interface driver120with a second driver124of the operating system113to provide a second function pathway132between the network interface device118and the second driver124of the operating system113through the network interface driver120. The first function pathway130and the second function pathway132allow the network interface device118to carry out multiple functions through the operating system113.

While the processing unit112can associate the network interface driver with first and second drivers122,124of the operating system113in a variety of ways, in one arrangement, the processing unit112establishes virtual device objects that provide separate paths through the network interface driver120to the drivers122,124. For example, as indicated above, upon discovery, the network interface device118provides an indication to the processing unit112of its configuration to direct iSCSI communications and TCP/IP communications through the operating system113. In order to properly process and provide direction of such communications through the operating system113, the processing unit112utilizes a particular driver corresponding to the type of communications received: either an iSCSI driver122for processing iSCSI communications or a network (e.g., NDIS) driver124for processing TCP/IP communications. In one arrangement, to establish the first and second function pathways130,132through the network interface driver120, the processing unit112creates virtual device objects associated with the network interface driver120. For example, as shown inFIG. 2, the processing unit112creates a first virtual device object202and a second virtual device object204. The first and second virtual device objects202,204are virtual machine applications that run in the processing unit's operating system113and represent device calls to the operating system's drivers. For example, the first virtual device object202represents a call made by the network interface driver120to the iSCSI driver122when the network interface device118transmits iSCSI communications to the network interface driver120and the second virtual device object204represents a call made by the network interface driver120to the network (e.g., NDIS) driver124when the network interface device118transmits non-iSCSI (e.g., TCP/IP) communications to the network interface driver120. By establishing separate function pathways130,132, the network interface driver120provides a multifunctional device, such as the network interface device118, with access to distinct drivers of an operating system113through a single bus address on the bus115.

As indicated above once the processing unit112has provided the first and second function pathways130,132between the network interface device118and the first and second drivers122,124, respectively, the first and second function pathways130,132allow the network interface device118to carry out multiple functions through the operating system113.FIG. 4is a flowchart300illustrating a procedure performed by the processing unit112that allows the network interface device118to utilize one more drivers of the operating system113.

In step302the processing unit112receives a communication signal from the network interface device118, the communications signal directed from a host device102to a single network address associated with the network interface device118. For example, to establish a communications session with the storage processor106, the host device102initiates a handshaking procedure by transmitting an IP packet, such as a SYN to the IP address associated with the storage processor106. The network interface device118, in turn, sends the IP packet to the processing unit112for further processing.

In step304, the processing unit112directs the communication signal (i) to the first function pathway130when the communication signal is associated with the first network sub-function and (ii) to the second function pathway132when the communication signal is associated with the second network sub-function. For example, in order to select an appropriate function pathway130,132and driver122,124for processing the packet, the processing unit112first associates the IP packet with a particular communications functionality (e.g., either an iSCSI based communication or a non-iSCSI, TCP/IP based communication). In one arrangement, in order to make the selection, the processing unit112examines a port identifier associated with the IP packet. Typically, IP packet headers include source and destination IP addresses and source and destination port identifiers. In the present example, the processing unit112compares the destination port identifier of the IP packet with a threshold port value to select the appropriate function pathway130,132for processing of the IP packet.

For example, with reference toFIG. 5, the network interface driver120receives an IP packet170from the network interface device118where the IP packet170includes a processing identifier, such as a destination port identifier172. The network interface driver120compares the destination port identifier172with threshold port value174where the threshold port value174is equal to port3260. Assume one case where the network interface driver120detects that the destination port identifier172is equal to the threshold port value174of3260. In this case, the comparison indicates that the IP packet is part of an iSCSI based communication. As a result, the network interface driver120forwards the packet to the first function pathway130and to the iSCSI driver122. Assume a second case where the network interface driver120detects that the destination port identifier172is not equal to the threshold port value174of3260. In this case, the comparison indicates that the IP packet is not part of an iSCSI based communication but is part of a non-iSCSI, TCP/IP based communication. As a result, the network interface driver120forwards the packet to the second function pathway132and to the NDIS driver124. The network interface driver120therefore offloads the driver selection process from the network interface device118, thereby reducing latency in communications sessions carried between the host device102and the storage processor106.

For example, as indicated above, the operating system113running on the processing unit112includes first and second drivers122,124such as a block-based communication driver (e.g., an iSCSI driver) and a TCP/IP, non block-based communications driver (e.g., an NDIS driver). Such description is by way of example only. In the case where the network interface device118is capable of carrying out three or more functions (e.g., additional functions such as mouse or keyboard based functions), the operating system113can establish three or more function pathways between the network interface driver120and the network interface device118for each of the functions carried out by the network interface driver.