IP Library › Granted Patent US 9,729,427
Granted Patent B2
US 9,729,427 · App. 14/707,740 · Granted Aug 8, 2017

Method and system for route hardware programming in network devices

Inventors: William Fenner (Santa Clara, CA); Prakash Badrinaryananan (Santa Clara, CA)
Assignee: Arista Networks, Inc.
H04L45/021H04L45/02H04L45/54H04L45/56H04L47/28H04L45/08H04L45/12
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,729,427
App. No.
14/707,740
Granted
Aug 8, 2017
Kind
B2
Abstract

A method for programming route hardware in network devices. The method includes: receiving, by a network device, route updates, selecting from the route updates, a set of selected routes to be used for routing, assigning multiple timestamps to the set of selected routes, programming the set of selected routes into a software-implemented forwarding information base (FIB), segmenting the set of selected routes in the software-implemented FIB into at least a first batch of routes and a second batch of routes, programming the first batch of routes into a hardware-implemented FIB, after the programming, determining a last timestamp, where the last time stamp is the oldest timestamp of the timestamps where all routes associated with the last timestamp have been successfully programmed into the hardware-implemented FIB, and advertising all routes of the first batch that are associated with a timestamp that is no older than the last timestamp.

Claims (72)

1. A method for route hardware programming in network devices, the method comprising:

receiving, by a network device, route updates from a peer network device;

selecting from the route updates, by a routing information base (RIB) agent, a set of selected routes to be used for routing;

assigning, by the RIB agent, a plurality of timestamps to the set of selected routes,

wherein an order of the timestamps in the plurality of timestamps reflects an order of the routes in the set of selected routes;

programming, by the RIB agent, the set of selected routes into a software-implemented forwarding information base (FIB);

segmenting, by a forwarding information base (FIB) agent, the set of selected routes in the software-implemented FIB into at least a first batch of routes and a second batch of routes,

wherein a number of routes in each of the first and the second batches of routes is set based on an amount of time to write one or more entries;

programming, by the FIB agent, the first batch of routes into a hardware-implemented FIB;

after the programming,

determining a last timestamp, wherein the last time stamp is the oldest timestamp of the plurality of timestamps where all routes associated with the last timestamp have been successfully programmed into the hardware-implemented FIB;

sending to the RIB agent, by the FIB agent, the last timestamp; and

advertising, by the RIB agent, all routes of the first batch that are associated with a timestamp that is no older than the last timestamp,

wherein programming, by the FIB agent, the first batch of routes into the hardware-implemented FIB comprises writing the routes in the first batch into the hardware FIB in the order the routes in the first batch are stored in the first batch of routes.

2. The method of claim 1 , wherein the plurality of timestamps comprises timestamps in ascending order, and wherein the timestamps in ascending order are assigned to the set of selected routes in sequential order.

3. The method of claim 2 , wherein a timestamp of the plurality of timestamps is assigned to a single route in the set of selected routes.

4. The method of claim 2 , wherein a timestamp of the plurality of timestamps is assigned to a subset of routes in set of selected routes.

5. The method of claim 2 , wherein a timestamp of the plurality of timestamps is a time derived from a time base at the time the timestamp was applied.

6. The method of claim 2 , wherein the plurality of timestamps is a sequence of increasing numbers.

7. The method of claim 1 , further comprising:

programming, by the FIB agent, the second batch of routes into the hardware-implemented FIB;

reporting of routes of the second batch successfully programmed into the hardware-implemented FIB from the FIB agent to the RIB agent;

advertising, by the RIB agent, routes of the second batch successfully programmed into the hardware-implemented FIB.

8. A network device comprising:

a processor and memory;

a routing information base (RIB) agent; and

a forwarding information base (FIB) agent,

wherein the network device receives route updates from a peer network device;

wherein the RIB agent selects, from the route updates, a set of selected routes to be used for routing;

wherein the RIB agent assigns a plurality of timestamps to the set of selected routes, and

wherein an order of the timestamps in the plurality of timestamps reflects an order of the routes in the set of selected routes;

wherein the RIB agent programs the set of selected routes into a software-implemented FIB;

wherein the FIB agent segments the set of selected routes in the software-implemented FIB into at least a first batch of routes and a second batch of routes, and

wherein a number of routes in each of the first and the second batches of routes is set based on an amount of time to write one or more entries;

wherein the FIB agent programs the first batch of routes into a hardware-implemented FIB; and

wherein, after the programming,

the FIB agent determines a last timestamp, wherein the last time stamp is the oldest timestamp of the plurality of timestamps where all routes associated with the last timestamp have been successfully programmed into the hardware-implemented FIB;

the FIB agent sends the last timestamp to the RIB agent; and

the RIB agent advertises all routes of the first batch that are associated with a timestamp that is no older than the last timestamp,

wherein the FIB agent programs the first batch of routes into the hardware-implemented FIB by writing the routes in the first batch into the hardware FIB in the order the routes in the first batch are stored in the first batch of routes.

9. The network device of claim 8 ,

wherein the plurality of timestamps comprises timestamps in ascending order, and wherein the timestamps in ascending order are assigned to the set of selected routes in sequential order.

10. The network device of claim 8 ,

wherein a timestamp of the plurality of timestamps is a time derived from a time base at the time the timestamp was applied.

11. The network device of claim 8 ,

wherein the FIB agent further programs the second batch of routes into the hardware-implemented FIB;

wherein the FIB agent further reports routes of the second batch successfully programmed into the hardware-implemented FIB to the RIB agent;

wherein the RIB agent further advertises routes of the second batch successfully programmed into the hardware-implemented FIB.

12. The network device of claim 8 , wherein the network device is a router.

13. The network device of claim 8 , wherein the network device is a multilayer switch.

14. A non-transitory computer readable medium comprising instructions, that enable a network device to:

receive route updates from a peer network device;

select from the route updates, by a routing information base (RIB) agent, a set of selected routes to be used for routing;

assign, by the RIB agent, a plurality of timestamps to the set of selected routes,

wherein an order of the timestamps in the plurality of timestamps reflects an order of the routes in the set of selected routes;

program, by the RIB agent, the set of selected routes into a software-implemented forwarding information base (FIB);

segment, by a forwarding information base (FIB) agent, the set of selected routes in the software-implemented FIB into at least a first batch of routes and a second batch of routes,

wherein a number of routes in each of the first and the second batches of routes is set based on an amount of time to write one or more entries;

program, by the FIB agent, the first batch of routes into a hardware-implemented FIB;

after the programming,

determine, by the FIB agent, a last timestamp, wherein the last time stamp is the oldest timestamp of the plurality of timestamps where all routes associated with the last timestamp have been successfully programmed into the hardware-implemented FIB;

send to the RIB agent, by the FIB agent, the last timestamp; and

advertise, by the RIB agent, all routes of the first batch that are associated with a timestamp that is no older than the last timestamp,

wherein the instructions that enable the FIB agent to program the first batch of routes into the hardware-implemented FIB comprise instructions to write the routes in the first batch into the hardware FIB in the order the routes in the first batch are stored in the first batch of routes.

15. The non-transitory computer readable medium of claim 14 ,

wherein the plurality of timestamps comprises timestamps in ascending order, and wherein the timestamps in ascending order are assigned to the set of selected routes in sequential order.

16. The non-transitory computer readable medium of claim 14 ,

wherein a timestamp of the plurality of timestamps is a time derived from a time base at the time the timestamp was applied.

17. The non-transitory computer readable medium of claim 14 , further comprising instructions, that enable a network device to:

program, by the FIB agent, the second batch of routes into the hardware-implemented FIB;

report routes of the second batch successfully programmed into the hardware-implemented FIB from the FIB agent to the RIB agent;

advertise, by the RIB agent, routes of the second batch successfully programmed into the hardware-implemented FIB.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 11, 2015
From: FENNER, WILLIAM; BADRINARYANANAN, PRAKASH
To: ARISTA NETWORKS, INC.
Reel/Frame 035611/0077 →
Continuity (1)
Related Publication 20160330102A1 · Nov 10, 2016