IP Library Granted Patent US 9,853,890
Granted Patent B2
US 9,853,890 · App. 14/665,005 · Granted Dec 26, 2017

Efficient implementation of MPLS tables for multi-level and multi-path scenarios

Inventors: Barak Gafni (Kfar Malal, IL); Aviv Kfir (Nili, IL)
Assignee: MELLANOX TECHNOLOGIES, LTD.
H04L45/507H04L45/50H04L45/745
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,853,890
App. No.
14/665,005
Granted
Dec 26, 2017
Kind
B2
Abstract

A method for communication includes configuring a router to forward data packets over a network in accordance with Multiprotocol Label Switching (MPLS) labels appended to the data packets. At least first and second entries, corresponding to respective first and second labels, are stored in a Next Hop Label Forwarding Entry (NHLFE) table in the router, such that each of the first entries contains a respective pointer to at least one of the second entries. Upon receiving in the router a data packet from the network, a first entry is selected from among the first entries in the NHLFE table and, responsively to the pointer in the first entry, a second entry is selected. The respective first and second labels from the selected first and second entries are pushed onto an MPLS label stack of the data packet.

Claims (30)

1. A method for communication, comprising:

configuring a router to forward data packets over a network in accordance with Multiprotocol Label Switching (MPLS) labels appended to the data packets;

storing a Next Hop Label Forwarding Entry (NHLFE) table in the router, the NHLFE table including a plurality of first entries including respective MPLS labels and second entries including respective MPLS labels, such that each of the first entries contains a respective pointer to at least one of the second entries, wherein the respective pointer in at least one of the first entries points to a group including a plurality of the second entries, and wherein each of the second entries in the plurality contains a respective MPLS label;

upon receiving in the router a data packet from the network, selecting, for the received packet, a first entry from among the first entries in the NHLFE table;

responsively to the pointer in the selected first entry, selecting, for the received packet, a second entry from the NHLFE table from the group of the plurality of the second entries;

pushing the respective first and second MPLS labels from the selected first and second entries onto an MPLS label stack of the data packet; and

forwarding the data packet to the network with the first and second MPLS labels in the MPLS label stack of the data packet.

2. The method according to claim 1 , wherein the group of the second entries pointed to by the respective pointer in at least one of the first entries contains at least two entries that comprise the same MPLS label.

3. The method according to claim 1 , wherein selecting the second entry comprises choosing the second entry in accordance with a load-balancing criterion.

4. The method according to claim 1 , wherein the pointers of a plurality of the first entries point to a same group of the second entries.

5. The method according to claim 1 , wherein the NHLFE table comprises one or more third entries, wherein one or more of the second entries contain respective pointers to at least one of the third entries, and

wherein the method comprises selecting, responsively to the respective pointer in the selected second entry, a third entry from the NHLFE table, and pushing a third MPLS label corresponding to the selected third entry onto the MPLS label stack of the data packet together with the first and second MPLS labels.

6. The method according to claim 1 , wherein the NHLFE table includes a reserved label flag in at least one of the entries, and

wherein the method comprises pushing, responsively to identifying the reserved label flag in the selected first entry or in the selected second entry, at least a third MPLS label onto the MPLS label stack of the data packet together with the first and second MPLS labels.

7. The method according to claim 6 , wherein pushing the third MPLS label comprises pushing an entropy label indicated by the reserved label flag onto the MPLS label stack of the packet.

8. The method according to claim 1 , wherein each of the second entries includes a next-hop field which indicates an interface of the router.

9. The method according to claim 1 , wherein each of the second entries includes a single respective second label, and wherein the group of the second entries contains at least two entries that comprise the same single second MPLS label.

10. The method according to claim 1 , wherein selecting the first entry comprises selecting a group of a plurality of first entries based on a header of the data packet and selecting a single entry from the group of the plurality of first entries on the basis of load-balancing considerations.

11. Packet routing apparatus, comprising:

multiple interfaces connected to a network;

switching logic configured to transfer data packets among the interfaces; and

packet processing logic, which is configured to cause the switching logic to forward the data packets in accordance with Multiprotocol Label Switching (MPLS) labels appended to the data packets and comprises a Next Hop Label Forwarding Entry (NHLFE) table, which includes a plurality of first entries including respective MPLS labels and second entries including respective MPLS labels, such that each of the first entries contains a respective pointer to at least one of the second entries, wherein the respective pointer in at least one of the first entries points to a group including a plurality of the second entries, and wherein each of the second entries in the plurality contains a respective MPLS label,

wherein the packet processing logic is configured to select, upon receiving a data packet from the network, a first entry, for the received packet, from among the first entries in the NHLFE table and, responsively to the pointer in the selected first entry, to select, for the received packet, a second entry from the NHLFE table from the group of the plurality of the second entries, and to push the respective first and second MPLS labels from the selected first and second entries onto an MPLS label stack of the data packet before forwarding the data packet to the network.

12. The apparatus according to claim 11 , wherein the group of the second entries contains at least two entries that comprise the same MPLS label.

13. The apparatus according to claim 11 , wherein the packet processing logic is configured to select the second entry in accordance with a load-balancing criterion.

14. The apparatus according to claim 11 , wherein the pointers of a plurality of the first entries point to a same group of the second entries.

15. The apparatus according to claim 11 , wherein the NHLFE table includes one or more third entries, wherein one or more of the second entries contain respective pointers to at least one of the third entries, and

wherein the packet processing logic is configured to select, responsively to the respective pointer in the selected second entry, a third entry from the NHLFE table, and to push a third MPLS label corresponding to the selected third entry onto the MPLS label stack of the data packet together with the first and second MPLS labels.

16. The apparatus according to claim 11 , wherein at least one of the selected first and second entries in the NHLFE table comprises a reserved label flag, and wherein the packet processing logic is configured to push, responsively to the reserved label flag, at least a third MPLS label onto the MPLS label stack of the data packet together with the first and second labels.

17. The apparatus according to claim 16 , wherein the third MPLS label comprises an entropy label indicated by the reserved label flag.

Assignments (3)
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 37900/0720 Recorded Jul 13, 2018
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: MELLANOX TECHNOLOGIES, LTD.
Reel/Frame 046542/0792 →
PATENT SECURITY AGREEMENT Recorded Feb 24, 2016
From: MELLANOX TECHNOLOGIES, LTD.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 037900/0720 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 23, 2015
From: GAFNI, BARAK; KFIR, AVIV
To: MELLANOX TECHNOLOGIES LTD.
Reel/Frame 035226/0976 →
Continuity (1)
Related Publication 20160285756A1 · Sep 29, 2016