Router and methods using in-band link between managing processor and routing processor
OwnerWilliam C. Terrell, Tracy Edmonds +8inventors
InventorsWilliam C. Terrell, Tracy Edmonds, Wayland Jeong, Eric Russell Peterson, Jean Kodama, Harun Muliadi, Norman Chan, Rexford Hill, Michael Nishimura, Stephen How
A router for use in a network includes a scalable architecture and performs methods for implementing quality of service on a logical unit behind a network port; and for implementing storage virtualization. The architecture includes a managing processor, a supervising processor; and a plurality of routing processors coupled to a fabric. The managing processor has an in-band link to a routing processor. A routing processor receives a frame from the network, determines by parsing the frame, the protocol and logical unit number, and routes the frame to a queue according to a traffic class associated with the logical unit number in routing information prepared for the processors. An arbitration scheme empties the queue in accordance with a deficit round robin technique. If a routing processor detects the frame's destination is a virtual entity, and so is part of a virtual transaction, the router conducts a nonvirtual transaction in concert with the virtual transaction. The nonvirtual transaction accomplishes the intent of the virtual transaction but operates on an actual network port, for example, a storage device.
Drawings
Claims40
A method performed by a router for routing frames in a network, the router comprising a managing processor for performing a proxy process;
a plurality of routing processors coupled by a fabric for routing frames to another routing processor of the plurality via the fabric;
each routing processor comprising ports for receiving frames from the network and for routing frames to the network;
the method comprising:
a step for receiving at a first routing processor a first frame from the network;
a step for determining at the first routing processor that the first frame is part of a virtual control transaction;
a step for routing at least a portion of the virtual control transaction from the first routing processor to a second routing processor via the fabric;
a step for routing the portion of the virtual control transaction from the second routing processor to the proxy process via a link, the managing processor being coupled by the link to a port of the second routing processor;
a step for receiving at the first routing processor a second frame from the network;
a step for determining at the first routing processor that the second frame is part of a data transaction;
a step for routing at least a portion of the data transaction from the first routing processor to a nonvirtual destination without cooperation of the proxy.
7 more elements
A method performed by a router for routing frames in a network, the router comprising a managing processor for performing a proxy process;
a plurality of routing processors coupled by a fabric;
each routing processor having a plurality of ports for receiving frames from the network and for routing frames to the network, the method performed by each routing processor of the plurality, the method comprising:
a step for receiving at a first routing processor a first frame from the network;
a step for determining at the first routing processor that the first frame is part of a virtual data transaction that refers to a page having a boundary;
a step for determining at the first routing processor whether data of the virtual data transaction crosses the boundary;
and
if it is determined that data crosses, a step for routing at least a portion of the virtual data transaction to the proxy via the fabric and via a link, the managing processor coupled via the link to a port of a second routing processor.
4 more elements
A method performed by a router for routing frames in a network the router comprising a managing processor for performing a proxy process;
a plurality of routing processors coupled by a fabric;
each routing processor having a plurality of ports for receiving frames from the network and for routing frames to the network, the method comprising:
a step for receiving at the managing processor from an administrating processor via a link routing information comprising a first network port identifier and a second network port identifier, the managing processor being coupled to a port of a first routing processor of the plurality via the link;
a step for receiving at a second routing processor from the managing processor the first network port identifier and the second network port identifier;
a step for routing a frame of a virtual control transaction from the second routing processor to the managing processor via the link in accordance with the first network port identifier;
and
a step for routing a frame of a virtual data transaction comprising the first network port identifier from the second routing processor to a nonvirtual entity via the network in accordance with the second network port identifier.
4 more elements
A method performed by a router for routing frames in a network the router comprising a managing processor;
and a plurality of routing processors coupled by a fabric;
each routing processor having a plurality of ports for receiving frames from the network and for routing frames to the network, method comprising:
a step for receiving a first frame at a first routing processor of the plurality from the network;
a first step for routing at least a portion of the first frame from the first routing processor to the network;
a second step for routing at least a portion of the first frame from the first routing processor to the managing processor via the fabric, a second routing processor of the plurality, and a link, the managing processor being coupled by the link to a port of the second routing processor.
2 more elements
A method performed by a router for routing frames in a network the router comprising a managing processor;
and a plurality of routing processors coupled by a fabric;
each routing processor having a plurality of ports for receiving frames from the network and for routing frames to the network, method comprising:
a step for receiving a first frame at a first routing processor of the plurality from the network;
a step for accumulating at the first routing processor a count in accordance with receiving the first frame;
a step for routing the count from the first routing processor to the managing processor via the fabric, a second routing processor of the plurality, and a link, the managing processor being coupled by the link to a port of the second routing processor.
2 more elements
A router for routing frames in a network, the router comprising:
means for performing a proxy process;
a plurality of routing means for receiving frames from the network and for routing frames to the network, each routing means comprising ports;
distributing means for routing frames between routing means of the plurality;
means for receiving at a first routing means a first frame from the network;
means for determining at the first routing means that the first frame is part of a virtual control transaction;
means for routing at least a portion of the virtual control transaction from the first routing means to a second routing means via the distributing means;
means for routing the portion of the virtual control transaction from the second routing means to the proxy process via a link, the managing means being coupled by the link to a port of the second routing means;
means for receiving at the first routing means a second frame from the network;
means for determining at the first routing means that the second frame is part of a data transaction;
and
means for routing at least a portion of the data transaction from the first routing means to a nonvirtual destination without cooperation of the proxy process.
8 more elements
A router for routing frames in a network, the router comprising:
a managing means for performing a proxy process;
a plurality of routing means for receiving frames from the network and for routing frames to the network, each routing means having a plurality of ports;
distributing means for routing frames between routing means of the plurality;
means for receiving at a first routing means a first frame from the network;
means for determining at the first routing means that the first frame is part of a virtual data transaction that refers to a page having a boundary;
means for determining at the first routing means whether data of the virtual data transaction crosses the boundary;
and
means for routing, responsive to a determination that data crosses, at least a portion of the virtual data transaction to the proxy via the distributing means and via a link, the managing means coupled via the link to a port of a second routing means.
5 more elements
A router for routing frames in a network the router comprising:
a managing means for performing a proxy process;
a plurality of routing means for receiving frames from the network and for routing frames to the network, each routing means having a plurality of ports;
a distributing means for routing frames between routing means of the plurality;
means for receiving at the managing means from an administrating means via a link routing information comprising a first network port identifier and a second network port identifier, the managing means being coupled to a port of a first routing means of the plurality via the link;
means for receiving at a second routing means from the managing means the first network port identifier and the second network port identifier;
means for routing a frame of a virtual control transaction from the second routing means to the managing means via the link in accordance with the first network port identifier;
and
means for routing a frame of a virtual data transaction comprising the first network port identifier from the second routing means to a nonvirtual entity via the network in accordance with the second network port identifier.
5 more elements
A router for routing frames in a network, the router comprising:
a managing means for receiving a payload of a virtual control frame and for forming a corresponding nonvirtual control frame;
a plurality of routing means for receiving frames from the network and for routing frames to the network, each routing means having a plurality of ports;
the plurality comprising:
a first routing means for receiving the virtual control frame from the network;
and
a second routing means;
distributing means for routing frames between routing means of the plurality, the payload of the virtual control frame being routed by the distributing means from the first routing means to the second routing means;
wherein the managing means receives the payload from the second routing means via a link to a port of the second routing means and sends the nonvirtual control frame to the second routing means via the link;
and wherein the second routing means routes a payload of the nonvirtual control frame.
#This application is a divisional patent application of and claims priority to U.S. patent application Ser. No. 10/120,266, filed on Oct. 18, 2001, by William C. Terrell, et al.
#Embodiments of the present invention relate to improved networks having routers that perform routing functions and to methods for routing network traffic.
#In a conventional network, data is transferred between computers and peripherals to accomplish the data processing demands of the computers and peripherals. Demands for data to be transferred via the network may arise in any particular computer or peripheral in a manner unsynchronized with demands that arise on other computers and peripherals of the network. Data transfer to accomplish delivery is generally between respective ports of the computers and peripherals and may pass through switches having ports as well. Such switches have numerous ports and generally retransmit data (also called routing network traffic) from one port to another according to address information associated with the data to be transferred. A pair of ports communicate via a link between the ports.
Brief description of the drawings18 figures
#Embodiments of the present invention will now be further described with reference to the drawing, wherein like designations denote like elements, and:
#FIG. 1 is a functional block diagram of a system according to various aspects of the present invention;
#FIG. 2 is a data flow diagram of processes in the system of FIG. 1;
Detailed description38,106 words
#A system according to various aspects of the present invention may include any computing environment supporting transfer of data among computer systems via a communication network. Such a system, in one implementation, provides more efficient non-blocking delivery of data, improved utilization of bandwidth, a facility for managing network traffic flows, subflows, and virtual flows, and higher quality of service. Data may be transferred between application programs being executed by one or more of the computer systems, between an application program and a data storage device, or between one or more data storage devices.
#The network may be understood as a graph or a tree having network nodes. A communication network of the present invention includes at least one computer system at each of several network nodes. Each network node is coupled by a link from time to time for communication with other network nodes. Each link includes conventional computer communication technology at the physical layer and primitive layers of the type including, for example, local area, wide area, dedicated telephone, wireless, and satellite services and including conventional data communication hardware and software at each network node. The popular computer networks known as storage area networks, intranets, the Internet, the World Wide Web, and the National Information Infrastructure are examples of communication networks in which various aspects of the present invention may be practiced. Network nodes are generally at physically separate locations and are generally suitably identified, for example, by a node name, node identifier, node address, a world wide identifier (WWPN), a uniform resource locator (URL), a name from a domain name system (DNS), or an Internet Protocol address (IP).
#Data transfer at the lowest level occurs via a link between ports, nominally a requesting port and a participating port, where a requesting port requests a data transfer and the participating port either supplies the data (e.g., a read) or receives the data being transferred (e.g., a write). A port includes a physical implementation for common signaling between ports (e.g., any circuitry suitable for the transfer media); and a logical implementation (e.g., any combination of firmware and software). Cooperation between ports occurs in accordance with a physical protocol (e.g., signals and their characteristics) and a logical protocol (e.g., one or more layers of application program interfaces). The physical and logical implementations and protocols together constitute a port by which other software can manage, among other things, how to obtain the data to be supplied to the port and what to do with the data obtained from the port. A port may communicate using several protocols. Frames according to a first protocol may be encapsulated (i.e., become the payload) in frames according to another protocol. Ports of a router according to various aspects of the present invention may support, for example, combinations of Fibre Channel (FC) Protocol (FCP), Internet Protocol (IP), based IEEE 802.3 Ethernet protocol, Small Computer Systems Interface (SCSI) Parallel Interface, Serial Bus Protocol, IEEE 1384 (Fire wire), SSA SCSI-3 Protocol, Scheduled Transfer, and Virtual Interface (VI).