Route/service processor scalability via flow-based distribution of traffic
First Claim
1. A routing system for distributing packets in a network, wherein the packets originate at a source and are returned to a destination, both source and destination external with respect to the routing system, comprising:
- a plurality of network interfaces that transfer packets to a destination and from a source;
a plurality of route processing engines;
a hash mechanism that performs a hashing function on at least a portion of net-work layer information packet, in the packets transferred to the routing system, to determine a distribution of the packets to the route processing engines for processing by the engines;
a processing mechanism that determines packets belonging to a same flow and their original order from the network layer information of the packets, the network layer information including at least the same source/destination and protocol; and
a data transferer that sends each ordered packet flow to a single route processing engine, thereby preserving the original ordered packet flows.
1 Assignment
0 Petitions
Accused Products
Abstract
The invention provides a router architecture that is scalable, that is, as more processing power is desired, more individual processors can be added. The data flow from each line can be distributed among all of the processors in the system. As desired services are added, increasing the amount of “touch” or processing performed on the packets in the system, more processors can be added to carry the increased load. The router architecture is also able to distribute the high interface rate of an uplink connection in the same manner. Packets are allocated to processors in a manner that allows the original order of data packets within the same flow to be maintained. The system uses a hash function to distribute the flows, making sure that packets within the same flow are sent to the same processor so that the original packet order in each flow is maintained. Different flows may be sent to different processors.
242 Citations
50 Claims
-
1. A routing system for distributing packets in a network, wherein the packets originate at a source and are returned to a destination, both source and destination external with respect to the routing system, comprising:
-
a plurality of network interfaces that transfer packets to a destination and from a source;
a plurality of route processing engines;
a hash mechanism that performs a hashing function on at least a portion of net-work layer information packet, in the packets transferred to the routing system, to determine a distribution of the packets to the route processing engines for processing by the engines;
a processing mechanism that determines packets belonging to a same flow and their original order from the network layer information of the packets, the network layer information including at least the same source/destination and protocol; and
a data transferer that sends each ordered packet flow to a single route processing engine, thereby preserving the original ordered packet flows.
-
-
2. A router, comprising:
-
a plurality of processing engines for processing packets;
an interface for receiving a received packet from a network;
a data compiler to perform a hash function on said received packet to generate a hash result, and to select a selected processing engine from said plurality of processing engines in response to said hash result; and
,a switch to distribute said packet to said selected processing engine; and
said data compiler determines an IP source address having source bytes and an IP destination address having destination bytes and a protocol byte, and performs said hash function by performing an exclusive OR (XOR) to said source byter and said destination byter and protocol byter to generate said hash result as at least one output byte, said at least one output byte to designate a flow to which said received packet belongs, and routing all packets having the same flow to a selected processing engine. - View Dependent Claims (9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
-
-
3. A router, comprising:
-
a plurality of processing engines located within said router for processing packets;
an interface for receiving a received packet from a network;
a data compiler to perform a hash function on a destination address of said received packet to generate a hash result, and to select a selected processing engine from said plurality of processing engines located within said router in response to said hash result;
a switch to distribute said packet to said selected processing engine; and
each processing engine of said plurality of processing engines having a plurality of queues, said packed has classification information in a header, and said processing engine selects a queue of said plurality of queues in response to said classification information. - View Dependent Claims (22)
-
-
4. A router, comprising:
-
a plurality of processing engines for processing packets;
an interface for receiving a received packet from a network;
a data compiler to perform a hash function on said received packet to generate a hash result, and to select a selected processing engine from said plurality of processing engines in response to said hash result;
a switch to distribute said packet to said selected processing engine;
said data compiler detecting that a particular packet requires specialized processing; and
said switch distributing said particular packet to specialized processing engine to perform said specialized processing. - View Dependent Claims (23, 24, 25, 26)
-
-
5. A method of processing packet in a router, comprising:
-
receiving a packet from a network;
performing a hash function calculation on said packet to produce a hash result;
switching, in response to said hash result, said packet to a processing engine of a plurality of processing engines in said router, for further processing of said packet; and
performing an exclusive OR (XOR) in response to a source address and a destination address and a protocol byte to generate said hash result as a least one output byte, said at least one output byte to designate a flow to which said received packet belongs, and routing all packets having the same flow to a selected processing engine. - View Dependent Claims (27, 28, 29, 30, 31, 32)
-
-
6. A method of processing packet in a router, comprising:
-
receiving a packet from a network;
performing a hash function calculation on a destination address of said packet to produce a hash result;
switching, in response to said hash result, said packet to a processing engine of a plurality of processing engines in said router, for further processing of said packet; and
allocating said packets to remaining processing engines in the event that a processing engine fails.
-
-
7. A method of processing packet in a router, comprising:
-
receiving a packet from a network;
performing a hash function calculation on said packet to produce a hash result;
switching, in response to said hash result, said packet to a processing engine of a plurality of processing engines in said router, for further processing of said packet;
detecting that a particular packet requires specialized processing; and
distributing said particular packet to a specialized processing engine to perform said specialized processing. - View Dependent Claims (33, 34, 35, 36)
-
-
8. A router, comprising:
-
a plurality of processing engines located within said router for processing packets;
an interface for receiving a packet from a network, said packet referred to as a received packet;
a hashing function to perform a hash calculation on a destination address of said packet, said hash calculation producing a hash result;
a data compiler to determine a type of service required by said received packet; and
;
a switch, responsive to said type of service and responsive to said hash result, to distribute said packet to a selected processing engine of said plurality of processing engines located within said router, said selected processing engine providing said type of service. - View Dependent Claims (37, 38, 39, 40)
-
-
41. A router for distributing packets in a network, the packets originate at a source and are routed to a destination, comprising:
-
a plurality of route processing engines located within said router;
a mechanism that performs a hashing function on at least a portion of network layer information in said packets, said information indicating said destination, said hashing function producing an indica of a flow;
a classification engine to switch packets with a same indica of a flow to a single route processing engine of said plurality of route processing engines; and
said packets are a plurality of packets, individual packets of said plurality of packets arrive in substantially random order to produce different values of said information in random order, and said classification engine carries out a hashing function to produce said indica of flow, and different values of said indica of flow are in substantially random order in response to said plurality of packets arriving in random order, and a particular flow always produces a same indica of flow, and said particular flow is assigned to a particular route processing engine in the order that a first packet of said particular flow first arrives at said router. - View Dependent Claims (42, 43)
-
-
44. A method of operating a router, comprising:
-
receiving a packet by said router, said packet addressed to a destination, said router having a plurality of route processing engines;
hashing a portion of a network layer information of said packet, said information indicating said destination, to determine an indication of a flow;
selecting, in response to said indication of a flow, one processing engine of said plurality of processing engines to process the flow indicated;
said receiving step receives a plurality of packets, individual packets of said plurality of packets arrive in substantially random order to produce different values of said information in random order;
said hashing step produces different values of said indication of a flow in substantially random order in response to said plurality of packets arriving in random order;
producing by a particular flow a same indica of flow; and
assigning said particular flow to a particular route processing engine in the order that a first packet of said particular flow first arrives at said router. - View Dependent Claims (45, 46)
-
-
47. A router, comprising:
-
a port adapter to receive a packet by said router, said packet addressed to a destination, said router having a plurality of route processing engines;
means for hashing a portion of a network layer information of said packet, said information indicating said destination, to determine an indication of a flow;
means for selecting, in response to said indication of a flow, one processing engine of said plurality of processing engines to process the flow indicated;
means for receiving a plurality of packets, individual packets of said plurality of packets arrive in substantially random order to produce different values of said information in random order;
means for producing different values of said indication of a flow in substantially random order in response to said plurality of packets arriving in random order;
means for producing by a particular flow a same indica of flow; and
means for assigning said particular flow to a particular route processing engine in the order that a first packet of said particular flow first arrives at said router. - View Dependent Claims (48, 49)
-
-
50. A computer readable media, comprising:
-
said computer readable media having instructions written thereon for execution on a processor for the practice of the method of, receiving a packet by said router, said packet addressed to a destination, said router having a plurality of route processing engines;
hashing a portion of a network layer information of said packet, said information indicating said destination, to determine an indication of a flow;
selecting, in response to said indication of a flow, one processing engine of said plurality of processing engine to process the flow indicated;
said receiving step receives a plurality of packets, individual packets of said plurality of packets arrive in substantially random order to produce different values of said information in random order;
said hashing step produces different values of said indication of a flow in substantially random order in response to said plurality of packets arriving in random order;
producing by a particular flow a same indica of flow; and
assigning said particular flow to a particular route processing engine in the order that a first packet of said particular flow first arrives at said router.
-
Specification