IP Library Granted Patent US 9,419,895
Granted Patent B2
US 9,419,895 · App. 13/871,777 · Granted Aug 16, 2016

Techniques for customizing forwarding decisions via a hardware lookup result

Inventors: Jian Liu (Palo Alto, CA); Wing-Keung Adam Yeung (Pleasanton, CA)
Assignee: Brocade Communications Systems, Inc.
H04L45/745H04L45/16
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 9,419,895
App. No.
13/871,777
Granted
Aug 16, 2016
Kind
B2
Abstract

Techniques for customizing forwarding decisions in a network device via a hardware lookup table result are provided. In one embodiment, a network processor of the network device can perform a lookup into a lookup table based on one or more sections of a received packet. The network processor can then determine, based on the lookup, an entry in the lookup table and retrieve, using a pointer included in the lookup table entry, a mode value from a results table. The mode value can identify an operational flow (e.g., a series of forwarding decisions) to be carried out by the network processor for forwarding the received packet.

Claims (97)

1. A method comprising:

performing, by a network processor of a network device, a lookup into a first lookup table based on one or more sections of a received multicast data packet, the received multicast data packet implementing one of a plurality of Protocol Independent Multicast (PIM) types that include PIM Sparse Mode (PIM-SM), PIM Dense Mode (PIM-DM), Bidirectional PIM (PIM-BIDIR), and PIM Source-Specific Multicast (PIM-SSM);

determining, by the network processor based on the lookup into the first lookup table, a first lookup table entry matching the one or more sections of the received multicast data packet;

retrieving, by the network processor based on a pointer included in the first lookup table entry, a mode value from a results table, wherein the mode value identifies an operational flow to be carried out by the network processor for forwarding the received multicast data packet, and wherein the mode value differs based upon the PIM type implemented by the received multicast data packet and a (destination address (DA), source address (SA)) key of the first lookup table, the DA corresponding to one or more multicast group addresses associated with the PIM type; and

forwarding, by the network processor, the received multicast packet in accordance with the operational flow identified by the mode value.

2. The method of claim 1 further comprising:

performing a lookup into a second lookup table based on the SA of the received multicast data packet.

3. The method of claim 2 wherein the lookup into the first lookup table and the lookup into the second lookup table are performed by the network processor in parallel.

4. The method of claim 2 wherein the lookup into the second lookup table is based on a L3D of the received multicast data packet.

5. The method of claim 2 wherein the mode value indicates whether the network processor should evaluate or ignore the outcome of the lookup into the second lookup table.

6. The method of claim 1 wherein the lookup into the first lookup table is further based on a Layer 3 Domain (L3D) of the received multicast data packet.

7. The method of claim 1 wherein the network processor does not classify the received multicast data packet as implementing a particular PIM type prior to performing the lookup into the first lookup table.

8. The method of claim 1 wherein the mode value corresponds to one of six predefined mode values.

9. The method of claim 1 wherein the mode value corresponds to a first mode value of six predefined mode values if:

the PIM type implemented by the received multicast data packet is PIM-SM, PIM-DM, or PIM-SSM; and

the (DA, SA) key of the first lookup table entry corresponds to a (G, S) pair.

10. The method of claim 9 wherein the first mode value indicates that the network processor should validate the received packet via the RPF a Reverse Path Forwarding (RPF) check.

11. The method of claim 9 wherein the first mode value indicates that the network processor should forward the received multicast data packet to an egress port of the network device regardless of whether an RPF check passes or fails.

12. The method of claim 1 wherein the mode value corresponds to a second mode value of six predefined mode values if:

the PIM type implemented by the received multicast data packet is PIM-DM; and

the (DA, SA) key of the first lookup table entry corresponds to a (G, *) pair.

13. The method of claim 12 wherein the second mode value indicates that the network processor should forward the received multicast data packet to an egress port of the network device without validating the received packet via an RPF check.

14. The method of claim 12 wherein the second mode value indicates that the network processor should determine whether a lookup into a second lookup table resulted in a hit or miss, and if the lookup into the second lookup table resulted in a miss, the network processor should send a copy of the received multicast data packet to a management processor of the network device for processing.

15. The method of claim 1 wherein the mode value corresponds to a third mode value of six predefined mode values if:

the PIM type implemented by the received multicast data packet is PIM-DM; and

the (DA, SA) key of the first lookup table entry corresponds to a (G/m, *) pair.

16. The method of claim 15 wherein the third mode value indicates that the network processor should drop the received multicast data packet without validating the received packet via an RPF check.

17. The method of claim 1 wherein the mode value corresponds to a fourth mode value of six predefined mode values if:

the PIM type implemented by the received multicast data packet is PIM-SM or PIM-SSM; and

the (DA, SA) key of the first lookup table entry corresponds to a (G, *) pair.

18. The method of claim 17 wherein the fourth mode value indicates that the network processor should validate the received multicast data packet via an RPF check.

19. The method of claim 17 wherein the fourth mode value indicates that the network processor should forward the received multicast data packet to an egress port of the network device regardless of whether an RPF check passes or fails.

20. The method of claim 17 wherein the fourth mode value indicates that the network processor should:

determine whether a lookup into a second lookup table resulted in a hit or miss;

if the lookup into the second lookup table resulted in a hit, determine whether an RPF check resulted in a pass or fail; and

and if the RPF check resulted in a pass, send a copy of the received multicast data packet to a management processor for processing.

21. The method of claim 1 wherein the mode value corresponds to a fifth mode value of six predefined mode values if:

the PIM type implemented by the received multicast data packet is PIM-SM or PIM-SSM; and

the (DA, SA) key of the first lookup table entry corresponds to a (G/m, *) pair.

22. The method of claim 21 wherein the fifth mode value indicates that the network processor should determine whether a lookup into a second lookup table resulted in a hit or miss, and if the lookup into the second lookup table resulted in a hit, send a copy of the received multicast data packet to a management processor for processing.

23. The method of claim 1 wherein the fifth mode value indicates that the network processor should drop the received multicast data packet without validating the received packet via an RPF check.

24. The method of claim 1 wherein the mode value corresponds to a sixth mode value of six predefined mode values if:

the PIM type implemented by the received multicast data packet is PIM-BIDIR; and

the (DA, SA) key of the first lookup table entry corresponds to a (G, *) pair or a (G/m, *) pair.

25. The method of claim 24 wherein the sixth mode value indicates that the network processor should validate the received multicast data packet via an RPF check.

26. The method of claim 24 wherein the sixth mode value indicates that the network processor should forward the received multicast data packet to an egress port of the network device if an RPF check passes, and drop the received multicast data packet if the RPF check fails.

27. The method of claim 1 wherein the mode value is a user-defined value that identifies a custom operational flow for forwarding the received multicast data packet.

28. The method of claim 27 further comprising:

retrieving, based on the pointer included in the first lookup table entry, a bitmask from the results table, the bitmask including parameter values that define the custom operational flow.

29. The method of claim 28 wherein the parameter values include a parameter value that indicates whether the network processor should validate the received multicast data packet via an RPF check.

30. The method of claim 28 wherein the parameter values include a parameter value that indicates whether the network processor should forward the received multicast data packet to an egress port of the network device.

31. The method of claim 28 wherein the parameter values include a parameter value that indicates whether the network processor should generate an exception if an RPF check fails.

32. The method of claim 28 wherein the parameter values include a parameter value that indicates whether the network processor should evaluate the outcome of a lookup into a second lookup table.

33. The method of claim 28 wherein the parameter values include a parameter value that indicates whether the network processor should mark a header of the received multicast data packet if an RPF check fails.

34. The method of claim 28 wherein the parameter values include a parameter value that indicates whether the network processor should send a copy of the received multicast data packet to a management processor of the network device if a lookup into a second lookup table results in a miss.

35. A network device comprising:

a plurality of ports; and

a network processor configurable to:

perform a lookup into a first lookup table based on one or more sections of a received multicast data packet, the received multicast data packet implementing one of a plurality of Protocol Independent Multicast (PIM) types that include PIM Sparse Mode (PIM-SM), PIM Dense Mode (PIM-DM), Bidirectional PIM (PIM-BIDIR), and PIM Source-Specific Multicast (PIM-SSM);

determine, based on the lookup into the first lookup table, a first lookup table entry matching the one or more sections of the received multicast data packet; and

retrieve, based on a pointer included in the first lookup table entry, a mode value from a results table, wherein the mode value identifies an operational flow to be carried out by the network processor for forwarding the received multicast data packet, and wherein the mode value differs based upon the PIM type implemented by the received multicast data packet and a (destination address (DA), source address (SA)) key of the first lookup table entry, the DA corresponding to one or more multicast group addresses associated with the PIM type.

36. The network device of claim 35 wherein the mode value is a user-defined value that identifies a custom operational flow for forwarding the received multicast data packet.

37. The network device of claim 36 wherein the network processor is further configurable to:

retrieve, based on the pointer included in the first lookup table entry, a bitmask from the results table, the bitmask including parameter values that define the custom operational flow.

38. The network device of claim 35 wherein the network processor is implemented as an Application-Specific Integrated Circuit (ASIC).

39. The network device of claim 35 wherein the network device is a switch or router.

40. A non-transitory computer readable storage medium having stored thereon program code executable by a processor, the program code comprising:

code that causes the processor to perform a lookup into a first lookup table based on one or more sections of a received multicast data packet, the received multicast data packet implementing one of a plurality of Protocol Independent Multicast (PIM) types that include PIM Sparse Mode (PIM-SM), PIM Dense Mode (PIM-DM), Bidirectional PIM (PIM-BIDIR), and PIM Source-Specific Multicast (PIM-SSM);

code that causes the processor to determine, based on the lookup into the first lookup table, a first lookup table entry matching the one or more sections of the received multicast data packet; and

code that causes the processor to retrieve, based on a pointer included in the first lookup table entry, a mode value from a results table, wherein the mode value identifies an operational flow to be carried out by the network processor for forwarding the received packet, and wherein the mode value differs based upon the PIM type implemented by the received multicast data packet and a (destination address (DA), source address (SA)) key of the first lookup table entry, the DA corresponding to one or more multicast group addresses associated with the PIM type.

41. A method comprising:

performing, by a network processor of a network device, a lookup into a first lookup table based on one or more sections of a received packet;

determining, by the network processor based on the lookup into the first lookup table, a first lookup table entry;

retrieving, by the network processor based on a pointer included in the first lookup table entry, a mode value from a results table, the mode value identifying an operational flow to be carried out by the network processor; and

forwarding, by the network processor, the received multicast packet in accordance with the operational flow identified by the mode value,

wherein the received packet is a multicast packet that implements one of a plurality of Protocol Independent Multicast (PIM) types, the plurality of PIM types including PIM Sparse Mode (PIM-SM), PIM Dense Mode (PIM-DM), Bidirectional PIM (PIM-BIDIR), and PIM Source-Specific Multicast (PIM-SSM), and

wherein the mode value corresponds to a first mode value in a plurality of mode values if:

the PIM type implemented by the received packet is PIM-SM, PIM-DM, or PIM-SSM; and

a (destination address, source address) key of the first lookup table entry corresponds to a (multicast group address, source address) pair.

42. A network device comprising:

a plurality of ports; and

a network processor configurable to:

perform a lookup into a first lookup table based on one or more sections of a received packet;

determine, based on the lookup into the first lookup table, a first lookup table entry; and

retrieve, based on a pointer included in the first lookup table entry, a mode value from a results table, the mode value identifying an operational flow to be carried out by the network processor for forwarding the received packet,

wherein the received packet is a multicast packet that implements one of a plurality of Protocol Independent Multicast (PIM) types, the plurality of PIM types including PIM Sparse Mode (PIM-SM), PIM Dense Mode (PIM-DM), Bidirectional PIM (PIM-BIDIR), and PIM Source-Specific Multicast (PIM-SSM), and

wherein the mode value corresponds to a first mode value in a plurality of mode values if:

the PIM type implemented by the received packet is PIM-SM, PIM-DM, or PIM-SSM; and

a (destination address, source address) key of the first lookup table entry corresponds to a (multicast group address, source address) pair.

43. A non-transitory computer readable storage medium having stored thereon program code executable by a processor, the program code comprising:

code that causes the processor to perform a lookup into a first lookup table based on one or more sections of a received packet;

code that causes the processor to determine, based on the lookup into the first lookup table, a first lookup table entry; and

code that causes the processor to retrieve, based on a pointer included in the first lookup table entry, a mode value from a results table, the mode value identifying an operational flow to be carried out by the network processor for forwarding the received packet,

wherein the received packet is a multicast packet that implements one of a plurality of Protocol Independent Multicast (PIM) types, the plurality of PIM types including PIM Sparse Mode (PIM-SM), PIM Dense Mode (PIM-DM), Bidirectional PIM (PIM-BIDIR), and PIM Source-Specific Multicast (PIM-SSM), and

wherein the mode value corresponds to a first mode value in a plurality of mode values if:

the PIM type implemented by the received packet is PIM-SM, PIM-DM, or PIM-SSM; and

a (destination address, source address) key of the first lookup table entry corresponds to a (multicast group address, source address) pair.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2018
From: BROCADE COMMUNICATIONS SYSTEMS LLC
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047270/0247 →
CHANGE OF NAME Recorded Dec 13, 2017
From: BROCADE COMMUNICATIONS SYSTEMS, INC.
To: BROCADE COMMUNICATIONS SYSTEMS LLC
Reel/Frame 044891/0536 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2013
From: LIU, JIAN; YEUNG, WING-KEUNG ADAM
To: BROCADE COMMUNICATIONS SYSTEMS, INC.
Reel/Frame 030304/0638 →
Continuity (2)
Provisional Application 61769084 · Feb 25, 2013
Related Publication 20140241357A1 · Aug 28, 2014