EP1438671A2 - Protocol translation in a storage system - Google Patents
Protocol translation in a storage systemInfo
- Publication number
- EP1438671A2 EP1438671A2 EP02766398A EP02766398A EP1438671A2 EP 1438671 A2 EP1438671 A2 EP 1438671A2 EP 02766398 A EP02766398 A EP 02766398A EP 02766398 A EP02766398 A EP 02766398A EP 1438671 A2 EP1438671 A2 EP 1438671A2
- Authority
- EP
- European Patent Office
- Prior art keywords
- packet
- protocol
- accordance
- iscsi
- ofthe
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
Definitions
- the present invention relates to storage area networks (SANs).
- SANs storage area networks
- SNIA Networking Industry Association
- SAN forms essentially an independent network that does not tend to have the same bandwidth limitations as its direct-connect SCSI and NAS counterparts.
- storage devices e.g., tape drives and RAID arrays
- servers are generally interconnected via various switches and appliances.
- the connections to the switches and appliances are usually Fibre
- This structure generally allows for any server on the SAN to communicate with any storage device and vice versa. It also provides alternative paths from server to storage device, h other words, if a particular server is slow or completely unavailable, another server on the SAN can provide access to the storage device.
- a SAN also makes it possible to mirror data, making multiple copies available and thus creating more reliability in the availability of data. When more storage is needed, additional storage devices can be added to the SAN without the need to be connected to a specific server; rather, the new devices can simply be added to the storage network and can be accessed from any point. [0007] An example of a SAN is shown in the system 100 illustrated in the functional block diagram of Fig. 1. As shown, there are one or more servers 102.
- Servers 102 are connected through an Ethernet connection to a LAN 106 and/or to a router 108 and then to a WAN 110, such as the Internet.
- each server 102 is connected through a Fibre Channel connection to each of a plurality of Fibre Channel switches 112 sometimes referred to as the "fabric" of the SAN.
- Two switches 112 are shown for exemplary purposes only.
- Each switch 112 is in rum connected to each of a plurality of SAN appliances 114.
- Two appliances 114 are shown for exemplary purposes only.
- Each appliance is also coupled to each of aplurality of storage devices 116, such as tape drives, optical drives, or RAID arrays, h addition, each switch 112 and appliance 114 is coupled to a gateway 118, which in turn is coupled to router 108, which ultimately connects to a Wide Area Network (WAN) 118, such as the Internet.
- WAN Wide Area Network
- Fig. 1 shows one example of a possible configuration of a SAN 119, which includes switches 112, appliances 114, storage devices 116, and gateways 118. Still other configurations are possible. For instance, one appliance maybe connected to fewer than all the switches.
- Appliances 114 perform the storage management of the SAN. When the appliance 114 receives data, it stores the data in amemory in the appliance. Then, with a processor (also in the appliance), analyzes and operates on the data in order to forward the data to the correct storage device(s). This store-and-forward process typically slows down data access.
- switches 112 are needed to connect the many servers to the few appliances. Nevertheless, switches 112 have little built-in intelligence and merely forward data to a selected appliance 114.
- appliances typically has very few ports, e.g., only two ports. As a result, the bandwidth available through the appliance can be limited. Addingports to an appliance, although possible, is typically very expensive. Every one or two ports are supported by an expensive CPU or server card. So generally to add ports, entire file cards (which perform virtualization and store- and-forward functions) must be added to the device, which is usually very costly, hi the alternative, appliances are simply added to the SAN, but again, this tends to be very costly.
- SANs usuallyin the appliances 114, generally perform a function known as "virtualization.”
- Virtualization occurs when space on one or more physical storage devices is allocated to a particular user, but the physical location of that space remains unknown to the user. For instance, a user may access its company's "engineering storage space,” ENG:, accessing and “seeing” the virtual space ENG: as he or she would access or "see” an attached disk drive. Nonetheless, the ENG: space maybe divided over several physical storage devices or even fragmented on a single storage device.
- a server requests a virtual device (e.g., ENG:) and block number, the apphance must determine the device(s) that physically correlate to the virtual device requested and direct the data accordingly.
- SANs are formed using a single protocol to interconnect the devices.
- Fibre Channel is the most commonly used, Ethernet connections have also been used. Nonetheless, if both protocols are desired to be used, some kind of transition between the two protocols must occur.
- a Fibre Channel SAN 119 istypicallycoupledto anEthemetSAN 122viaabridge l21.
- a packet is received by the bridge and stored in memory. Once the packet is stored in a memory, aprocessor operates on the packet to remove the headers of one protocol and build the headers of the other protocol, thereby constructing an entirely new packet. More specifically, referring to Fig.
- HB A Host Bus Adapter
- NIC Network Interface Card
- Gateways 118 in addition to connecting a SAN to a WAN, are often used to connect two or more SANs together. Gateways usually do not transition the various protocols, but rather encapsulate the data in IP packets, as is known in the art. Nonetheless, when multiple SANs are connected, there must be a unique address for each connected device. However, although the IP protocol contains 32 bits for addressing, the Fibre Channel protocol only contains 24 bits.
- each switch, appliance, gateway, storage device, server, and router will have its own management, shown as management stations 120.
- management stations 120 Although independent physical management stations are shown, it is to be understood that independent management is frequently in the form of independent, vendor-specific software on a single computer but which software does not communicate with one another. As a result, there is no centrahzed management of the SAN and its management costs are high given that there are usually multiple management stations that frequently require many people to manage.
- a storage switch in accordance with an embodiment of the invention is a highly scalable switch that allows the creation of a SAN that is easy to deploy and that can be centrally managed. Moreover, such a storage switch also allows the deployment of a global infrastructure, allowing the resources of the SAN, such as storage devices, to essentially be positioned anywhere on the globe.
- a storage switch in accordance with the invention allows a multi-protocol SAN, e.g., one that includes both iSCSI (a recently introduced protocol carried over an Ethernet connection) or Fibre Channel, and to process any datapackets at "wire speed" - that is, without introducing any more latency that would be introduced by a switch that merely performed switching or routing functions - and thus a switch in accordance with the invention has a high bandwidth.
- a storage switch in accordance with an embodiment of the invention will not buffer packets, unlike that done conventionally.
- an architecture in accordance with an embodiment of the invention allows the required time to process a packet to be minimal.
- a switch in accordance with the invention offers virtualization and translation services at wire speed.
- "intelligence" is distributed at every port of the switch linecard.
- Each linecard is further able to classify a packet and thus separate data packets from control packets. Because of the distributed intelligence, each linecard also performs virtualization (converting a virtual address to a physical one) and protocol translation (converting an incoming packet of a first protocol to an outgoing packet of a second protocol) when necessary on the datapackets and can do so without a user or a server having to be aware of or involved in the necessity for the virtualization or translation.
- each switch is able to offer serverless storage services such as minOring, mirroring over a slow link, snapshot, virtual target cloning (rephcation), third party copy, periodic snapshot and backup, and restore.
- serverless storage services such as minOring, mirroring over a slow link, snapshot, virtual target cloning (rephcation), third party copy, periodic snapshot and backup, and restore.
- Fig. 1 is a generalized function block diagram of a SAN in accordance with a conventional system
- Fig. 2 is a generalized function block diagram of a device used for interfacing between protocols in accordance with conventional methodologies;
- Fig.3 is a generalized function block diagram of a SAN system using a storage switch in accordance with an embodiment of the invention;
- Fig.4 is a generalized function block diagram of another embodiment of a system using a storage switch in accordance with an embodiment of the invention
- Fig.5 is a generalized function block diagram of yet another embodiment of a system using a storage switch in accordance with an embodiment of the invention
- Fig. 6 is a generalized function block diagram of a storage switch in accordance with an embodiment of the invention
- Fig.7 is a generalized function block diagram of a linecard used in a storage switch in accordance with an embodiment of the invention
- Fig.7a is a generalized block diagram of a Virtual Target Descriptor used in a storage switch in accordance with an embodiment of the invention
- FIGs. 8a-8e are generalized block diagrams of various iSCSI PDUs, as are known in the art;
- Figs.8f-8i are generalized block diagrams of Fibre Channel Protocol
- Figs.9a is a flow diagram illustrating a classification process of iSCSI packets in the ingress direction as the process occurs in the PACE, in accordance with an embodiment of the invention
- Figs.9b is a flow diagram illustrating a classification process of iSCSI packets in the egress direction as the process occurs in the PACE, in accordance with an embodiment of the invention
- Figs. 10a and 10b illustrate block diagrams of TCP packets as they enter a storage switch in accordance with the invention and how the packets are modified for use within the storage switch;
- FIG. 11 is a generalized block diagram of a Local Header used in a storage switch in accordance with an embodiment of the invention.
- Figs. 12a is a flow diagram illustrating a classification process of FCP frames in the ingress direction as the process occurs in the PACE, in accordance with an embodiment of the invention
- Figs. 12b is a flow diagram illustrating a classification process of FCP frames as in the egress direction as the process occurs in the PACE, in accordance with an embodiment of the invention
- Figs. 13a is aflow diagram illustrating a classification process in the ingress direction as the process occurs in the PPU, in accordance with an embodiment of the invention
- Figs. 13b is a flow diagram illustrating a classification process in the egress direction as the process occurs in the PPU, in accordance with an embodiment of the invention.
- Fig. 14 isaflow(hagramiUuslratmgavirtualizationprocessinmemgress direction for command packets or frames, in accordance with an embodiment of the invention;
- Fig. 15 is a flow diagram illustrating a virtuahzation process in the egress direction for command packets or frames, in accordance with an embodiment of the invention
- Figs. 14aand 15a illustrate block diagrams ofthe local header and task control blocks (ITCB and ETCB) during a virtualization process, where Fig. 14a shows the header and ITCB for a command packet in the ingress direction (fiOm the initiator server/port) and where Fig. 15a shows a header and ETCB for a command packet in the egress direction (from the fabric/traffic manager);
- Fig.16 is a flow diagram illustrating a virtuahzation process in the ingress direction for R2T/XFR_RD Y packets or frames, in accordance with an embodiment of the invention.
- Fig. 17 isaflowdiagramillustratmgavirmahzationprocessmtheegress direction for R2T/XFR_RD Y packets or frames, in accordance with an embodiment of the invention;
- Figs. 16a and 17a illustrate block diagrams ofthe local header and task control blocks (ITCB and ETCB) during a virtualization process, where Fig. 16a shows theheaderandETCB foraR2T/XFR_RDY ⁇ acket in the ingress direction (from the target storage device/port) and where Fig. 17a shows a header and ITCB for a R2T/XFR_RDY packet in the egress direction (from the fabric/traffic manager); [0043] Fig. 18 is aflowdiagramillustratmgavirtualizationprocessintheingress direction for write data packets or frames, in accordance with an embodiment ofthe invention;
- FIG. 19 isaflowdiagramillustratmgavirmalizationprocessinmeegress direction for write data packets or frames, in accordance with an embodiment ofthe invention
- Figs. 18a and 19a illustrate block diagrams ofthe local header and task control blocks (ITCB and ETCB) during a virtualization process, where Fig. 18a shows the header and ITCB for a write data packet in the ingress direction (from the intiator server/port) and where Fig. 15a shows a header and ETCB for a write data packet in the egress direction (from the fabric/traffic manager);
- Fig.20 is a flow diagram illustrating a virtualization process in the ingress direction for read data packets or frames, in accordance with an embodiment ofthe invention
- Fig.21 is a flow diagram illustrating a virtualization process in the egress direction for read data packets or frames, in accordance with an embodiment ofthe invention
- Figs.20a and 21a illustrate block diagrams ofthe local header and task control blocks (ITCB and ETCB) during a virtualization process, where Fig.20a shows the header and ETCB for a read data packet in the ingress direction (from the target storage device/port) and where Fig.
- Fig. 21a shows a header and ITCB for a read data packet in the egress direction (from the fabric/traffic manager); '
- Fig.22 is a flow diagram illustrating a virtualization process in the ingress direction for response packets or frames, in accordance with an embodiment ofthe invention
- Fig.23 is aflow diagram illustrating a virtuahzation process in the egress direction for response packets or frames, in accordance with an embodiment ofthe invention
- Figs.22a and 23 a illustrate block diagrams ofthe local header and task control blocks (ITCB and ETCB) during a virtualization process, where Fig.22a shows the header and ETCB for a response packet in the mgress direction (from the target storage device/port) and where Fig. 23 a shows a header and ITCB for a response packet in the egress direction (from the fabric/traffic manager);
- Fig.24 is a flow diagram illustrating the general steps taken to perform storage services in accordance with an embodiment ofthe invention;
- Fig. 25 is a flow diagram illustrating the steps taken for the storage service of mirroring over a slow link in accordance with an embodiment ofthe invention; [0054] Fig.
- Fig. 26 is a flow diagram illustrating the steps taken for the storage service of snapshot in accordance with an embodiment ofthe invention.
- Fig. 27 is a flow diagram illustrating the steps taken for the storage service of cloning in accordance with an embodiment ofthe invention.
- Fig. 28 is a flow diagram illustrating the steps taken for the storage service of third party copy in accordance with an embodiment ofthe invention.
- system 300 that includes a storage switch in accordance with the invention is illustrated in Fig.3. As shown, such a system is greatly simplified over existing systems.
- system 300 includes aplurality of servers 302. For purposes of illustration only, three servers 302 are shown, although more or fewer servers could be used in other embodiments. Although not shown, the servers could also be coupled to a LAN.
- each server 302 is connected to a storage switch 304. In other embodiments, however, each server 302 maybe connected to fewer than all ofthe storage switches 304 present.
- the connections formed between the servers and switches can utilize any protocol, although in one embodiment the connections are either Fibre Channel or Gigabit Ethernet (carrying packets in accordance with the iSCSI protocol).
- each switch is in turn connected to each of aplurality of storage devices or subsystems 306. Nonetheless, in other embodiments, each switch maybe connected to fewer than all ofthe storage devices or subsystems 306.
- the connections fonned between the storage switches and storage devices can utilize any protocol, although in one embodiment the connections are either Fibre Channel or Gigabit Ethernet, some embodiments, one or more switches 304 are each coupled to a Metropolitan Area Network (MAN) or Wide Area Network (WAN), such as the Internet 308.
- MAN Metropolitan Area Network
- WAN Wide Area Network
- the connection formed between a storage switch and a WAN will generally use the Internet Protocol (IP) in most embodiments.
- IP Internet Protocol
- FIG.4 shows an alternative embodiment of a system in accordance with the invention, i such an embodiment, two SANs 402, 404 are formed, each using one or more storage switches 304 in accordance with an embodiment ofthe invention.
- SANs 402 and 404 are coupled through a WAN 308, such as the Internet, byway of switches 304.
- Connections 308 can be any standard or protocol, but in one embodiment will be Packet over SONET (PoS) or 10 Gigabit Ethernet.
- Fig.5 shows still another embodiment of a system in accordance with the invention wherein switches 304 are coupled dii ectly to one another. In any ofthe embodiments shown in Figs. 3 or 4, if more than one switch is used, those switches could be coupled as illustrated in Fig. 5.
- a storage switch in accordance with the invention enables a centralized management of globally distributed storage devices, which can be used as shared storage pools, instead of having a huge number of management stations distributed globally and an army of skilled management personnel.
- Such a storage switch is an "intelligent" switch, and, as can be seen by comparing Fig. 3 to Fig. 1, the functions of switch, appliance, and gateway have effectively been united in a storage switch 304 in accordance with an embodiment ofthe invention.
- Such a storage switch 304 in addition to its switching function, provides the virtualization and storage services (e.g., lnirroring) that would typically be provided by appliances in conventional architectures, and it also provides protocol translation.
- a storage switch in accordance with some embodiments ofthe invention also performs additional functions (for instance, data security through a Virtual Private Network) .
- additional functions include functions that are performed by other devices in conventional systems, such as load balancing, which is traditionally performed by the servers, as well as other functions not previously available in conventional systems.
- the intelligence of a storage switch in accordance with an embodiment ofthe invention is distributed to every switch port. This distributed intelligence allows for system scalability and availability.
- the distributed intelligence allows a switch in accordance with an embodiment ofthe invention to process data at "wire speed," meaning that a storage switch 304 introduces no more latency to a data packet than would be introduced by a typical network switch (such as switch 112 in Fig. 1).
- "wire speed" for the switch is measured by the connection to the particular port.
- the storage switch can keep up with an OC-48 speed (2.5 bits perns).
- a two Kilobyte packet (with 10 bits per byte) moving at OC- 48 speed takes as little as eight microseconds coming into the switch.
- a one Kilobyte packet takes as little as four microseconds.
- wire-speed processing when used herein, it does not mean that such processing needs as few as 400 ns to process a 100- byte packet. However, it does mean that the storage switch can handle the maximum Ethernet packet of 1500 bytes (with ten-bit encoding, so that a byte is ten bits) at OC- 48 speed, i.e., in about 6 ⁇ s (4 ⁇ s per Kilobyte or 2.5 bits per ns), in one embodiment.
- wire-speed data for that port will be 10 ⁇ s per Kilobyte, indicating that the switch has up to 10 ⁇ s to process a Kilobyte.
- wire speed will be 5 ⁇ s per Kilobyte.
- Still other embodiments may process data at ten Gigabit Ethernet or OC- 192 speeds or faster.
- 'Virtualization essentially means the mapping of a virtual target space subscribed to by a user to a space on one or more physical storage target devices.
- the terms “virtual” and “virtual target” come from the fact that storage space allocated per subscription can be anywhere on one or more physical storage target devices connecting to a storage switch 304.
- the physical space can be provisioned as a ' 'virtual target” which may include one or more "logical units” (LUs).
- Each virtual target consists of one or more LUs identified with one or more LU numbers (LUNs), which are frequently used in the iSCSI and FC protocols.
- LUNs LU numbers
- Each logical unit, and hence each virtual target is generally comprised of one or more extents - a contiguous slice of storage space on a physical device.
- a virtual target may occupy a whole storage device (one extent), a part of a single storage device (one or more extents), or parts of multiple storage devices (multiple extents) .
- the physical devi ces, the LUs, the number of extents, and their exact locations are immaterial and invisible to a subscriber user.
- each virtual target belongs to one ormore domains. Onlyusers ofthe same domain are allowed to share the virtual targets in their domain.
- a domain-set eases the management of users of multiple domains.
- the members of a domain set can be members of other domains as well. But a virtual target can only be in one domain in an embodiment ofthe invention.
- Fig. 6 illustrates a function block diagram of a storage switch 304 in accordance with an embodiment ofthe invention.
- the storage switch 304 includes aplurality of linecards 602, 604, and 606, aplurality of fabric cards 608, and two system control cards 610, each of which will be described in further detail below.
- 610 connects to every line card 602, 604, 606.
- such connections are formed by I 2 C signals, which are well known in the art, and through an Ethernet connection with the SCC.
- the SCC controls power up and monitors individual linecards, as well as the fabric cards, with the I 2 C connections.
- the SCC Using inter-card communication over the ethernet connections, the SCC also initiates various storage services, e.g., snapshot and replicate, to be discussed further later.
- the SCC maintains a database 612 that tracks configuration information for the storage switch as well as all virtual targets and physical devices attached to the switch, e.g., servers and storage devices.
- the database keeps information regarding usage, error and access data as well as information regarding different domains and domain sets of virtual targets and users.
- the records ofthe database are referred to herein as "objects.”
- Each initiator e.g., a server
- target e.g., a storage device
- WWUT World Wide Unique Identifier
- the database is maintained in a memory de ⁇ dce within the SCC, which in one embodiment is formed from flash memory, although other memory devices will also be satisfactory.
- the storage switch 304 can be reached by a management station (310) through the SCC 610 using an ethernet connection. Accordingly, the SCC also includes an additional Ethernet port for connection to a management station.
- Each fabric card 608 is coupled to each ofthe linecards 602, 604, 606 in one embodiment and serves to connect all ofthe linecards together, hi one embodiment, the fabric cards 608 can eachhandle maximum traffic when all linecards arepopulated. Such traffic loads handled by each linecard are up to 160 Gbps in one embodiment although other embodiments could handle higher or lower maximum traffic volumes. If one fabric card
- each linecard generates 20 Gbps of traffic, 10 Gbps ingress and 10 Gbps egress. However, under normal circumstances, all three fabric cards are active at the same time. From each linecard, the data traffic is sent to any one ofthe three fabric cards that can accommodate the data.
- Linecards form connections to servers and to storage devices.
- storage switch 304 supports up to sixteen linecards although other embodiments could support a different number.
- three different types of linecards are utilized: Gigabit Ethernet (GigE) cards 602, Fibre Channel (FC) cards 604, and WAN cards 606.
- GigE Gigabit Ethernet
- FC Fibre Channel
- Other embodiments may include more or fewer types of linecards.
- the GigE cards 602 are for Ethernet connections, connecting in one embodiment to either iSCSI servers or iSCSI storage devices (or other Ethernet based devices).
- the FC cards 604 are for Fibre Channel connections, connecting to either Fibre Channel Protocol (FCP) servers or FCP storage devices.
- FCP Fibre Channel Protocol
- Fig.7 illustrates a functional block diagram of a generic line card 700 used in one embodiment of a storage switch 304 in accordance with the invention. The illustration shows those components that are common among all types of linecards, e.g.,
- Each line card 700 includes aplurality of ports 702.
- the ports form the linecard's connections to either servers or storage devices. Eight ports are shown in the embodiment illustrated, but more or fewer could be used in other embodiments.
- each GigE card can support up to eight 1 Gb Ethernet ports
- each FC card can support up to either eight 1 Gb FC ports or four 2Gb FC ports
- each WAN card can support up to four OC-48 ports or two OC- 192 ports.
- the maximum possible connections are 128 ports per switch 304.
- the ports of each linecard are full duplex and connect to either a server or other client, or to a storage device or subsystem.
- each port 702 has an associated memory 703. Although only one memory device is shown connected to one port, it is to be understood that each port may have its own memory device or the ports may all be coupled to a single memory device. Only one memory device is shown here coupled to one port for clarity of illustration.
- each port is associated with a Storage Processor Unit (SPU) 701.
- the SPU rapidly processes the data traffic allowing for wire-speed operations.
- the SPU includes several elements: a Packet Aggregation and Classification Engine (PACE) 704, aPacket Processing Unit (PPU) 706, an SRAM 705, and a CAM 707. Still other embodiments may use more or fewer elements or could combine elements to obtain the same functionality.
- PACE Packet Aggregation and Classification Engine
- PPU Packet Processing Unit
- SRAM 705 SRAM
- CAM 707 CAM
- Still other embodiments may use more or fewer elements or could combine elements to obtain the same functionality.
- PACE Packet Aggregation and Classification Engine
- PACE Packet Aggregation and Classification Engine
- the PACE 704 aggregates two ports into a single data channel having twice the bandwidth. For instance, the PACE 704 aggregates two 1Gb ports into a single 2Gb data channel.
- the PACE classifies each received packet into a control packet or a data packet, as will be discussed further below. Control packets are sent to the CPU 714 for processing, viabridge 716. Data packets are sent to aPacket Processing Unit (PPU) 706, discussed below, with a local header added, hi one embodiment the local header is sixteen bytes resulting in a data "cell" or "local packet" of 64 bytes (16 bytes of header and 48 bytes of payload).
- PPU Packet Processing Unit
- the local header is used to carry information and used internally by switch 204.
- the local header is removed before the packet leaves the switch.
- a "cell" or a ' 'local packet' ' is a transport unit that is used locally in the switch that includes a local header and the original packet (in some embodiments, the original TCP/IP headers are also stripped from the original packet). Nonetheless, not all embodiments ofthe invention will create a local header or have "local packets" (cells) that differ from external packets. Accordingly, the term "packet” as used herein can refer to either "local” or "external" packets.
- the classification function helps to enable a switch to perform storage virtualization and protocol translation functions at wire speed without using a store-and- forward model of conventional systems.
- Each PACE has a dedicated path to a PPU 706 while all four P ACEs in the illustrated embodiment share a path to the CPU 714, which in one embodiment is a 104MHz/32 (3.2 Gbps) bit data path.
- PPU Packet Processing Unit
- the PPU 706 performs virtualization and protocol translation on-the-fly, meaning, the cells (local packets) are not buffered for such processing. It also implements switch-based storage service functions, described later.
- the PPU is capable, in one embodiment, of moving cells at OC-48 speed or 2.5 Gbps for both the ingress and egress directions, while in other embodiments it can move cells at OC-192 speeds or 10 Gbps.
- the PPU in one embodiment includes an ingress PPU 06 ! and an egress PPU 706 2 , which both run concurrently.
- the ingress PPU 706 receives incoming data from PACE 704 and sends data to the Traffic Manager 708 while the egress PPU 706 2 receives data from Traffic Manager 708 and sends data to a PACE 704.
- a large number of storage connections e.g., serverto virtual target
- each connection is unique to a virtual target and can be uniquely identified by a TCP Control Block Index (in the case of iSCSI connections) and aport number.
- the CPLT 714 ofthe linecard 700 informs the PPU 706 of an active virtual target by sending it a Virtual Target Descriptor (VTD) for the connection.
- VTD includes all relevant mformation regarding the connection and virtual target that the PPU will need to properly operate on the data, e.g., perform virtuahzation, translation, and various storage services.
- the VTD is derived from an object in the SCC database and usually contains a subset of information that is stored in the associated object in the SCC database. An example ofthe fields in a VTD in one embodiment ofthe invention are shown in Fig. 7a. Nonetheless, other embodiments ofthe inventionmay have a VTD withmore, fewer, or different fields.
- the PPUs 706 are connected to an SRAM 705 and CAM 707.
- SRAM 705 stores a VTD database.
- a listing of VTD identifiers (VTD IDs), or addresses, is also maintained in the PPU CAM 707 for quick accessing ofthe VTDs.
- the VTD IDs are indexed (mapped) using a TCP Control Block Index and a LUN.
- the CAM 707 contains a route table, which is updated by the CPU when routes are added or removed.
- each PPU will be connected with its own CAM and SRAM device, or the PPUs will all be connected to a single CAM and/or SRAM.
- a task control block is established in the PPU SRAM 707 to track the status ofthe request.
- ITCBs ingress task control blocks
- ETCBs egress task control blocks
- Traffic Manager There are two traffic managers (TMs) 708 on each linecard 700: one TM for ingress traffic and one TM for egress traffic.
- the ingress TM receives packets from all four SPUs, in the form of multiple 64-byte data cells, in one embodiment. In such an embodiment, each data cell has 16 bytes of local header and 48 bytes of payload.
- the header contains a FlowID that tells the TM the destination port ofthe cell, hi some embodiments, the SPU may also attach a TM header to the cell prior to forwarding the cell to the TM. Either the TM or the SPU can also subdivide the cell into smaller cells for transmission through the fabric cards in some embodiments.
- the ingress TM sends data cells to the fabric cards via a 128-bit 104
- the egress TM receives the data cells from the fabric cards and delivers them to the four SPUs.
- Both buffers 712 for the ingress and egress TMs are 64MB, which can queue a large number of packets.
- the SPUs cannormally send cells to the ingress TM quickly as the outgoing flow ofthe fabric cards is as fast as the incoming flow. Hence, the cells are moving to the egress TM quickly.
- an egress TM maybe backed up because the outgoing port is jammed or being fed by multiple ingress linecards. In such a case, a flag is set in the header ofthe outgoing cells to inform the egress SPU to take actions quickly.
- the egress TM sends a request to the ingress SPU to activate a flow control function.
- CPU 714 On every linecard there is a processor (CPU) 714, which in one embodiment is a PowerPC 750 Cxe. hi one embodiment, CPU 714 connects to each PACE with a 3.2 Gb bus, via a bus controller 715 and a bridge 716. In addition, CPU 714 also connects to each PPU, CAM and TM, however, in some embodiments this connection is slower at 40 Mbps. Both the 3.2 Gb and 40 Mb paths allow the CPU to communicate with most devices in the linecard as well as to read and write the internal registers of every device on the linecard, download microcode, and send and receive control packets.
- the CPU on each linecard is responsible to initialize every chip at power up and to download microcode to the SPUs and each port wherever the microcode is needed.
- the CPU processes the control traffic.
- the CPU requests the information from the SCC, which in turn gets the information from an appropriate object in the SCC database.
- GigE, FC, or WAN are distinct as each linecard only supports one type of port in one embodiment.
- Each type of port for one embodiment is described below.
- other linecard ports could be designed to support other protocols, such as Infiniband in other embodiments.
- a gigabit Ethernet port connects to iSCSI servers and storage devices. While the GigE port carries all kinds of Ethernet traffic, the only network traffic generally to be processed by a storage switch 304 at wire speed in accordance with one embodiment ofthe invention is an iSCSI Packet Data Unit (PDU) inside a TCP/IP packet. Nonetheless, in other embodiments packets in accordance with other protocols (like Network File System (NFS)) carried over Ethernet connections may be received at the GigE Port and processed by the SPU and/or CPU.
- the GigE port receives and transmits TCP/IP segments for virtual targets or iSCSI devices. To establish a TCP connection for a virtual target, both the linecard
- TCP Control Block identifies aparticular TCP session or iSCSI connection to which the packet belongs, and contains in one embodiment, TCP segment numbers, states, window size, and potentially other information about the connection, hi addition, the TCP Control Block is identified by an index, referred to herein as the "TCP Control Block Index.”
- a VTD for the connection must be created and stored in the SPU SRAM 705.
- the CPU creates the VTD by retrieving the VTD information stored in its SDRAM and originally obtained from the SCC database.
- a VTD ID is established in a list of VTD IDs in the SPU CAM 707 for quick reference to the VTD.
- the VTD ID is affiliated with and indexed by the TCP Control Block Index.
- the port When the port receives iSCSI PDUs, it serves essentially as a termination point for the connection, but then the switch initiates a new connection with the target. After receivmg apacket on the ingress side, the port delivers the j SCSI PDU to the PACE with a TCP Control Block Index, identifying a specific TCP connection. For a non-TCP packet or a TCP packet not containing an iSCSI PDU, the port receives and transmits the packet without acting as a termination point for the comiection. Typically, the port 702 communicates with the P ACE 704 that an iSCSI packet is received or sent by using a TCP Control Block Index. When the TCP Control Block Index of a packet is -1, it identifies anon-iSCSI packet. [0093] FC Port. An FC port connects to servers and FC storage devices. The
- FC port appears as a fibre channel storage subsystem to the connecting servers, meaning, it presents a large pool of virtual target devices that allow the initiators (e.g., servers) to perform a Process Login (PLOGI or PRLI), as are understood in the art, to establish a connection.
- the FC port accepts the GID extended link services (ELSs) and returns a list of target devices available for access by that initiator (e.g., server).
- ELSs GID extended link services
- the port When connecting to fibre channel storage devices, the port appears as a fibre channel F-port, meaning, it accepts a Fabric Login, as is known in the art, from the storage devices and provides name service functions by accepting and processing the GID requests. [0095] At the port initialization, the linecard CPU must go through both sending
- the SCC supports an application to convert FC ELS's to iSNS requests and responses.
- the same database in the SCC keeps track both the FC initiators (e.g., servers) and targets (e.g., storage devices) as if they were iSCSI initiators and targets.
- FC initiators e.g., servers
- targets e.g., storage devices
- FC initiators e.g., servers
- targets e.g., storage devices
- An FC port can be configured for 1 Gb or 2Gb.
- a 1 Gb port two ports are connected to a single PACE as illustrated in Fig. 7; but in an embodiment where it is configured as a 2Gb port, port traffic and traffic that can be accommodated by the SPU should match to avoid congestion at the SPU.
- the port connects to the PACE with a POS/PH Y interface in one embodiment.
- Each port can be configured separately, i.e. one PACE may have two 1 Gb ports and another PACE has a single 2
- WAN Ports In embodiments that include a WAN linecard, the WAN linecard supports OC-48 and OC- 192 connections in one embodiment. Accordingly, there are two types of WAN ports: OC-48 andOC-192. For OC-48, there is one port for each SPU. There is no aggregation function in the PACE, although there still is the classification function.
- a WAN port connects to SONET and works like a GigE port as it transmits and receives network packets such as ICMP, RIP, BPG, IP and TCP. Unlike the GigE port, a WAN port in one embodiment supports network security with VPN and IPSec that requires additional hardware components. [0099] Since OC- 192 results in a faster wire speed, a faster SPU will be required in embodiments that support OC-192.
- a storage switch in accordance with an embodiment ofthe invention performs various switch-based storage operations, including classification of packets, virtuahzation, and translation. These services are generally performed by the SPU.
- every port has an SPU, enabling the processing of data traffic as fast as possible while passing control traffic to the CPU, which has the resources to handle the control traffic.
- four SPUs share a single CPU supporting eight ports. Thus, minimum resources and overhead are used for data traffic, allowing a large number of low cost ports each with the intelligence to process storage traffic at wire speed.
- the SPU functions will be described in detail below. [0101] Before discussing the SPU functions, however, a brief overview of iSCSI PDU's (Packet Data Units) and FC IUs (Information Units) will be useful.
- FC Fibre Channel
- iSCSICommandPDU AniSCSI CommandPDU is shown inFig.8a.
- the Xbit is used as a Retry/Restart indicator for PDUs from initiator to target.
- the I bit is used as an immediate delivery marker.
- the Opcode 0x01 indicates that the type of iSCSI PDU is a command.
- Byte 1 has a number of flags, F (final), R (read), and W (write).
- Byte 1 also has atask attribute field ATTR, which is usually 3 bits.
- TotalAHSLength represents the total length of any additional optional header segments (not shown) in 4-byte words.
- DataSegmentLength indicates the length ofthe payload.
- LUN specifies a logical unit number.
- the Initiator Task Tag identifies a task tag assigned by the initiator (e.g., a server) to identify the task.
- Expected Data Transfer Length states the number of bytes of data to be transferred to or from the initiator for the operation.
- CmdSN is a command sequence number.
- ExpStatSN is an expected status sequence number and ExpDataSN is an expected data sequence number.
- the Command Descriptor block (CDB) is generally 16 bytes and embodies the SCSI command itself. [0104] iSCSIR2TPDU. AniSCSIR2TPDUis showninFig. 8b. InbyteO,
- the 0x31 identifies the packet as an R2T packet.
- the Initiator Task Tag is the same as for the Command PDU.
- the Target Transfer Tag is assignedbythe target (e.g., a storage device) and enables identification of datapackets.
- the StatSN field contains a status sequence number.
- ExpCmdSN identifies the next expected CmdSN from the initiator and MaxCmdSN identifies the maximum CmdSN acceptable from the initiator.
- R2TSN identifies the R2T PDU number. Desired Data Transfer Length specifies how many bytes the target wants the initiator to send (the target may request the data in several chunks) . The target, therefore, also specifies a Buffer Offset that indicates the point at which the data transfer should begin.
- iSCSI Write and Read Data PDUs [0105] iSCSI Write and Read Data PDUs. .An iSCSI Write Data PDU is shown in Fig. 8c. An iSCSI Read Data PDU is shown in Fig. 8d. In byte 0, 0x05 identifies the packet as a write packet and 0x25 identifies the packet as aread packet. Most ofthe fields in these PDUs are the same as for those PDUs described above. In addition, the DataSN identifies a data sequence number and Residual Count identifies how many bytes were not transferred out of those expected to be transferred, for instance if the initiator's Expected Data Transfer Length was too small.
- iSCSI Response PDU An iSCSIResponse PDU is shown in Fig.8e.
- 0x21 identifies the packet as a response packet.
- the Status field is used to report the SCSI status ofthe command.
- the response field contains an iSCSI service response code that identifies that the command is completed or that there has been an error or failure.
- Basic Residual Count identifies how many bytes were not transferred out of those expected to be transferred, for instance if the initiator's Expected Data Transfer
- the R_CTL field identifies the frame as part of an FC operation and identifies the information category.
- D_ID identifies the destination ofthe frame.
- SJOD identifies the source of the frame.
- TYPE is generally set to 0x08 for all frames of SCSI FCP sequences.
- F_CTL manages the beginning and normal or abnormal termination of sequences and exchanges.
- SEQ_ TD identifies each sequence between a particular exchange originator and exchange responder with a unique value.
- DF CTL indicates any optional headers that maybe present.
- SEQ_CNT indicates the frame order within the sequence.
- the OX D field is the originator (initiator) identification ofthe exchange. The
- RX_ID field is the responder (target) identification ofthe exchange.
- the RLTV_OFF field indicates the relative displacement ofthe first byte of each frame's payload with reference to the base address ofthe information category.
- FCP CMND Payload The payload for a FCP command IU is shown in Fig. 8g.
- FCPJ UN is a logical unit number.
- FCP_CNTL is a control field that contains a number of control flags and bits.
- FCP_CDB contains the actual SCSI CDB to be interpreted by the addressed logical unit.
- FCP_DL contains a count ofthe greatest number of data bytes expected to be transferred to or from the target.
- FCP XFRRDY Payload The payload for an FCP XFR_RDY IU is showninFig.8h.
- the DATA _RO field indicates the contents ofthe RLTV_OFF field for the first databyte of the next FCP_DATA IU.
- the BURSTJLEN field indicates the amount ofbuffer space prepared for the next FCP_D AT A IU and requests the transfer of an IU of that exact length.
- FCP DATAIU Thepavload for adatalU is the actual data transferred.
- FCP RSP IU The payload for an FCP response IU is shown in Fig.
- the FCP_ STATUS field is set to 0 upon the successful completion of a command task. Otherwise it indicates various status conditions.
- the FCP_RESID field contains a count of the number of residual data bytes which were not transferred in the FCP_DATAIU for this SCSI command.
- FCP SNSJLEN specifies the number ofbytes in the FCP_SNS_INFO field.
- FCP_RSP_LEN specifies the number ofbytes in the FCP_RSP_INFO field.
- the FCP_RSP_INFO field contains information describmg any protocol failures detected.
- the FCP SNS INFO field contains any sense data present. [0112] The details of each iSCSI PDU and FC IU have been only generally described. Further details regarding iSCSI PDUs, FC IUs, and their respective fields can be found in the iSCSI and FC documents referenced above.
- packets or frames (genericallyreferred to herein as "packets") arrive at the storage switch they are separated at each port into data and control traffic.
- Data traffic is routed to the PPU for wire-speed virtualization and translation, while control traffic such as connection requests or storage management requests are routed to the CPU.
- This separation is referred to herein as “packet classification” or just “classification' ' and is generally initiated in the PACE ofthe SPU.
- packet classification or just “classification' ' and is generally initiated in the PACE ofthe SPU.
- a system in accordance with the invention recognizes the packet contents, so that data traffic can be processed separately and faster, aiding in enabling wire-speed processing.
- GigE packets and FC frames are handled slightly differently, as described below.
- a GigE port will receive a packet, which in one embodiment is either an IP packet or an iSCSI packet, step 902.
- the PACE determines if a virtual target access is recognized by whether it receives from the port a valid TCP Control Block Index with the packet (e.g. , an index that is not - 1 ), step 904. If there is a valid TCP Control Block Index, the PACE next checks the flags ofthe packet's TCP header, step 906. If the S YN, FIN, and RST flags ofthe TCP header are set, the packet is forwarded to the CPU, step 916, as the CPU would be responsible to establish and terminate a TCP session.
- the GigE port will receive a valid TCP control block from the CPU. But if the flags are not set, then in one embodiment the PACE will remove the TCP, IP, and MAC headers, step 908, leaving the iSCSI header, and then add a local header, step 910. Other embodiments, however, may leave the TCP, IP and MAC headers, and simply add a local header. Once the local header is added, the packet is sent to the PPU, step 912.
- step 910 the received
- TCP packet 1002 would be converted to a local packet 1004, having the JP , TCP, and MAC headers 1006, 1008, 1009 removed (in one embodiment) and a local header 1010 added.
- the payload for an iSCSI packet may be split over two TCP/IP packets.
- a received TCP packet 1012 includes a second portion 1014 of apayload, where the first part ofthe payload was sent in a previous packet.
- the packet containing the second portion ofthe payload may additionally contain a new independent payload 1016.
- the received packet 1012 would be divided into two local packets, 1018 and 1020.
- Local packet 1018 includes a local header 1022 and the second portion ofthe payload 1024 from a previous packet, but not an iSCSI header.
- Local packet 1020 includes the local header 1026, the iSCSI header 1028, and the new payload 1030.
- An example local header 1100 used in one embodiment is shown in Fig.
- the local header 1100 includes the following fields in one embodiment.
- a VTD ID field is used to identify a VTD for a particular connection.
- a FlowID specifies the destination port for a packet.
- a TCP Control Block Index specifies a TCP control block for aparticular connection (if a TCP connection).
- the Type field specifies the packet classification, e.g., data or control.
- the Size field indicates the packet size.
- the Task Index is used to track and direct the packet within the switch as well as to locate stored information related to the packet for the particular task.
- the local header further includes some hardware identifiers such as source identifiers (e.g., identifying a source port, PACE, linecard, and/or CPU) and destination identifiers (e.g., identifying a distinction Port, PACE linecard, and/or CPU).
- source identifiers e.g., identifying a source port, PACE, linecard, and/or CPU
- destination identifiers e.g., identifying a distinction Port, PACE linecard, and/or CPU.
- the packet is forwarded to the CPU, step 916. If the packet is an IP packet, then the PACE checks the destination IP address, step 918. Ifthe JP address matches that ofthe port ofthe storage switch, the packet is sent to the CPU, step 916, for processing. If the IP address does not match that ofthe port ofthe storage switch, then it is routing traffic and is forwarded to the PPU, step 912.
- step 950 when apacket destined for a GigE port is received in the egress direction by the PACE from an PPU or CPU, step 950, the PACE removes the local header, step 952. Ifthe packet is for a TCP session, step 954, the PACE sets a control flag in its interface with the port to so inform the GigE port, step 956. Ifthe packet is for a TCP session, the PACE passes the packet and the TCP
- Fig. 12a illustrates the steps that occur at the PACE in classifying packets that arrive from an FC port. Unlike for a GigE port, the PACE for an FC port does not have to deal with a TCP Control Block Index. Instead, upon receiving a packet at an FC port, step 1202, the S_ID field of the FCP frame header can be consulted to determine ifthe frame belongs to an open FC connection, however, this step is perfonned after the packet is passed to the PPU.
- the PACE only need determine if the frame is an FCP frame, step 1204, which can be determined by consulting the R_CTL and TYPE fields ofthe frame header.
- a local header 1100 (Fig. 11 ) is added, step 1206, although the FCP frame header is not removed at this point as the data in the header will be useful to the PPU later.
- the local packet is then passed to the PPU, step 1208. If the frame is not an FCP frame, it is passed to the CPU, step 1210.
- a packet destined for an FC port is received in the egress direction by the PACE from an PPU or CPU, step 1250, the PACE simply removes the local header, step 1252, before passing the frame to the FC port, step 1254.
- the local header will indicate to the PACE which port (ofthe two ports the PACE is connected to) the packet is destined for.
- the PPU For packets received at either a GigE or FC port and that are passed to the PPU, the PPU further separates control traffic in one embodiment.
- the PPU determines if it is an JJ? or TCP packet, step 1304. Ifthe packet is an JP packet, the PPU searches its CAM to obtain the FlowED ofthe packet from itsroute table, step
- the packet is forwarded to the Traffic Manager, step 1311.
- the PPU searches its CAM using the TCP Control Block Index, which identifies the TCP session, together with the LUN from the iSCSI header, which identifies the virtual target, to get a virtual target descriptor ID (VTD JJD), step 1312.
- the VTD JD's are essentially addresses or pointers to the VTDs stored in the PPU SRAM.
- the PPU uses the VTD ID to obtain the address ofthe VTD, step 1312, so a search of VTD ID ' s allows the ability to quickly locate a VTD . If the VTD cannot be obtained, then the iSCSI session has not yet been established, and the packet is sent to the CPU, step 1314. But ifthe VTD ID is obtained in step 1312, the PPU determines if the packet contains an iSCSI PDU, step 1315. Ifthe packet does not contain an iSCSI PDU, it is forwarded to the CPU, step 1314.
- the PPU determines if the PDU is a data moving PDU (e.g., read or write command, R2T, write data, read data, response), step 1316. If the PDU is not a data moving PDU, then the packet is passed to the CPU, step 1314. But if the PDU is a data moving PDU, then the PPU performs further processing on the packet, step 1318, e.g., virtualization and translation, as will be described later.
- a data moving PDU e.g., read or write command, R2T, write data, read data, response
- the PPU When the PPU receives an FCP frame with an FCP command IU in the ingress direction, the PPU performs similar steps to those described in Fig. 13 a, steps 1302, 1312- 1318 , except that the CAM search in step 1312 uses the S_JD address and the LUN from the FCP frame to find the VTD ID.
- step 1350 the PPU checks the Type field ofthe local header
- the PPU sends the packet to the PACE, step 1354. Otherwise, the PPU perfonns furtherprocessing on thepacket, step 1356, e.g., virtualization and translation, as will be described later.
- the CPU will be passed packets from the SPU in several situations. These situations include:
- a non-TCP packet having the storage switch as its destination could be an ICMP, IP, RJJP, BGP, or ARP packet, as are understood in the art.
- the CPU performs the inter-switch communication and IP routing function.
- the packet may also be SLP or iSNS requests that will be forwarded to the SCC.
- a non-iSCSI TCP packet Such apacket would generally be for the CPU to establish or terminate a TCP session for iSCSI and will typically be packets with SYN, FIN, or RST flags set.
- a non-FCP FC frame Such frames are FLOGI, PLOGI, and other FCP requests for name services. Similar to iSCSITCP session, these frames allow the CPU to recognize and to communicate with the FC devices, hi one embodiment, the CPU needs to communicate with the SCC to complete the services.
- AniSCSIPDUthatisnotaSCSIcommand,response, ordata Such a packet may be a ping, login, logout, or task management. Additional iSCSI communication is generally required before a full session is established. The CPU will need information from the SCC database to complete the login.
- These commands are FCP control commands to be processed by the CPU where the virtual target behavior is implemented.
- the PPU After the packet is classified, as described above, the PPU performs wire-speed virtualization and does so without data buffering in one embodiment. For each packet received, the PPU determines the type of packet (e.g., command, R2T/XFR_RDY, Write Data, Read Data, Response, Task Management/Abort) and then performs either an ingress (where the packet enters the switch) or an egress (where thepacket leaves the switch) algorithm to translate the virtual target to aphysical target or vice versa. Thus, the virtualization function is distributed amongst ingress and egress ports.
- the type of packet e.g., command, R2T/XFR_RDY, Write Data, Read Data, Response, Task Management/Abort
- the virtualization function is distributed amongst ingress and egress ports.
- virtual descriptors are used in conjunction with a CAM, to map the request location to the access location, hi addition, for each packet there maybe special considerations.
- the virtual target to which the packet is destined maybe spaced over several noncontiguous extents, may be mirrored, or both.
- Storage Services The ingress and egress process for each packet type is described below. However, generally, the ingress process for each packet validates the virtual target, determines the egress port to send the packet to, and leaves trace tags so responsive packets can be tracked. The egress process generally continues to maintain trace tags and makes adjustments to the block addresses to translate from the virtual world to the physical one.
- a SCSI command is always sent by an iSCSI or FC initiator in an iSCSI PDU or FCP IU, respectively.
- the PPU CAM is next checked to determine if a valid VTD TD exists, using the TCP Control Block Index and the logical unit number (LUN), in the caseofaniSCSI initiator, or the S_ID and the LUN, in the case of an FC initiator, step
- the LUNs in each case are found in the respective iSCSI PDU or FCP IU. If no valid VTD ID is found, then a response packet is sent back to the initiator, step 1406. Ifa valid VTD is found, thenacheck is made forinvahdparameters, step 1408. Such checks may include checking to determine ifthe number of outstanding commands for the virtual target has exceeded a maximum allowable number or ifthe blocks requested to be accessed are in an allowable range. If invalid parameters exists, a response packet is sent back to the iSCSI or FC initiator, step 1406. [0129] If all parameters checked are valid, then a Task Index is allocated along with an Ingress Task Control Block (ITCB), step 1410 and shown in Fig. 14a.
- ITCB Ingress Task Control Block
- the Task Index points to or identifies the ITCB.
- the ITCB stores the FlowJD (obtained from the VTD), the VTD ID, CmdSN (from the iSCSI packet itself), as well as the initiator ask ag sent in the i SCSI PDU or the OX D in the FCP frame header.
- the ITCB is stored in the PPU SRAM. Of course there may be many commands in progress at any given time, so the PPU may store a number of ITCBs at any particular time. Each ITCB will be referenced by its respective Task hidex. [0130]
- the VTD tracks the number of outstanding commands to aparticular virtual target, so when a new ITCB is established, it must increment the number of outstanding commands, step 1412.
- VTDs establish a maximum number of commands that may be outstanding to any one particular virtual target.
- the FlowID, the VTD ID, and the Task Index are all copied into the local header, step 1414.
- the FlowID tells the traffic manager the destination linecards and ports. Later, the Task Index will be returned by the egress port to identify a particular task of a packet. Finally, the packet is sent to the traffic manager and then the routing fabric, so that it ultimately reaches an egress PPU, step 1416.
- FlowID determines the destination/egress port. If a read command crosses an extent boundary, meaning that the command specifies a starting block address in a first extent and an ending block address in a second extent, then after reading the appropriate data from the first extent, the PPU repeats the command to the second extent to read the remaining blocks.
- the PPU duplicates the command to both extents and manages the order ofthe write data.
- a read command crosses an extent boundary, there will be two read commands to two extents .
- the second read command is sent only after completing the first to ensure the data are returned sequentially to the initiator.
- Command Packet - Egress Referring to Figs. 15 and 15a, after the command PDU or IU has passed through the switch fabric, it will arrive at an PPU, destined for an egress port, step 1502. The PPU then attempts to identify the physical device(s) that the packet is destined for, step 1504. To do so, the VTD ID from the local header is used to search the PPU CAM for aPTD ID (Physical Target Descriptor Identifier): The VTD ID is affiliated with and indexes a particular PTD ID associated with the particular egress PPU.
- aPTD ID Physical Target Descriptor Identifier
- PTDs are stored in the PPU SRAM, like VTDs, and also contain information similar to that found in a VTD . Ifthe search is unsuccessful, it is assumed that this is a commandpacket sent directly by the CPU and no additional processing is required by the PPU, causing the PPU to pass the packet to the proper egress port based on the FlowID in the local header. Ifthe search is successful, the PTD ID will identify the physical target (including extent) to which the virtual target is mapped and which is in communication with the particular egress linecard currently processing the packet. [0134] The PPU next allocates a Task Index together with an egress task control block (ETCB), step 1506, and shown in Fig. 15 a.
- ETCB egress task control block
- the Task Index used for egress is the same as that used for ingress.
- the Task Index also identifies the ETCB .
- the ETCB also stores any other control information necessary for the command, including CmdSN of an iSCSI PDU or an exchange sequence for an FCP IU.
- the PPU converts the SCSIblock address from a virtual target to the block address of a physical device, step 1508. Adding the block address ofthe virtual target to the beginning block offset ofthe extent can provide this conversion. For instance, if the virtual target block sought to be accessed is 1990 and the starting offset ofthe corresponding first extent is 3000, then the block address ofthe extent to be accessed is 4990.
- the PPU generates proper iSCSI CmdSN or FCP sequence ED, step 1510 and places them in the iSCSI PDU or FCP frame header.
- the PPU also constructs the FCP frame header if necessary (in some embodiments, after the ingress PPU reads the necessary information from the FCP header, it will remove it, although other embodiments will leave it intact and merely update or change the necessary fields at this step) or for a acket being sent to an iSCSI target, the TCP Control Block Index is copied into the local header from the PTD, step 1512.
- the PPU provides any flags or other variables needed for the iSCSI or FCP headers.
- the completed iSCSI PDU or FCP frame are then sent to the PACE, step 1514, which in turn strips the local header, step 1516, and passes the packet to appropriate port, step 1518.
- each extent has a different starting offset. So when a command must be split between two extents, the PPU must deteimine the proper address. For instance, assume a virtual target includes two extents defined in Table 1 :
- the PPU for the first extent sends the command to address 4990 for 10 blocks (5120 bytes of data - in one embodiment a block is 512 bytes) .
- the PPU for the second extent sends the command to address 5000 for 20 blocks (10,240 bytes of data), hi other words, the PPU for the first extent must add the address to be accessed to the starting offset ofthe first extent (3000+ 1990) and then subtract that address from its total size (2000 - 1990) to determine how many blocks it can access.
- the PPU for the second extent will start at its starting offset (5000) and add the remaining blocks (20) from there (5000-5019).
- the PPU for the second extent would subtract the size ofthe first extent (2000), before adding the offset for the second extent (5000), to achieve the resulting address 5020.
- R2T or XFR RDY - Ingress [0138] Referring to Fig. 16 and 16a, after a command has been sent to a target storage device as described above, and the command is a write command, an R2T PDU or an XFR RD Y IU will be received from a storage device when it is ready to accept write data, step 1602.
- the PPU identifies the corresponding ETCB, step 1604, by using the initiator_task_tag or OX_ID inside the packet.
- the initiator_task_tag or OX_JD of the packet is the same as the Task Index, which identifies the ETCB . If the PPU cannot identify a valid ETCB because of an invalid initiator_task_tag or OXJQD, the packet is discarded. Otherwise, once the ETCB is identified, the PPU retrieves the Ingress Task Index (if different from the Egress Task
- the PPU also retrieves the FlowJD from the PTD, which is also identified in the ETCB by the PTD ID.
- the FlowID indicates to the traffic manager the linecard ofthe original initiator (ingress) port.
- the FlowID, the VTD ID, and the Task Index are copied into the local header ofthe packet, step 1608. Finally the packet is sent to the traffic manager and the switch fabric, step
- R2T or XFRJ D Y packet After the R2T or XFRJ D Y packet emerges from the switch fabric, it is received by a PPU, step 1702, on its way to be passed back to the initiator (the device that initiated the original command for the particular task).
- the Task Index identifies the ITCB to the PPU, step 1704, from which ITCB the original initiator ask ag and the VTD ID can be obtained.
- the R2T/XFR RD Y Desired Data Transfer Length or BURST_LEN field is stored in the ITCB, step 1706.
- the local header is updated with the FCP DJD or the TCP Control Block Index for the TCP connection, step 1708.
- the stored S_TD from the original packet which is stored in the ITCB, becomes the D_JD.
- an FCP frame header is constructed or its fields are updated, step 1710.
- the destination port number is specified in the local header in place ofthe FlowID, step 1712, and placed along with the initiator_task_tag in the SCSI PDU or, for an FC connection, the RX_ID and OX ID are placed in the FCP frame.
- the PPU also places any other flags or variables that need to be placed in the PDU or FCP headers.
- the packet is forwarded to the PACE, step 1714, which identifies the outgoing port from the local header.
- the local header is then stripped, step 1716 and forwarded to the proper port for transmission, step 1718.
- the eventthatthe command is split over two ormore extents, e.g., the command starts in one extent and ends in another, then the PPU must hold the R2T or XFR_RDY of the second extent until the data transfer is complete to the first extent, thus ensuring a sequential data transfer from the initiator.
- R2T orXFR_RDY ofthe second extent will need to be modified by adding the amount of data transferred to the first extent.
- the command is to access block 1990 for 30 blocks, then the data offset for the R2T or XFR RD Y ofthe second extent must add 10 blocks so that block 11 is the first block to be transferred to the second extent.
- an initiator After an initiator receives an R2T or XFR_RDY packet it returns a write-data packet.
- the ITCB to which the packet belongs must be identified, step 1804.
- the ITCB can be identified using the RX_ID or the target_task_tag, which is the same as the Task Index in some embodiments.
- the SPU further identifies that received packets are in order, hi some circumstances, however, the initiator will transfer unsolicited data: data that is sent prior to receiving an R2T or XFR_RDY.
- the PPU must find the ITCB by a search through the outstanding tasks of aparticular virtual target. But if the ITCB is not found, then the packet is discarded. Ifthe ITCB is found, the total amount of data to be transferred is updated in the ITCB, step 1806. The FlowID and Task Index are added to the local header ofthe packet, step 1808. The packet is then forwarded to the traffic manager and ultimately to the switch fabric, step 1810.
- the PPU In the event that a command is split between two extents because the command starts in one and ends in the second, the PPU must determine the extent to which the particular data belongs and forward the data packet to the correct egress linecard. The PPU sets the proper FlowID to the extent. After completing the data transfer on the first extent, the PPU checks ifthe R2T or XFR RDY ofthe second extent was received. Until the data transfer is completed on the first extent, the data will not be sent to the second extent to ensure sequential transfer.
- step 1902 when a write-data packet is received from the switch fabric (via the traffic manager), step 1902, the ETCB for the packet needs to be identified, step 1904.
- the ETCB can be identified usingtheTask Index in the local header. Once the ETCB is found, using the information inside the
- the PPU generates proper iSCSI DataSN or FCP sequence ID, step 1906, along with any other flags and variables, e.g, data offset, for the PDU or FCP frame header.
- the local header is updated with the TCP Control Block Index or the FCP D_ID from the PTD, step 1908.
- the port number is also added to the local header.
- the finished iSCSI PDU or FCP frame is sent to the PACE, step 1910, which removes the local header, step 1912, and forwards the packet to the appropriate port, 1914. [0144] hi the event that the command is split between two extents, the data offset ofthe packet to the second extent must be adjusted.
- Read Data Packet - Ingress [0145] Referring to Fig.20 and 20a, after receiving a read command, the target device will respond with a read-data packet, which will be received at the PPU (after undergoing classification in the PACE), step 2002. The ETCB for the packet is then identified, using the OX_ID or initiator_task_tag, step 2004. The PPU further verifies ifthe packet was received in order using sequence numbers or verifying that data offsets are in ascending order, step 2006.
- the read command is terminated in error. If the packet was not in order, the read command is terminated in error. If the packet is in proper order, however, the VTD ID, Task Index, and FlowED are retrieved from the ETCB and VTD and copied into the local header, step 2008. The packet is sent to the traffic manager and ultimately the switch fabric, step 2010.
- Read Data Packet - Egress when a read-data packet is received by an PPU from the switch fabric, step 2102, the ITCB for the packet is identified, step 2104, usually using the Task Index in the local header. From the ITCB, the PPU retrieves the initiator_task_tag or OX ID, step 2106. Using the saved data in the ITCB, the PPU generates proper iSCSI DataSN or FCP sequence IDs as well as other flags or variables ofthe PDU or FCP frame header, step 2108. The local header is updated with the TCP Control Block Index or FCP S D from the VTD, step 2110.
- the S ID from the original packet will be used as the D_ID.
- the outgoing port number is also added to the local header.
- the packet is then sent to the PACE, step 2112, which removes the local header, step 2114, and forwards the packet to the appropriate port, step 2116.
- the data offset ofthe packet from the second extent must be modified in a way similar to that described previously.
- a response packet will be received from a target device, step 2202.
- the ETCB for the packet is then identified, step 2204, using the initiator_task_tag or OX_ID of the packet. In some embodiments the initiator_task_tag or OXJOD will be the same as the Task Index. Ifthe ETCB is not found, the packet is discarded. However, ifthe ETCB is found, then the Task Index is copied into the local header ofthe packet along with the VTD ID and the FlowID, step 2206. The packet is sent to the traffic manager and ultimately to the switch fabric, step 2208. Finally, because the response packet signals the completion of a task, the ETCB for the task is released, step 2210.
- a response packet After a response packet has been through the switch fabric, it will be received by an egress PPU, step 2302.
- the ITCB forthe packet is identified, step 2304, using the Task Index from the local header. Ifthe ITCB is not found, the packet is discarded. Ifthe ITCB is found, the outstanding command count for the virtual target is decremented in the VTD, step 2306.
- the PPU generates the LUN, iSCSI ExpStatSN or FCP sequence 3D from information in the ITCB and, if necessary, constructs or updates the proper FCP header, step 2308.
- the PPU also constructs other flags and variables for the PDU or FC frame header.
- the PPU updates the local header with the TCP Control Block Index or FCP S ID (which becomes the DJOD) retrieved from the VTD, step 2310.
- the packet is forwarded to the PACE, step 2312, which removes the local header, step 2314, and forwards the packet to the appropriate port, step 2316.
- the PPU frees the ITCB, step 2318.
- a write command has been sent to more than one extent
- a response packet is not sent to the initiator until completion ofthe write to all extents.
- Note that for all Figs .9-23 although the steps are described to occur in aparticular order, in other embodiments, the order of some ofthe steps maybe changed and some may be performed simultaneously.
- An ABORT iSCSI function orAbort Sequence Exchange terminates the command abnormally.
- the PPU finds the ITCB using the OX_ID or initiator task ag ofthe packet. If no ITCB is found, the command is assumed to have been completed or never received and a response will be generated indicating TASK-NOT-FOUND .
- I the ABORT is received from a target device, the PPU finds the ETCB and frees it.
- An ACK is returned to the target device, and the ABORT is passed to a linecard connecting to the initiator to terminate the command. Ifthe ABORT is received from an initiator, the ABORT is passed to the linecard connecting to the target to terminate the command.
- the PPU frees the respective task control blocks, ITCB and ETCB.
- An ABORT from the ingress linecard indicates to the egress linecard to send an ABORT to the target device.
- the completion response is returned from the target, the ETCB is freed. Ifthe ETCB is not found, the ABORT is ignored.
- a storage switch in accordance with the invention can be coupled to devices that transmit data in accordance with any of a plurality of protocols.
- the protocols utilized by servers and storage devices are iSCSI and Fibre Channel.
- the switch must perform protocol translation. Conventionally, to do such translation, the packet must be stored in memory and then operated on by a CPU before it can be forwarded out, if such a conventional system can perform protocol translation at all.
- a storage switch in accordance with the invention can perform protocol translation without any buffering ofthe packets in the switch.
- Both iSCSI PDUs and Fibre Channel IUs are designed to carry SCSI
- CDBs command descriptor blocks in their respective packet or frame.
- these protocols have similar semantics, as recognized by the inventors ofthe present invention.
- Table 2 below illustrates a comparison between the protocols.
- both iSCSI and FC simply send or receive a packet/frame.
- the PPU Upon arrival of a packet to the PPU, as with virtualization, the PPU identifies the VTD associated with the packet by searching the CAM to determine ifthe incoming command belongs to a particular session (either iSCSI or FC) and a particular virtual target.
- the CAM search is conducted, as previously described, using the TCP Control Block Index and LUN (in the case of an iSCSI packet) or the S_CD and the LUN (in the case of an FC frame).
- translation is performed at the egress PPU (the PP U that receives the packet after it has traveled through the switch fabric).
- the egress PPU also searches the CAM, but uses the VTD ID that is in the local header ofthe packet to find the PTD.
- the CAM search is described for both the virtualization and translation functions, it is to be understood that it, as well as other steps described with respect to the various functions, need only be performed once by the
- ITCBs and ETCBs (one of each per SCSI command).
- Such variables includes task tags, CmdSN, DataSN, and StatSN for iSCSI, and OXJD, RXJD, exchange sequence numbers, and sequence initiation flags for Fibre Channel.
- the PDU are mapped to the FCP_LUN field ofthe FCP_CMND IU.
- the LUN for the Physical Target is obtained from the PTD.
- Only the 3 bits ofthe iSCSI Task Attribute field ATTR are mapped to the FCP_CNTL field.
- the contents of CDB field ofthe iSCSI PDU are mapped to the FCP_CDB field.
- the contents ofthe data transfer size field are mapped to the FCP_DL field. Since OX_ID is unique to the FCP frame header, it is filled in by the PPU, typically with the Task Index from the ETCB for easy identification of responsive packets from the target. Other fields in the FCP Frame
- FC Storage Header can be easily generated with information from the PTD or VTD. [0163] When the FC storage device responds, it will respond with an FC
- the Buffer Offset and Data Transfer Length fields can be mapped directly from the FCP XFR_RDY frame.
- other fields such as StatSN, ExpCmdSN, MaxCmdSN, and R2TSN must be taken from the ITCB .
- hi addition variables like task tags unique to the iSCSI R2T PDU are also placed in the packet by the PPU, usually using fields from the PTD or VTD.
- the iSCSI initiator After receiving an R2T, the iSCSI initiator will send a Write Data PDU, which must be translated to an FCP Data IU:
- the RLTV_OFF field for the FCP data IU will be mapped from the Buffer_Offset field of the iSCSI PDU.
- the payload for each packet/frame is identical.
- variables unique to the FCP frame are added, such as OX_ID and SEQ_CNT, taken from the ETCB.
- the Buffer_offset field for the iSCSI PDU will be mapped from the RLTV OFF field ofthe FCP RJ. All other fields are taken from the ITCB as well as variables unique to the PDU such as task tags. [0169] Once the task is complete (e.g., reading or writing of data is finished), then the FCP target sends a response packet (FCP_RSP IU) that must be translated into an iSCSI format:
- the Status field ofthe FC IU is mapped to the flag and status fields of the iSCSI PDU.
- FCP_SNS_LEN, FCP_RESID, and FCP_SNS_JNFO are mapped to DataSegmentLength, BasicResidualCount and Sense
- the FCP_RSP_INFO field is for transport errors that must be mapped to the iSCSI error codes.
- variables like the Task Tag or ExpCmdSn, StatSN, MaxCmdSN, ExpDataSN, and ExpR2TSN that are unique to the iSCSI Status PDU are added from the ITCB or VTD.
- FC Initiator to iSCSI Target The FCP to iSCSI translation is the reverse ofthe iSCSI to FCP translation. Again, the translation is performed at the egress PPU.
- the FCP initiator will first send an FCP command, which must be translated for the iSCSI target:
- IU map into the LUN, ATTR, CDB, and Data Transfer Size fields ofthe iSCSI PDU.
- variables that are unique to the iS CSI PDU are created by the PPU such as CmdSN and a task tag, both of which can be obtained from the ETCB . Note that the
- DataSegmentLength field will be zero as there will be no immediate data for FCP frames.
- the target After the iSCSI target has received the command (and the command is a write command), the target will respond with an R2T PDU, which must be translated into an FCP XFR RDY IU:
- the PPU also adds variables unique to the FCP IU such as RXJDD and SEQ_ ⁇ D, available in the ITCB.
- FC initiator After the FC initiator receives the XFR_RDY IU, it will send write data, which needs to be translated into an iSCSI format:
- Buffer_offset field ofthe iSCSI PDU while the payload for each is the same.
- other fields are taken from the ETCB, including variables like DataSN, which is unique to the iSCSI Data PDU.
- the Buffer_offset field maps into the RLTV_OFF field ofthe FCP IU, and the payload for both is the same.
- the PPU must add variables that are unique to the FCP IU such as RX_ID and SEQ_ID, which can be found in the ITCB.
- theflagsandstatusfieldsoftheiSCSIPDU map to the STATUS field of the FCP IU.
- the iSCSI fields DataSegmentLength, BasicResidualCount, and Sense Data all map to FCP_SNS_LEN, FCPJRESID, and FCP_SNS_FNFO, respectively, ofthe FCP IU.
- Transport errors are mapped to the FCP_RSP_INFO field ofthe FCP IU.
- IU such as OX_ID and SEQ_ID are added by the PPU.
- an iSCSI task management packet such as Abort Task Set is received, it will be sent to the FC device using an NOP command with the task management flags in the FCP_CNTL field.
- Aswitchin accordance with an embodiment ofthe invention can provide switch-based storage services at wire speed, again by distributing tasks on multiple linecards, thereby maximizing throughput.
- Storage services that are provided in one embodiment ofthe invention include local mirroring, mirroring over slow link, snapshot, virtual target cloning (replication), third party copy, periodic snapshot and backup, and restore. Each of these services will be described in farther detail below. Other embodiments may provide more or fewer services.
- storage services are initially activated by amanagement station (or other device) over an ethernet connection to the storage switch, step 2402. Such ethernet communication occurs in one embodiment with the SCC 610 (Fig.6).
- the SCC through its database, determines the linecards for the service and passes all relevant information to perform the service to those linecards, including VTD and LUN information, step 2404. All information is passed from the SCC to the linecards using intercard communication over the ethernet connection that the SCC has with each linecard. The linecards then perform the actual service requested, step 2406. When the task is completed, the SCC will initiate a response to be returned to the management station, step 2408, indicating that the service is complete. Hence, unlike conventional systems, the management station need not be involved in the service at all except to initiate a request for the service.
- a virtual target is mirrored, i.e. , an identical copy ofthe data is stored in two separate physical locations, often referred to as "members" ofthe mirrored virtual target.
- the FlowID in the VTD indicates that the packet is to be multicast to multiple egress ports, hi a mirrored virtual target, when a write command crosses an extent boundary, the PPU will duplicate the packet for each extent for each member of the mirrored target.
- the PPU also provides proper FlowIDs to the traffic manager, which in turn sends each command it receives to multiple egress ports.
- the PPU selects the one member ofthe mirrored target that has the smallest average response time.
- the FlowID of that member directs the read command to the selected egress port.
- the response time is available in the VTD.
- the PPU waits until every member and/or extent has returned the R2T or XFR RD Y. Once all members have responded, then the PPU will prepare to send the initiator the R2T or XFR RD Y that specifies the smallest block available to receive data: when the data is returned, it will be multicast to all mirrored members, but a member cannot receive more data then it has requested.
- the PPU must also track in the ITCB the amount of requested data specified in the R2T or XFR_RDY for each extent.
- the PPU waits for the extent that asked for the smallest amount of data to send another R2T or XFR_RDY.
- the PPU waits until both (or all) targets that asked for the smallest amount to send another R2T or XFR_RDY.
- the PPU returns another R2T or XFR_RDY of the smallest remaining amount of all the extents. The process continues until all ofthe extents have all the required data.
- Table 13 An example is shown in Table 13 below:
- mirroring occurs when two identical sets of data are each respectively stored in separate physical locations. Most conventional systems only support local mirroring - that is, mirroring in devices that are both on the same SAN. However, an embodiment ofthe invention supports mirroring over slow link - for instance, when one copy of data is on one SAN and a second copy is stored at a remote location from the SAN, e.g., on a second SAN. For instance, referring to Fig. 4, a local copy ofthe data may be in SAN 402 while a remote mirrored copy maybe in SAN 404. Thus, remote mirroring is made possible in a switch in accordance with an embodiment ofthe invention that enables exporting (or importing) of data to a target through a WAN such as the Internet.
- a WAN such as the Internet
- a switch in accordance with the invention will wait to receive an R2T or XFRJRDY from all targets before requesting write data from the initiator (e.g., the server). Then the write data is multicast to all targets. For mirroring over slow link, however, to avoid a long network latency, the switch does not wait to receive an R2T or XFR RD Y from the remote target. Instead, when the switch receives an R2T or XFR RD Y from the local target, it immediately requests the write data from the initiator and writes to the local target.
- a switch When the linecard connecting to the remote device receives the R2T or XFRJRDY from the remote target, it reads the data from the local target and then writes it to the remote target. [0192] More specifically, referring to Fig.25, a switch will receive a write command from a server, step 2502. As with local mirroring, the ingress PPU will multicast the command to the egress linecards for both the local and remote target, step 2504. However, the FlowID ofthe command destined for the remote target is a special
- FlowID so that the packet will be directed to the egress linecard CPU, instead ofbeing handled directly by the PPU as would be done in other circumstances. Still, the packet destined for the local target is handled by the PPU.
- the command is then sent to each ofthe targets, local and remote, by the respective egress linecards, step 2506.
- an R2T or XFRJRDY will be received by the switch from the local target first, step 2508.
- the R2T or XFR_RDY is then passed back to the initiator (server), step 2510.
- the initiator will then send its write data to the switch, and the data are then passed to the local target for writing, step 2512.
- the local target will send a response packet indicating that the task is complete, step 2514.
- anR2T or XFRJRDY is received from the remote target by the linecard, step 2516.
- the CPU for the linecard connecting to the remote target sent the write command
- the remote R2T or XFRJRD Y is received also by the linecard CPU, which manages the commands to the remote target.
- the CPU for the remote target converts the received R2T or XFRJRD Y to a read command to the local target, step 2518, to read the data previously written.
- the read data received from the local target is received by the PPU ofthe linecard for the remote target, step 2520.
- the PPU then forwards the read data as write data to the remote target, step 2522.
- the remote target will send a Response packet so mdicating, which packet is received by the linecard CPU for the remote target, step 2524.
- the linecard CPU receives the status for both the read and write commands.
- the remote linecard waits until the local write is complete before proceeding to read the data from the local target, in one embodiment.
- a seeming "snapshot" ofthe data at a particular time is kept.
- a user can access the removed member (as another virtual target) to retrieve old information at any time without requiring a restore.
- some users of a switch in accordance with the invention will avoid the need to perform traditional backups and restores .
- snapshots can be made quickly, talcing only a few milhseconds, compared to traditional backup which may require a backup window of hours to copy a virtual target to tape media (and usually also preventing access to the databeing copied). Snapshot of a virtual target can also take place at regular intervals. Further, each snapshot can be a different member ofthe mirrored virtual target, allowing for the availability of multiple snapshots (e.g., a snapshot from Tuesday, one from Wednesday, etc.).
- a snapshot request is received from amanagement station by the switch, step 2602.
- the SCC informs the ingress linecard CPU (the linecard that connects to the server) ofthe change to remove a mirrored member, step 2604.
- the SCC also updates the virtual target object in the SCC database.
- the linecard CPU updates the FlowID stored in the VTD (in the PPU SRAM) for the virtual target so that it no longer reflects the removed member, step 2606. With this change, the incoming writes are no longer multicast to the removed member.
- the CPU acknowledges the change to the SCC, which in turn sends a response back to the management station to indicate that the snapshot is complete, step 2608.
- a switch in accordance with the invention can support the addition of a new member to a mirrored virtual target, referred to herein as cloning (or replication), and can do so without taking the virtual target offline.
- cloning or replication
- a new member is added by changing the Virtual Target Obj ect in the SCC database, and the content of the mirrored target is replicated onto the new member while normal access is still active to the virtual target.
- the replication will take some time to complete. Nonetheless, the replication is controlled by the switch, is transparent to the user, and does not generally interfere with access to the virtual target by a server.
- a replicate request is received by the SCC, step 2702.
- the SCC sets a cloning-in-progress flag in the Virtual Target
- step 2704 and informs the CPU ofthe linecard that connects to the server of the change, step 2706.
- the linecard CPU updates the VTD in the PPU SRAM to change the FlowID ofthe virtual target to add the new member, step 2708.
- the FlowID is set to direct writes to the egress linecard CPU for the new member so that the CPU handles the writes instead ofthe PPU.
- the egress linecard CPU will temporarily manage the traffic to the new member until replication is complete as described further below.
- the CPU ofthe linecard connecting to the new member prepares a change descriptor specifying the contents ofthe virtual target to be copied to the new member, step 2710.
- the descriptor sets forth an offset and block count: (offset, block count) .
- offset block count
- the change descriptor is (0, 20,000,000) - note that in one embodiment each block is 512 bytes and a 10 GB target has 20 million blocks.
- the linecard CPU manages the copy function a few blocks at a time. First, the linecard CPU sends a write command to the new member, step 2712. When an R2T or XFR RDY is returned, step 2714, the linecard CPU initiates a read request to the old member, but specifies a FlowID directing the read data to the linecard CPU ofthe new member, step 2716. Any read or write error aborts the copy and is reported to the SCC.
- the write request when the write request is multi cast, it is received by the CPU ofthe linecard for the new member, step 2722, rather tbanbeing processed by the PPU on the respective linecards, as it will be for the old members ofthe mirrored target.
- the linecard CPU determines ifthe write is to any block that has not yet been copied by checking the write location against the offset ofthe change descriptor, step 2724. Ifthe write is to datablocks that have been already copied, the write command is simply passed to the PPU, step 2726. However, ifthe write is to data blocks that have not yet been copied, then the write to the new member is discarded, step 2728, and a response to the initiator that the task is complete is sent. Nonetheless, the new data will eventually be copied into the new member from the old member during the continuing replication process. The process continues to perform the replication until completed, step 2720.
- the SCC updates the Virtual Target Object to remove the cloning-in- progress flag, step 2732.
- the FlowID is updated, step 2734, so that write commands follow their normal progression to the
- a third party function copies an offline virtual target (one that is not being accessed) to or from an archiving device such as a writable CD or tape drive.
- the copy is termed a "third party copy” because the server is not involved until the copy is complete — rather the copy is executed by the switch, hi many embodiments, such a third party copy will be made from a snapshot of a virtual target previously taken, hi most conventional systems, to perform such a copy the target device must be a "smart" device, e.g., a smart tape device, meaning that such a device is generally actively involved in and at least partially controls the copy process.
- the third party copy service ofthe present system does not rely on any intelligence outside ofthe storage switch itself.
- the switch will receive a copy request from a management station, step 2802.
- the SCC ensures that there are no outstanding connections for writing to the virtual target, step 2804.
- the virtual target is available for read only in one embodiment.
- the SCC then sets a copy-in-progress flag in the Virtual Target Object in the SCC database, step 2806, to ensure no other connections to the target for writing.
- the SCC next instructs the CPU for the linecard connected to the copy-destination device to execute the copy, step 2808.
- Each virtual target maybe comprised of several extents, eachofwhich maybe on a distinct physical device. Thus, the CPU for the destination linecard must obtain data from each extent.
- the CPU for the destination linecard sends each linecard for each extent an extent descriptor, step 2810.
- the extent descriptor specifies the extent as well as the destination linecard (for the destination copy).
- the CPUs of each ofthe linecards for the respective extents then set up their respective PPUs (e.g., the VTDs and CAMs) to enable the PPUs to process the read requests, step 2812.
- the destination linecard CPU After getting the extent linecards setup, the destination linecard CPU then sends a write command to the destination device, step 2814.
- the destination linecard sends a read command to one ofthe extents via the respective extent linecard, step 2818.
- the Read data is sent directly to the destination linecard and processed by the destination linecard PP U as write data, step 2820, which is written to the destination device.
- the process is repeated until the entire extent is copied. Any error condition terminates the copy.
- step 2822 if less then all ofthe extents have been copied, step 2822, then the process returns to step 2814, where it is performed for the next extent. If all the extents have been copied, step 2822, then the CPU for the destination linecard reports the completion ofthe copy to the SCC, step 2824. On an enoneous completion, the SCC terminates the copy.
- a switch in accordance with an embodiment ofthe invention can provide periodic snapshot and backups of a virtual target. Such a backup function generally comprises three steps: 1. Snapshot the virtual target,
- the third step can be performed by replication (previously described) or by otherwise tracking updated data for the virtual target from the time the snapshot is taken until the member is rejoined. For instance, arecord of all changes made to the virtual target can be kept and then the mirrored member is simply updated with those changes upon rejoining the virtual target as a mirrored member. [0216] If a user has plenty of storage space, the second and third steps may not be necessary as each snapshot virtual target will be accessible to a user. Thus, it is only a matter of allocating the snapshot targets and naming them.
- the switch allocates the snapshot targets and schedules the periodic activities according to a known policy.
- the switch also manages the naming and renaming ofthe targets. Forinstance, forthebackup.2001q3, the switch will reuse the target for the backup.2000q3 and rename it for the backup.2001.q3.
- archiving media e.g., typically removable or portable media such as tapes or CDs
- the switch can use the third party copy function to move abackup or snapshot target to an archiving media.
- the switch tracks the archiving media on its database.
- the SCC fetches the virtual target object to determine all destination extents and a record is entered into a database at the management station to track the m edia.
- a management station a user can view a list of archiving media, e.g., a set of tapes or CDs, and select one for restoring.
- a switch in accordance with one embodiment ofthe invention supports three different priorities of restoring: urgent, important, and normal. An urgent restore is started immediately regardless ofthe current traffic situation on the system. An important restore is not started when there is congestion in the system, but is started within a few hours. A normal restore is completed within 24 hours depending on the traffic congestion ofthe system.
- a storage switch has been disclosed that provides wire-speed processing of data packets, mcluding classifying the packets, performing virtualization functions on the packets, and performing any necessary protocol translation of the packets.
- the architecture disclosed allows the required time to process a packet to be minimal.
- Such wire-speed processing is in part accomplished by distributing the intelligence ofthe switch to all ofthe linecards and generally avoiding the need for buffering.
- Such distributed intelligence allows a system that not only has ahigh bandwidth but is also easily scalable.
- such a switch using its linecards can also perfonn serverless storage services, that is, services where no entity outside ofthe switch need be involved in the control of performance of such services.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Communication Control (AREA)
Abstract
Description
Claims
Applications Claiming Priority (5)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US32570401P | 2001-09-28 | 2001-09-28 | |
| US325704P | 2001-09-28 | ||
| US10/051,415 US7404000B2 (en) | 2001-09-28 | 2002-01-18 | Protocol translation in a storage system |
| US51415 | 2002-01-18 | ||
| PCT/US2002/030912 WO2003027877A2 (en) | 2001-09-28 | 2002-09-27 | Protocol translation in a storage system |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| EP1438671A2 true EP1438671A2 (en) | 2004-07-21 |
| EP1438671A4 EP1438671A4 (en) | 2007-05-02 |
Family
ID=26729397
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| EP02766398A Withdrawn EP1438671A4 (en) | 2001-09-28 | 2002-09-27 | Protocol translation in a storage system |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US7404000B2 (en) |
| EP (1) | EP1438671A4 (en) |
| JP (1) | JP2005505037A (en) |
| WO (1) | WO2003027877A2 (en) |
Families Citing this family (110)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9094328B2 (en) | 2001-04-24 | 2015-07-28 | Brocade Communications Systems, Inc. | Topology for large port count switch |
| US7864758B1 (en) * | 2001-09-28 | 2011-01-04 | Emc Corporation | Virtualization in a storage system |
| US20030084219A1 (en) * | 2001-10-26 | 2003-05-01 | Maxxan Systems, Inc. | System, apparatus and method for address forwarding for a computer network |
| US7085846B2 (en) * | 2001-12-31 | 2006-08-01 | Maxxan Systems, Incorporated | Buffer to buffer credit flow control for computer network |
| US7145914B2 (en) | 2001-12-31 | 2006-12-05 | Maxxan Systems, Incorporated | System and method for controlling data paths of a network processor subsystem |
| US7134139B2 (en) * | 2002-02-12 | 2006-11-07 | International Business Machines Corporation | System and method for authenticating block level cache access on network |
| US7379970B1 (en) | 2002-04-05 | 2008-05-27 | Ciphermax, Inc. | Method and system for reduced distributed event handling in a network environment |
| US7295561B1 (en) | 2002-04-05 | 2007-11-13 | Ciphermax, Inc. | Fibre channel implementation using network processors |
| US7406038B1 (en) | 2002-04-05 | 2008-07-29 | Ciphermax, Incorporated | System and method for expansion of computer network switching system without disruption thereof |
| US7307995B1 (en) | 2002-04-05 | 2007-12-11 | Ciphermax, Inc. | System and method for linking a plurality of network switches |
| US20030195956A1 (en) * | 2002-04-15 | 2003-10-16 | Maxxan Systems, Inc. | System and method for allocating unique zone membership |
| US7433952B1 (en) | 2002-04-22 | 2008-10-07 | Cisco Technology, Inc. | System and method for interconnecting a storage area network |
| US20030200330A1 (en) * | 2002-04-22 | 2003-10-23 | Maxxan Systems, Inc. | System and method for load-sharing computer network switch |
| JP4704659B2 (en) | 2002-04-26 | 2011-06-15 | 株式会社日立製作所 | Storage system control method and storage control device |
| US20030202510A1 (en) * | 2002-04-26 | 2003-10-30 | Maxxan Systems, Inc. | System and method for scalable switch fabric for computer network |
| US7385971B1 (en) * | 2002-05-09 | 2008-06-10 | Cisco Technology, Inc. | Latency reduction in network data transfer operations |
| US7120728B2 (en) * | 2002-07-31 | 2006-10-10 | Brocade Communications Systems, Inc. | Hardware-based translating virtualization switch |
| US7269168B2 (en) * | 2002-07-31 | 2007-09-11 | Brocade Communications Systems, Inc. | Host bus adaptor-based virtualization switch |
| US20040054943A1 (en) * | 2002-08-08 | 2004-03-18 | International Business Machines Corporation | Method and system for improving the availability of software processes utilizing configurable finite state tables |
| US20040030766A1 (en) * | 2002-08-12 | 2004-02-12 | Michael Witkowski | Method and apparatus for switch fabric configuration |
| JP2004110367A (en) | 2002-09-18 | 2004-04-08 | Hitachi Ltd | Storage device system control method, storage control device, and storage device system |
| US20040081196A1 (en) * | 2002-10-29 | 2004-04-29 | Elliott Stephen J. | Protocol independent hub |
| US8005918B2 (en) | 2002-11-12 | 2011-08-23 | Rateze Remote Mgmt. L.L.C. | Data storage devices having IP capable partitions |
| JP2006506846A (en) * | 2002-11-12 | 2006-02-23 | ゼテーラ・コーポレイシヨン | Electrical device with improved communication function |
| US7263593B2 (en) | 2002-11-25 | 2007-08-28 | Hitachi, Ltd. | Virtualization controller and data transfer control method |
| US6957303B2 (en) * | 2002-11-26 | 2005-10-18 | Hitachi, Ltd. | System and managing method for cluster-type storage |
| US7382788B2 (en) * | 2002-12-24 | 2008-06-03 | Applied Micro Circuit Corporation | Method and apparatus for implementing a data frame processing model |
| US20040120333A1 (en) * | 2002-12-24 | 2004-06-24 | David Geddes | Method and apparatus for controlling information flow through a protocol bridge |
| US20040160975A1 (en) * | 2003-01-21 | 2004-08-19 | Charles Frank | Multicast communication protocols, systems and methods |
| US7957409B2 (en) * | 2003-01-23 | 2011-06-07 | Cisco Technology, Inc. | Methods and devices for transmitting data between storage area networks |
| US7738493B2 (en) * | 2003-01-23 | 2010-06-15 | Cisco Technology, Inc. | Methods and devices for transmitting data between storage area networks |
| JP4274523B2 (en) * | 2003-01-24 | 2009-06-10 | 株式会社日立製作所 | Storage device system and start method of storage device system |
| US7606239B2 (en) * | 2003-01-31 | 2009-10-20 | Brocade Communications Systems, Inc. | Method and apparatus for providing virtual ports with attached virtual devices in a storage area network |
| US7831736B1 (en) | 2003-02-27 | 2010-11-09 | Cisco Technology, Inc. | System and method for supporting VLANs in an iSCSI |
| US7526527B1 (en) | 2003-03-31 | 2009-04-28 | Cisco Technology, Inc. | Storage area network interconnect server |
| US7571280B2 (en) * | 2003-04-25 | 2009-08-04 | Hitachi, Ltd. | Cluster-type storage system and managing method of the cluster-type storage system |
| US7817583B2 (en) * | 2003-04-28 | 2010-10-19 | Hewlett-Packard Development Company, L.P. | Method for verifying a storage area network configuration |
| JP4438457B2 (en) * | 2003-05-28 | 2010-03-24 | 株式会社日立製作所 | Storage area allocation method, system, and virtualization apparatus |
| JP4278445B2 (en) * | 2003-06-18 | 2009-06-17 | 株式会社日立製作所 | Network system and switch |
| JP2005018193A (en) * | 2003-06-24 | 2005-01-20 | Hitachi Ltd | Disk device interface command control method and computer system |
| US7451208B1 (en) | 2003-06-28 | 2008-11-11 | Cisco Technology, Inc. | Systems and methods for network address failover |
| US7412588B2 (en) | 2003-07-25 | 2008-08-12 | International Business Machines Corporation | Network processor system on chip with bridge coupling protocol converting multiprocessor macro core local bus to peripheral interfaces coupled system bus |
| US7353362B2 (en) | 2003-07-25 | 2008-04-01 | International Business Machines Corporation | Multiprocessor subsystem in SoC with bridge between processor clusters interconnetion and SoC system bus |
| US8165136B1 (en) * | 2003-09-03 | 2012-04-24 | Cisco Technology, Inc. | Virtual port based SPAN |
| JP4136857B2 (en) * | 2003-09-11 | 2008-08-20 | キヤノン株式会社 | Device search method and program |
| JP4307202B2 (en) * | 2003-09-29 | 2009-08-05 | 株式会社日立製作所 | Storage system and storage control device |
| JP4137757B2 (en) * | 2003-10-01 | 2008-08-20 | 株式会社日立製作所 | Network converter and information processing system |
| US20050078704A1 (en) * | 2003-10-14 | 2005-04-14 | International Business Machines Corporation | Method and apparatus for translating data packets from one network protocol to another |
| US20050114464A1 (en) * | 2003-10-27 | 2005-05-26 | Shai Amir | Virtualization switch and method for performing virtualization in the data-path |
| EP1533704A3 (en) * | 2003-11-21 | 2007-03-07 | Hitachi, Ltd. | Read/write protocol for cache control units at switch fabric, managing caches for cluster-type storage |
| US20050138184A1 (en) * | 2003-12-19 | 2005-06-23 | Sanrad Ltd. | Efficient method for sharing data between independent clusters of virtualization switches |
| WO2005066830A1 (en) * | 2004-01-08 | 2005-07-21 | Agency For Science, Technology & Research | A shared storage network system and a method for operating a shared storage network system |
| US20060069884A1 (en) * | 2004-02-27 | 2006-03-30 | Han-Gyoo Kim | Universal network to device bridge chip that enables network directly attached device |
| US7949792B2 (en) * | 2004-02-27 | 2011-05-24 | Cisco Technology, Inc. | Encoding a TCP offload engine within FCP |
| US8996455B2 (en) * | 2004-04-30 | 2015-03-31 | Netapp, Inc. | System and method for configuring a storage network utilizing a multi-protocol storage appliance |
| JP2005339323A (en) * | 2004-05-28 | 2005-12-08 | Hitachi Ltd | Storage system, computer system and interface module |
| JP4646574B2 (en) | 2004-08-30 | 2011-03-09 | 株式会社日立製作所 | Data processing system |
| JP2006127028A (en) * | 2004-10-27 | 2006-05-18 | Hitachi Ltd | Storage system and storage control device |
| US7453904B2 (en) * | 2004-10-29 | 2008-11-18 | Intel Corporation | Cut-through communication protocol translation bridge |
| EP1662369B1 (en) * | 2004-11-30 | 2017-12-06 | Fujitsu Limited | Data storage system and data storage control device |
| US20060165084A1 (en) * | 2005-01-21 | 2006-07-27 | International Business Machines Corporation | RNIC-BASED OFFLOAD OF iSCSI DATA MOVEMENT FUNCTION BY TARGET |
| US9195397B2 (en) | 2005-04-20 | 2015-11-24 | Axxana (Israel) Ltd. | Disaster-proof data recovery |
| EP2395432B1 (en) * | 2005-04-20 | 2013-07-24 | Axxana (Israel) Ltd. | Remote data mirroring system |
| US7657537B1 (en) * | 2005-04-29 | 2010-02-02 | Netapp, Inc. | System and method for specifying batch execution ordering of requests in a storage system cluster |
| JP5057656B2 (en) * | 2005-05-24 | 2012-10-24 | 株式会社日立製作所 | Storage system and storage system operation method |
| US7620981B2 (en) | 2005-05-26 | 2009-11-17 | Charles William Frank | Virtual devices and virtual bus tunnels, modules and methods |
| KR101290413B1 (en) * | 2005-07-17 | 2013-07-26 | 오브시디안 리서치 코포레이션 | A method to extend the physical reach of an infiniband network |
| US8819092B2 (en) | 2005-08-16 | 2014-08-26 | Rateze Remote Mgmt. L.L.C. | Disaggregated resources and access methods |
| US9990133B2 (en) * | 2005-09-12 | 2018-06-05 | Oracle America, Inc. | Storage library client interface system and method |
| US8001267B2 (en) * | 2005-12-15 | 2011-08-16 | International Business Machines Corporation | Apparatus, system, and method for automatically verifying access to a multipathed target at boot time |
| US7882562B2 (en) * | 2005-12-15 | 2011-02-01 | International Business Machines Corporation | Apparatus, system, and method for deploying iSCSI parameters to a diskless computing device |
| US8166166B2 (en) * | 2005-12-15 | 2012-04-24 | International Business Machines Corporation | Apparatus system and method for distributing configuration parameter |
| GB0600417D0 (en) * | 2006-01-10 | 2006-02-15 | Level 5 Networks Inc | Virtualisation support |
| US7643410B2 (en) * | 2006-03-29 | 2010-01-05 | Intel Corporation | Method and apparatus for managing a connection in a connection orientated environment |
| US8621573B2 (en) | 2007-08-28 | 2013-12-31 | Cisco Technology, Inc. | Highly scalable application network appliances with virtualized services |
| US20090234959A1 (en) * | 2008-03-17 | 2009-09-17 | Brocade Communications Systems, Inc. | Proxying multiple initiators as a virtual initiator using identifier ranges |
| WO2011067702A1 (en) * | 2009-12-02 | 2011-06-09 | Axxana (Israel) Ltd. | Distributed intelligent network |
| US8270420B2 (en) * | 2009-12-15 | 2012-09-18 | Hewlett-Packard Development Company, L.P. | iSCSI to FCoE gateway |
| US9015333B2 (en) | 2009-12-18 | 2015-04-21 | Cisco Technology, Inc. | Apparatus and methods for handling network file operations over a fibre channel network |
| US8417867B2 (en) * | 2010-11-17 | 2013-04-09 | Xilinx, Inc. | Multichip module for communications |
| US8554976B2 (en) | 2011-07-08 | 2013-10-08 | Plx Technology, Inc. | Single pipe non-blocking architecture |
| US9461938B2 (en) | 2012-05-22 | 2016-10-04 | International Business Machines Corporation | Large distributed fabric-based switch using virtual switches and virtual controllers |
| US9003220B2 (en) * | 2012-09-07 | 2015-04-07 | National Instruments Corporation | Switch for clock synchronization over a switched fabric |
| US9584632B2 (en) * | 2013-08-28 | 2017-02-28 | Wipro Limited | Systems and methods for multi-protocol translation |
| US10769028B2 (en) | 2013-10-16 | 2020-09-08 | Axxana (Israel) Ltd. | Zero-transaction-loss recovery for database systems |
| US9292225B2 (en) * | 2013-11-15 | 2016-03-22 | Wipro Limited | Methods for frame order control and devices in storage area network |
| CN105934924B (en) * | 2013-12-13 | 2019-06-28 | C系列飞机有限合伙公司 | Apparatus and method for providing network security on mobile platforms |
| US9753936B1 (en) | 2014-12-01 | 2017-09-05 | Amazon Technologies, Inc. | Metering data in distributed storage environments |
| CN105868045A (en) * | 2015-01-21 | 2016-08-17 | 中国移动通信集团陕西有限公司 | Data caching method and apparatus |
| US20160323351A1 (en) | 2015-04-29 | 2016-11-03 | Box, Inc. | Low latency and low defect media file transcoding using optimized storage, retrieval, partitioning, and delivery techniques |
| US10379958B2 (en) | 2015-06-03 | 2019-08-13 | Axxana (Israel) Ltd. | Fast archiving for database systems |
| JP2016225943A (en) * | 2015-06-03 | 2016-12-28 | 富士通株式会社 | Device state recovery system and system device state recovery method |
| US10592326B2 (en) | 2017-03-08 | 2020-03-17 | Axxana (Israel) Ltd. | Method and apparatus for data loss assessment |
| JP2020109781A (en) * | 2018-12-28 | 2020-07-16 | 日本電産株式会社 | Cooling system |
| CN110418218B (en) * | 2019-07-26 | 2021-06-29 | 新华三技术有限公司成都分公司 | Message processing method and device and FCF switching equipment |
| US11382473B2 (en) | 2019-12-11 | 2022-07-12 | Irobot Corporation | Predictive maintenance of mobile cleaning robot |
| US11571813B2 (en) | 2020-02-28 | 2023-02-07 | Irobot Corporation | Systems and methods for managing a semantic map in a mobile robot |
| US11297006B1 (en) * | 2020-06-03 | 2022-04-05 | Cisco Technology, Inc. | Use of virtual lanes to solve credit stall on target ports in FC SAN |
| US11496610B2 (en) * | 2020-06-26 | 2022-11-08 | Verizon Patent And Licensing Inc. | Network management data translation, querying, and discrepancy detection |
| EP4204915A1 (en) | 2020-08-25 | 2023-07-05 | iRobot Corporation | Seasonal recommendations for an autonomous mobile robot |
| US11656628B2 (en) | 2020-09-15 | 2023-05-23 | Irobot Corporation | Learned escape behaviors of a mobile robot |
| US11592573B2 (en) | 2020-09-15 | 2023-02-28 | Irobot Corporation | Particle filters and WiFi robot localization and mapping |
| US11662743B2 (en) | 2020-09-15 | 2023-05-30 | Irobot Corporation | Robot localization and mapping accommodating non-unique landmarks |
| US11467599B2 (en) | 2020-09-15 | 2022-10-11 | Irobot Corporation | Object localization and recognition using fractional occlusion frustum |
| US20220151450A1 (en) | 2020-11-17 | 2022-05-19 | Irobot Corporation | Systems and methods for scheduling mobile robot missions |
| US11662737B2 (en) | 2020-12-28 | 2023-05-30 | Irobot Corporation | Systems and methods for dock placement for an autonomous mobile robot |
| CN113556298B (en) * | 2021-09-18 | 2022-03-01 | 云宏信息科技股份有限公司 | Storage access method, medium and server based on PowerVC |
| CN115242890A (en) * | 2022-06-14 | 2022-10-25 | 深圳市老狗科技有限公司 | A general industrial protocol conversion method based on microcode |
| CN115955518B (en) * | 2022-12-16 | 2024-07-12 | 无锡芯光互连技术研究院有限公司 | Communication conversion method, device and storage medium for communication between master and slave devices |
| US12461528B2 (en) | 2023-08-23 | 2025-11-04 | Irobot Corporation | Cleaning prioritization for mobile cleaning robot |
Family Cites Families (72)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5229990A (en) * | 1990-10-03 | 1993-07-20 | At&T Bell Laboratories | N+K sparing in a telecommunications switching environment |
| US5365526A (en) * | 1992-12-18 | 1994-11-15 | Amdahl Corporation | Trace system for an I/O channel |
| EP0749663B1 (en) * | 1994-03-08 | 1999-12-01 | Excel Switching Corporation | Telecommunications switch with improved redundancy |
| US5436886A (en) * | 1994-07-14 | 1995-07-25 | Northern Telecom Limited | ATM switch in dual switch plane operation |
| CA2162200A1 (en) * | 1994-11-23 | 1996-05-24 | Gagan Lal Choudhury | Efficiently providing multiple grades of service with protection against overloads in shared resources |
| US6427185B1 (en) * | 1995-09-29 | 2002-07-30 | Nortel Networks Limited | Method and apparatus for managing the flow of data within a switching device |
| GB9606834D0 (en) * | 1996-03-30 | 1996-06-05 | Int Computers Ltd | Inter-processor communication |
| JP3419627B2 (en) * | 1996-06-11 | 2003-06-23 | 株式会社日立製作所 | Router device |
| US6185601B1 (en) * | 1996-08-02 | 2001-02-06 | Hewlett-Packard Company | Dynamic load balancing of a network of client and server computers |
| JP2964957B2 (en) * | 1996-08-15 | 1999-10-18 | 日本電気株式会社 | High-speed routing control method |
| US5894481A (en) * | 1996-09-11 | 1999-04-13 | Mcdata Corporation | Fiber channel switch employing distributed queuing |
| US5954799A (en) * | 1996-11-07 | 1999-09-21 | Northern Telecom Limited | Access to telecommunications networks in a multi-service environment by mapping and exchanging control message between CPE adaptors and access server |
| US5905873A (en) * | 1997-01-16 | 1999-05-18 | Advanced Micro Devices, Inc. | System and method of routing communications data with multiple protocols using crossbar switches |
| US6658526B2 (en) * | 1997-03-12 | 2003-12-02 | Storage Technology Corporation | Network attached virtual data storage subsystem |
| US7389312B2 (en) * | 1997-04-28 | 2008-06-17 | Emc Corporation | Mirroring network data to establish virtual storage area network |
| US6101508A (en) * | 1997-08-01 | 2000-08-08 | Hewlett-Packard Company | Clustered file management for network resources |
| US6067545A (en) * | 1997-08-01 | 2000-05-23 | Hewlett-Packard Company | Resource rebalancing in networked computer systems |
| US6023733A (en) * | 1997-10-30 | 2000-02-08 | Cisco Technology, Inc. | Efficient path determination in a routed network |
| US6057863A (en) * | 1997-10-31 | 2000-05-02 | Compaq Computer Corporation | Dual purpose apparatus, method and system for accelerated graphics port and fibre channel arbitrated loop interfaces |
| US5941972A (en) * | 1997-12-31 | 1999-08-24 | Crossroads Systems, Inc. | Storage router and method for providing virtual local storage |
| US6154787A (en) * | 1998-01-21 | 2000-11-28 | Unisys Corporation | Grouping shared resources into one or more pools and automatically re-assigning shared resources from where they are not currently needed to where they are needed |
| US6272534B1 (en) * | 1998-03-04 | 2001-08-07 | Storage Technology Corporation | Method and system for efficiently storing web pages for quick downloading at a remote device |
| US6199146B1 (en) * | 1998-03-12 | 2001-03-06 | International Business Machines Corporation | Storage management system and method for increasing capacity utilization of nonvolatile storage devices using partially filled substitute storage devices for continuing write operations |
| US6157963A (en) * | 1998-03-24 | 2000-12-05 | Lsi Logic Corp. | System controller with plurality of memory queues for prioritized scheduling of I/O requests from priority assigned clients |
| US6209023B1 (en) * | 1998-04-24 | 2001-03-27 | Compaq Computer Corporation | Supporting a SCSI device on a non-SCSI transport medium of a network |
| US6647019B1 (en) * | 1998-04-29 | 2003-11-11 | Pmc-Sierra, Inc. | Packet-switch system |
| US6304578B1 (en) * | 1998-05-01 | 2001-10-16 | Lucent Technologies Inc. | Packet routing and queuing at the headend of shared data channel |
| US6434656B1 (en) * | 1998-05-08 | 2002-08-13 | International Business Machines Corporation | Method for routing I/O data in a multiprocessor system having a non-uniform memory access architecture |
| US6115752A (en) * | 1998-05-21 | 2000-09-05 | Sun Microsystems, Inc. | System and method for server selection for mirrored sites |
| US6195703B1 (en) * | 1998-06-24 | 2001-02-27 | Emc Corporation | Dynamic routing for performance partitioning in a data processing network |
| US6438595B1 (en) * | 1998-06-24 | 2002-08-20 | Emc Corporation | Load balancing using directory services in a data processing system |
| US6260120B1 (en) * | 1998-06-29 | 2001-07-10 | Emc Corporation | Storage mapping and partitioning among multiple host processors in the presence of login state changes and host controller replacement |
| US7165152B2 (en) * | 1998-06-30 | 2007-01-16 | Emc Corporation | Method and apparatus for managing access to storage devices in a storage system with access control |
| US6092178A (en) * | 1998-09-03 | 2000-07-18 | Sun Microsystems, Inc. | System for responding to a resource request |
| US6199112B1 (en) * | 1998-09-23 | 2001-03-06 | Crossroads Systems, Inc. | System and method for resolving fibre channel device addresses on a network using the device's fully qualified domain name |
| US6148414A (en) * | 1998-09-24 | 2000-11-14 | Seek Systems, Inc. | Methods and systems for implementing shared disk array management functions |
| US6212606B1 (en) * | 1998-10-13 | 2001-04-03 | Compaq Computer Corporation | Computer system and method for establishing a standardized shared level for each storage unit |
| US6470013B1 (en) * | 1998-10-13 | 2002-10-22 | Cisco Technology, Inc. | Use of enhanced ethernet link—loop packets to automate configuration of intelligent linecards attached to a router |
| US6621818B1 (en) * | 1998-10-19 | 2003-09-16 | Texas Instruments Incorporated | Ring configuration for network switches |
| US6493750B1 (en) | 1998-10-30 | 2002-12-10 | Agilent Technologies, Inc. | Command forwarding: a method for optimizing I/O latency and throughput in fibre channel client/server/target mass storage architectures |
| US6542961B1 (en) * | 1998-12-22 | 2003-04-01 | Hitachi, Ltd. | Disk storage system including a switch |
| US6400730B1 (en) * | 1999-03-10 | 2002-06-04 | Nishan Systems, Inc. | Method and apparatus for transferring data between IP network devices and SCSI and fibre channel devices over an IP network |
| US6952401B1 (en) * | 1999-03-17 | 2005-10-04 | Broadcom Corporation | Method for load balancing in a network switch |
| IE20000203A1 (en) | 1999-03-25 | 2001-02-21 | Converge Net Technologies Inc | Storage domain management system |
| US6389432B1 (en) * | 1999-04-05 | 2002-05-14 | Auspex Systems, Inc. | Intelligent virtual volume access |
| US6247099B1 (en) * | 1999-06-03 | 2001-06-12 | International Business Machines Corporation | System and method for maintaining cache coherency and data synchronization in a computer system having multiple active controllers |
| US6421723B1 (en) * | 1999-06-11 | 2002-07-16 | Dell Products L.P. | Method and system for establishing a storage area network configuration |
| JP2001014147A (en) | 1999-06-28 | 2001-01-19 | Hitachi Ltd | Setup agency system |
| AU6083200A (en) | 1999-07-16 | 2001-02-05 | Netconvergence, Inc. | A communication system for general connection interface machines |
| JP2001127766A (en) * | 1999-10-25 | 2001-05-11 | Toshiba Corp | Line interface device and packet switch |
| US6687247B1 (en) * | 1999-10-27 | 2004-02-03 | Cisco Technology, Inc. | Architecture for high speed class of service enabled linecard |
| CA2339150C (en) * | 1999-12-30 | 2009-04-28 | Motient Communications Inc. | System and method of transmitting data messages between subscriber units communicating with/between complementary/disparate networks |
| US6542972B2 (en) * | 2000-01-31 | 2003-04-01 | Commvault Systems, Inc. | Logical view and access to physical storage in modular data and storage management system |
| WO2001059966A1 (en) * | 2000-02-08 | 2001-08-16 | Nishan Systems, Inc. | Method and apparatus for transferring data between different network devices over an ip network |
| US20020103889A1 (en) * | 2000-02-11 | 2002-08-01 | Thomas Markson | Virtual storage layer approach for dynamically associating computer storage with processing hosts |
| EP1282861A4 (en) * | 2000-04-18 | 2008-03-05 | Storeage Networking Technologi | Storage virtualization in a storage area network |
| US6574195B2 (en) * | 2000-04-19 | 2003-06-03 | Caspian Networks, Inc. | Micro-flow management |
| US6745207B2 (en) * | 2000-06-02 | 2004-06-01 | Hewlett-Packard Development Company, L.P. | System and method for managing virtual storage |
| USD442585S1 (en) * | 2000-06-15 | 2001-05-22 | Micro Net Technology, Inc. | Disk subsystem for a storage area network |
| US6693906B1 (en) * | 2000-07-17 | 2004-02-17 | Advanced Micro Devices, Inc. | Apparatus and method for buffer-free evaluation of packet data bytes with multiple min terms |
| US6831916B1 (en) * | 2000-09-28 | 2004-12-14 | Balaji Parthasarathy | Host-fabric adapter and method of connecting a host system to a channel-based switched fabric in a data network |
| US7089293B2 (en) * | 2000-11-02 | 2006-08-08 | Sun Microsystems, Inc. | Switching system method for discovering and accessing SCSI devices in response to query |
| US6725393B1 (en) * | 2000-11-06 | 2004-04-20 | Hewlett-Packard Development Company, L.P. | System, machine, and method for maintenance of mirrored datasets through surrogate writes during storage-area network transients |
| US7027412B2 (en) * | 2000-11-10 | 2006-04-11 | Veritas Operating Corporation | System for dynamic provisioning of secure, scalable, and extensible networked computer environments |
| US6880070B2 (en) * | 2000-12-08 | 2005-04-12 | Finisar Corporation | Synchronous network traffic processor |
| US6907457B2 (en) * | 2001-01-25 | 2005-06-14 | Dell Inc. | Architecture for access to embedded files using a SAN intermediate device |
| JP2002222061A (en) * | 2001-01-25 | 2002-08-09 | Hitachi Ltd | Method of setting storage area, storage device, and program storage medium |
| JP4457184B2 (en) * | 2001-02-13 | 2010-04-28 | ネットアップ,インコーポレイテッド | Failover processing in the storage system |
| US20020133539A1 (en) * | 2001-03-14 | 2002-09-19 | Imation Corp. | Dynamic logical storage volumes |
| US20020194324A1 (en) * | 2001-04-26 | 2002-12-19 | Aloke Guha | System for global and local data resource management for service guarantees |
| US20030074473A1 (en) * | 2001-10-12 | 2003-04-17 | Duc Pham | Scalable network gateway processor architecture |
| US7200144B2 (en) * | 2001-10-18 | 2007-04-03 | Qlogic, Corp. | Router and methods using network addresses for virtualization |
-
2002
- 2002-01-18 US US10/051,415 patent/US7404000B2/en not_active Expired - Lifetime
- 2002-09-27 WO PCT/US2002/030912 patent/WO2003027877A2/en not_active Ceased
- 2002-09-27 JP JP2003531344A patent/JP2005505037A/en active Pending
- 2002-09-27 EP EP02766398A patent/EP1438671A4/en not_active Withdrawn
Also Published As
| Publication number | Publication date |
|---|---|
| WO2003027877A3 (en) | 2003-05-22 |
| EP1438671A4 (en) | 2007-05-02 |
| US20030093541A1 (en) | 2003-05-15 |
| JP2005505037A (en) | 2005-02-17 |
| US7404000B2 (en) | 2008-07-22 |
| WO2003027877A2 (en) | 2003-04-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7404000B2 (en) | Protocol translation in a storage system | |
| US7185062B2 (en) | Switch-based storage services | |
| US7864758B1 (en) | Virtualization in a storage system | |
| US7558264B1 (en) | Packet classification in a storage system | |
| US7707304B1 (en) | Storage switch for storage area network | |
| US7529781B2 (en) | Online initial mirror synchronization and mirror synchronization verification in storage area networks | |
| US8171170B2 (en) | Storage switch task processing synchronization | |
| US7373472B2 (en) | Storage switch asynchronous replication | |
| US7617365B2 (en) | Systems and methods to avoid deadlock and guarantee mirror consistency during online mirror synchronization and verification | |
| US7516214B2 (en) | Rules engine for managing virtual logical units in a storage network | |
| US7484058B2 (en) | Reactive deadlock management in storage area networks | |
| US7818475B2 (en) | Storage switch mirrored write sequence count management | |
| US20050138184A1 (en) | Efficient method for sharing data between independent clusters of virtualization switches | |
| US20060047850A1 (en) | Multi-chassis, multi-path storage solutions in storage area networks | |
| EP1438808A2 (en) | Packet classification in a storage system | |
| US20050262309A1 (en) | Proactive transfer ready resource management in storage area networks | |
| Ortenberg et al. | Overview of Storage Networking and Storage Networks |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
| 17P | Request for examination filed |
Effective date: 20040428 |
|
| AK | Designated contracting states |
Kind code of ref document: A2 Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR IE IT LI LU MC NL PT SE SK TR |
|
| AX | Request for extension of the european patent |
Extension state: AL LT LV MK RO SI |
|
| RAP1 | Party data changed (applicant data changed or rights of an application transferred) |
Owner name: EMC CORPORATION |
|
| A4 | Supplementary search report drawn up and despatched |
Effective date: 20070404 |
|
| RIC1 | Information provided on ipc code assigned before grant |
Ipc: H04L 29/06 20060101ALI20070329BHEP Ipc: H04J 3/16 20060101ALI20070329BHEP Ipc: H04L 12/56 20060101ALI20070329BHEP Ipc: G06F 15/177 20060101ALI20070329BHEP Ipc: G06F 9/00 20060101ALI20070329BHEP Ipc: G06F 15/16 20060101AFI20030405BHEP |
|
| 17Q | First examination report despatched |
Effective date: 20080218 |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION HAS BEEN WITHDRAWN |
|
| 18W | Application withdrawn |
Effective date: 20080402 |