US-12621247-B2 - Determining when routes may be advertised by a network device in the context of asynchronous hardware platform processing code responses
Abstract
Some disclosed examples involve receiving information regarding a forwarding information base (FIB) sequence number, placing the FIB sequence number into a FIB sequence number queue and assigning the FIB sequence number a first state. Some examples involve receiving a route processing request including an indication of a route and a platform sequence number associated with the FIB sequence number, assigning the FIB sequence number a second state and placing the route processing request into a route-associated queue corresponding to the route. Some examples involve receiving a route processing response corresponding to the route and corresponding to one or more route processing requests, including the route processing request, removing the route processing request from the route-associated queue, assigning the FIB sequence number a third state and publishing the FIB sequence number.
Inventors
- Arseniy Kouzmenkov
- Trevor Siemens
- Mayukh Saubhasik
- Vahab Akbarzadeh
Assignees
- ARISTA NETWORKS, INC.
Dates
- Publication Date
- 20260505
- Application Date
- 20230531
Claims (18)
- 1 . A method, comprising: receiving information regarding a forwarding information base (FIB) sequence number; placing the FIB sequence number into a FIB sequence number queue; assigning the FIB sequence number a new state; receiving a route processing request including an indication of a route and a platform sequence number associated with the FIB sequence number; assigning the FIB sequence number a sent-to-platform state; placing the route processing request into a route-associated queue corresponding to the route; receiving a route processing response corresponding to the route and corresponding to one or more processing requests, including at least the route processing request; removing the route processing request from the route-associated queue; assigning the FIB sequence number a processed state; and publishing the FIB sequence number.
- 2 . The method of claim 1 , further comprising publishing all FIB sequence numbers at a head of the FIB sequence number queue having the processed state.
- 3 . The method of claim 1 , further comprising removing the FIB sequence number from the FIB sequence number queue, clearing a state of the FIB sequence number, or both removing the FIB sequence number from the FIB sequence number queue and clearing the state of the FIB sequence number.
- 4 . The method of claim 1 , further comprising: receiving an indication that a route has changed from a first FIB sequence number to a second FIB sequence number, the first FIB sequence number having the new state; assigning the second FIB sequence number the new state; and changing a state of the first FIB sequence number from the new state to an obsoleted state.
- 5 . The method of claim 4 , further comprising ceasing processing of the FIB sequence number queue responsive to determining that a FIB sequence number at a head of the FIB sequence number queue is not in the obsoleted state or the processed state.
- 6 . The method of claim 1 , wherein the route processing request indicates that the route is requested to be processed by a hardware platform.
- 7 . The method of claim 1 , further comprising ceasing processing of the FIB sequence number queue responsive to determining that the FIB sequence number queue is empty.
- 8 . The method of claim 1 , wherein the method is performed by a sequence number processing module implemented by a network device control system.
- 9 . The method of claim 8 , wherein publishing the FIB sequence number involves sending the FIB sequence number to one or more other modules implemented by the network device control system.
- 10 . The method of claim 8 , wherein the network device control system is a component of a network device configured for exchanging routing information with one or more neighboring network devices.
- 11 . A network device, comprising: an interface system; a memory system; and a control system configured to: receive, via the interface system, information regarding a forwarding information base (FIB) sequence number; place the FIB sequence number into a FIB sequence number queue implemented in the memory system; assign the FIB sequence number a new state; receive a route processing request including an indication of a route and a platform sequence number associated with the FIB sequence number; assign the FIB sequence number a sent-to-platform state; place the route processing request into a route-associated queue corresponding to the route, the route-associated queue being implemented in the memory system; receive a route processing response corresponding to the route and corresponding to one or more processing requests, including at least the route processing request; remove the route processing request from the route-associated queue; assign the FIB sequence number a processed state; and publish the FIB sequence number.
- 12 . The network device of claim 11 , wherein the control system is further configured to publish all FIB sequence numbers in the FIB sequence number queue having the processed state.
- 13 . The network device of claim 11 , wherein the control system is further configured to remove the FIB sequence number from the FIB sequence number queue, to clear a state of the FIB sequence number, or to both remove the FIB sequence number from the FIB sequence number queue and clear the state of the FIB sequence number.
- 14 . The network device of claim 11 , wherein the control system is further configured to: receive an indication that a route has changed from a first FIB sequence number to a second FIB sequence number, the first FIB sequence number having the new state; assign the second FIB sequence number the new state; and change a state of the first FIB sequence number from the new state to an obsoleted state.
- 15 . The network device of claim 14 , wherein the control system is further configured to cease processing of the FIB sequence number queue responsive to determining that a FIB sequence number at a head of the FIB sequence number queue is not in the obsoleted state or the processed state.
- 16 . The network device of claim 11 , wherein the control system is further configured to exchange routing information with one or more neighboring network devices.
- 17 . One or more non-transitory media having instructions for controlling a network device to perform a method stored thereon, the method comprising: receiving information regarding a forwarding information base (FIB) sequence number; placing the FIB sequence number into a FIB sequence number queue; assigning the FIB sequence number a new state; receiving a route processing request including an indication of a route and a platform sequence number associated with the FIB sequence number; assigning the FIB sequence number a sent-to-platform state; placing the route processing request into a route-associated queue corresponding to the route; receiving a route processing response corresponding to the route and corresponding to one or more processing requests, including at least the route processing request; removing the route processing request from the route-associated queue; assigning the FIB sequence number a processed state; and publishing the FIB sequence number.
- 18 . The one or more non-transitory media of claim 17 , wherein the method further comprises publishing all FIB sequence numbers in the FIB sequence number queue having the processed state.
Description
TECHNICAL FIELD This disclosure relates generally to network devices and more specifically to gateway network devices. BACKGROUND Arista's Border Gateway Protocol (BGP) configures network devices for exchanging routing information among neighboring routers, which are also known as “peers.” Static peers may be established by manual configuration commands. Dynamic peers may be established by creating a peer group listen range and accepting incoming peering requests in that range. Internal BGP (iBGP) peers operate within a single Autonomous System (AS). External BGP (eBGP) peers operate between ASs. Border routers are on AS boundaries and exchange information with other autonomous systems. An important function of border routers is distributing routes. During established BGP sessions, routers exchange UPDATE messages about the destinations to which they offer connectivity. In some examples, the route description includes the destination prefix, prefix length, autonomous systems in the path, the next hop, and information that affects the acceptance policy of the receiving router. UPDATE messages also may list destinations to which the router no longer offers connectivity. In order to decide when BGP routes may be advertised by a network device, the BGP implementation needs to know when routes are programmed in hardware so that advertising of routes occurs only after the routes have been programmed in hardware. As previously implemented, the “update wait-install” feature addressed this problem by associating route processing requests with sequence numbers and expecting to see the same sequence numbers in a response from the hardware platform processing code after the routes have been processed. When the “update wait-install” feature was originally implemented, the hardware platform processing code worked synchronously and processed all routes passed to the platform processing code in the order received, without coalescing processing requests. However, according to current BGP implementations, hardware platform processing code responses may be coalesced, out-of-order, asynchronous, or combinations thereof. As used herein, a “coalesced” hardware platform processing code response is responsive to multiple processing requests. It would be desirable to develop improved methods, devices and systems capable of processing coalesced, out-of-order and asynchronous hardware platform processing code responses for route programming. BRIEF DESCRIPTION OF THE DRAWINGS Details of one or more implementations of the subject matter described in this specification are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages will become apparent from the description, the drawings, and the claims. Note that the relative dimensions of the following figures may not be drawn to scale. Like reference numbers and designations in the various drawings indicate like elements. FIG. 1A is a block diagram that represents modules implemented by a control system according to one example. FIG. 1B shows examples of interactions between the modules of FIG. 1A. FIG. 2A shows an example of a queue of forwarding information base (FIB) sequence numbers that have been stored in a memory. FIG. 2B shows an example of the FIB sequence number queue of FIG. 2A at a subsequent time. FIG. 3A shows an example of the FIB sequence number queue of FIG. 2B and per-route request queues at a subsequent time. FIG. 3B shows an example of the FIB sequence number queue of FIG. 3A and per-route request queues at a subsequent time. FIG. 3C shows an example of the FIB sequence number queue of FIG. 3B and per-route request queues at a subsequent time. FIG. 3D shows an example of the FIB sequence number queue of FIG. 3C and per-route request queues at a subsequent time. FIG. 3E shows an example of the FIB sequence number queue of FIG. 3D and per-route request queues at a subsequent time. FIG. 4 is a flow diagram that presents examples of operations according to some disclosed methods. FIG. 5 is a block diagram that shows example components of an apparatus according to some disclosed implementations. FIG. 6 is a schematic representation of a network device (e.g., switch, router, etc.) that can be adapted in accordance with the present disclosure. DETAILED DESCRIPTION The following description is directed to certain implementations for the purposes of describing the innovative aspects of this disclosure. However, a person of ordinary skill in the art (POSITA) will readily recognize that the teachings herein may be applied in a multitude of different ways. Thus, the disclosed teachings are not intended to be limited to the implementations depicted solely in the Figures, but instead have wide applicability as will be readily apparent to one having ordinary skill in the art. For example, while the examples disclosed herein are primarily directed to network devices implementing the Border Gateway Protocol developed by the present assi