IP Library Granted Patent US 8,879,395
Granted Patent B2
US 8,879,395 · App. 13/955,383 · Granted Nov 4, 2014

Filtering and route lookup in a switching device

Inventors: Dennis C. Ferguson (Palo Alto, CA); Rajiv Patel (Los Altos, CA); Gerald Cheung (Palo Alto, CA); Pradeep Sindhu (Los Altos Hills, CA)
Assignee: Juniper Networks, Inc.
H04L45/745H04L49/3072H04L63/1458H04L45/60H04L45/00H04L47/20H04L49/205H04L49/3036H04L45/7457H04L47/125H04L69/22H04L49/3009H04L47/10H04L63/0227
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,879,395
App. No.
13/955,383
Granted
Nov 4, 2014
Kind
B2
Abstract

Methods and devices for processing packets are provided. The processing device may Include an input interface for receiving data units containing header information of respective packets; a first module configurable to perform packet filtering based on the received data units; a second module configurable to perform traffic analysis based on the received data units; a third module configurable to perform load balancing based on the received data units; and a fourth module configurable to perform route lookups based on the received data units.

Claims (117)

1. A network device comprising:

a memory that includes a plurality of queues; and

a processor to:

receive a plurality of packets being transmitted through a network,

a first packet, of the plurality of packets, being received before a second packet of the plurality of packets;

determine that the first packet and the second packet are being transmitted to a common destination using a common protocol;

associate the first packet and the second packet with a common queue priority indicator based on the first packet and the second packet being transmitted to the common destination using the common protocol; and

store the first packet and the second packet to a common queue, of the plurality of queues, based on the first packet and the second packet being associated with the common queue priority indicator,

the first packet being positioned before the second packet in the common queue based on the first packet being received before the second packet.

2. The network device of claim 1 , where, when determining that the first packet and the second packet are being transmitted to the common destination using the common protocol, the processor is to:

examine a header of the first packet and a header of the second packet, and

determine that the first packet and the second packet are being transmitted to the common destination using the common protocol based on examining the header of the first packet and the header of the second packet.

3. The network device of claim 1 , where, when determining that the first packet and the second packet are being transmitted to the common destination using the common protocol, the processor is to:

determine that the first packet and the second packet are received via a particular interface of the network device, and

determine that the first packet and the second packet are being transmitted to the common destination using the common protocol based on the first packet and the second packet being received via the particular interface.

4. The network device of claim 1 , where the processor is further to:

determine that a third packet, of the plurality of packets, is to be transmitted to a different destination; and

store the third packet in a different queue, of the plurality of queues, based on the third packet being transmitted to the different destination.

5. The network device of claim 1 , where the processor is further to:

determine that a third packet, of the plurality of packets, is to be transmitted using a protocol that is different from the common protocol; and

store the third packet in a queue, of the plurality of queues, that is different from the common queue based on the third packet being transmitted using the protocol that is different from the common protocol.

6. The network device of claim 1 , where the processor is further to:

store the plurality of packets in a common data buffer;

generate, based on storing the plurality of packets, a notification associated with the first packet,

the notification including information identifying the common destination and information identifying an address of the common data buffer storing a first portion of the first packet;

where, when associating the first packet and the second packet with the common queue priority indicator, the processor is to:

set a queue priority bit, included in the notification, to the common queue priority indicator; and

where, when storing the first packet and the second packet to the common queue, the processor is to:

obtain the notification,

determine, based on the notification, the address storing the first portion of the first packet, and

obtain the first portion of the first packet from the common data buffer based on the address.

7. The network device of claim 6 , where the processor is further to:

divide, based on receiving the plurality of packets, the first packet into a plurality of portions,

the plurality of portions including the first portion of the first packet, and

where the notification further includes information identifying an offset for determining a storage location in the common data buffer of a second portion, of the plurality of portions, of the first packet; and

where, when obtaining the first packet, the processor is to:

obtain the first packet further based on the information identifying the offset.

8. A method comprising:

receiving, by one or more processors of a network device, a first packet and a second packet,

the first packet being received before the second packet;

determining, by the one or more processors, that the first packet and the second packet are being transmitted to a same destination using a same protocol;

associating, by the one or more processors, the first packet and the second packet with a particular indicator based on the first packet and the second packet being transmitted to the same destination using the same protocol;

storing, by the one or more processors, the first packet and the second packet to a particular queue, of a plurality of queues, based on the first packet and the second packet being associated with the particular indicator,

the first packet being positioned before the second packet in the particular queue based on the first packet being received before the second packet; and

transmitting, by the one or more processors, the first packet and the second packet based on the first packet and the second packet being stored in the particular queue,

the first packet being transmitted prior to the second packet based on the first packet being positioned before the second packet in the particular queue.

9. The method of claim 8 , where determining that the first packet and the second packet are being transmitted to the same destination using the same protocol includes:

examining a header of the first packet and a header of the second packet, and

determining that the first packet and the second packet are being transmitted to the same destination using the same protocol based on examining the header of the first packet and the header of the second packet.

10. The method of claim 8 , where determining that the first packet and the second packet are being transmitted to the same destination using the same protocol includes:

determining that the first packet and the second packet are received via a particular interface, of a plurality of interfaces, of the network device, and

determining that the first packet and the second packet are being transmitted to the same destination using the same protocol based on the first packet and the second packet being received via the particular interface.

11. The method of claim 8 , further comprising:

determining that a third packet is to be transmitted to a different destination; and

storing the third packet in a different queue, of the plurality of queues, based on the third packet being transmitted to the different destination.

12. The method of claim 8 , further comprising:

determining that a third packet is to be transmitted using a protocol that is different from the same protocol; and

storing the third packet in a queue, of the plurality of queues, that is different from the particular queue based on the third packet being transmitted using the protocol that is different from the same protocol.

13. The method of claim 8 , further comprising:

storing, based on receiving the first packet and the second packet, the first packet and the second packet in a common data buffer;

generating, based on storing the first packet, a notification associated with the first packet,

the notification including information identifying the same destination and information identifying an address of the common data buffer storing a first portion of the first packet; and

where storing the first packet and the second packet to the particular queue includes:

obtaining the notification,

determining, based on the notification, the address storing the first portion of the first packet, and

obtaining the first portion of the first packet from the common data buffer based on the address.

14. The method of claim 13 , further comprising:

dividing, based on receiving the first packet, the first packet into a plurality of portions,

the plurality of portions including the first portion of the first packet, and

where the notification further includes information identifying an offset for determining a storage location in the common data buffer of a second portion, of the plurality of portions, of the first packet; and

where obtaining the first packet includes:

obtaining the first packet further based on the information identifying the offset.

15. A non-transitory computer-readable medium storing instructions, the instructions comprising:

one or more instructions that, when executed by one or more processors of a network device, cause the one or more processors to:

receive a plurality of packets being transmitted through a network,

a first packet, of the plurality of packets, being received before a second packet of the plurality of packets;

determine that the first packet and the second packet are being transmitted to a first destination, of a plurality of destinations associated with the plurality of packets, using a first protocol, of a plurality of protocols associated with transmitting the plurality of packets;

associate the first packet and the second protocol with a first indicator, of a plurality of indicators, based on the first packet and the second packet being transmitted to the first destination using the first protocol,

each of the plurality of indicators being associated with a corresponding one of a plurality of queues;

store the first packet and the second packet to a first queue, of the plurality of queues, based on the first packet and the second packet being associated with the first indicator,

the first indicator being associated with the first queue, and

the first packet being positioned before the second packet in the first queue based on the first packet being received before the second packet; and

transmit the first packet and the second packet towards the first destination based on the first packet and the second packet being stored in the first queue,

the first packet being transmitted prior to the second packet based on the first packet being stored before the second packet in the first queue.

16. The non-transitory computer-readable medium of claim 15 , where the one or more instructions to determine that the first packet and the second packet are being transmitted to the first destination using the first protocol include:

one or more instructions that, when executed by the one or more processors, cause the one or more processors to:

determine that the first packet and the second packet are received via a particular interface of the network device, and

determine that the first packet and the second packet are being transmitted to the first destination using the first protocol based on the first packet and the second packet being received via the particular interface.

17. The non-transitory computer-readable medium of claim 15 , where the one or more instructions to determine that the first packet and the second packet are being transmitted to the first destination using the first protocol include:

one or more instructions that, when executed by the one or more processors, cause the one or more processors to:

determine that a third packet, of the plurality of packets, is to be transmitted to a second destination of the plurality of destinations,

the second destination being different from the first destination; and

store the third packet in a different queue, of the plurality of queues, based on the third packet being transmitted to the different destination.

18. The non-transitory computer-readable medium of claim 15 , where the instructions further comprise:

one or more instructions that, when executed by the one or more processors, cause the one or more processors to:

determine that a third packet, of the plurality of packets, is to be transmitted using a second protocol, of the plurality of protocols,

the second protocol being different from the first protocol; and

store the third packet in a second queue, of the plurality of queues, based on the third packet being transmitted using the second protocol,

the second queue being different from the first queue.

19. The non-transitory computer-readable medium of claim 15 , where the instructions further comprise:

one or more instructions that, when executed by the one or more processors, cause the one or more processors to:

store the plurality of packets in a particular portion of a memory;

generate, based on storing the plurality of packets, a notification associated with the first packet,

the notification including information identifying the first destination and information identifying an address of the particular portion of the memory storing a first portion of the first packet; and

where the one or more instructions to store the first packet and the second packet to the first queue include:

one or more instructions that, when executed by the one or more processors, cause the one or more processors to:

obtain the notification,

determine, based on the notification, the address storing the first portion of the first packet, and

obtain the first portion of the first packet from the particular portion of the memory based on the address.

20. The non-transitory computer-readable medium of claim 19 , where the instructions further comprise:

one or more instructions that, when executed by the one or more processors, cause the one or more processors to:

divide, based on receiving the plurality of packets, the first packet into a plurality of portions,

the plurality of portions including the first portion of the first packet, and

where the notification further includes information identifying an offset for determining a storage location in the particular portion of the memory of a second portion, of the plurality of portions, of the first packet; and

where the one or more instructions to obtain the first packet include:

one or more instructions that, when executed by the one or more processors, cause the one or more processors to:

obtain the first packet further based on the information identifying the offset.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 3, 2014
From: FERGUSON, DENNIS C.; PATEL, RAJIV; CHEUNG, GERALD; SINDHU, PRADEEP
To: JUNIPER NETWORKS, INC.
Reel/Frame 034092/0539 →
Continuity (11)
Continuation 13539164 · Jun 29, 2012
Continuation 13163477 · Jun 17, 2011
Continuation 12697101 · Jan 29, 2010
Continuation 11614583 · Dec 21, 2006
Continuation 10017719 · Dec 14, 2001
Continuation In Part 09550413 · Apr 17, 2000
Provisional Application 60258882 · Jan 2, 2001
Provisional Application 60258886 · Jan 2, 2001
Provisional Application 60258887 · Jan 2, 2001
Provisional Application 60258888 · Jan 2, 2001
Related Publication 20130308644A1 · Nov 21, 2013