Router with routing processors and methods for virtualization
First Claim
41. A method performed by a router for routing frames in a network, the router comprising a plurality of routing processors, each routing processor 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 a frame from the network;
a step for preparing a flow lookup in accordance with at least a portion of the frame;
a step for obtaining from a memory circuit a first result of the flow lookup;
a step for preparing a second lookup in accordance with the first result;
a step for obtaining from the memory circuit a second result of the second lookup; and
a step for routing the frame to the network in accordance with at least a portion of the second result.
16 Assignments
0 Petitions
Accused Products
Abstract
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.
-
Citations
121 Claims
-
41. A method performed by a router for routing frames in a network, the router comprising a plurality of routing processors, each routing processor 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 a frame from the network;
a step for preparing a flow lookup in accordance with at least a portion of the frame;
a step for obtaining from a memory circuit a first result of the flow lookup;
a step for preparing a second lookup in accordance with the first result;
a step for obtaining from the memory circuit a second result of the second lookup; and
a step for routing the frame to the network in accordance with at least a portion of the second result. - View Dependent Claims (42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52)
-
-
53. A method performed by a router for routing frames in a network, the router comprising a plurality of routing processors, each routing processor 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 a request from the network, the request comprising a virtual transaction identifier;
a step for recalling a first tuple comprising the virtual transaction identifier, a flow identifier, and an output port identifier;
a step for recalling a second tuple comprising the virtual transaction identifier and a resource identifier;
a step for routing the request in accordance with the output port identifier and the resource identifier. - View Dependent Claims (54)
-
-
55. A method performed by a router for routing frames in a network, the router comprising a plurality of routing processors, each routing processor for receiving frames from the network, and for routing frames to the network, the method performed by each routing processor comprising:
-
a step for receiving a first frame from the network;
a step for parsing the first frame to determine a transaction identifier and a resource identifier;
a step for receiving a second frame after the first frame has been routed to the network;
a step for parsing the second frame to determine the transaction identifier;
a step for preparing a flow lookup in accordance with the transaction identifier;
a step for obtaining from a memory circuit a first result of the flow lookup;
a step for preparing a subflow lookup in accordance with the first result;
a step for obtaining from the memory circuit a second result of the subflow lookup, the second result comprising the resource identifier; and
a step for routing to the network at least the payload of the second frame in accordance with the resource identifier of the second result. - View Dependent Claims (56)
-
-
57. A method performed by a router for routing frames in a network, the router comprising a plurality of routing processors, each routing processor for receiving frames from the network, and for routing frames to the network, the method performed by each routing processor comprising:
-
a step for receiving a first frame from the network;
a step for parsing the first frame to determine a transaction identifier and a resource identifier;
a step for storing the resource identifier in association with the transaction identifier;
a step for receiving a second frame after the first frame has been routed to the network;
a step for parsing the second frame to determine the transaction identifier;
a step for recalling the resource identifier in accordance with the transaction identifier; and
a step for routing to the network the second frame in accordance with the recalled resource identifier. - View Dependent Claims (58, 59, 60, 61, 62)
-
-
63. A method performed by a router for routing frames in a network, the router comprising a plurality of routing processors, each routing processor for receiving frames from the network, and for routing frames to the network, the method performed by each routing processor comprising:
-
a step for receiving a first frame from the network, the first frame comprising a virtual transaction identifier;
a step for determining that the first frame is part of a virtual transaction;
a step for assigning and storing a nonvirtual transaction identifier in association with the virtual transaction identifier;
a step for receiving a second frame from the network;
a step for determining that the second frame is part of the virtual transaction; and
a step for routing at least a payload of the second frame in association with the nonvirtual transaction identifier. - View Dependent Claims (64, 65, 66, 67)
-
-
68. A method performed by a router for routing frames in a network, the router comprising a plurality of routing processors, each routing processor 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 a request from the network, the request comprising a virtual transaction identifier;
a step for assigning and storing a tuple comprising the virtual transaction identifier and a nonvirtual transaction identifier;
a step for receiving a second request from the network, the second request comprising the virtual transaction identifier;
a step for recalling the nonvirtual transaction identifier of the tuple; and
a step for routing the second request in accordance with the nonvirtual transaction identifier. - View Dependent Claims (69)
-
-
70. A method performed by a router for routing frames in a network, the router comprising a memory circuit, a plurality of port logic circuits, and a fabric;
- each port logic circuit comprising a frame processor and a cross reference circuit, each port logic circuit having access to the memory, each port logic circuit for receiving frames from the network, for routing frames to the network, and for routing frames to other port logic circuits of the plurality via the fabric, the method comprising;
a step for receiving at a first port logic circuit a first frame from the network, the first frame comprising a virtual transaction identifier;
a step for determining at the first port logic circuit with reference to the memory that the first frame is part of a virtual transaction;
a step for assigning and storing at the first port logic circuit a nonvirtual transaction identifier in association with the virtual transaction identifier in the cross reference circuit of the first port logic circuit;
a step for routing to the network at least a payload of the first frame;
a step for receiving at a second port logic circuit a second frame from the network;
a step for determining at the second port logic circuit with reference to the memory that the second frame is part of the virtual transaction;
a step for determining at the second port logic circuit that the association is not stored in the cross reference circuit of the second port logic circuit;
a step for routing at least a payload of the second frame to the first port logic circuit via the fabric; and
a step for routing to the network at the first port logic circuit the payload of the second frame. - View Dependent Claims (71)
- each port logic circuit comprising a frame processor and a cross reference circuit, each port logic circuit having access to the memory, each port logic circuit for receiving frames from the network, for routing frames to the network, and for routing frames to other port logic circuits of the plurality via the fabric, the method comprising;
-
72. A method performed by a router for routing frames in a network, the router comprising a parser for preparing lookups, a memory circuit having routing information, a submitter for arbitrating among a plurality of queues to submit a lookup to the memory circuit, a frame processor for analyzing results of lookups, the method comprising:
-
a step for parsing a frame received from the network;
a step for enqueueing into a first queue to the submitter a first lookup in accordance with a field value of the frame;
a step for passing to the frame processor a first result of the first lookup to be analyzed;
a step for enqueueing into a second queue to the submitter a second lookup in accordance with a result of analysis;
a step for recirculating an entry enqueued into the second queue to delay routing; and
a step for routing at least a payload of the frame in accordance with a second result of the second lookup.
-
-
73. A method performed by a router for routing frames in a network, the router comprising a memory circuit, a plurality of port logic circuits, and a fabric;
- each port logic circuit comprising a frame processor, and a cross reference circuit;
each port logic circuit having access to the memory;
each port logic circuit for receiving frames from the network, for routing frames to the network, and for routing frames to other port logic circuits of the plurality via the fabric;
the method comprising;
a step for receiving at a first port logic circuit a first frame from the network, the first frame comprising a virtual transaction identifier;
a step for determining at the first port logic circuit with reference to the memory that the first frame is part of a virtual transaction;
a step for assigning and storing at the first port logic circuit a nonvirtual transaction identifier in association with the virtual transaction identifier in the cross reference circuit of the first port logic circuit;
a step for routing to the network at least a payload of the first frame;
a step for receiving at a second port logic circuit a second frame from the network;
a step for determining at the second port logic circuit with reference to the memory that the second frame is part of the virtual transaction;
a step for determining at the second port logic circuit that the association is not stored in the cross reference circuit of the second port logic circuit;
a step for routing at least a payload of the second frame and a fabric frame header to the first port logic circuit via the fabric;
a step for preparing a third frame at the first port logic circuit in accordance with the payload of the second frame and the fabric frame header; and
a step for routing the third frame to the network from the first port logic circuit. - View Dependent Claims (74, 75)
- each port logic circuit comprising a frame processor, and a cross reference circuit;
-
76. A method performed by a router for routing frames in a network, the router comprising a memory circuit, a plurality of port logic circuits, and a fabric;
- each port logic circuit comprising an ingress buffer, an egress buffer, a frame processor, and a cross reference circuit;
each port logic circuit having access to the memory;
each port logic circuit for receiving frames from the network, for routing frames to the network, and for routing frames to other port logic circuits of the plurality via the fabric;
the method comprising;
a step for receiving at the ingress buffer of a first port logic circuit a first frame from the network, the first frame comprising a virtual transaction identifier;
a step for determining at the first port logic circuit with reference to the memory that the first frame is part of a virtual transaction;
a step for assigning and storing at the first port logic circuit a nonvirtual transaction identifier in association with the virtual transaction identifier in the cross reference circuit of the first port logic circuit;
a step for routing to the network at least a payload of the first frame;
a step for receiving at a second port logic circuit a second frame from the network;
a step for determining at the second port logic circuit with reference to the memory that the second frame is part of the virtual transaction;
a step for determining at the second port logic circuit whether the association is stored in the cross reference circuit of the second port logic circuit; and
if not;
a step for routing at least a payload of the second frame and a fabric frame header to the first port logic circuit via the fabric;
a step for preparing a third frame in the egress buffer of the first port logic circuit in accordance with the payload of the second frame, the fabric frame header, and the nonvirtual transaction identifier; and
a step for routing the third frame to the network from the first port logic circuit;
otherwise;
a step for preparing a fourth frame in the ingress buffer of the first port logic circuit in accordance with the payload of the second frame, and the nonvirtual transaction identifier; and
a step for routing the fourth frame to the network from the first port logic circuit. - View Dependent Claims (77)
- each port logic circuit comprising an ingress buffer, an egress buffer, a frame processor, and a cross reference circuit;
-
78. A method performed by a router for routing frames in a network, the router comprising a memory circuit and a plurality of routing processors, each routing processor 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 a first frame from the network, the first frame comprising a first logical block address;
a step for determining whether the first frame is a data frame referring to a virtual resource;
a step for determining whether the payload crosses a page boundary of a nonvirtual resource corresponding to the virtual resource; and
if nota step for preparing a second frame comprising a nonvirtual resource identifier corresponding to the virtual resource and a nonvirtual logical block address corresponding to the first logical block address. - View Dependent Claims (79)
-
-
80. A router for routing frames in a network, the router comprising a plurality of routing processors, each routing processor for receiving frames from the network, and for routing frames to the network, each routing processor comprising:
-
means for receiving a frame from the network;
means for preparing a flow lookup in accordance with at least a portion of the frame;
means for obtaining from a means for storing a first result of the flow lookup;
means for preparing a second lookup in accordance with the first result;
means for obtaining from the means for storing a second result of the second lookup; and
means for routing the frame to the network in accordance with at least a portion of the second result. - View Dependent Claims (81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91)
-
-
92. A router for routing frames in a network, the router comprising a plurality of routing processors, each routing processor for receiving frames from the network, and for routing frames to the network, each routing processor comprising:
-
means for receiving a request from the network, the request comprising a virtual transaction identifier;
means for recalling a first tuple comprising the virtual transaction identifier, a flow identifier, and an output port identifier;
means for recalling a second tuple comprising the virtual transaction identifier and a resource identifier;
means for routing the request in accordance with the output port identifier and the resource identifier. - View Dependent Claims (93)
-
-
94. A router for routing frames in a network, the router comprising a plurality of routing processors, each routing processor for receiving frames from the network, and for routing frames to the network, each routing processor comprising:
-
means for receiving a first frame from the network;
means for parsing the first frame to determine a transaction identifier and a resource identifier;
means for receiving a second frame after the first frame has been routed to the network;
means for parsing the second frame to determine the transaction identifier;
means for preparing a flow lookup in accordance with the transaction identifier;
means for obtaining from a memory circuit a first result of the flow lookup;
means for preparing a subflow lookup in accordance with the first result;
means for obtaining from the memory circuit a second result of the subflow lookup, the second result comprising the resource identifier; and
means for routing to the network at least the payload of the second frame in accordance with the resource identifier of the second result. - View Dependent Claims (95)
-
-
96. A router for routing frames in a network, the router comprising a plurality of routing processors, each routing processor for receiving frames from the network, and for routing frames to the network, each routing processor comprising:
-
means for receiving a first frame from the network;
means for parsing the first frame to determine a transaction identifier and a resource identifier;
means for storing the resource identifier in association with the transaction identifier;
means for receiving a second frame after the first frame has been routed to the network;
means for parsing the second frame to determine the transaction identifier;
means for recalling the resource identifier in accordance with the transaction identifier; and
means for routing to the network the second frame in accordance with the recalled resource identifier. - View Dependent Claims (97, 98, 99, 100, 101)
-
-
102. A router for routing frames in a network, the router comprising a plurality of routing processors, each routing processor for receiving frames from the network, and for routing frames to the network, each routing processor comprising:
-
means for receiving a first frame from the network, the first frame comprising a virtual transaction identifier;
means for determining that the first frame is part of a virtual transaction;
means for assigning and storing a nonvirtual transaction identifier in association with the virtual transaction identifier;
means for receiving a second frame from the network;
means for determining that the second frame is part of the virtual transaction; and
means for routing at least a payload of the second frame in association with the nonvirtual transaction identifier. - View Dependent Claims (103, 104, 105, 106)
-
-
107. A router for routing frames in a network, the router comprising a plurality of routing processors, each routing processor for receiving frames from the network, and for routing frames to the network, each routing processor of the plurality, the router comprising:
-
means for receiving a request from the network, the request comprising a virtual transaction identifier;
means for assigning and storing a tuple comprising the virtual transaction identifier and a nonvirtual transaction identifier;
means for receiving a second request from the network, the second request comprising the virtual transaction identifier;
means for recalling the nonvirtual transaction identifier of the tuple; and
means for routing the second request in accordance with the nonvirtual transaction identifier. - View Dependent Claims (108)
-
-
109. A router for routing frames in a network, the router comprising:
-
a memory circuit;
a fabric;
a plurality of port logic circuits, wherein;
(1) each port logic circuit comprises a frame processor and a cross reference circuit;
(2) each port logic circuit has access to the memory; and
(3) each port logic circuit receives frames from the network, routes frames to the network, and routes frames to other port logic circuits of the plurality via the fabric;
means for receiving at a first port logic circuit of the plurality a first frame from the network, the first frame comprising a virtual transaction identifier;
means for determining at the first port logic circuit with reference to the memory that the first frame is part of a virtual transaction;
means for assigning and storing at the first port logic circuit a nonvirtual transaction identifier in association with the virtual transaction identifier in the cross reference circuit of the first port logic circuit;
means for routing to the network at least a payload of the first frame;
means for receiving at a second port logic circuit of the plurality a second frame from the network;
means for determining at the second port logic circuit with reference to the memory that the second frame is part of the virtual transaction;
means for determining at the second port logic circuit that the association is not stored in the cross reference circuit of the second port logic circuit;
means for routing at least a payload of the second frame to the first port logic circuit via the fabric; and
means for routing to the network at the first port logic circuit the payload of the second frame. - View Dependent Claims (110)
-
-
111. A router for routing frames in a network, the router comprising:
-
a parser for parsing a frame received from the network and for preparing lookups;
a memory circuit having routing information;
a submitter for arbitrating among a plurality of queues to submit a lookup to the memory circuit;
a frame processor for analyzing results of lookups means for enqueueing into a first queue to the submitter a first lookup in accordance with a field value of the frame;
means for passing to the frame processor a first result of the first lookup to be analyzed;
means for enqueueing into a second queue to the submitter a second lookup in accordance with a result of analysis;
means for recirculating an entry enqueued into the second queue to delay routing; and
means for routing at least a payload of the frame in accordance with a second result of the second lookup. - View Dependent Claims (112, 113, 114)
-
-
115. A router for routing frames in a network, the router comprising:
-
a memory circuit;
a fabric; and
a plurality of port logic circuits wherein;
(1) each port logic circuit comprises a frame processor and a cross reference circuit;
(2) each port logic circuit has access to the memory; and
(3) each port logic circuit receives frames from the network, routes frames to the network, and routes frames to other port logic circuits of the plurality via the fabric;
means for receiving at a first port logic circuit of the plurality a first frame from the network, the first frame comprising a virtual transaction identifier;
means for determining at the first port logic circuit with reference to the memory that the first frame is part of a virtual transaction;
means for assigning and storing at the first port logic circuit a nonvirtual transaction identifier in association with the virtual transaction identifier in the cross reference circuit of the first port logic circuit;
means for routing to the network at least a payload of the first frame;
means for receiving at a second port logic circuit of the plurality a second frame from the network;
means for determining at the second port logic circuit with reference to the memory that the second frame is part of the virtual transaction;
means for determining at the second port logic circuit that the association is not stored in the cross reference circuit of the second port logic circuit;
means for routing at least a payload of the second frame and a fabric frame header to the first port logic circuit via the fabric;
means for preparing a third frame at the first port logic circuit in accordance with the payload of the second frame and the fabric frame header; and
means for routing the third frame to the network from the first port logic circuit. - View Dependent Claims (116, 117)
-
-
118. A router for routing frames in a network, the router comprising:
-
a memory circuit;
a fabric;
a plurality of port logic circuits wherein;
(1) each port logic circuit comprises an ingress buffer, an egress buffer, a frame processor, and a cross reference circuit;
(2) each port logic circuit has access to the memory; and
(3) each port logic circuit receives frames from the network, routes frames to the network, and routes frames to other port logic circuits of the plurality via the fabric;
means for receiving at the ingress buffer of a first port logic circuit of the plurality a first frame from the network, the first frame comprising a virtual transaction identifier;
means for determining at the first port logic circuit with reference to the memory that the first frame is part of a virtual transaction;
means for assigning and storing at the first port logic circuit a nonvirtual transaction identifier in association with the virtual transaction identifier in the cross reference circuit of the first port logic circuit;
means for routing to the network at least a payload of the first frame;
means for receiving at a second port logic circuit of the plurality a second frame from the network;
means for determining at the second port logic circuit with reference to the memory that the second frame is part of the virtual transaction;
first means for determining at the second port logic circuit whether the association is stored locally in the cross reference circuit of the second port logic circuit;
means for routing at least a payload of the second frame and a fabric frame header to the first port logic circuit via the fabric when the first means determines that the association is not stored locally;
means for preparing a third frame in the egress buffer of the first port logic circuit in accordance with the payload of the second frame, the fabric frame header, and the nonvirtual transaction identifier;
means for routing the third frame to the network from the first port logic circuit;
means for preparing a fourth frame in the ingress buffer of the first port logic circuit in accordance with the payload of the second frame, and the nonvirtual transaction identifier when the first means determines that the association is stored locally; and
means for routing the fourth frame to the network from the first port logic circuit. - View Dependent Claims (119)
-
-
120. A router for routing frames in a network, the router comprising:
-
a memory circuit; and
a plurality of routing processors, wherein each routing processor receives frames from the network and routes frames to the network; and
wherein each routing processor comprises;
(1) means for receiving a first frame from the network, the first frame comprising a first logical block address;
(2) means for determining whether the first frame is a data frame referring to a virtual resource;
(3) first means for determining whether the payload does not cross a page boundary of a nonvirtual resource corresponding to the virtual resource; and
(4) means for preparing a second frame comprising a nonvirtual resource identifier corresponding to the virtual resource and a nonvirtual logical block address corresponding to the first logical block address when the first means determines that the payload does not cross the page boundary. - View Dependent Claims (121)
-
Specification