WO2020227412A1 - Open shortest path first (ospf) path-aware flooding - Google Patents

Open shortest path first (ospf) path-aware flooding Download PDF

Info

Publication number
WO2020227412A1
WO2020227412A1 PCT/US2020/031679 US2020031679W WO2020227412A1 WO 2020227412 A1 WO2020227412 A1 WO 2020227412A1 US 2020031679 W US2020031679 W US 2020031679W WO 2020227412 A1 WO2020227412 A1 WO 2020227412A1
Authority
WO
WIPO (PCT)
Prior art keywords
path
advertisement
loose
nes
network
Prior art date
Application number
PCT/US2020/031679
Other languages
French (fr)
Inventor
Padmadevi Pillay-Esnault
Uma S. Chunduri
Alvaro Retana
Original Assignee
Futurewei Technologies, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Futurewei Technologies, Inc. filed Critical Futurewei Technologies, Inc.
Publication of WO2020227412A1 publication Critical patent/WO2020227412A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/025Updating only a limited number of routers, e.g. fish-eye update
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation

Definitions

  • the present disclosure pertains to the field of data transmission in a network implementing an Interior Gateway Protocol (IGP), such as Open Shortest Path First (OSPF) version 2 (OSPFv2) or OSPF version 3 (OSPFv3).
  • IGP Interior Gateway Protocol
  • OSPFv2 Open Shortest Path First version 2
  • OSPFv3 OSPF version 3
  • OSPFv3 OSPF version 3
  • An IGP is a type of protocol used for exchanging information among network elements (NEs), such as routers, switches, gateways, etc., within a network (also referred to herein as an“autonomous system (AS)” or a“domain”).
  • NEs network elements
  • AS autonomous system
  • This information exchanged using IGP may include routing information and/or state information.
  • the information can be used to route data using network-layer protocols, such as Internet Protocol (IP).
  • IP Internet Protocol
  • IGPs can be divided into two categories: distance- vector routing protocols and link- state routing protocols.
  • each NE in the network does not possess information about the full network topology. Instead, each NE advertises a distance value calculated to other routers and receives similar advertisements from other routers. Each NE in the network uses the advertisements to populate a local routing table.
  • each NE stores network topology information about the complete network topology. Each NE then independently calculates the next best hop from the NE for every possible destination in the network using the network topology information. The NE then stores a routing table including the collection of next best hops to every possible destination.
  • Each NE in the network forwards the information encoded according to an IGP to adjacent NEs, thereby flooding the network with the information that is saved at each of the NEs in the network.
  • link-state routing protocols include Intermediate System to Intermediate System (IS-IS), OSPFv2, and OSPFv3.
  • OSPFv2 and OSPFv3 are dynamic routing protocols that quickly detect topological changes and calculate new loop free routes after a period of convergence.
  • Each NE in the network implementing an OSPF protocol includes a link-state database (LSDB) and a routing table.
  • the LSDB describes a topology of the network, and each NE in the network maintains an identical LSDB.
  • Each entry in the LSDB describes a particular NE’s local state (e.g., usable interfaces and reachable neighbors).
  • Each NE constructs a tree of shortest paths with the respective NE as the root using the LSDB. This shortest path tree indicates the route from the respective NE to each destination in the network and is used to construct the routing table maintained by the respective NE.
  • OSPF Open Shortest Path First
  • the previous NE is a central entity of the network.
  • next NE is explicitly identified in the advertisement.
  • the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the advertisement, and wherein the method further comprises performing a shortest path computation between the NE and the next loose NE to determine a shortest path between the NE and the next loose NE, wherein the next NE is a next hop on the shortest path between the NE and the next loose NE.
  • the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the advertisement.
  • the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the path information in the advertisement, further comprising determining that a virtual link is established between the NE and the next loose NE, wherein determining the next NE on the path comprises determining that the next loose NE is the next NE on the path, and forwarding the advertisement to only the next NE on the path comprises forwarding the advertisement to the next loose NE via the virtual link.
  • the path is a preferred path route (PPR) between a first NE and a plurality of second NEs
  • the path information describing the path comprises a PPR identifier (PPR-ID) identifying the PPR and a plurality of PPR path description elements (PPR- PDEs), and wherein each of the PPR-PDEs describes a link or NE on the PPR.
  • PPR-ID PPR identifier
  • PPR- PDEs PPR path description elements
  • the path is a preferred path route (PPR) graph between a first NE and a plurality of second NEs, wherein the path information describing the path comprises a PPR graph identifier (ID) identifying the PPR graph and a plurality of PPR path description elements (PPR-PDEs), and wherein each of the PPR-PDEs describes a link or NE on the PPR graph.
  • PPR preferred path route
  • the path is a preferred path route (PPR) graph between a plurality of first NEs and a second NE, wherein the path information describing the path comprises a PPR graph identifier (ID) identifying the PPR graph and a plurality of PPR path description elements (PPR-PDEs), and wherein each of the PPR-PDEs describes a link or NE on the PPR graph.
  • PPR preferred path route
  • the path is a preferred path route (PPR) graph between a plurality of first NEs and a plurality of second NEs, wherein the path information describing the path comprises a PPR graph identifier (ID) identifying the PPR graph and a plurality of PPR path description elements (PPR-PDEs), and wherein each of the PPR-PDEs describes a link or NE on the PPR graph
  • PPR preferred path route
  • a second aspect of the present disclosure relates to a network element (NE) in a network implementing OSPF, comprising a memory storing instructions, and a processor coupled to the memory and configured to execute the instructions, which cause the processor to be configured to receive, from a previous NE, an advertisement comprising path information describing a path between at least two NEs in the network, update a routing table stored in a memory of the NE based on the path information in the advertisement, determine a next NE on the path based on the path information in the advertisement, when the NE has at least three neighboring NEs, the at least three neighboring NEs comprise the previous NE, the next NE, and a neighboring NE that is not on the path, and forward the advertisement to only the next NE on the path.
  • a network element in a network implementing OSPF
  • the previous NE is a central entity of the network.
  • next NE is explicitly identified in the advertisement
  • the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the advertisement, and wherein the instructions further cause the processor to perform a shortest path computation between the NE and the next loose NE to determine a shortest path between the NE and the next loose NE, wherein the next NE is a next hop on the shortest path between the NE and the next loose NE.
  • the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the advertisement.
  • the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the path information in the advertisement, wherein the instructions further cause the processor to determine that a virtual link is established between the NE and the next loose NE, determine that the next loose NE is the next NE on the path, and forward the advertisement to the next loose NE via the virtual link.
  • a third aspect of the present disclosure relates to a non-transitory computer-readable medium configured to store a computer program product comprising computer executable instructions that, when executed by a processor of a NE implemented in a network, cause the processor to receive, from a previous NE, an advertisement comprising path information describing a path between at least two NEs in the network, update a routing table stored in a memory of the NE based on the path information in the advertisement, determine a next NE on the path based on the path information in the advertisement, when the NE has at least three neighboring NEs, the at least three neighboring NEs comprise the previous NE, the next NE, and a neighboring NE that is not on the path, and forward the advertisement to only the next NE on the path.
  • the previous NE is a central entity of the network.
  • the next NE is explicitly identified in the advertisement.
  • the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the advertisement, and wherein the computer executable instructions further cause the processor to perform a shortest path computation between the NE and the next loose NE to determine a shortest path between the NE and the next loose NE, wherein the next NE is a next hop on the shortest path between the NE and the next loose NE.
  • the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the advertisement.
  • the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the path information in the advertisement, wherein the computer executable instructions further cause the processor to determine that a virtual link is established between the NE and the next loose NE .
  • a fourth aspect of the present disclosure relates to a plurality of the NEs of any one of the above aspects, wherein the plurality of NEs are coupled to each other.
  • the neighboring NE that is not on the path does not receive the advertisement
  • the next NE receives the advertisement from the NE.
  • the plurality of NEs comprise the previous NE, the NE, and the next loose NE, wherein the path includes the previous NE, the NE, and the next loose NE, wherein the previous NE and the NE are neighboring NEs, where the NE and the next loose NE are separated by at least one other NE in the network, and wherein the NE is configured to receive, from the previous NE, the advertisement, wherein the path information explicitly identifies the next loose NE on the path, perform the shortest path computation between the NE and the next loose NE to determine the shortest path between the NE and the next loose NE, and forward the advertisement to the next NE in the network based on the shortest path between the NE and the next loose NE, and wherein the next NE is configured to receive the advertisement, and forward the advertisement to another next NE based on the shortest path between the NE and the next loose NE without storing
  • the plurality of NEs comprise the previous NE, the NE, and the next loose NE, wherein the path includes the previous NE, the NE, and the next loose NE, wherein the previous NE and the NE are neighboring NEs, where the NE and the next loose NE are separated by at least one other NE in the network, and wherein the NE is configured to receive, from the previous NE, the advertisement, wherein the path information explicitly identifies the next loose NE on the path, determine that the virtual link is established between the NE and the next loose NE, and forward the advertisement to the next loose NE via the virtual link, wherein the next loose NE is configured to receive the advertisement from the NE via the virtual link.
  • a fifth aspect of the present disclosure relates to a method for operating a network comprising a plurality of NE, comprising performing, by an NE of the plurality of NEs, the method of the first aspect or the second aspec t.
  • the neighboring NE that is not on the path does not receive the advertisement.
  • the plurality of NEs comprise the previous NE, the NE, and the next loose NE, wherein the path includes the previous NE, the NE, and the next loose NE
  • the method further comprises receiving, by the NE from the previous NE, the advertisement, wherein the path information explicitly identifies the next loose NE on the path, performing, by the NE, the shortest path computation between the NE and the next loose NE to determine the shortest path between the NE and the next loose NE, forwarding, by the NE, the advertisement to the next NE based on the shortest path between the NE and the next loose NE, receiving, by the next NE, the advertisement, and forwarding, by the next NE, the advertisement to another next NE based on the shortest path between the NE and the next loose NE without storing the path information.
  • the plurality of NEs comprise the previous NE, the NE, and the next loose NE, wherein the path includes the previous NE, the NE, and the next loose NE, and wherein the method further comprises receiving, by the NE, from the previous NE, the advertisement, wherein the path information explicitly identifies the next loose NE on the path, determining, by the NE, that a virtual link is established between the NE and the next loose NE, forwarding, by the NE, the advertisement to the next loose NE via the virtual link, and receiving, by the next loose NE from the NE, the advertisement via the virtual link.
  • any one of the foregoing embodiments may be combined with any one or more of the other foregoing embodiments to create a new embodiment within the scope of the present disclosure.
  • FIG. l is a schematic diagram illustrating a network configured to implement an OSPF protocol and path-aware flooding according to various embodiments of the disclosure.
  • FIG. 2 is a schematic diagram of an NE suitable to implement an OSPF protocol and path-aware flooding according to various embodiments of the disclosure .
  • FIG. 3 is a schematic diagram illustrating a network configured to implement an OSPF protocol and path-aware flooding for strict paths and loose paths according to various embodiments of the disclosure.
  • FIG. 4 is a schematic diagram illustrating a method of performing path-aware flooding of an advertisement across a strict path according to various embodiments of the disclosure.
  • FIG. 5 is a schematic diagram illustrating a method of performing path-aware flooding of an advertisement across a loose path according to a first embodiment of the disclosure.
  • FIG. 6 is a schematic diagram illustrating a method of performing path-aware flooding of an advertisement across a loose path according to a second embodiment of the disclosure.
  • FIG. 7 is a schematic diagram illustrating a method of performing path-aware flooding of an advertisement across a loose path according to a third embodiment of the disclosure.
  • FIG. 8 is a flowchart illustrating a method for implementing an OSPF protocol and path-aware flooding according to various embodiments of the disclosure.
  • FIG. 9 is a diagram illustrating an apparatus for implementing an OSPF protocol and path-aware flooding according to various embodiments of the disclosure.
  • FIG. 1 is a schematic diagram illustrating a network 100 (also referred to herein as an “AS” or a “domain”) configured to implement path-aware flooding according to various embodiments of the disclosure.
  • network 100 is configured to implement an OSPF protocol.
  • OSPF protocol may refer to a routing protocol, such as, for example, OSPFv2, OSPFv3, or any other IGP that implements a flooding mechanism similar to OSPFv2 or OSPFv3.
  • path-aware flooding refers to a mechanism by which NEs only forward path information to other neighboring NEs that are on the path (e.g., relevant to the information being flooded).
  • the network 100 is configured to implement strict path-aware flooding or loose path-aware flooding.
  • Strict path-aware flooding occurs when an NE receives an advertisement with path information explicitly describing a neighboring NE that is on the path. In this case, the NE only forwards the advertisement to the neighboring NE explicitly described in the path information.
  • Loose path-aware flooding occurs when an NE receives an advertisement with path information that does not explicitly describe a neighboring NE as being on the path. Instead, the path information describes an NE that may be multiple hops away (also referred to herein as a“next loose NE”). In this case, the NE may forward the advertisement to the next loose NE in multiple different ways, as will be further described below with reference to FIGS. 5-7.
  • network 100 comprises a central entity 103 of the network (also referred to herein as a“controller”) and multiple NEs 104-112.
  • the central entity 103 is coupled to at least one of the NEs 109 via a link 125, and the NEs 104-112 are interconnected by links 113-
  • the central entity 103 may be substantially similar to a Path Computation Element (PCE), which is further described in Internet Engineering Task Force (IETF) Request for Comments (RFC) 8281, entitled“Path Computation Element Communication Protocol (PCEP) Extensions for PCE-Initiated LSP Setup in a Stateful PCE Model,” by E. Crabbe, dated December 2017, which is incorporated by reference herein in its entirety.
  • PCE Path Computation Element
  • RFC Request for Comments
  • PCEP Policy Element Communication Protocol
  • the central entity 103 may be substantially similar to a Software Defined Network Controller (SDNC), which is further described in the IETF RFC 8402, entitled“Segment Routing Architecture,” by C. Filsfils, dated July 2018, which is incorporated by reference herein in its entirety.
  • SDNC Software Defined Network Controller
  • the central entity 103 may be substantially similar to an Application Layer Traffic Optimization (ALTO) server, which is further described in the IETF RFC 7285, entitled “Application Layer Traffic Optimization (ALTO) Protocol,” by R. Alimi, dated September 2014, which is incorporated by reference herein in its entirety.
  • ATO Application Layer Traffic Optimization
  • NEs 104-112 may each be a physical device, such as a router, a bridge, a network switch, or a logical device, such as a virtual machine, configured to forward data across the network 100 by encoding the data according to an OSPF protocol.
  • the NEs 104-112 are headend nodes or edge nodes positioned at an edge of the network 100.
  • one or more of NEs 104-112 may be an ingress node at which traffic (e.g., control packets and data packets) is received, and one or more of NEs 104-112 may be an egress node from which traffic is transmitted.
  • Some of the NEs 104-112, such as 108 and 107, may be interior nodes that are configured to receive and forward traffic from another NE
  • the link 125 may be a wired link, wireless link, or interface interconnecting one of the NEs 109 and the central entity 103.
  • the links 113-122 may be wired links, wireless links, or interfaces interconnecting each of the NEs 104-112.
  • the network 100 shown in FIG. 1 may include any number of NEs, such as at least 3, at least 4, at least 10, or at least 100 , which is incorporated by reference herein in its entirety.
  • the central entity 103 and NEs 104-112 are configured to implement various packet forwarding protocols, such as, but not limited to, Multi-protocol Label Switching (MPLS), IP version 4 (IPv4), IP version 6 (IPv6), and Big Packet Protocol.
  • MPLS Multi-protocol Label Switching
  • IPv4 IP version 4
  • IPv6 IP version 6
  • Big Packet Protocol IP version 6
  • Each of the NEs 104-112 floods the network 100 with advertisements carrying information related to a respective NE 104-112. To flood the network 100, each NE 104-112 forwards a received advertisement to neighboring NEs 104-112 in the network 100.
  • neighboring NEs 104-112 refers to two adjacent NEs each having interfaces that can directly communicate with one another.
  • NE 105 transmits link-state information in an advertisement describing NE 105 to neighboring NEs 104 and 106.
  • the receiving NEs 104 and 106 each update a local LSDB to include the link-state information describing NE 105.
  • Each of the receiving NEs 104 and 106 then forwards the advertisement to neighboring NEs. That is, NE 104 forwards the advertisement to NE 109, and NE 106 forwards the advertisement to NEs 107 and 112.
  • NEs 109, 107, and 112 similarly update their local LSDBs and forward the advertisement to neighboring NEs 110, 108, and 111.
  • the advertisements may be link state advertisements (LSAs) pursuant to the OSPF protocol, and the LSAs may each carry link state information, routing information, security information, or any other information relevant to the NEs 104-112. Additional details regarding contents of the LSA are described in Network Working Group RFC 2328, entitled“OSPF Version 2,” dated April 1998, by J. Moy, and Network Working Group RFC 2740, entitled“OSPF for IPv6,” dated July 2008, by R. Colton, et. al, which is hereby incorporated by reference in its entirety.
  • the link-state information describes a state of a respective NE’s interfaces and adjacencies, such as, for example, prefixes, security identifiers (SIDs), traffic engineering (TE) information, identifiers (IDs) of adjacent NEs, links, interfaces, ports, and routes.
  • the link-state information may include, for example, local/remote IP address, local/remote interface identifiers, link metrics and TE metrics, link bandwidth, reserveable bandwidth, per Class-of- Service (CoS) class reservation state, preemption, and Shared Risk Link Groups (SLRGs).
  • the routing information may include information describing one or more elements on a path between a source (first NE) and a destination (second NE) in the network 100.
  • the routing information may include an identifier (ID) of a path and a label, address, or ID of one or more elements on the path.
  • the link-state information received in an advertisement may be stored in the LSDB of each NE 104-112. Each NE 104-112 may use the information stored in the LSDB to obtain a topology of the network 100.
  • the routing information received in an advertisement may be stored in the routing table of each NE 104-112. Each NE 104-112 uses the routing table to determine next hops by which to forward packets.
  • At least one of the NEs 109 may be communicatively coupled to the central entity 103, for example, via a Border Gateway Protocol (BGP) connection. In this case, NE 109 may transmit each of the received advertisements to the central entity 103.
  • the central entity 103 is configured to collect TE information and link-state information from NEs 104-112 within the network 100 using the received advertisements.
  • the central entity 103 may determine the network topology using the received advertisements.
  • a path may be provisioned across the NEs 104-112 of the network 100 in a few different manners.
  • the network 100 is configured to provision shortest paths, preferred path routes (PPRs), and PPR graphs.
  • each NE 104-112 constructs a shortest path tree to each destination in the network 100, and uses this shortest path tree to construct a routing table describing the path to each destination in the network 100.
  • a shortest path tree may be computed for a destination using a Dijkstra’s Shortest Path First (SPF) algorithm.
  • SPF Shortest Path First
  • each NE 104-112 determines the shortest path to a destination in the network 100 based on the costs of each of the links 113-122 interconnecting NEs 104-112 in the network 100.
  • a PPR (also referred to herein as a“Non-Shortest Path (NSP)”) refers to a custom path or any other path that may deviate from the shortest path computed between two NEs or between a source and destination.
  • a PPR may also be the same as the shortest path.
  • the PPRs are determined based on an application or server request for a path between two NEs 104-112 or between a source and destination that satisfies one or more network characteristics (such as TE) or service requirements.
  • PPRs are further defined in International Application No. PCT/US2018/015419, filed on January 28, 2019, incorporated by reference herein in its entirety.
  • the central entity 103 is configured to determine one or more PPRs between the two NEs 104-112 positioned at edges of the network 100 using a network topology of the network 100 and capabilities of NEs 104-112 within the network 100 and based on an application or server request for a PPR.
  • the central entity 103 transmits PPR information describing the determined PPR to at least one NE 104-112 in the network 100.
  • the PPR information includes a PPR-identifier (ID) identifying the PPR, and multiple PPR path description elements (PPR-PDEs). Each PPR-PDE identifies an NE 104-112 or a link 113-122 along the PPR.
  • a PPR graph refers to a collection of multiple PPRs between one or more ingress NEs 104-112 (also referred to herein as“sources”) and one or more egress NEs 104-112 (also referred to herein as“destinations”).
  • a PPR graph may hang a single source and multiple destinations, multiple destinations and a single source, or multiples sources and multiple destinations. PPR graphs are further defined in International Application No. PCT/US2019/030440, filed on May 2, 2019, incorporated by reference herein in its entirety.
  • the central entity 103 is configured to determine a PPR graph between one or more ingress NEs 104-112 and one or more egress NEs 104-112 using a network topology of the network 100 and capabilities of NEs 104-112 within the network 100 and based on an application or server request for a PPR graph.
  • the central entity 103 transmits PPR information describing the determined PPR graph to at least one NE 104-112 in the network 100.
  • the PPR information includes a PPR graph ID identifying the PPR, and multiple PPR-PDEs each identifying an NE 104-112 or a link 113-122 along the PPR graph.
  • the term“path” may refer to the shortest path, PPR, or PPR graphs.
  • the path 130 in FIG. 1 refers to a sequential ordering of one or more NEs 104-112 and/or links 113-122. As shown in FIG. 1, the path 130 includes NE 109, link 118, NE 108, link 117, NE 107, link 116, and NE 106.
  • central entity 103 determines the path 130 between a source (e.g., NE 109) and a destination (e.g., NE 106) in the network 100.
  • the central entity 103 transmits an advertisement 150 including path information 145 describing the path 130 to at least one NE 109 in the network 100 via link 125.
  • the path information 145 describing path 130 may include labels, addresses, or IDs describing one or more of NE 109, link 118, NE 108, link 117, NE 107, link 116, and NE 106 along the path 130.
  • NE 103 transmits the advertisement 150 to NE 109, via a BGP connection.
  • FIG. 1 shows NE 109 receiving the advertisement 150 from the central entity 103
  • the path information may already be locally provisioned at NE 109, for example, by an operator of the network 100.
  • NE 109 may receive the advertisement 150 from any other entity other than the central entity 103 or an operator of the network 100.
  • NE 109 may receive the advertisement 150 describing path 130 from another NE 104-112 within the network 100 or external to the network 100.
  • NE 109 may itself generate the path information 145.
  • NE 109 may determine the path information 145 for the path 130 by constructing a shortest path tree to determine a shortest path 130 to NE 106.
  • NE 109 is configured to initiate OSPF flooding of the advertisement 150 through the network 100 upon obtaining (e.g., receiving or generating) the advertisement 150.
  • the network 100 implements an OSPF protocol, in which all NEs 104-112 in the network 100 flood the network 100 with information relevant to the network 100.
  • OSPF protocol in which all NEs 104-112 in the network 100 flood the network 100 with information relevant to the network 100.
  • NE 109 obtains the advertisement 150
  • NE 109 is configured to update the local LSDB with the path information 145, and then forward the advertisement 150 to neighboring NEs 104, 108, and 110.
  • NEs 104, 108, and 110 Upon receiving the advertisement 150, NEs 104, 108, and 110 also update the local LSDB to include the path information 145 and then forward the advertisement 150 to neighboring NEs 105, 107, and 111.
  • NE 104 forwards the advertisement 150 to NE 105
  • NE 108 forwards the advertisement 150 to E 107
  • E 110 forwards the advertisement 150 to E 111.
  • NEs 105, 107, and 111 are configured to update the local LSDB to include the path information 145 and forward the advertisement 150 to neighboring NEs 106 and 112.
  • a single NE 109 is configured to initiate the OSPF flooding of an advertisement 150 to all NEs 104-112 within a network 100 using the OSPF protocol.
  • the OSPF protocol allows networks 100 to implement a reliable flooding mechanism by which all the NEs 104-112 in the network 100 maintain an identical and synchronized view of the network 100.
  • the information that is flooded through the network 100 is completely irrelevant to some of the NEs 104-112 that receive the information. In these cases, each of these NEs 104-112 nevertheless processes and stores this information even though the NEs 104-112 may never use the information. Further, the overall amount of information that needs to be flooded through a network 100 is continuously growing, which results in an inefficient use of the resources within a network 100. For this reason, network characteristics, such as bandwidth, throughput, latency, error rate, etc., can be significantly affected when data is unnecessarily flooded through the network 100.
  • an NE 109 obtains an advertisement 150 comprising path information 145 describing a path 130 between NE 109 and NE 106 in the network 100.
  • the advertisement 150 may be received from the central entity 103 or another NE 104-112 within the network 100 or external to the network 100.
  • the advertisement 150 may otherwise be generated by the NE 109.
  • NE 109 After receiving the advertisement 150, NE 109 updates a local routing table stored in a memory of NE 109 to include the path information 145.
  • An entry in the routing table that is updated to include the path information 145 indicates a next NE (e.g., next hop) by which to forward a data packet that is destined for NE 106.
  • NE 109 extracts the path information 145 from the advertisement 150 to determine whether the path information 145 identifies or indicates a next NE 104-112 on the path 130 that is also neighboring the NE 109. In the example shown in FIG. 1, the path information 145 identifies neighboring NE 108 as a hop along path 130. In an embodiment, instead of forwarding the advertisement 150 to NEs 104, 108, and 110, NE 109 only forwards the advertisement 150 to the next neighboring NE 108 that is identified in the path information 145. In the example shown in FIG. 1, NE 109 only forwards the advertisement 150 to NE 108.
  • NE 108 Upon receiving the advertisement 150, NE 108 also updates the local routing table to include the path information 145. NE 108 also determines a next NE 107 on the path 130 based on the path information 145. In an embodiment, NE 108 also determines that the next NE 107 is a neighboring NE. In the example shown in FIG. 1, NE 108 determines that neighboring NE 107 is identified in the path information 145, and thus is the next NE 107 on the path 130. NE 108 forwards the advertisement 150 to only NE 107.
  • NE 107 similarly updates the local routing to table to include the path information 145. NE 107 also only forwards the advertisement 150 to neighboring NE 106 that is identified in the path information 145 of the advertisement 150.
  • the embodiments disclosed herein are advantageous in that the network overhead can be significantly reduced by reducing the amount of data that is flooded through the network 100 and reducing the amount of data that has to be processed by each of NEs 104-112 in the network 100. By only forwarding advertisements 150 to relevant NEs 104-112, the network 100 inherently will have more bandwidth by which to transmit additional data, and throughput of the network 100 can be significantly increased. In addition, latency can be reduced due to the higher availability of network resources within the network 100.
  • the delay occurring between receiving packets/messages at each of the NEs 104-112 and being processed at the socket at each of the NEs 104-112 can also be greatly reduced. Accordingly, the embodiments disclosed herein enhance the OSPF protocols to provide a more efficient and resource effective manner by which to flood the network 100 with necessary information.
  • FIG. 2 is a schematic diagram of an NE 200 suitable to implement an OSPF protocol and path-aware flooding according to various embodiments of the disclosure.
  • the NE 200 may be implemented as any one of NEs 104-112 or the central entity 103.
  • the NE 200 comprises ports 220, transceiver units (Tx/Rx) 210, a processor 230, and a memory 260.
  • the processor 230 comprises a path aware module 235. Ports 220 are coupled to Tx/Rx 210, which may be transmitters, receivers, or combinations thereof. The Tx/Rx 210 may transmit and receive data via the ports 220. Processor 230 is configured to process data. Memory 260 is configured to store data and instructions for implementing embodiments described herein.
  • the NE 200 may also comprise electrical-to-optical (EO) components and optical -to-electrical (OE) components coupled to the ports 220 and Tx/Rx 210 for receiving and transmitting electrical signals and optical signals.
  • EO electrical-to-optical
  • OE optical -to-electrical
  • the processor 230 may be implemented by hardware and software.
  • the processor 230 may be implemented as one or more central processing unit (CPU) and/or graphics processing unit (GPU) chips, logic units, cores (e.g., as a multi-core processor), field- programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), and digital signal processors (DSPs).
  • the processor 230 is in communication with the ports 220, Tx/Rx 210, and memory 260.
  • the path aware module 235 is implemented by the processor 230 to execute the instructions for implementing various embodiments discussed herein.
  • the path aware module 235 is configured to determine relevant NEs 104-112 toward which to forward advertisements 150 based on the path information 145 contained within the advertisements 150.
  • the inclusion of the path aware module 235 provides an improvement to the functionality of the NE 200.
  • the path aware module 235 also effects a transformation of NE 200 to a different state.
  • the path aware module 235 is implemented as instructions stored in the
  • the memory 260 comprises one or more of disks, tape drives, or solid-state drives and may be used as an over-flow data storage device, to store programs when such programs are selected for execution, and to store instructions and data that are read during program execution.
  • the memory 260 may be volatile and non-volatile and may be read-only memory (ROM), random-access memory (RAM), ternary content-addressable memory (TCAM), and static random-access memory (SRAM).
  • the memory 260 is configured to store path information 145, LSDB 273, and a routing table 276.
  • the path information 145 includes information describing a path 130, such as, for example, an ID of the path 130 and labels, addresses, or IDs describing each of the elements on the path 130.
  • the ID of the path 130 may be a PPR-ID when the path 130 is a PPR.
  • the labels, addresses, or IDs describing each of the elements on the path 130 may be carried in PPR-PDEs when the path 130 is a PPR.
  • the LSDB 273 stores information describing a topology of network 100.
  • the routing table 276 includes routing information describing a next hop to every destination in the network 100 from the NE 200
  • a design that is still subject to frequent change may be preferred to be implemented in software, because re-spinning a hardware implementation is more expensive than re-spinning a software design.
  • a design that is stable that will be produced in large volume may be preferred to be implemented in hardware, for example in an ASIC, because for large production runs the hardware implementation may be less expensive than the software implementation.
  • a design may be developed and tested in a software form and later transformed, by well- known design rules, to an equivalent hardware implementation in an ASIC that hardwires the instructions of the software.
  • a machine controlled by a new ASIC is a particular machine or apparatus, likewise a computer that has been programmed and/or loaded with executable instructions may be viewed as a particular machine or apparatus.
  • FIG. 3 is a schematic diagram illustrating a network 300 configured to implement an OSPF protocol and path-aware flooding for strict paths and loose paths according to various embodiments of the disclosure.
  • Network 300 is similar to network 100 in that network 300 includes NEs 104-112 interconnected by links 113-122.
  • Network 300 also includes the central entity 103 coupled to NE 109 via link 125.
  • network 300 differs from network 100 in that network 300 includes additional NEs 301 and 302.
  • NE 111 is coupled to NE 301 via a link 303
  • NE 301 is coupled to NE 302 via link 304
  • NE 112 is coupled to NE 302 via link 305
  • NE 302 is coupled to NE 106 via link 306.
  • NEs 104-112 and 301-302 are interconnected by links 113-122 and 303-306 in network 300.
  • network 300 includes the path 130, which is a strict path 130.
  • a strict path 130 refers to a path in which the path information 145 describes every element (e.g., NE or link) along the strict path.
  • the PPR information describing the strict PPR includes a PPR-PDE for each NE along the strict PPR.
  • the strict path 130 includes NE 109, link 118, NE 108, link 117, NE 107, link 116, and NE 106.
  • the path information 145 describing the strict path 130 identifies at least NE 109, NE 108, NE 107, and NE 106.
  • each of NE 109, NE 108, NE 107, and NE 106 are indicated with boxes as being configured as strict path NEs.
  • the central entity 103 transmits an advertisement 150A including the path information 145 to NE 109, as shown by FIG. 3. It should be appreciated that NE 109 may receive the advertisement 150 with the path information 145 from another NE, or may itself generate the advertisement 150 with the path information 145. NE 109 then initiates transmission of the advertisement 150A to only the relevant NEs that are identified in the advertisement 150A (NEs 109, 108, 107, and 106).
  • NE 109 determines that a neighboring NE 108 is identified in the path information 145 describing the strict path 130 in the advertisement 150A. NE 109 transmits the advertisement 150A to NE 108. NE 108 similarly determines that a neighboring NE 107 is identified in the path information 145 describing the strict path 130 in the advertisement 150A, and transmits the advertisement 150A to neighboring NE 107. NE 107 similarly determines that a neighboring NE 106 is identified in the path information 145 describing the strict path 130 in the advertisement 150A, and transmits the advertisement 150A to neighboring NE 106.
  • NE 106 determines that there is no neighboring NE identified in the path information 145 describing the strict path 130 other than the NE 107 from which the advertisement 150A was received. NE 106 then does not transmit the advertisement 150A to any other NEs in the network 300. Additional details of this embodiment related to path-aware flooding of path information 145 describing a strict path 130 are discussed below with reference to FIG. 4.
  • network 300 also includes a loose path 330.
  • a loose path 330 refers to a path in which the path information 145 does not describe every single NE along the loose path 330. That is, the path information 145 describing a loose path 330 may skip certain elements along the loose path 330 such that only a subset of the elements along the loose path 330 are described in the path information 145.
  • the loose path 330 includes NE 109, link 119, NE 110, link 120, NE 111, link 303, NE 301, link 304, NE 302, link 306, and NE 106.
  • the path information 345 describing the loose path 330 only identifies NE 109, NE 110, NE 111, and NE 106, which are indicated with circles as being configured as loose path NEs.
  • the central entity 103 transmits an advertisement 150B including the path information 345 to NE 109, as shown by FIG. 3.
  • NE 109 may otherwise receive the advertisement 150B with the path information 345 from another NE, or may itself generate the advertisement 150B with the path information 345.
  • NE 109 then initiates path-aware flooding of the advertisement 150B to only the relevant NEs that are identified in the advertisement 150B (NE 110, NE 111, and NE 106).
  • NE 109 determines that a neighboring NE
  • NE 110 is identified in the path information 345 describing the loose path 330 in the advertisement 150B. NE 109 then transmits the advertisement 150B to NE 110. NE 110 similarly determines that a neighboring NE 111 is identified in the path information 345 describing the loose path 330 in the advertisement 150B, and transmits the advertisement 150B to NE 1 11.
  • NE 111 uses the LSDB 273 stored locally in a memory 260 of NE 11 1 to determine that the neighboring NEs adjacent to NE 111 are neighboring NE 112 and neighboring NE 301. As shown by FIG. 3, NE 111 is coupled to NE 301 via link 303, and NE
  • NE 111 is coupled to NE 112 via link 121. NE 111 also determines that neither of these neighboring NEs 112 and 301 are identified in the path information 345 describing the loose path 330 in the advertisement 150B. The next NE identified in the path information 345 of the advertisement 150B is NE 106. However, NE 106 is not a neighboring NE of NE 111. In various embodiments, NE 111 is configured to determine a next NE toward which to forward the advertisement 150B based on the path information 345. [0098] In a first embodiment, the NE 111 performs the OSPF protocol flooding mechanism and forwards the advertisement 150B to all neighboring NEs 112 and 301.
  • NEs 112 and 301 forward the advertisement 150B to all neighboring NEs 106 and 302.
  • NE 106 terminates the flooding of the advertisement 150B and does not forward the advertisement 150B to any other NEs 104-112 and 301-302 in the network 300. Additional details of this first embodiment are described below with reference to FIG. 5.
  • NE 111 constructs a shortest path tree to the next NE 106 identified in the path information 345 to determine a next NE toward which to forward the advertisement 150B, and only forwards the advertisement 150B to the determined next NE.
  • NE 111 is configured to construct a shortest path tree or compute a shortest path first algorithm based on costs associated with each of the links 121, 122, and 303-306 on a path toward NE 106. The costs associated with each of the links 121, 122, and 303-306 may be stored in the local LSDB 273.
  • the cost associated each of the links 113-122 and 303-306 in network 300 may correspond to amount of resources that are utilized to forward data across the respective link 113-122 and 303-306 in network 300. In this way, the shortest path between two NEs 104-112 and 301-302 is the path that has the lowest cost.
  • NE 111 only forwards the advertisement 150B to the next neighboring NE 301 identified based on computing the shortest path between NE 111 and NE 106, which is the next NE 106 identified in the path information 345 describing loose path 330.
  • NE 301 also only forwards the advertisement 150B to the next neighboring NE 302 identified based on computing the shortest path between NE 111 and NE 106.
  • NE 302 only forwards the advertisement 150B to the next neighboring NE 106 identified based on computing the shortest path between NE 111 and NE 106.
  • NE 106 may terminate the flooding of the advertisement 150B since another neighboring NE or next NE is not identified in the path information 345 describing the loose path 330. Additional details of this second embodiment are discussed below with reference to FIG. 6.
  • NE 111 determines that a virtual link has been configured between NE 111 and the next NE 106 identified in the path information 345, and only forwards the advertisement 150B to the NE 106 via the virtual link.
  • a virtual link is a tunnel that can be configured between any two NEs 104-112 and 301-302 that have an interface to a common non-backbone area, such that the virtual link belongs to the backbone area.
  • NE 111 may first determine whether a virtual link has been established between NE 111 and the next NE 106 identified in the path information 345. If such a virtual link has been established, NE 111 transmits the advertisement 150B directly to NE 106 via the virtual link. Similar to the first and second embodiment, NE 106 terminates flooding of the advertisement 150B upon receiving the advertisement 150B. Additional details of this third embodiment are discussed below with reference to FIG. 7.
  • FIG. 4 is a schematic diagram 400 illustrating a method of performing the path-aware flooding of advertisement 150A across a strict path 130 according to various embodiments of the disclosure.
  • FIG. 4 shows the strict path 130, which includes NEs 109, 108, 107, and 106 interconnected by links 118, 117, and 116.
  • NE 109 first obtains the advertisement 150A by either receiving the advertisement 150 A from another NE or the central entity 103, or generating the advertisement 150A with the path information 145 describing the strict path 130.
  • NE 109 updates the routing table 276 to include the path information 145.
  • NE 109 When implementing path-aware flooding of advertisement 150A, NE 109 first determines a next NE 108 based on the path information 145 included in the advertisement 150A. As shown in FIG. 4, the path information 145 describes at least one or more of the following elements along the path 130 (NE 109, link 118, NE 108, link 117, NE 107, link 116, and NE 106 ⁇ . NE 109 extracts the path information 145 from the advertisement 150A to determine that the next NE 108 is described in the path information 145, and determines that the next NE 108 is a neighboring and adjacent NE 108. In response to determining that the next NE 108 is a neighboring NE 108 described in the path information 145, NE 109 transmits the advertisement 150A to NE 108.
  • the path information 145 describes at least one or more of the following elements along the path 130 (NE 109, link 118, NE 108, link 117, NE 107, link 116,
  • NE 108 After receiving the advertisement 150A from NE 109, NE 108 performs similar steps to the steps performed by NE 109. NE 108 first extracts the path information 145 from the advertisement 150A and updates the routing table 276 to include the path information 145 from the advertisement 150A. NE 108 also determines that the next NE 107 is a neighboring NE that is identified in the path information 145 and forwards the advertisement 150A to NE 107.
  • NE 107 After receiving the advertisement 150A from NE 108, NE 107 performs similar steps as NEs 109 and 108. NE 107 first extracts the path information 145 from the advertisement 150A and updates the routing table 276 to include the path information 145. NE 107 also determines that the next NE 106 is a neighboring NE that is identified in the path information 145 and forwards the advertisement 150A to NE 106.
  • NE 106 After receiving the advertisement 150A from NE 107, NE 106 extracts the path information 145 from the advertisement 150A. NE 106 determines that a neighboring NE other than the previous NE 107 from which the advertisement 150A was received is not described in the path information 145. NE 106 terminates or discontinues forwarding of the advertisement 1 50A.
  • FIG. 5 is a diagram 500 illustrating a method of performing path-aware flooding of an advertisement 150B across a loose path 330 according to the first embodiment described above with reference to FIG. 3.
  • FIG. 5 shows a portion of the network 300, which includes NEs 106, 109-112, and 301-302 interconnected by links 119-122 and 303-306. Similar to that described above with reference to FIG. 3, the loose path 330 flows along the portion of the network 300 shown in FIG. 5.
  • NE 109 first obtains the advertisement 150B by either receiving the advertisement 150B from another NE or the central entity 103, or generating the advertisement 150B with the path information 345 describing the loose path 330. In the case that NE 109 receives the advertisement 150B, NE 109 updates the routing table 276 to include the path information 345.
  • NE 109 When implementing path aware flooding of advertisement 150B, NE 109 first determines a next NE 110 based on the path information 345 included in the advertisement 150B. As shown in FIG. 5, the path information 345 describing the loose path 330 includes descriptions for at least one of the following elements (NE 109, link 119, NE 110, link 120, NE 111, and NE 106 ⁇ . NE 109 extracts the path information 345 from the advertisement 150B to determine that the next NE 110 is described in the path information 145, and determines that the next NE 110 is a neighboring and adjacent NE 110. In response to determining that the next NE 110 is a neighboring NE 110 described in the path information 345, NE 109 transmits the advertisement 150B to NE 110.
  • the path information 345 describing the loose path 330 includes descriptions for at least one of the following elements (NE 109, link 119, NE 110, link 120, NE 111, and NE 106 ⁇ .
  • NE 109 extracts
  • NE 110 After receiving the advertisement 150B from NE 109, NE 110 performs similar steps to the steps performed by NE 109. NE 110 first extracts the path information 345 from the advertisement 150B and updates the routing table 276 to include the path information 345 from the advertisement 150B. NE 110 also determines that the next NE 111 is a neighboring NE that is identified in the path information 345 and forwards the advertisement 150B to NE 111.
  • NE 111 After receiving the advertisement 150B from NE 110, NE 111 first extracts the path information 345 from the advertisement 150B and updates the routing table 276 to include the path information 345 from the advertisement 150B. NE 111 then determines whether a next NE described in the path information 345 is a neighboring NE. NE 111 uses the LSDB 273 stored locally in a memory 260 of NE 111 to determine that the neighboring NEs adjacent to NE 111 are neighboring NE 112 and NE 301. The next NE identified in the path information 345 of the advertisement 150B is NE 106. However, NE 106 is not a neighboring NE of NE 111.
  • the NE 111 performs the OSPF protocol flooding mechanism and floods the advertisement 150B to all neighboring NEs 112 and 301. Each subsequent NE that does not identify a neighboring NE in the path information 345 also forwards the advertisement 150B using the OSPF protocol flooding mechanism.
  • NE 112 After receiving the advertisement 150B, NE 112 extracts the path information 345 from the advertisement 150B and updates the routing table 276 to include the path information 345. NE 112 forwards the advertisement 150B to neighboring NE 106 via link 122 and neighboring NE 302 via link 305. NE 106 extracts the path information 345 from the advertisement 150B and updates the routing table 276 to include the path information 345. Similarly, NE 302 extracts the path information 345 from the advertisement 150B and updates the routing table 276 to include the path information 345.
  • NE 301 similarly performs the OSPF flooding mechanism and forwards the advertisement 150B to NE 302 via link 304.
  • NE 301 extracts the path information 345 from the advertisement 150B and updates the routing table 276 to include the path information 345.
  • NE 301 may continue to forward the advertisement 15 OB to NE 302, or NE 301 may not forward the advertisement 150B because NE 301 may recognize that the advertisement 150B was already forwarded to NE 302.
  • NE 106 may extract the path information 345 from the advertisement 150B to determine that NE 106 is described in the path information 345. NE 106 may also determine that a next NE is not identified in the path information 345 other than a previous NE 111. In this case, NE 106 terminates the flooding of the advertisement 150B to other NEs.
  • FIG. 6 is a diagram 600 illustrating a method of performing path-aware flooding of the advertisement 150B across a loose path 330 according to the second embodiment described above with reference to FIG. 3. Similar to diagram 500 of FIG. 5, diagram 600 of FIG. 6 shows a portion of the network 300, which includes NEs 106, 109-112, and 301-302 interconnected by links 119-122 and 303-306. Similar to that described above with reference to FIG. 3, the loose path 330 flows along the portion of the network 300 shown in FIG. 5. Unlike diagram 500 of FIG. 5, the advertisement 150B is only flooded to NEs that are on a shortest path between NEs 111 and 106.
  • NE 109 first obtains the advertisement 150B by either receiving the advertisement 150B from another NE or the central entity 103, or generating the advertisement 150B with the path information 345 describing the loose path 330. In the case that NE 109 receives the advertisement 150B, NE 109 updates the routing table 276 to include the path information 345. [00118] When implementing path-aware flooding of advertisement 150B, NE 109 first determines a next NE 110 based on the path information 345 included in the advertisement 150B. As shown in FIG.
  • the path information 345 describing the loose path 330 includes descriptions for at least one of the following elements (NE 109, link 119, NE 110, link 120, NE 111, and NE 106 ⁇ .
  • NE 109 extracts the path information 345 from the advertisement 150B to determine that the next NE 110 is described in the path information 145, and determines that the next NE 110 is a neighboring and adjacent NE 110.
  • NE 109 transmits the advertisement 150B to NE 110.
  • NE 110 After receiving the advertisement 150B from NE 109, NE 110 performs similar steps to the steps performed by NE 109. NE 110 first extracts the path information 345 from the advertisement 150B and updates the routing table 276 to include the path information 345 from the advertisement 150B. NE 110 also determines that the next NE 111 is a neighboring NE that is identified in the path information 345 and forwards the advertisement 150B to NE 111. After receiving the advertisement 150B from NE 110, NE 111 first extracts the path information 345 from the advertisement 150B and updates the routing table 276 to include the path information 345 from the advertisement 150B.
  • NE 111 constructs a shortest path tree to the next NE 106 identified in the path information 345 to determine a next NE toward which to forward the advertisement 150B, and only forwards the advertisement 150B to the determined next NE.
  • NE 111 is configured to construct a shortest path tree or compute a shortest path first algorithm based on costs associated with each of the links 121, 122, and 303-306 on a path toward NE 106.
  • the LSDB 273 stored at NE 111 stores the cost associated with the links 113-122 and 303-306 in network 300.
  • the cost associated each of the links 113-122 and 303- 306 in network 300 may correspond to the amount of resources that are utilized to forward data across the respective link 113-122 and 303-306 in network 300. In this way, the shortest path between two NEs 104-112 and 301-302 is the path that has the lowest cost. As shown in FIG. 6, link 121 has a cost of 1, link 122 has a cost of 10, link 303 has a cost of 1, link 304 has a cost of 1, link 305 has a cost of 5, and link 306 has a cost of 1.
  • the NE 111 determines the shortest path between NE 111 and NE 106 based on the costs of the links 121-122 and 303-306. There are several possible paths between NE 111 and NE 106. A first path flows from (NE 111, link 121, NE 112, link 122, and NE 106 ⁇ , and this first path has an aggregated cost of 11. A second path flows from (NE 111, link 121, NE 112, link 305, NE 302, link 306, and NE 106 ⁇ , and this second path has an aggregated cost of 7.
  • a third path flows from (NE 111, link 303, NE 301, link 304, NE 302, link 305, NE 112, link 122, and NE 106 ⁇ , and this third path has an aggregated cost of 17.
  • a fourth path flows from (NE 111, link 303, NE 301, link 304, NE 302, link 306, and NE 106 ⁇ , and this fourth path has an aggregated cost of 3. Therefore, the shortest path between NE 111 and NE 106 (e.g., the path having the lowest aggregated cost), is the fourth path that flows from (NE 111, link 303, NE 301, link 304, NE 302, link 306, and NE 106 ⁇ .
  • NE 111 only forwards the advertisement 150B to the next neighboring NE 301 identified based on computing the shortest path between NE 111 and NE 106, which is the next NE 106 identified in the path information 345 describing loose path 330.
  • NE 301 Upon receiving the advertisement 150B, NE 301 first extracts the path information 345 to update the routing table 276 stored at NE 301 to include the path information 345.
  • NE 301 also only forwards the advertisement 150B to the next neighboring NE 302 identified based on computing the shortest path between NE 111 and NE 106.
  • NE 302 extracts the path information 345 to update the routing table 276 stored at NE 302 to include the path information 345.
  • NE 302 only forwards the advertisement 150B to the next neighboring NE 306 identified based on computing the shortest path between NE 111 and NE 106.
  • NE 106 may terminate the flooding of the advertisement 150B since another neighboring NE or next NE is not identified in the path information 345 describing the loose path 330.
  • the routing table 276 stored at each of NEs 111, 112, 301, and 302 indicates a next hop toward which to forward a message to every possible destination (e.g., NE 104-112 and 301-302) in the network 300.
  • NE 111 performs a look up in the routing table 276 using the next NE 106 identified in the path information 345 to determine the next NE toward which to forward the advertisement 150B is next NE 301.
  • each of NEs 111, 112, 301, and 302 does not need to compute a shortest path between the respective NE 111, 112, 301, and 302 and NE 106 when the advertisement 150B is received.
  • each of NEs 111, 112, 301, and 302 performs a lookup on the routing table 276 to determine the next neighboring NE (e.g., next hop) toward which to forward the advertisement 150B such that the advertisement 150B reaches NE 106.
  • next neighboring NE e.g., next hop
  • FIG. 7 is a diagram 700 illustrating path-aware forwarding of an advertisement 150B across a loose path 330 according to the third embodiment described above with reference to FIG. 3. Similar to diagram 500 of FIG. 5 and diagram 600 of FIG. 6, diagram 700 of FIG. 7 shows a portion of the network 300, which includes NEs 106, 109-112, and 301-302 interconnected by links 119-122 and 303-306. Similar to that described above with reference to FIG. 3, the loose path 330 flows along the portion of the network 300 shown in FIG. 5. Unlike diagram 500 of FIG. 5 and diagram 600 of FIG. 5, the advertisement 150B is only forwarded along a virtual link 703 between NE 111 and NE 106.
  • NE 109 first obtains the advertisement 150B by either receiving the advertisement 150B from another NE or the central entity 103, or generating the advertisement 150B with the path information 145 describing the loose path 330. In the case that NE 109 receives the advertisement 150B, NE 109 updates the routing table 276 to include the path information 345.
  • NE 109 When implementing path-aware flooding of advertisement 150B, NE 109 first determines a next NE 110 based on the path information 345 included in the advertisement 150B. As shown in FIG. 7, the path information 345 describing the loose path 330 includes descriptions for at least one of the following elements (NE 109, link 119, NE 110, link 120, NE 111, and NE 106 ⁇ . NE 109 extracts the path information 345 from the advertisement 150B to determine that the next NE 110 is described in the path information 145, and determine that the next NE 110 is a neighboring and adjacent NE 110. In response to determining that the next NE 110 is a neighboring NE 110 described in the path information 345, NE 109 transmits the advertisement 150B to NE 110.
  • the path information 345 describing the loose path 330 includes descriptions for at least one of the following elements (NE 109, link 119, NE 110, link 120, NE 111, and NE 106 ⁇ .
  • NE 109 extract
  • NE 110 After receiving the advertisement 150B from NE 109, NE 110 performs similar steps to the steps performed by NE 109. NE 110 first extracts the path information 345 from the advertisement 150B and updates the routing table 276 to include the path information 345 from the advertisement 150B. NE 110 also determines that the next NE 111 is a neighboring NE that is identified in the path information 345 and forwards the advertisement 150B to NE 111. After receiving the advertisement 150B from NE 110, NE 111 first extracts the path information 345 from the advertisement 150B and updates the routing table 276 to include the path information 345 from the advertisement 150B.
  • NE 111 determines that a virtual link 703 has been configured between NE 111 and the next NE 106 identified in the path information 345, and only forwards the advertisement 150B to the NE 106 via the virtual link 703.
  • a virtual link 703 is a tunnel that can be configured between any two NEs 104-112 and 301-302 that have an interface to a common non-backbone area, such that the virtual link 703 belongs to the backbone area.
  • the OSPF protocols treat two NEs 111 and 106 joined by a virtual link 703 as if they were connected by an unnumbered point-to-point backbone network.
  • an operator of the network 300 may pre-configure a virtual link 703 between two NEs 111 and 106 in the network 300 for a particular purpose.
  • two NEs 111 and 106 may use the virtual links 703 to forward advertisement 150B and reduce unnecessary flooding of the network 300.
  • NE 111 may first determine whether a virtual link 703 has been established between NE 111 and the next NE 106 identified in the path information 345. If such a virtual link 703 has been established, NE 111 transmits the advertisement 150B to directly NE 106 via the virtual link 703. Similar to the first and second embodiment described above with reference to FIGS. 5 and 6, NE 106 terminates flooding of the advertisement 150B upon receiving the advertisement 150B,
  • FIG. 8 is a flowchart illustrating a method 800 for implementing an OSPF protocol and path-aware flooding according to various embodiments of the disclosure.
  • Method 800 is implemented by an NE, such as NE 200, NEs 104-112, or NEs 301-302 (referred to hereafter as “NE”).
  • Method 800 is implemented when an advertisement 150A or 150B (referred to hereafter as “advertisement 150”) is obtained by an NE.
  • the NE receives, from a previous NE, an advertisement 150 comprising path information 145 or 345 or describing a path 130 or 330 between at least two NEs in the network 100 or 300.
  • the NE receives the advertisement 150 from another NE within the network 100 or 300 or external to the network 100 or 300.
  • the NE receives the advertisement 150 from the central entity 103.
  • the NE generates the advertisement 150 after computing the path 130 or 330 between the at least two NEs in the network 100 or 300
  • the NE updates a routing table 276 stored in a memory 260 based on the path information 145 or 345 in the advertisement 150. For example, the NE adds an entry to the routing table 276 for the destination of the path 130 or 330 identified in the advertisement 150, in which the entry includes the path information 145 or 345.
  • the path information 145 or 345 includes addresses, labels, or identifiers identifying one or more elements (e.g., NEs and/or links) on the path 130 or 330.
  • the addresses, labels, or identifiers of the elements on the path 130 or 330 may be in the form of PPR-PDEs.
  • the path information 145 or 345 may also include an identifier of the path, such as a PPR-ID.
  • the NE determines a next NE on the path 130 or 330 based on the path information 145 or 345 in the advertisement 150.
  • the next NE is described in the path information 145 describing the strict path 130.
  • the NE determines the next NE based on the description of the next NE in the path information 145.
  • the NE has at least three neighboring NEs, including the previous NE, the next NE, and a neighboring NE that is not on the path.
  • the NE may determine the next NE based on the first embodiment described above with reference to FIG. 5, the second embodiment described above with reference to FIG. 6, or the third embodiment described above with reference to FIG. 7.
  • the NE floods the advertisement to all neighboring NEs. Subsequent NEs perform similar OSPF flooding mechanisms, until the NE reaches the next NE that is identified by the path information 345.
  • the NE determines a shortest path to the next NE identified in the path information 345, and at step 812, the NE forwards the advertisement 150 to only the next NE on the shortest path. Subsequent NEs similarly only forward the advertisement 150 to only the next NE on the shortest path, until the NE reaches the next NE that is identified by the path information 345
  • next NE determines whether a virtual link 703 to the next NE identified in the path information 345 has been established. In this case, at step 812, the NE transmits the advertisement 150 directly to the next NE via the virtual link 703.
  • the term “next NE” refers to a next NE identified in the path information 145 or 345 or a next NE on a shortest path to the next NE identified in the path information 145 or 345,
  • FIG. 9 is a diagram illustrating an apparatus 900 for implementing an OSPF protocol and path-aware flooding according to various embodiments of the disclosure.
  • Apparatus 900 includes a means for receiving 903, a means for updating 906, a means for determining 909, and a means for forwarding 911.
  • the means for receiving 903 includes a means for receiving, from a previous NE, an advertisement 150 comprising path information 145 or 345 or describing a path 130 or 330 between at least two NEs in the network 100 or 300.
  • the means for updating 906 comprises a means for updating a routing table 276 stored in a memory 260 based on the path information 145 or 345 in the advertisement 150.
  • the means for determining 909 comprises a means for determining a next NE on the path 130 or 330 based on the path information 145 or 345 in the advertisement 150.
  • the means for forwarding 911 comprises a means for forwarding the advertisement to the next NE on the path 130 or 330.

Abstract

A method performed by a network element (NE) in a network implementing Open Shortest Path First (OSPF), comprising receiving, from a previous NE, an advertisement comprising path information describing a path between at least two NEs in the network, updating a routing table stored in a memory of the NE based on the path information in the advertisement, determining a next NE on the path based on the path information in the advertisement, wherein the NE has at least three neighboring NEs, wherein the at least three neighboring NEs comprise the previous NE, the next NE, and a neighboring NE that is not on the path, and forwarding the advertisement to only the next NE on the path

Description

Open Shortest Path First (OSPF) Path-Aware Flooding
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] The present application claims the benefit of U.S. Provisional Patent Application No. 62/844,521 filed May 7, 2019 by Padmadevi Pillay-Esnault, and entitled“OSPF Path-Aware Flooding,” which is hereby incorporated by reference.
FIELD OF INVENTION
[0002] The present disclosure pertains to the field of data transmission in a network implementing an Interior Gateway Protocol (IGP), such as Open Shortest Path First (OSPF) version 2 (OSPFv2) or OSPF version 3 (OSPFv3). In particular, the present disclosure relates to the efficient flooding of data through the network implementing an IGP.
BACKGROUND
[0003] An IGP is a type of protocol used for exchanging information among network elements (NEs), such as routers, switches, gateways, etc., within a network (also referred to herein as an“autonomous system (AS)” or a“domain”). This information exchanged using IGP may include routing information and/or state information. The information can be used to route data using network-layer protocols, such as Internet Protocol (IP).
[0004] IGPs can be divided into two categories: distance- vector routing protocols and link- state routing protocols. In a network implementing a distance- vector routing protocol, each NE in the network does not possess information about the full network topology. Instead, each NE advertises a distance value calculated to other routers and receives similar advertisements from other routers. Each NE in the network uses the advertisements to populate a local routing table. [0005] In contrast, in a network implementing a link-state routing protocol, each NE stores network topology information about the complete network topology. Each NE then independently calculates the next best hop from the NE for every possible destination in the network using the network topology information. The NE then stores a routing table including the collection of next best hops to every possible destination. Each NE in the network forwards the information encoded according to an IGP to adjacent NEs, thereby flooding the network with the information that is saved at each of the NEs in the network. Examples of link-state routing protocols include Intermediate System to Intermediate System (IS-IS), OSPFv2, and OSPFv3.
[0006] OSPFv2 and OSPFv3 are dynamic routing protocols that quickly detect topological changes and calculate new loop free routes after a period of convergence. Each NE in the network implementing an OSPF protocol includes a link-state database (LSDB) and a routing table. The LSDB describes a topology of the network, and each NE in the network maintains an identical LSDB. Each entry in the LSDB describes a particular NE’s local state (e.g., usable interfaces and reachable neighbors). Each NE constructs a tree of shortest paths with the respective NE as the root using the LSDB. This shortest path tree indicates the route from the respective NE to each destination in the network and is used to construct the routing table maintained by the respective NE.
SUMMARY
[0007] According to a first aspect of the present disclosure, there is provided a method performed by a network element (NE) in a network implementing Open Shortest Path First (OSPF), comprising receiving, from a previous NE, an advertisement comprising path information describing a path between at least two NEs in the network, updating a routing table stored in a memory of the NE based on the path information in the advertisement, determining a next NE on the path based on the path information in the advertisement, wherein the NE has at least three neighboring NEs, wherein the at least three neighboring NEs comprise the previous NE, the next NE, and a neighboring NE that is not on the path, and forwarding the advertisement to only the next NE on the path.
[0008] Optionally, in a first implementation according to the first aspect, the previous NE is a central entity of the network.
[0009] Optionally, in a second implementation according to the first aspect or any other implementation of the first aspect, the next NE is explicitly identified in the advertisement.
[0010] Optionally, in a third implementation according to the first aspect or any other implementation of the first aspect, the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the advertisement, and wherein the method further comprises performing a shortest path computation between the NE and the next loose NE to determine a shortest path between the NE and the next loose NE, wherein the next NE is a next hop on the shortest path between the NE and the next loose NE.
[0011] Optionally, in a fourth implementation according to the first aspect or any other implementation of the first aspect, the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the advertisement.
[0012] Optionally, in a fifth implementation according to the first aspect or any other implementation of the first aspect, the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the path information in the advertisement, further comprising determining that a virtual link is established between the NE and the next loose NE, wherein determining the next NE on the path comprises determining that the next loose NE is the next NE on the path, and forwarding the advertisement to only the next NE on the path comprises forwarding the advertisement to the next loose NE via the virtual link.
[0013] Optionally, in a sixth implementation according to the first aspect or any other implementation of the first aspect, the path is a preferred path route (PPR) between a first NE and a plurality of second NEs, wherein the path information describing the path comprises a PPR identifier (PPR-ID) identifying the PPR and a plurality of PPR path description elements (PPR- PDEs), and wherein each of the PPR-PDEs describes a link or NE on the PPR.
[0014] Optionally, in a seventh implementation according to the first aspect or any other implementation of the first aspect, the path is a preferred path route (PPR) graph between a first NE and a plurality of second NEs, wherein the path information describing the path comprises a PPR graph identifier (ID) identifying the PPR graph and a plurality of PPR path description elements (PPR-PDEs), and wherein each of the PPR-PDEs describes a link or NE on the PPR graph.
[0015] Optionally, in a eighth implementation according to the first aspect or any other implementation of the first aspect, the path is a preferred path route (PPR) graph between a plurality of first NEs and a second NE, wherein the path information describing the path comprises a PPR graph identifier (ID) identifying the PPR graph and a plurality of PPR path description elements (PPR-PDEs), and wherein each of the PPR-PDEs describes a link or NE on the PPR graph.
[0016] Optionally, in a ninth implementation according to the first aspect or any other implementation of the first aspect, the path is a preferred path route (PPR) graph between a plurality of first NEs and a plurality of second NEs, wherein the path information describing the path comprises a PPR graph identifier (ID) identifying the PPR graph and a plurality of PPR path description elements (PPR-PDEs), and wherein each of the PPR-PDEs describes a link or NE on the PPR graph
[0017] A second aspect of the present disclosure relates to a network element (NE) in a network implementing OSPF, comprising a memory storing instructions, and a processor coupled to the memory and configured to execute the instructions, which cause the processor to be configured to receive, from a previous NE, an advertisement comprising path information describing a path between at least two NEs in the network, update a routing table stored in a memory of the NE based on the path information in the advertisement, determine a next NE on the path based on the path information in the advertisement, when the NE has at least three neighboring NEs, the at least three neighboring NEs comprise the previous NE, the next NE, and a neighboring NE that is not on the path, and forward the advertisement to only the next NE on the path.
[0018] Optionally, in a first implementation according to the second aspect, the previous NE is a central entity of the network.
[0019] Optionally, in a second implementation according to the second aspect or any other implementation of the second aspect, the next NE is explicitly identified in the advertisement
[0020] Optionally, in a third implementation according to the second aspect or any other implementation of the second aspect, the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the advertisement, and wherein the instructions further cause the processor to perform a shortest path computation between the NE and the next loose NE to determine a shortest path between the NE and the next loose NE, wherein the next NE is a next hop on the shortest path between the NE and the next loose NE. [0021] Optionally, in a fourth implementation according to the second aspect or any other implementation of the second aspect, the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the advertisement.
[0022] Optionally, in a fifth implementation according to the second aspect or any other implementation of the second aspect, the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the path information in the advertisement, wherein the instructions further cause the processor to determine that a virtual link is established between the NE and the next loose NE, determine that the next loose NE is the next NE on the path, and forward the advertisement to the next loose NE via the virtual link.
[0023] A third aspect of the present disclosure relates to a non-transitory computer-readable medium configured to store a computer program product comprising computer executable instructions that, when executed by a processor of a NE implemented in a network, cause the processor to receive, from a previous NE, an advertisement comprising path information describing a path between at least two NEs in the network, update a routing table stored in a memory of the NE based on the path information in the advertisement, determine a next NE on the path based on the path information in the advertisement, when the NE has at least three neighboring NEs, the at least three neighboring NEs comprise the previous NE, the next NE, and a neighboring NE that is not on the path, and forward the advertisement to only the next NE on the path.
[0024] Optionally, in a first implementation according to the third aspect, the previous NE is a central entity of the network.
[0025] Optionally, in a second implementation according to the third aspect or any other implementation of the third aspect, the next NE is explicitly identified in the advertisement. [0026] Optionally, in a third implementation according to the third aspect or any other implementation of the third aspect, the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the advertisement, and wherein the computer executable instructions further cause the processor to perform a shortest path computation between the NE and the next loose NE to determine a shortest path between the NE and the next loose NE, wherein the next NE is a next hop on the shortest path between the NE and the next loose NE.
[0027] Optionally, in a fourth implementation according to the third aspect or any other implementation of the third aspect, the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the advertisement.
[0028] Optionally, in a fifth implementation according to the third aspect or any other implementation of the third aspect, the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the path information in the advertisement, wherein the computer executable instructions further cause the processor to determine that a virtual link is established between the NE and the next loose NE .
[0029] A fourth aspect of the present disclosure relates to a plurality of the NEs of any one of the above aspects, wherein the plurality of NEs are coupled to each other.
[0030] Optionally, in a first implementation according to the fourth aspect, where at least one of the plurality of NEs has at least three neighboring NEs, wherein the at least three neighboring NEs include the previous NE, the next NE, and the neighboring NE that is not on a path described in an advertisement. [0031] Optionally, in a second implementation according to the fourth aspect or any other implementation of the fourth aspect, the neighboring NE that is not on the path does not receive the advertisement
[0032] Optionally, in a third implementation according to the fourth aspect or any other implementation of the fourth aspect, the next NE receives the advertisement from the NE.
[0033] Optionally, in a fourth implementation according to the fourth aspect or any other implementation of the fourth aspect, the plurality of NEs comprise the previous NE, the NE, and the next loose NE, wherein the path includes the previous NE, the NE, and the next loose NE, wherein the previous NE and the NE are neighboring NEs, where the NE and the next loose NE are separated by at least one other NE in the network, and wherein the NE is configured to receive, from the previous NE, the advertisement, wherein the path information explicitly identifies the next loose NE on the path, perform the shortest path computation between the NE and the next loose NE to determine the shortest path between the NE and the next loose NE, and forward the advertisement to the next NE in the network based on the shortest path between the NE and the next loose NE, and wherein the next NE is configured to receive the advertisement, and forward the advertisement to another next NE based on the shortest path between the NE and the next loose NE without storing the path information.
[0034] Optionally, in a fifth implementation according to the fourth aspect or any other implementation of the fourth aspect, the plurality of NEs comprise the previous NE, the NE, and the next loose NE, wherein the path includes the previous NE, the NE, and the next loose NE, wherein the previous NE and the NE are neighboring NEs, where the NE and the next loose NE are separated by at least one other NE in the network, and wherein the NE is configured to receive, from the previous NE, the advertisement, wherein the path information explicitly identifies the next loose NE on the path, determine that the virtual link is established between the NE and the next loose NE, and forward the advertisement to the next loose NE via the virtual link, wherein the next loose NE is configured to receive the advertisement from the NE via the virtual link.
[0035] A fifth aspect of the present disclosure relates to a method for operating a network comprising a plurality of NE, comprising performing, by an NE of the plurality of NEs, the method of the first aspect or the second aspec t.
[0036] Optionally, in a first implementation according to the fifth aspect, the neighboring NE that is not on the path does not receive the advertisement.
[0037] Optionally, in a second implementation according to the fifth aspect or any other implementation of the fifth aspect, further comprising receiving, by the next NE, the advertisement
[0038] Optionally, in a third implementation according to the fifth aspect or any other implementation of the fifth aspect, the plurality of NEs comprise the previous NE, the NE, and the next loose NE, wherein the path includes the previous NE, the NE, and the next loose NE, and wherein the method further comprises receiving, by the NE from the previous NE, the advertisement, wherein the path information explicitly identifies the next loose NE on the path, performing, by the NE, the shortest path computation between the NE and the next loose NE to determine the shortest path between the NE and the next loose NE, forwarding, by the NE, the advertisement to the next NE based on the shortest path between the NE and the next loose NE, receiving, by the next NE, the advertisement, and forwarding, by the next NE, the advertisement to another next NE based on the shortest path between the NE and the next loose NE without storing the path information. [0039] Optionally, in a fourth implementation according to the fifth aspect or any other implementation of the fifth aspect, the plurality of NEs comprise the previous NE, the NE, and the next loose NE, wherein the path includes the previous NE, the NE, and the next loose NE, and wherein the method further comprises receiving, by the NE, from the previous NE, the advertisement, wherein the path information explicitly identifies the next loose NE on the path, determining, by the NE, that a virtual link is established between the NE and the next loose NE, forwarding, by the NE, the advertisement to the next loose NE via the virtual link, and receiving, by the next loose NE from the NE, the advertisement via the virtual link.
[0040] For the purpose of clarity, any one of the foregoing embodiments may be combined with any one or more of the other foregoing embodiments to create a new embodiment within the scope of the present disclosure.
[0041] These and other features will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings and claims.
BRIEF DESCRIPTION OF THE DRAWINGS
[0042] For a more complete understanding of this disclosure, reference is now made to the following brief description, taken in connection with the accompanying drawings and detailed description, wherein like reference numerals represent like parts.
[0043] FIG. l is a schematic diagram illustrating a network configured to implement an OSPF protocol and path-aware flooding according to various embodiments of the disclosure.
[0044] FIG. 2 is a schematic diagram of an NE suitable to implement an OSPF protocol and path-aware flooding according to various embodiments of the disclosure . [0045] FIG. 3 is a schematic diagram illustrating a network configured to implement an OSPF protocol and path-aware flooding for strict paths and loose paths according to various embodiments of the disclosure.
[0046] FIG. 4 is a schematic diagram illustrating a method of performing path-aware flooding of an advertisement across a strict path according to various embodiments of the disclosure.
[0047] FIG. 5 is a schematic diagram illustrating a method of performing path-aware flooding of an advertisement across a loose path according to a first embodiment of the disclosure.
[0048] FIG. 6 is a schematic diagram illustrating a method of performing path-aware flooding of an advertisement across a loose path according to a second embodiment of the disclosure.
[0049] FIG. 7 is a schematic diagram illustrating a method of performing path-aware flooding of an advertisement across a loose path according to a third embodiment of the disclosure.
[0050] FIG. 8 is a flowchart illustrating a method for implementing an OSPF protocol and path-aware flooding according to various embodiments of the disclosure.
[0051] FIG. 9 is a diagram illustrating an apparatus for implementing an OSPF protocol and path-aware flooding according to various embodiments of the disclosure.
DETAILED DESCRIPTION
[0052] It should be understood at the outset that although an illustrative implementation of one or more embodiments are provided below, the disclosed systems and/or methods may be implemented using any number of techniques, whether currently known or in existence. The disclosure should in no way be limited to the illustrative implementations, drawings, and techniques illustrated below, including the exemplary designs and implementations illustrated and described herein, but may be modified within the scope of the appended claims along with their full scope of equivalents.
[0053] FIG. 1 is a schematic diagram illustrating a network 100 (also referred to herein as an “AS” or a “domain”) configured to implement path-aware flooding according to various embodiments of the disclosure. In an embodiment, network 100 is configured to implement an OSPF protocol. As used herein, the term“OSPF protocol” may refer to a routing protocol, such as, for example, OSPFv2, OSPFv3, or any other IGP that implements a flooding mechanism similar to OSPFv2 or OSPFv3. Further, path-aware flooding refers to a mechanism by which NEs only forward path information to other neighboring NEs that are on the path (e.g., relevant to the information being flooded). In some embodiments, the network 100 is configured to implement strict path-aware flooding or loose path-aware flooding. Strict path-aware flooding occurs when an NE receives an advertisement with path information explicitly describing a neighboring NE that is on the path. In this case, the NE only forwards the advertisement to the neighboring NE explicitly described in the path information. Loose path-aware flooding occurs when an NE receives an advertisement with path information that does not explicitly describe a neighboring NE as being on the path. Instead, the path information describes an NE that may be multiple hops away (also referred to herein as a“next loose NE”). In this case, the NE may forward the advertisement to the next loose NE in multiple different ways, as will be further described below with reference to FIGS. 5-7.
[0054] Referring to FIG. 1, network 100 comprises a central entity 103 of the network (also referred to herein as a“controller”) and multiple NEs 104-112. The central entity 103 is coupled to at least one of the NEs 109 via a link 125, and the NEs 104-112 are interconnected by links 113-
122 [0055] In an embodiment, the central entity 103 may be substantially similar to a Path Computation Element (PCE), which is further described in Internet Engineering Task Force (IETF) Request for Comments (RFC) 8281, entitled“Path Computation Element Communication Protocol (PCEP) Extensions for PCE-Initiated LSP Setup in a Stateful PCE Model,” by E. Crabbe, dated December 2017, which is incorporated by reference herein in its entirety. In an embodiment, the central entity 103 may be substantially similar to a Software Defined Network Controller (SDNC), which is further described in the IETF RFC 8402, entitled“Segment Routing Architecture,” by C. Filsfils, dated July 2018, which is incorporated by reference herein in its entirety. In an embodiment, the central entity 103 may be substantially similar to an Application Layer Traffic Optimization (ALTO) server, which is further described in the IETF RFC 7285, entitled “Application Layer Traffic Optimization (ALTO) Protocol,” by R. Alimi, dated September 2014, which is incorporated by reference herein in its entirety.
[0056] NEs 104-112 (also referred to herein as“nodes”) may each be a physical device, such as a router, a bridge, a network switch, or a logical device, such as a virtual machine, configured to forward data across the network 100 by encoding the data according to an OSPF protocol. In an embodiment, at least some of the NEs 104-112 are headend nodes or edge nodes positioned at an edge of the network 100. For example, one or more of NEs 104-112 may be an ingress node at which traffic (e.g., control packets and data packets) is received, and one or more of NEs 104-112 may be an egress node from which traffic is transmitted. Some of the NEs 104-112, such as 108 and 107, may be interior nodes that are configured to receive and forward traffic from another NE
104-112 in the network 100. [0057] The link 125 may be a wired link, wireless link, or interface interconnecting one of the NEs 109 and the central entity 103. Similarly, the links 113-122 may be wired links, wireless links, or interfaces interconnecting each of the NEs 104-112.
[0058] Although only nine NEs 104-112 are shown in FIG. 1, it should be appreciated that the network 100 shown in FIG. 1 may include any number of NEs, such as at least 3, at least 4, at least 10, or at least 100 , which is incorporated by reference herein in its entirety. In an embodiment, the central entity 103 and NEs 104-112 are configured to implement various packet forwarding protocols, such as, but not limited to, Multi-protocol Label Switching (MPLS), IP version 4 (IPv4), IP version 6 (IPv6), and Big Packet Protocol.
[0059] Each of the NEs 104-112 floods the network 100 with advertisements carrying information related to a respective NE 104-112. To flood the network 100, each NE 104-112 forwards a received advertisement to neighboring NEs 104-112 in the network 100. As used herein, neighboring NEs 104-112 refers to two adjacent NEs each having interfaces that can directly communicate with one another.
[0060] For example, NE 105 transmits link-state information in an advertisement describing NE 105 to neighboring NEs 104 and 106. The receiving NEs 104 and 106 each update a local LSDB to include the link-state information describing NE 105. Each of the receiving NEs 104 and 106 then forwards the advertisement to neighboring NEs. That is, NE 104 forwards the advertisement to NE 109, and NE 106 forwards the advertisement to NEs 107 and 112. NEs 109, 107, and 112 similarly update their local LSDBs and forward the advertisement to neighboring NEs 110, 108, and 111. Each of the NEs 104-112 forward the advertisement in a single direction, and do not forward the advertisement back to an NE 104-112 from which the advertisement may have been received [0061] The advertisements may be link state advertisements (LSAs) pursuant to the OSPF protocol, and the LSAs may each carry link state information, routing information, security information, or any other information relevant to the NEs 104-112. Additional details regarding contents of the LSA are described in Network Working Group RFC 2328, entitled“OSPF Version 2,” dated April 1998, by J. Moy, and Network Working Group RFC 2740, entitled“OSPF for IPv6,” dated July 2008, by R. Colton, et. al, which is hereby incorporated by reference in its entirety.
[0062] The link-state information describes a state of a respective NE’s interfaces and adjacencies, such as, for example, prefixes, security identifiers (SIDs), traffic engineering (TE) information, identifiers (IDs) of adjacent NEs, links, interfaces, ports, and routes. In addition, the link-state information may include, for example, local/remote IP address, local/remote interface identifiers, link metrics and TE metrics, link bandwidth, reserveable bandwidth, per Class-of- Service (CoS) class reservation state, preemption, and Shared Risk Link Groups (SLRGs).
[0063] The routing information may include information describing one or more elements on a path between a source (first NE) and a destination (second NE) in the network 100. For example, the routing information may include an identifier (ID) of a path and a label, address, or ID of one or more elements on the path.
[0064] The link-state information received in an advertisement may be stored in the LSDB of each NE 104-112. Each NE 104-112 may use the information stored in the LSDB to obtain a topology of the network 100. The routing information received in an advertisement may be stored in the routing table of each NE 104-112. Each NE 104-112 uses the routing table to determine next hops by which to forward packets. [0065] At least one of the NEs 109 may be communicatively coupled to the central entity 103, for example, via a Border Gateway Protocol (BGP) connection. In this case, NE 109 may transmit each of the received advertisements to the central entity 103. The central entity 103 is configured to collect TE information and link-state information from NEs 104-112 within the network 100 using the received advertisements. The central entity 103 may determine the network topology using the received advertisements.
[0066] A path may be provisioned across the NEs 104-112 of the network 100 in a few different manners. In some embodiments, the network 100 is configured to provision shortest paths, preferred path routes (PPRs), and PPR graphs.
[0067] To provision a shortest path across the network 100, each NE 104-112 constructs a shortest path tree to each destination in the network 100, and uses this shortest path tree to construct a routing table describing the path to each destination in the network 100. For example, a shortest path tree may be computed for a destination using a Dijkstra’s Shortest Path First (SPF) algorithm. For example, each NE 104-112 determines the shortest path to a destination in the network 100 based on the costs of each of the links 113-122 interconnecting NEs 104-112 in the network 100.
[0068] A PPR (also referred to herein as a“Non-Shortest Path (NSP)”) refers to a custom path or any other path that may deviate from the shortest path computed between two NEs or between a source and destination. A PPR may also be the same as the shortest path. The PPRs are determined based on an application or server request for a path between two NEs 104-112 or between a source and destination that satisfies one or more network characteristics (such as TE) or service requirements. PPRs are further defined in International Application No. PCT/US2018/015419, filed on January 28, 2019, incorporated by reference herein in its entirety. [0069] To provision a PPR, the central entity 103 is configured to determine one or more PPRs between the two NEs 104-112 positioned at edges of the network 100 using a network topology of the network 100 and capabilities of NEs 104-112 within the network 100 and based on an application or server request for a PPR. In this case, the central entity 103 transmits PPR information describing the determined PPR to at least one NE 104-112 in the network 100. The PPR information includes a PPR-identifier (ID) identifying the PPR, and multiple PPR path description elements (PPR-PDEs). Each PPR-PDE identifies an NE 104-112 or a link 113-122 along the PPR.
[0070] A PPR graph refers to a collection of multiple PPRs between one or more ingress NEs 104-112 (also referred to herein as“sources”) and one or more egress NEs 104-112 (also referred to herein as“destinations”). A PPR graph may hang a single source and multiple destinations, multiple destinations and a single source, or multiples sources and multiple destinations. PPR graphs are further defined in International Application No. PCT/US2019/030440, filed on May 2, 2019, incorporated by reference herein in its entirety.
[0071] To provision a PPR graph, the central entity 103 is configured to determine a PPR graph between one or more ingress NEs 104-112 and one or more egress NEs 104-112 using a network topology of the network 100 and capabilities of NEs 104-112 within the network 100 and based on an application or server request for a PPR graph. In this case, the central entity 103 transmits PPR information describing the determined PPR graph to at least one NE 104-112 in the network 100. The PPR information includes a PPR graph ID identifying the PPR, and multiple PPR-PDEs each identifying an NE 104-112 or a link 113-122 along the PPR graph.
[0072] As used herein, the term“path” may refer to the shortest path, PPR, or PPR graphs. The path 130 in FIG. 1 refers to a sequential ordering of one or more NEs 104-112 and/or links 113-122. As shown in FIG. 1, the path 130 includes NE 109, link 118, NE 108, link 117, NE 107, link 116, and NE 106.
[0073] In the embodiment shown in FIG. 1, central entity 103 determines the path 130 between a source (e.g., NE 109) and a destination (e.g., NE 106) in the network 100. The central entity 103 transmits an advertisement 150 including path information 145 describing the path 130 to at least one NE 109 in the network 100 via link 125. The path information 145 describing path 130 may include labels, addresses, or IDs describing one or more of NE 109, link 118, NE 108, link 117, NE 107, link 116, and NE 106 along the path 130. NE 103 transmits the advertisement 150 to NE 109, via a BGP connection.
[0074] While FIG. 1 shows NE 109 receiving the advertisement 150 from the central entity 103, the path information may already be locally provisioned at NE 109, for example, by an operator of the network 100. In another case, NE 109 may receive the advertisement 150 from any other entity other than the central entity 103 or an operator of the network 100. For example, NE 109 may receive the advertisement 150 describing path 130 from another NE 104-112 within the network 100 or external to the network 100. In yet another case, NE 109 may itself generate the path information 145. For example, NE 109 may determine the path information 145 for the path 130 by constructing a shortest path tree to determine a shortest path 130 to NE 106.
[0075] In either of these cases, NE 109 is configured to initiate OSPF flooding of the advertisement 150 through the network 100 upon obtaining (e.g., receiving or generating) the advertisement 150. For example, the network 100 implements an OSPF protocol, in which all NEs 104-112 in the network 100 flood the network 100 with information relevant to the network 100. When NE 109 obtains the advertisement 150, NE 109 is configured to update the local LSDB with the path information 145, and then forward the advertisement 150 to neighboring NEs 104, 108, and 110. Upon receiving the advertisement 150, NEs 104, 108, and 110 also update the local LSDB to include the path information 145 and then forward the advertisement 150 to neighboring NEs 105, 107, and 111. That is, NE 104 forwards the advertisement 150 to NE 105, NE 108 forwards the advertisement 150 to E 107, and E 110 forwards the advertisement 150 to E 111. Similarly, upon receiving the advertisement 150, NEs 105, 107, and 111 are configured to update the local LSDB to include the path information 145 and forward the advertisement 150 to neighboring NEs 106 and 112. In this manner, a single NE 109 is configured to initiate the OSPF flooding of an advertisement 150 to all NEs 104-112 within a network 100 using the OSPF protocol. In this way, the OSPF protocol allows networks 100 to implement a reliable flooding mechanism by which all the NEs 104-112 in the network 100 maintain an identical and synchronized view of the network 100.
[0076] However in some cases, the information that is flooded through the network 100 is completely irrelevant to some of the NEs 104-112 that receive the information. In these cases, each of these NEs 104-112 nevertheless processes and stores this information even though the NEs 104-112 may never use the information. Further, the overall amount of information that needs to be flooded through a network 100 is continuously growing, which results in an inefficient use of the resources within a network 100. For this reason, network characteristics, such as bandwidth, throughput, latency, error rate, etc., can be significantly affected when data is unnecessarily flooded through the network 100.
[0077] Disclosed herein are embodiments directed to an enhanced OSPF protocol directed to reducing the amount of information that is flooded to the network 100 by enabling NEs 104-112 to flood information only to relevant NEs 104-112. In an embodiment, an NE 109 obtains an advertisement 150 comprising path information 145 describing a path 130 between NE 109 and NE 106 in the network 100. The advertisement 150 may be received from the central entity 103 or another NE 104-112 within the network 100 or external to the network 100. The advertisement 150 may otherwise be generated by the NE 109.
[0078] After receiving the advertisement 150, NE 109 updates a local routing table stored in a memory of NE 109 to include the path information 145. An entry in the routing table that is updated to include the path information 145 indicates a next NE (e.g., next hop) by which to forward a data packet that is destined for NE 106.
[0079] In some embodiments, NE 109 extracts the path information 145 from the advertisement 150 to determine whether the path information 145 identifies or indicates a next NE 104-112 on the path 130 that is also neighboring the NE 109. In the example shown in FIG. 1, the path information 145 identifies neighboring NE 108 as a hop along path 130. In an embodiment, instead of forwarding the advertisement 150 to NEs 104, 108, and 110, NE 109 only forwards the advertisement 150 to the next neighboring NE 108 that is identified in the path information 145. In the example shown in FIG. 1, NE 109 only forwards the advertisement 150 to NE 108.
[0080] Upon receiving the advertisement 150, NE 108 also updates the local routing table to include the path information 145. NE 108 also determines a next NE 107 on the path 130 based on the path information 145. In an embodiment, NE 108 also determines that the next NE 107 is a neighboring NE. In the example shown in FIG. 1, NE 108 determines that neighboring NE 107 is identified in the path information 145, and thus is the next NE 107 on the path 130. NE 108 forwards the advertisement 150 to only NE 107.
[0081] NE 107 similarly updates the local routing to table to include the path information 145. NE 107 also only forwards the advertisement 150 to neighboring NE 106 that is identified in the path information 145 of the advertisement 150. [0082] The embodiments disclosed herein are advantageous in that the network overhead can be significantly reduced by reducing the amount of data that is flooded through the network 100 and reducing the amount of data that has to be processed by each of NEs 104-112 in the network 100. By only forwarding advertisements 150 to relevant NEs 104-112, the network 100 inherently will have more bandwidth by which to transmit additional data, and throughput of the network 100 can be significantly increased. In addition, latency can be reduced due to the higher availability of network resources within the network 100. The delay occurring between receiving packets/messages at each of the NEs 104-112 and being processed at the socket at each of the NEs 104-112 can also be greatly reduced. Accordingly, the embodiments disclosed herein enhance the OSPF protocols to provide a more efficient and resource effective manner by which to flood the network 100 with necessary information.
[0083] FIG. 2 is a schematic diagram of an NE 200 suitable to implement an OSPF protocol and path-aware flooding according to various embodiments of the disclosure. In an embodiment, the NE 200 may be implemented as any one of NEs 104-112 or the central entity 103.
[0084] The NE 200 comprises ports 220, transceiver units (Tx/Rx) 210, a processor 230, and a memory 260. The processor 230 comprises a path aware module 235. Ports 220 are coupled to Tx/Rx 210, which may be transmitters, receivers, or combinations thereof. The Tx/Rx 210 may transmit and receive data via the ports 220. Processor 230 is configured to process data. Memory 260 is configured to store data and instructions for implementing embodiments described herein. The NE 200 may also comprise electrical-to-optical (EO) components and optical -to-electrical (OE) components coupled to the ports 220 and Tx/Rx 210 for receiving and transmitting electrical signals and optical signals. [0085] The processor 230 may be implemented by hardware and software. The processor 230 may be implemented as one or more central processing unit (CPU) and/or graphics processing unit (GPU) chips, logic units, cores (e.g., as a multi-core processor), field- programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), and digital signal processors (DSPs). The processor 230 is in communication with the ports 220, Tx/Rx 210, and memory 260. The path aware module 235 is implemented by the processor 230 to execute the instructions for implementing various embodiments discussed herein. For example, the path aware module 235 is configured to determine relevant NEs 104-112 toward which to forward advertisements 150 based on the path information 145 contained within the advertisements 150. The inclusion of the path aware module 235 provides an improvement to the functionality of the NE 200. The path aware module 235 also effects a transformation of NE 200 to a different state. Alternatively, the path aware module 235 is implemented as instructions stored in the memory 260.
[0086] The memory 260 comprises one or more of disks, tape drives, or solid-state drives and may be used as an over-flow data storage device, to store programs when such programs are selected for execution, and to store instructions and data that are read during program execution. The memory 260 may be volatile and non-volatile and may be read-only memory (ROM), random-access memory (RAM), ternary content-addressable memory (TCAM), and static random-access memory (SRAM).
[0087] In an embodiment, the memory 260 is configured to store path information 145, LSDB 273, and a routing table 276. The path information 145 includes information describing a path 130, such as, for example, an ID of the path 130 and labels, addresses, or IDs describing each of the elements on the path 130. For example, the ID of the path 130 may be a PPR-ID when the path 130 is a PPR. For example, the labels, addresses, or IDs describing each of the elements on the path 130 may be carried in PPR-PDEs when the path 130 is a PPR. The LSDB 273 stores information describing a topology of network 100. The routing table 276 includes routing information describing a next hop to every destination in the network 100 from the NE 200
[0088] It is understood that by programming and/or loading executable instructions onto the NE 200, at least one of the processor 230 and/or memory 260 are changed, transforming the NE 200 in part into a particular machine or apparatus, e.g., a multi-core forwarding architecture, having the novel functionality taught by the present disclosure. It is fundamental to the electrical engineering and software engineering arts that functionality that can be implemented by loading executable software into a computer can be converted to a hardware implementation by well- known design rules. Decisions between implementing a concept in software versus hardware typically hinge on considerations of stability of the design and numbers of units to be produced rather than any issues involved in translating from the software domain to the hardware domain. Generally, a design that is still subject to frequent change may be preferred to be implemented in software, because re-spinning a hardware implementation is more expensive than re-spinning a software design. Generally, a design that is stable that will be produced in large volume may be preferred to be implemented in hardware, for example in an ASIC, because for large production runs the hardware implementation may be less expensive than the software implementation. Often a design may be developed and tested in a software form and later transformed, by well- known design rules, to an equivalent hardware implementation in an ASIC that hardwires the instructions of the software. In the same manner as a machine controlled by a new ASIC is a particular machine or apparatus, likewise a computer that has been programmed and/or loaded with executable instructions may be viewed as a particular machine or apparatus.
[0089] FIG. 3 is a schematic diagram illustrating a network 300 configured to implement an OSPF protocol and path-aware flooding for strict paths and loose paths according to various embodiments of the disclosure. Network 300 is similar to network 100 in that network 300 includes NEs 104-112 interconnected by links 113-122. Network 300 also includes the central entity 103 coupled to NE 109 via link 125. However, network 300 differs from network 100 in that network 300 includes additional NEs 301 and 302. NE 111 is coupled to NE 301 via a link 303, NE 301 is coupled to NE 302 via link 304, NE 112 is coupled to NE 302 via link 305, and NE 302 is coupled to NE 106 via link 306. In this way, NEs 104-112 and 301-302 are interconnected by links 113-122 and 303-306 in network 300.
[0090] Similar to network 100, network 300 includes the path 130, which is a strict path 130. A strict path 130 refers to a path in which the path information 145 describes every element (e.g., NE or link) along the strict path. For example, when the strict path 130 is a strict PPR, the PPR information describing the strict PPR includes a PPR-PDE for each NE along the strict PPR. As shown by FIG. 3, the strict path 130 includes NE 109, link 118, NE 108, link 117, NE 107, link 116, and NE 106. As such, the path information 145 describing the strict path 130 identifies at least NE 109, NE 108, NE 107, and NE 106. In FIG. 3, each of NE 109, NE 108, NE 107, and NE 106 are indicated with boxes as being configured as strict path NEs.
[0091] In an embodiment, the central entity 103 transmits an advertisement 150A including the path information 145 to NE 109, as shown by FIG. 3. It should be appreciated that NE 109 may receive the advertisement 150 with the path information 145 from another NE, or may itself generate the advertisement 150 with the path information 145. NE 109 then initiates transmission of the advertisement 150A to only the relevant NEs that are identified in the advertisement 150A (NEs 109, 108, 107, and 106).
[0092] Upon obtaining (e.g., receiving or generating) the advertisement 150A, NE 109 determines that a neighboring NE 108 is identified in the path information 145 describing the strict path 130 in the advertisement 150A. NE 109 transmits the advertisement 150A to NE 108. NE 108 similarly determines that a neighboring NE 107 is identified in the path information 145 describing the strict path 130 in the advertisement 150A, and transmits the advertisement 150A to neighboring NE 107. NE 107 similarly determines that a neighboring NE 106 is identified in the path information 145 describing the strict path 130 in the advertisement 150A, and transmits the advertisement 150A to neighboring NE 106.
[0093] NE 106 determines that there is no neighboring NE identified in the path information 145 describing the strict path 130 other than the NE 107 from which the advertisement 150A was received. NE 106 then does not transmit the advertisement 150A to any other NEs in the network 300. Additional details of this embodiment related to path-aware flooding of path information 145 describing a strict path 130 are discussed below with reference to FIG. 4.
[0094] As shown by FIG. 3, network 300 also includes a loose path 330. A loose path 330 refers to a path in which the path information 145 does not describe every single NE along the loose path 330. That is, the path information 145 describing a loose path 330 may skip certain elements along the loose path 330 such that only a subset of the elements along the loose path 330 are described in the path information 145. As shown by FIG. 3, the loose path 330 includes NE 109, link 119, NE 110, link 120, NE 111, link 303, NE 301, link 304, NE 302, link 306, and NE 106. However, the path information 345 describing the loose path 330 only identifies NE 109, NE 110, NE 111, and NE 106, which are indicated with circles as being configured as loose path NEs.
[0095] In an embodiment, the central entity 103 transmits an advertisement 150B including the path information 345 to NE 109, as shown by FIG. 3. As should be appreciated, NE 109 may otherwise receive the advertisement 150B with the path information 345 from another NE, or may itself generate the advertisement 150B with the path information 345. NE 109 then initiates path-aware flooding of the advertisement 150B to only the relevant NEs that are identified in the advertisement 150B (NE 110, NE 111, and NE 106).
[0096] Upon obtaining the advertisement 150B, NE 109 determines that a neighboring NE
110 is identified in the path information 345 describing the loose path 330 in the advertisement 150B. NE 109 then transmits the advertisement 150B to NE 110. NE 110 similarly determines that a neighboring NE 111 is identified in the path information 345 describing the loose path 330 in the advertisement 150B, and transmits the advertisement 150B to NE 1 11.
[0097] At this point, NE 111 uses the LSDB 273 stored locally in a memory 260 of NE 11 1 to determine that the neighboring NEs adjacent to NE 111 are neighboring NE 112 and neighboring NE 301. As shown by FIG. 3, NE 111 is coupled to NE 301 via link 303, and NE
111 is coupled to NE 112 via link 121. NE 111 also determines that neither of these neighboring NEs 112 and 301 are identified in the path information 345 describing the loose path 330 in the advertisement 150B. The next NE identified in the path information 345 of the advertisement 150B is NE 106. However, NE 106 is not a neighboring NE of NE 111. In various embodiments, NE 111 is configured to determine a next NE toward which to forward the advertisement 150B based on the path information 345. [0098] In a first embodiment, the NE 111 performs the OSPF protocol flooding mechanism and forwards the advertisement 150B to all neighboring NEs 112 and 301. Similarly, NEs 112 and 301 forward the advertisement 150B to all neighboring NEs 106 and 302. NE 106 terminates the flooding of the advertisement 150B and does not forward the advertisement 150B to any other NEs 104-112 and 301-302 in the network 300. Additional details of this first embodiment are described below with reference to FIG. 5.
[0099] In a second embodiment, instead of using the OSPF flooding mechanism, NE 111 constructs a shortest path tree to the next NE 106 identified in the path information 345 to determine a next NE toward which to forward the advertisement 150B, and only forwards the advertisement 150B to the determined next NE. In this embodiment, NE 111 is configured to construct a shortest path tree or compute a shortest path first algorithm based on costs associated with each of the links 121, 122, and 303-306 on a path toward NE 106. The costs associated with each of the links 121, 122, and 303-306 may be stored in the local LSDB 273. The cost associated each of the links 113-122 and 303-306 in network 300 may correspond to amount of resources that are utilized to forward data across the respective link 113-122 and 303-306 in network 300. In this way, the shortest path between two NEs 104-112 and 301-302 is the path that has the lowest cost.
[00100] In this embodiment, NE 111 only forwards the advertisement 150B to the next neighboring NE 301 identified based on computing the shortest path between NE 111 and NE 106, which is the next NE 106 identified in the path information 345 describing loose path 330. Upon receiving the advertisement 150B, NE 301 also only forwards the advertisement 150B to the next neighboring NE 302 identified based on computing the shortest path between NE 111 and NE 106. Similarly, NE 302 only forwards the advertisement 150B to the next neighboring NE 106 identified based on computing the shortest path between NE 111 and NE 106. NE 106 may terminate the flooding of the advertisement 150B since another neighboring NE or next NE is not identified in the path information 345 describing the loose path 330. Additional details of this second embodiment are discussed below with reference to FIG. 6.
[00101] In a third embodiment, NE 111 determines that a virtual link has been configured between NE 111 and the next NE 106 identified in the path information 345, and only forwards the advertisement 150B to the NE 106 via the virtual link. According to the OSPF protocols, a virtual link is a tunnel that can be configured between any two NEs 104-112 and 301-302 that have an interface to a common non-backbone area, such that the virtual link belongs to the backbone area. In this embodiment, NE 111 may first determine whether a virtual link has been established between NE 111 and the next NE 106 identified in the path information 345. If such a virtual link has been established, NE 111 transmits the advertisement 150B directly to NE 106 via the virtual link. Similar to the first and second embodiment, NE 106 terminates flooding of the advertisement 150B upon receiving the advertisement 150B. Additional details of this third embodiment are discussed below with reference to FIG. 7.
[00102] FIG. 4 is a schematic diagram 400 illustrating a method of performing the path-aware flooding of advertisement 150A across a strict path 130 according to various embodiments of the disclosure. Specifically, FIG. 4 shows the strict path 130, which includes NEs 109, 108, 107, and 106 interconnected by links 118, 117, and 116. NE 109 first obtains the advertisement 150A by either receiving the advertisement 150 A from another NE or the central entity 103, or generating the advertisement 150A with the path information 145 describing the strict path 130. In the case that NE 109 receives the advertisement 150A, NE 109 updates the routing table 276 to include the path information 145. [00103] When implementing path-aware flooding of advertisement 150A, NE 109 first determines a next NE 108 based on the path information 145 included in the advertisement 150A. As shown in FIG. 4, the path information 145 describes at least one or more of the following elements along the path 130 (NE 109, link 118, NE 108, link 117, NE 107, link 116, and NE 106}. NE 109 extracts the path information 145 from the advertisement 150A to determine that the next NE 108 is described in the path information 145, and determines that the next NE 108 is a neighboring and adjacent NE 108. In response to determining that the next NE 108 is a neighboring NE 108 described in the path information 145, NE 109 transmits the advertisement 150A to NE 108.
[00104] After receiving the advertisement 150A from NE 109, NE 108 performs similar steps to the steps performed by NE 109. NE 108 first extracts the path information 145 from the advertisement 150A and updates the routing table 276 to include the path information 145 from the advertisement 150A. NE 108 also determines that the next NE 107 is a neighboring NE that is identified in the path information 145 and forwards the advertisement 150A to NE 107.
[00105] After receiving the advertisement 150A from NE 108, NE 107 performs similar steps as NEs 109 and 108. NE 107 first extracts the path information 145 from the advertisement 150A and updates the routing table 276 to include the path information 145. NE 107 also determines that the next NE 106 is a neighboring NE that is identified in the path information 145 and forwards the advertisement 150A to NE 106.
[00106] After receiving the advertisement 150A from NE 107, NE 106 extracts the path information 145 from the advertisement 150A. NE 106 determines that a neighboring NE other than the previous NE 107 from which the advertisement 150A was received is not described in the path information 145. NE 106 terminates or discontinues forwarding of the advertisement 1 50A.
[00107] FIG. 5 is a diagram 500 illustrating a method of performing path-aware flooding of an advertisement 150B across a loose path 330 according to the first embodiment described above with reference to FIG. 3. Specifically, FIG. 5 shows a portion of the network 300, which includes NEs 106, 109-112, and 301-302 interconnected by links 119-122 and 303-306. Similar to that described above with reference to FIG. 3, the loose path 330 flows along the portion of the network 300 shown in FIG. 5.
[00108] NE 109 first obtains the advertisement 150B by either receiving the advertisement 150B from another NE or the central entity 103, or generating the advertisement 150B with the path information 345 describing the loose path 330. In the case that NE 109 receives the advertisement 150B, NE 109 updates the routing table 276 to include the path information 345.
[00109] When implementing path aware flooding of advertisement 150B, NE 109 first determines a next NE 110 based on the path information 345 included in the advertisement 150B. As shown in FIG. 5, the path information 345 describing the loose path 330 includes descriptions for at least one of the following elements (NE 109, link 119, NE 110, link 120, NE 111, and NE 106}. NE 109 extracts the path information 345 from the advertisement 150B to determine that the next NE 110 is described in the path information 145, and determines that the next NE 110 is a neighboring and adjacent NE 110. In response to determining that the next NE 110 is a neighboring NE 110 described in the path information 345, NE 109 transmits the advertisement 150B to NE 110.
[00110] After receiving the advertisement 150B from NE 109, NE 110 performs similar steps to the steps performed by NE 109. NE 110 first extracts the path information 345 from the advertisement 150B and updates the routing table 276 to include the path information 345 from the advertisement 150B. NE 110 also determines that the next NE 111 is a neighboring NE that is identified in the path information 345 and forwards the advertisement 150B to NE 111.
[00111] After receiving the advertisement 150B from NE 110, NE 111 first extracts the path information 345 from the advertisement 150B and updates the routing table 276 to include the path information 345 from the advertisement 150B. NE 111 then determines whether a next NE described in the path information 345 is a neighboring NE. NE 111 uses the LSDB 273 stored locally in a memory 260 of NE 111 to determine that the neighboring NEs adjacent to NE 111 are neighboring NE 112 and NE 301. The next NE identified in the path information 345 of the advertisement 150B is NE 106. However, NE 106 is not a neighboring NE of NE 111.
[00112] In the embodiment shown in FIG. 5, the NE 111 performs the OSPF protocol flooding mechanism and floods the advertisement 150B to all neighboring NEs 112 and 301. Each subsequent NE that does not identify a neighboring NE in the path information 345 also forwards the advertisement 150B using the OSPF protocol flooding mechanism.
[00113] After receiving the advertisement 150B, NE 112 extracts the path information 345 from the advertisement 150B and updates the routing table 276 to include the path information 345. NE 112 forwards the advertisement 150B to neighboring NE 106 via link 122 and neighboring NE 302 via link 305. NE 106 extracts the path information 345 from the advertisement 150B and updates the routing table 276 to include the path information 345. Similarly, NE 302 extracts the path information 345 from the advertisement 150B and updates the routing table 276 to include the path information 345.
[00114] NE 301 similarly performs the OSPF flooding mechanism and forwards the advertisement 150B to NE 302 via link 304. NE 301 extracts the path information 345 from the advertisement 150B and updates the routing table 276 to include the path information 345. NE 301 may continue to forward the advertisement 15 OB to NE 302, or NE 301 may not forward the advertisement 150B because NE 301 may recognize that the advertisement 150B was already forwarded to NE 302.
[00115] After receiving the advertisement 150B, NE 106 may extract the path information 345 from the advertisement 150B to determine that NE 106 is described in the path information 345. NE 106 may also determine that a next NE is not identified in the path information 345 other than a previous NE 111. In this case, NE 106 terminates the flooding of the advertisement 150B to other NEs.
[00116] FIG. 6 is a diagram 600 illustrating a method of performing path-aware flooding of the advertisement 150B across a loose path 330 according to the second embodiment described above with reference to FIG. 3. Similar to diagram 500 of FIG. 5, diagram 600 of FIG. 6 shows a portion of the network 300, which includes NEs 106, 109-112, and 301-302 interconnected by links 119-122 and 303-306. Similar to that described above with reference to FIG. 3, the loose path 330 flows along the portion of the network 300 shown in FIG. 5. Unlike diagram 500 of FIG. 5, the advertisement 150B is only flooded to NEs that are on a shortest path between NEs 111 and 106.
[00117] As shown by FIG. 6, NE 109 first obtains the advertisement 150B by either receiving the advertisement 150B from another NE or the central entity 103, or generating the advertisement 150B with the path information 345 describing the loose path 330. In the case that NE 109 receives the advertisement 150B, NE 109 updates the routing table 276 to include the path information 345. [00118] When implementing path-aware flooding of advertisement 150B, NE 109 first determines a next NE 110 based on the path information 345 included in the advertisement 150B. As shown in FIG. 6, the path information 345 describing the loose path 330 includes descriptions for at least one of the following elements (NE 109, link 119, NE 110, link 120, NE 111, and NE 106}. NE 109 extracts the path information 345 from the advertisement 150B to determine that the next NE 110 is described in the path information 145, and determines that the next NE 110 is a neighboring and adjacent NE 110. In response to determining that the next NE 110 is a neighboring NE 110 described in the path information 345, NE 109 transmits the advertisement 150B to NE 110.
[00119] After receiving the advertisement 150B from NE 109, NE 110 performs similar steps to the steps performed by NE 109. NE 110 first extracts the path information 345 from the advertisement 150B and updates the routing table 276 to include the path information 345 from the advertisement 150B. NE 110 also determines that the next NE 111 is a neighboring NE that is identified in the path information 345 and forwards the advertisement 150B to NE 111. After receiving the advertisement 150B from NE 110, NE 111 first extracts the path information 345 from the advertisement 150B and updates the routing table 276 to include the path information 345 from the advertisement 150B.
[00120] In the embodiment shown in FIG. 6, instead of using the OSPF flooding mechanism, NE 111 constructs a shortest path tree to the next NE 106 identified in the path information 345 to determine a next NE toward which to forward the advertisement 150B, and only forwards the advertisement 150B to the determined next NE. In this embodiment, NE 111 is configured to construct a shortest path tree or compute a shortest path first algorithm based on costs associated with each of the links 121, 122, and 303-306 on a path toward NE 106. [00121] For example, the LSDB 273 stored at NE 111 stores the cost associated with the links 113-122 and 303-306 in network 300. The cost associated each of the links 113-122 and 303- 306 in network 300 may correspond to the amount of resources that are utilized to forward data across the respective link 113-122 and 303-306 in network 300. In this way, the shortest path between two NEs 104-112 and 301-302 is the path that has the lowest cost. As shown in FIG. 6, link 121 has a cost of 1, link 122 has a cost of 10, link 303 has a cost of 1, link 304 has a cost of 1, link 305 has a cost of 5, and link 306 has a cost of 1.
[00122] The NE 111 determines the shortest path between NE 111 and NE 106 based on the costs of the links 121-122 and 303-306. There are several possible paths between NE 111 and NE 106. A first path flows from (NE 111, link 121, NE 112, link 122, and NE 106}, and this first path has an aggregated cost of 11. A second path flows from (NE 111, link 121, NE 112, link 305, NE 302, link 306, and NE 106}, and this second path has an aggregated cost of 7. A third path flows from (NE 111, link 303, NE 301, link 304, NE 302, link 305, NE 112, link 122, and NE 106}, and this third path has an aggregated cost of 17. A fourth path flows from (NE 111, link 303, NE 301, link 304, NE 302, link 306, and NE 106}, and this fourth path has an aggregated cost of 3. Therefore, the shortest path between NE 111 and NE 106 (e.g., the path having the lowest aggregated cost), is the fourth path that flows from (NE 111, link 303, NE 301, link 304, NE 302, link 306, and NE 106}.
[00123] In this case, NE 111 only forwards the advertisement 150B to the next neighboring NE 301 identified based on computing the shortest path between NE 111 and NE 106, which is the next NE 106 identified in the path information 345 describing loose path 330. Upon receiving the advertisement 150B, NE 301 first extracts the path information 345 to update the routing table 276 stored at NE 301 to include the path information 345. NE 301 also only forwards the advertisement 150B to the next neighboring NE 302 identified based on computing the shortest path between NE 111 and NE 106.
[00124] Similarly, NE 302 extracts the path information 345 to update the routing table 276 stored at NE 302 to include the path information 345. In addition, NE 302 only forwards the advertisement 150B to the next neighboring NE 306 identified based on computing the shortest path between NE 111 and NE 106. NE 106 may terminate the flooding of the advertisement 150B since another neighboring NE or next NE is not identified in the path information 345 describing the loose path 330.
[00125] In an embodiment, the routing table 276 stored at each of NEs 111, 112, 301, and 302 indicates a next hop toward which to forward a message to every possible destination (e.g., NE 104-112 and 301-302) in the network 300. In this embodiment, NE 111 performs a look up in the routing table 276 using the next NE 106 identified in the path information 345 to determine the next NE toward which to forward the advertisement 150B is next NE 301. In such an embodiment, each of NEs 111, 112, 301, and 302 does not need to compute a shortest path between the respective NE 111, 112, 301, and 302 and NE 106 when the advertisement 150B is received. Instead, each of NEs 111, 112, 301, and 302 performs a lookup on the routing table 276 to determine the next neighboring NE (e.g., next hop) toward which to forward the advertisement 150B such that the advertisement 150B reaches NE 106.
[00126] FIG. 7 is a diagram 700 illustrating path-aware forwarding of an advertisement 150B across a loose path 330 according to the third embodiment described above with reference to FIG. 3. Similar to diagram 500 of FIG. 5 and diagram 600 of FIG. 6, diagram 700 of FIG. 7 shows a portion of the network 300, which includes NEs 106, 109-112, and 301-302 interconnected by links 119-122 and 303-306. Similar to that described above with reference to FIG. 3, the loose path 330 flows along the portion of the network 300 shown in FIG. 5. Unlike diagram 500 of FIG. 5 and diagram 600 of FIG. 5, the advertisement 150B is only forwarded along a virtual link 703 between NE 111 and NE 106.
[00127] As shown by FIG. 7, NE 109 first obtains the advertisement 150B by either receiving the advertisement 150B from another NE or the central entity 103, or generating the advertisement 150B with the path information 145 describing the loose path 330. In the case that NE 109 receives the advertisement 150B, NE 109 updates the routing table 276 to include the path information 345.
[00128] When implementing path-aware flooding of advertisement 150B, NE 109 first determines a next NE 110 based on the path information 345 included in the advertisement 150B. As shown in FIG. 7, the path information 345 describing the loose path 330 includes descriptions for at least one of the following elements (NE 109, link 119, NE 110, link 120, NE 111, and NE 106}. NE 109 extracts the path information 345 from the advertisement 150B to determine that the next NE 110 is described in the path information 145, and determine that the next NE 110 is a neighboring and adjacent NE 110. In response to determining that the next NE 110 is a neighboring NE 110 described in the path information 345, NE 109 transmits the advertisement 150B to NE 110.
[00129] After receiving the advertisement 150B from NE 109, NE 110 performs similar steps to the steps performed by NE 109. NE 110 first extracts the path information 345 from the advertisement 150B and updates the routing table 276 to include the path information 345 from the advertisement 150B. NE 110 also determines that the next NE 111 is a neighboring NE that is identified in the path information 345 and forwards the advertisement 150B to NE 111. After receiving the advertisement 150B from NE 110, NE 111 first extracts the path information 345 from the advertisement 150B and updates the routing table 276 to include the path information 345 from the advertisement 150B.
[00130] In the embodiment shown in FIG. 7, NE 111 determines that a virtual link 703 has been configured between NE 111 and the next NE 106 identified in the path information 345, and only forwards the advertisement 150B to the NE 106 via the virtual link 703. According to the OSPF protocols, a virtual link 703 is a tunnel that can be configured between any two NEs 104-112 and 301-302 that have an interface to a common non-backbone area, such that the virtual link 703 belongs to the backbone area. The OSPF protocols treat two NEs 111 and 106 joined by a virtual link 703 as if they were connected by an unnumbered point-to-point backbone network. Under the OSPF protocols, an operator of the network 300 may pre-configure a virtual link 703 between two NEs 111 and 106 in the network 300 for a particular purpose. In this embodiment, two NEs 111 and 106 may use the virtual links 703 to forward advertisement 150B and reduce unnecessary flooding of the network 300.
[00131] For example, NE 111 may first determine whether a virtual link 703 has been established between NE 111 and the next NE 106 identified in the path information 345. If such a virtual link 703 has been established, NE 111 transmits the advertisement 150B to directly NE 106 via the virtual link 703. Similar to the first and second embodiment described above with reference to FIGS. 5 and 6, NE 106 terminates flooding of the advertisement 150B upon receiving the advertisement 150B,
[00132] FIG. 8 is a flowchart illustrating a method 800 for implementing an OSPF protocol and path-aware flooding according to various embodiments of the disclosure. Method 800 is implemented by an NE, such as NE 200, NEs 104-112, or NEs 301-302 (referred to hereafter as “NE”). Method 800 is implemented when an advertisement 150A or 150B (referred to hereafter as “advertisement 150”) is obtained by an NE.
[00133] At step 803, the NE (e.g., NE 109) receives, from a previous NE, an advertisement 150 comprising path information 145 or 345 or describing a path 130 or 330 between at least two NEs in the network 100 or 300. In an embodiment, the NE receives the advertisement 150 from another NE within the network 100 or 300 or external to the network 100 or 300. In another embodiment, the NE receives the advertisement 150 from the central entity 103. In another embodiment, the NE generates the advertisement 150 after computing the path 130 or 330 between the at least two NEs in the network 100 or 300
[00134] At step 806, the NE updates a routing table 276 stored in a memory 260 based on the path information 145 or 345 in the advertisement 150. For example, the NE adds an entry to the routing table 276 for the destination of the path 130 or 330 identified in the advertisement 150, in which the entry includes the path information 145 or 345. The path information 145 or 345 includes addresses, labels, or identifiers identifying one or more elements (e.g., NEs and/or links) on the path 130 or 330. For example, the addresses, labels, or identifiers of the elements on the path 130 or 330 may be in the form of PPR-PDEs. The path information 145 or 345 may also include an identifier of the path, such as a PPR-ID.
[00135] At step 809, the NE determines a next NE on the path 130 or 330 based on the path information 145 or 345 in the advertisement 150. When the path is a strict path 130, the next NE is described in the path information 145 describing the strict path 130. The NE determines the next NE based on the description of the next NE in the path information 145. In an embodiment, the NE has at least three neighboring NEs, including the previous NE, the next NE, and a neighboring NE that is not on the path. [00136] When the path is a loose path 330 and a neighboring NE is not explicitly described in the path information 345 of the advertisement 150, the NE may determine the next NE based on the first embodiment described above with reference to FIG. 5, the second embodiment described above with reference to FIG. 6, or the third embodiment described above with reference to FIG. 7. When the NE determines the next NE based on the first embodiment described above with reference to FIG. 5, then at step 812, the NE floods the advertisement to all neighboring NEs. Subsequent NEs perform similar OSPF flooding mechanisms, until the NE reaches the next NE that is identified by the path information 345.
[00137] When the NE determines the next NE based on the second embodiment described above with reference to FIG. 6, the NE determines a shortest path to the next NE identified in the path information 345, and at step 812, the NE forwards the advertisement 150 to only the next NE on the shortest path. Subsequent NEs similarly only forward the advertisement 150 to only the next NE on the shortest path, until the NE reaches the next NE that is identified by the path information 345
[00138] When the NE determines the next NE based on the third embodiment described above with reference to FIG. 7, the next NE determines whether a virtual link 703 to the next NE identified in the path information 345 has been established. In this case, at step 812, the NE transmits the advertisement 150 directly to the next NE via the virtual link 703. As such, the term “next NE” refers to a next NE identified in the path information 145 or 345 or a next NE on a shortest path to the next NE identified in the path information 145 or 345,
[00139] FIG. 9 is a diagram illustrating an apparatus 900 for implementing an OSPF protocol and path-aware flooding according to various embodiments of the disclosure. Apparatus 900 includes a means for receiving 903, a means for updating 906, a means for determining 909, and a means for forwarding 911. The means for receiving 903 includes a means for receiving, from a previous NE, an advertisement 150 comprising path information 145 or 345 or describing a path 130 or 330 between at least two NEs in the network 100 or 300. The means for updating 906 comprises a means for updating a routing table 276 stored in a memory 260 based on the path information 145 or 345 in the advertisement 150. The means for determining 909 comprises a means for determining a next NE on the path 130 or 330 based on the path information 145 or 345 in the advertisement 150. The means for forwarding 911 comprises a means for forwarding the advertisement to the next NE on the path 130 or 330.
[00140] While several embodiments have been provided in the present disclosure, it should be understood that the disclosed systems and methods might be embodied in many other specific forms without departing from the spirit or scope of the present disclosure. The present examples are to be considered as illustrative and not restrictive, and the intention is not to be limited to the details given herein. For example, the various elements or components may be combined or integrated in another system or certain features may be omitted, or not implemented.
[00141] In addition, techniques, systems, subsystems, and methods described and illustrated in the various embodiments as discrete or separate may be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other items shown or discussed as coupled or directly coupled or communicating with each other may be indirectly coupled or communicating through some interface, device, or intermediate component whether electrically, mechanically, or otherwise. Other examples of changes, substitutions, and alterations are ascertainable by one skilled in the art and could be made without departing from the spirit and scope disclosed herein.

Claims

CLAIMS What is claimed is:
1. A method performed by a network element (NE) in a network implementing Open Shortest Path First (OSPF), comprising:
receiving, from a previous NE, an advertisement comprising path information describing a path between at least two NEs in the network;
updating a routing table stored in a memory of the NE based on the path information in the advertisement;
determining a next NE on the path based on the path information in the advertisement, wherein the NE has at least three neighboring NEs, wherein the at least three neighboring NEs comprise the previous NE, the next NE, and a neighboring NE that is not on the path; and
forwarding the advertisement to only the next NE on the path.
2. The method according to claim 1, wherein the previous NE is a central entity of the network.
3. The method according to any one of claims 1 to 2, wherein the next NE is explicitly identified in the advertisement.
4. The method according to any one of claims 1 to 2, wherein the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the advertisement, and wherein the method further comprises performing a shortest path computation between the NE and the next loose NE to determine a shortest path between the NE and the next loose NE, wherein the next NE is a next hop on the shortest path between the NE and the next loose NE.
5. The method according to any one of claims 1 to 2, wherein the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the advertisement.
6. The method according to any one of claims 1 to 2, wherein the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the path information in the advertisement, further comprising determining that a virtual link is established between the NE and the next loose NE, wherein determining the next NE on the path comprises determining that the next loose NE is the next NE on the path, and forwarding the advertisement to only the next NE on the path comprises forwarding the advertisement to the next loose NE via the virtual link.
7. The method according to any one of claims 1 to 6, wherein the path is a preferred path route (PPR) between a first NE and a plurality of second NEs, wherein the path information describing the path comprises a PPR identifier (PPR-ID) identifying the PPR and a plurality of PPR path description elements (PPR-PDEs), and wherein each of the PPR-PDEs describes a link or NE on the PPR.
8. The method according to any one of claims 1 to 6, wherein the path is a preferred path route (PPR) graph between a first NE and a plurality of second NEs, wherein the path information describing the path comprises a PPR graph identifier (ID) identifying the PPR graph and a plurality of PPR path description elements (PPR-PDEs), and wherein each of the PPR-PDEs describes a link or NE on the PPR graph.
9. The method according to any one of claims 1 to 6, wherein the path is a preferred path route (PPR) graph between a plurality of first NEs and a second NE, wherein the path information describing the path comprises a PPR graph identifier (ID) identifying the PPR graph and a plurality of PPR path description elements (PPR-PDEs), and wherein each of the PPR-PDEs describes a link or NE on the PPR graph.
10. The method according to any one of claims 1 to 6, wherein the path is a preferred path route (PPR) graph between a plurality of first NEs and a plurality of second NEs, wherein the path information describing the path comprises a PPR graph identifier (ID) identifying the PPR graph and a plurality of PPR path description elements (PPR-PDEs), and wherein each of the PPR-PDEs describes a link or NE on the PPR graph.
11. A network element (NE) in a network implementing Open Shortest Path First (OSPF), comprising:
a memory storing instructions; and
a processor coupled to the memory and configured to execute the instructions, which cause the processor to be configured to:
receive, from a previous NE, an advertisement comprising path information describing a path between at least two NEs in the network; update a routing table stored in a memory of the NE based on the path information in the advertisement;
determine a next NE on the path based on the path information in the advertisement, when the NE has at least three neighboring NEs, the at least three neighboring NEs comprise the previous NE, the next NE, and a neighboring NE that is not on the path; and
forward the advertisement to only the next NE on the path.
12. The NE according to claim 11, wherein the previous NE is a central entity of the network.
13. The NE according to any one of claims 11 to 12, wherein the next NE is explicitly identified in the advertisement.
14. The NE according to any one of claims 11 to 12, wherein the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the advertisement, and wherein the instructions further cause the processor to perform a shortest path computation between the NE and the next loose NE to determine a shortest path between the NE and the next loose NE, wherein the next NE is a next hop on the shortest path between the NE and the next loose NE.
15. The NE according to any one of claims 11 to 12, wherein the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the advertisement.
16. The method according to any one of claims 11 to 12, wherein the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the path information in the advertisement, wherein the instructions further cause the processor to: determine that a virtual link is established between the NE and the next loose NE;
determine that the next loose NE is the next NE on the path; and
forward the advertisement to the next loose NE via the virtual link.
17. A non-transitory computer-readable medium configured to store a computer program product comprising computer executable instructions that, when executed by a processor of a network element (NE) implemented in a network, cause the processor to:
receive, from a previous NE, an advertisement comprising path information describing a path between at least two NEs in the network;
update a routing table stored in a memory of the NE based on the path information in the advertisement;
determine a next NE on the path based on the path information in the advertisement, when the NE has at least three neighboring NEs, the at least three neighboring NEs comprise the previous NE, the next NE, and a neighboring NE that is not on the path; and
forward the advertisement to only the next NE on the path.
18. The computer-readable medium according to claim 17, wherein the previous NE is a central entity of the network.
19. The computer-readable medium according to any one of claims 17 to 18, wherein the next NE is explicitly identified in the advertisement.
20. The computer-readable medium according to any one of claims 17 to 18, wherein the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the advertisement, and wherein the computer executable instructions further cause the processor to perform a shortest path computation between the NE and the next loose NE to determine a shortest path between the NE and the next loose NE, wherein the next NE is a next hop on the shortest path between the NE and the next loose NE.
21. The computer-readable medium according to any one of claims 17 to 18, wherein the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the advertisement.
22. The computer-readable medium according to any one of claims 17 to 18, wherein the path information explicitly identifies a next loose NE on the path, wherein the next NE is not explicitly identified in the path information in the advertisement, wherein the computer executable instructions further cause the processor to:
determine that a virtual link is established between the NE and the next loose NE;
determine that the next loose NE is the next NE on the path; and
forward the advertisement to the next loose NE via the virtual link.
23. A network, comprising:
a plurality of the network elements (NEs) of any one of claims 11 to 16, wherein the plurality of NEs are coupled to each other.
24. The network according to claim 23, where at least one of the plurality of NEs has at least three neighboring NEs. wherein the at least three neighboring NEs include the previous NE, the next NE, and the neighboring NE that is not on a path described in an advertisement.
25. The network according to any one of claims 23 to 24, wherein the neighboring NE that is not on the path does not receive the advertisement.
26. The network according any one of claims 23 to 25, wherein the next NE receives the advertisement from the NE.
27. The network according to any one of claims 23 to 24, wherein the plurality of NEs comprise the previous NE, the NE, and the next loose NE, wherein the path includes the previous NE, the NE, and the next loose NE, wherein the previous NE and the NE are neighboring NEs, where the NE and the next loose NE are separated by at least one other NE in the network, and wherein the NE is configured to:
receive, from the previous NE, the advertisement, wherein the path information explicitly identifies the next loose NE on the path;
perform the shortest path computation between the NE and the next loose NE to determine the shortest path between the NE and the next loose NE; and forward the advertisement to the next NE in the network based on the shortest path between the NE and the next loose NE, and
wherein the next NE is configured to:
receive the advertisement; and
forward the advertisement to another next NE based on the shortest path between the NE and the next loose NE without storing the path information.
28. The network according to any one of claims 23 to 24, wherein the plurality of NEs comprise the previous NE, the NE, and the next loose NE, wherein the path includes the previous NE, the NE, and the next loose NE, wherein the previous NE and the NE are neighboring NEs, where the NE and the next loose NE are separated by at least one other NE in the network, and wherein the NE is configured to:
receive, from the previous NE, the advertisement, wherein the path information explicitly identifies the next loose NE on the path;
determine that the virtual link is established between the NE and the next loose NE; and forward the advertisement to the next loose NE via the virtual link,
wherein the next loose NE is configured to receive the advertisement from the NE via the virtual link.
29. A method for operating a network comprising a plurality of network elements (NEs), comprising performing, by an NE of the plurality of NEs, the method of any of claims 1 to 10.
30. The method according to claim 29, wherein the neighboring NE that is not on the path does not receive the advertisement.
31. The method according to any one of claims 29 to 30, further comprising receiving, by the next NE, the advertisement.
32. The method according to claim 29, wherein the plurality of NEs comprise the previous NE, the NE, and the next loose NE, wherein the path includes the previous NE, the NE, and the next loose NE, and wherein the method further comprises:
receiving, by the NE from the previous NE, the advertisement, wherein the path information explicitly identifies the next loose NE on the path;
performing, by the NE, the shortest path computation between the NE and the next loose NE to determine the shortest path between the NE and the next loose NE;
forwarding, by the NE, the advertisement to the next NE based on the shortest path between the NE and the next loose NE;
receiving, by the next NE, the advertisement; and
forwarding, by the next NE, the advertisement to another next NE based on the shortest path between the NE and the next loose NE without storing the path information.
33. The method according to claim 29, wherein the plurality of NEs comprise the previous NE, the NE, and the next loose NE, wherein the path includes the previous NE, the NE, and the next loose NE, and wherein the method further comprises: receiving, by the NE, from the previous NE, the advertisement, wherein the path information explicitly identifies the next loose NE on the path;
determining, by the NE, that a virtual link is established between the NE and the next loose
NE;
forwarding, by the NE, the advertisement to the next loose NE via the virtual link; and receiving, by the next loose NE from the NE, the advertisement via the virtual link.
PCT/US2020/031679 2019-05-07 2020-05-06 Open shortest path first (ospf) path-aware flooding WO2020227412A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201962844521P 2019-05-07 2019-05-07
US62/844,521 2019-05-07

Publications (1)

Publication Number Publication Date
WO2020227412A1 true WO2020227412A1 (en) 2020-11-12

Family

ID=70847562

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2020/031679 WO2020227412A1 (en) 2019-05-07 2020-05-06 Open shortest path first (ospf) path-aware flooding

Country Status (1)

Country Link
WO (1) WO2020227412A1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6985959B1 (en) * 2000-11-01 2006-01-10 Nortel Networks Limited Constraint route dissemination using distributed route exchanges
WO2019052488A1 (en) * 2017-09-14 2019-03-21 华为技术有限公司 Link state advertisement (lsa) transmission method, device, and system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6985959B1 (en) * 2000-11-01 2006-01-10 Nortel Networks Limited Constraint route dissemination using distributed route exchanges
WO2019052488A1 (en) * 2017-09-14 2019-03-21 华为技术有限公司 Link state advertisement (lsa) transmission method, device, and system

Similar Documents

Publication Publication Date Title
USRE49108E1 (en) Simple topology transparent zoning in network communications
US9716648B2 (en) System and method for computing point-to-point label switched path crossing multiple domains
CN107409093B (en) Automatic optimal route reflector root address assignment and fast failover for route reflector clients in a network environment
US11943136B2 (en) Advanced preferred path route graph features in a network
EP3259886B1 (en) Optimized border gateway protocol best path selection for optimal route reflection
EP3103230B1 (en) Software defined networking (sdn) specific topology information discovery
US9634867B2 (en) Computing service chain-aware paths
CN109314663B (en) PCEP extensions to support distributed computing, multiple services, and inter-domain routing PCECC
US11632322B2 (en) Preferred path route graphs in a network
WO2019190699A1 (en) Method and apparatus for preferred path route information distribution and maintenance
US11671517B2 (en) Compressed data transmissions in networks implementing interior gateway protocol
US11770329B2 (en) Advertising and programming preferred path routes using interior gateway protocols
CN112118178B (en) Network device and method for class-based traffic engineering in an IP network
US11502940B2 (en) Explicit backups and fast re-route mechanisms for preferred path routes in a network
WO2020227412A1 (en) Open shortest path first (ospf) path-aware flooding
CN104065578B (en) IP router processing method and device based on ASON optical network
WO2020231740A1 (en) Open shortest path first (ospf) service grouping capability, membership, and flooding
WO2020243465A1 (en) Open shortest path first (ospf) service group dedicated databases
WO2020021558A1 (en) Methods, apparatus and machine-readable media relating to path computation in a communication network
WO2020247742A1 (en) Network connectivity verification and negotiation
EP3913868A1 (en) Segmented traceroute for segment routing traffic engineering
CN114050993A (en) Access side-based safe and trusted path active selection method and device
Nozaki et al. A novel approach to interior gateway routing

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20728333

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20728333

Country of ref document: EP

Kind code of ref document: A1