Router with routing processors and methods for virtualization
First Claim
1. A method performed by a router for routing virtual and non-virtual 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) a step for receiving a frame from the network;
(b) a step for preparing a flow lookup in accordance with at least a portion of the frame;
(c) a step for obtaining from a memory circuit a first result of the flow lookup and if the flow look up is incomplete, the frame is passed to a supervising processor that specifies a route or discards the frame;
(d) a step for preparing a second lookup in accordance with the first result and if a sub flow flag is set;
(e) a step for obtaining from the memory circuit a second result of the second lookup;
(f) a step for determining if a context for the frame is available at a location other than where the frame is received;
(g) a step for building a forward frame, based on the first result and the second result, for processing by another processor at the other location where the context is available for the frame;
(h) a step for marking the forward frame for handling by the other processor;
(i) a step for determining if a context for the frame is available at the processor receiving the frame and if the context is unavailable at the received location or another location as determined in step (f), then building a context for routing the frame; and
(j) 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.
211 Citations
43 Claims
-
1. A method performed by a router for routing virtual and non-virtual 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) a step for receiving a frame from the network;
(b) a step for preparing a flow lookup in accordance with at least a portion of the frame;
(c) a step for obtaining from a memory circuit a first result of the flow lookup and if the flow look up is incomplete, the frame is passed to a supervising processor that specifies a route or discards the frame;
(d) a step for preparing a second lookup in accordance with the first result and if a sub flow flag is set;
(e) a step for obtaining from the memory circuit a second result of the second lookup;
(f) a step for determining if a context for the frame is available at a location other than where the frame is received;
(g) a step for building a forward frame, based on the first result and the second result, for processing by another processor at the other location where the context is available for the frame;
(h) a step for marking the forward frame for handling by the other processor;
(i) a step for determining if a context for the frame is available at the processor receiving the frame and if the context is unavailable at the received location or another location as determined in step (f), then building a context for routing the frame; and
(j) a step for routing the frame to the network in accordance with at least a portion of the second result. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
- (a) a step for receiving a frame from the network;
-
13. A method performed by a router for routing virtual and non-virtual 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) a step for receiving a first frame from the network;
(b) a step for parsing the first frame to determine a transaction identifier and a resource identifier;
(c) a step for receiving a second frame after the first frame has been routed to the network;
(d) astep for parsing the second frame to determine the transaction identifier;
(e) a step for preparing a flow lookup in accordance with the transaction identifier;
(f) a step for obtaining from a memory circuit a first result of the flow lookup and if the flow look up is incomplete, the frame is passed to a supervising processor that specifies a route or discards the frame;
(g) a step for preparing a subflow lookup in accordance with the first result if a subflow flag is set;
(h) a step for obtaining from the memory circuit a second result of the subflow lookup, the second result comprising the resource identifier;
(i) a step for determining if a context for the frame is available at a location other than where the frame is received;
(j) a step for building a forward frame, based on the first result and the second result, for processing by another processor at the other location where the context is available for the frame;
(k) a step for marking the forward frame for handling by the other processor;
(l) a step for determining if a context for the frame is available at the processor receiving the frame and if the context is unavailable at the received location or another location as determined in step (i), then building a context for routing the frame; and
(m) 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 (14)
- (a) a step for receiving a first frame from the network;
-
15. A method performed by a router for routing virtual and non-virtual 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 or comprising:
- (a) a step for receiving a first frame from the network;
(b) a step for parsing the first frame to determine a transaction identifier and a resource identifier;
(c) a step for storing the resource identifier in association with the transaction identifier;
(d) a step for receiving a second frame after the first frame has been routed to the network;
(e) 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;
the step for recalling comprising;
(ei) a step for preparing a flow lookup in accordance with at least a portion of the second frame;
(eii) a step for obtaining from a memory circuit a first result of the flow lookup and if the flow look up is incomplete, the frame is passed to a supervising processor that specifies a route or discards the frame;
(eiii) a step for preparing a second lookup in accordance with the first result and if a sub-flow flag is set; and
(eiv) a step for obtaining from the memory circuit a second result of the second lookup, the second result comprising the recalled resource identifier;
(f) a step for determining if a context for the frame is available at a location other than where the frame is received;
(g) a step for building a forward frame, based on the first result and the second result, for processing by another processor at the other location where the context is available for the frame;
(h) a step for marking the forward frame for handling by the other processor;
(i) a step for determining if a context for the frame is available at the processor receiving the frame and if the context is unavailable at the received location or another location as determined in step (f), then building a context for routing the frame; and
a step for routing to the network the second frame in accordance with the recalled resource identifier. - View Dependent Claims (16, 17, 18, 19)
- (a) a step for receiving a first frame from the network;
-
20. A method performed by a router for routing virtual and non-virtual 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) 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;
(b) a step for passing to the frame processor a first result of the first lookup to be analyzed (c) a step for enqueueing into a second queue to the submitter a second lookup in accordance with a result of analysis;
(d) 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;
wherein the router determines if a context for the frame is available at a location other than where the frame is received; and
builds a forward frame, based on the first result and the second result, for processing b another processor at the other location where the context is a available for the frame; and
the frame is marked as a forward frame for handling by the other processor.
- (a) a step for parsing a frame received from the network;
-
21. A router for routing virtual and non-virtual 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;
wherein the router determines if a context for the frame is available at a location other than where the frame is received; and
builds a forward frame, based on the first result and the second result, for processing by another processor at the other location where the context is available for the frame; and
the frame is marked as a forward frame for handling by the other processor. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)
- means for receiving a frame from the network;
-
33. A router for routine 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;
wherein the router determines if a context for the frame is available at a location other than where the frame is received; and
builds a forward frame, based on the first result and the second result, for processing by another processor at the other location where the context is available for the frame; and
the frame is marked as a forward frame for handling by the other processor. - View Dependent Claims (34)
- means for receiving a first frame from the network;
-
35. 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;
wherein the means for recalling further comprises;
means for preparing a flow lookup in accordance with at least a portion of the second frame;
means for obtaining from a memory circuit a first result of the flow lookup;
means for preparing a second lookup in accordance with the first result; and
means for obtaining from the memory circuit a second result of the second lookup, the second result comprising the recalled resource identifier; and
the router determines if a context for the frame is available at a location other than where the frame is received; and
builds a forward frame, based on the first result and the second result, for processing by another processor at the other location where the context is available for the frame; and
the frame is marked as a forward frame for handling by the other processor; and
means for routing to the network the second frame in accordance with the recalled resource identifier. - View Dependent Claims (36, 37, 38, 39)
- means for receiving a first frame from the network;
-
40. 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;
wherein the router determines if a context for the frame is available at a location other than where the frame is received; and
builds a forward frame, based on the first result and the second result, for processing by another processor at the other location where the context is available for the frame; and
the frame is marked as a forward frame for handling by the other processor. - View Dependent Claims (41, 42, 43)
- a parser for parsing a frame received from the network and for preparing lookups;
Specification