Method and apparatus for telemetry monitoring of BGP prefixes in network topology
The BGP prefix tracker system tracks prefix changes in the network topology in real time, solving the problem of difficulty in detecting routing events in the prior art, improving the accuracy and performance of network path selection, and enhancing the stability and security of the network.
Patent Information
- Application Number
- CN202380087234.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-12-20
- Filing Date
- 2023-12-12
- Publication Date
- 2025-08-29
AI Technical Summary
In network topology, prior art is difficult to track and detect routing events in real time, especially in BGP-based networks, resulting in improper path selection, degraded network performance and security issues.
The BGP prefix tracker system is adopted to automatically track prefix changes in the network topology through telemetry data, and to track BGP routing events using real-time streaming framework and state memory, including route/prefix events and full network events, providing prefix-level tracking and network accessibility monitoring.
Real-time monitoring of network topology changes is achieved, path selection accuracy is improved, network failures and security threats are reduced, and network performance is optimized.
Smart Images

Figure CN120569945A_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates to computing networks, and more particularly to telemetry monitoring of prefixes in a network topology. Background Art
[0002] Network computing is the process of multiple computers or nodes working together and communicating with each other over a network. There are wide area networks (WANs) and local area networks (LANs). Both allow computers to connect to each other. LANs are typically used for smaller, more localized networks, such as homes, businesses, and schools. WANs cover larger areas, such as cities, and can even connect computers in different countries. LANs are generally faster and more secure than WANs, but WANs enable connectivity over large areas. LANs are typically owned, controlled, and managed internally by the organization deploying them, while WANs typically require two or more constituent LANs to be connected via the public internet or a dedicated connection established by a telecommunications provider.
[0003] Local and wide area networks (WANs) enable computers to connect to each other and transfer data and other information. For both LANs and WANs, a method must be used to determine the path data takes from one computing instance to another. This process is called routing. Routing is the process of selecting a path for traffic within a network, between multiple networks, or across multiple networks. Routing typically directs forwarding based on routing tables, which store routes to various network destinations. Routing tables can be specified by administrators, learned by observing network traffic, or constructed with the help of routing protocols.
[0004] Small networks may use manually configured routing tables to determine how information should be transmitted from one computer to another. Routing tables can include a list of "best paths," indicating the most efficient or optimal path between a source and destination computer. Larger networks, including those connected to the public internet, may rely on complex topologies that can change rapidly, making manually constructing routing tables impractical. Dynamic routing attempts to address this problem by automatically constructing routing tables based on information carried by routing protocols. Dynamic routing enables networks to avoid network failures and congestion almost autonomously. There are several routing protocols that provide rules or instructions for determining the best path between networked devices. Examples of dynamic routing protocols and algorithms include Routing Information Protocol (RIP), Open Shortest Path First (OSPF), Enhanced Interior Gateway Routing Protocol (EIGRP), and Border Gateway Protocol (BGP).
[0005] In some cases, path selection involves applying routing metrics to multiple routes to select or predict the best route. Most routing algorithms use only one network path at a time. Multipath routing techniques enable the use of multiple alternative paths. In computer networks, routing algorithms can be used to predict the best path between two computing instances. Routing algorithms can be based on factors such as bandwidth, network latency, number of hops, path cost, load, maximum transmission unit, reliability, and communication cost. A routing table stores a list of optimal paths. A topology database can store this list of optimal paths and may also store additional information.
[0006] In some networks, routing is complex because no single entity is responsible for selecting the optimal path. Instead, multiple entities participate in selecting the optimal path, or even parts of a single path. In the computer network environment of the Internet, the Internet is divided into autonomous systems (ASs), such as Internet service providers (ISPs). Each AS controls routing within its network. AS-level paths are selected based on the Border Gateway Protocol (BGP). Each AS-level path consists of a series of autonomous systems (ASs) through which packets are transmitted from one computing instance to another. Each AS can choose from multiple paths provided by neighboring ASs.
[0007] In many network routing implementations, there is a need to detect routing events in the network, including when routes are added, withdrawn, or modified. In some cases, it is important to track certain routes in the network topology in real time.
[0008] In view of the foregoing, disclosed herein are systems, methods, and apparatus for automatically tracking prefixes within a network topology based on telemetry data. BRIEF DESCRIPTION OF THE DRAWINGS
[0009] Non-limiting and non-exhaustive embodiments of the present disclosure are described with reference to the following drawings, wherein like reference numerals refer to like parts throughout the various views unless otherwise specified. The advantages of the present disclosure will become better understood in conjunction with the following description and the accompanying drawings, wherein:
[0010] Figure 1 is a schematic diagram of an exemplary system of networked devices communicating via the Internet;
[0011] Figure 2 is a schematic diagram of a system for automatically tracking prefixes within a network topology based on telemetry data;
[0012] Figure 3A is a schematic diagram of a process flow for automatically tracking prefixes within a network topology based on telemetry data;
[0013] Figure 3B Includes applicable Figures 4 to 7 The key for the routing key information of the indicated step;
[0014] Figure 4 is a schematic diagram of a process flow for identifying routing states within a network topology;
[0015] Figure 5 is a schematic diagram of the process flow for identifying path states within a network topology;
[0016] Figure 6 is a schematic diagram of the process flow used to trace a path within a network topology;
[0017] Figure 7 is a schematic diagram of a process flow for tracking prefixes and synchronizing a prefix tracking data store associated with a network topology;
[0018] Figure 8 is a schematic flow chart of a method for automatically tracking prefixes within a network topology based on telemetry data; and
[0019] Figure 9 is a schematic diagram illustrating components of an exemplary computing device. DETAILED DESCRIPTION
[0020] Disclosed herein are systems, methods, and apparatus for autonomously detecting routing events within a network topology. The systems, methods, and apparatus described herein can be implemented in networks that route traffic based on the Border Gateway Protocol (BGP). As described herein, speakers can peer with a network visibility and analytics platform via BGP to track the network's routing or send telemetry data directly to the platform. BGP prefixes are tracked by matching routing attributes such as community, extended community, large community, prefix, and neighbor address.
[0021] The BGP prefix tracker system described herein is implemented to track specific events, including route / prefix events and network-wide events. Route / prefix events include, for example, newly added BGP routes, updates to existing BGP routes, and the withdrawal or deletion of existing BGP routes. This includes detecting changes in the BGP best path by tracking BGP attributes such as Autonomous System Path (AS-Path), Multi-Exit Discriminator (MED), Local Preference (LocalPref), Weight, Origin, Next Hop, Local Preference, Atomic Aggregation, Aggregator, Community, Originator Identifier, Cluster List, Delegated Attributes (DPA), Advertiser, Multi-Protocol Reachable NLRI, Multi-Protocol Unreachable NLRI, and Extended Communities. Network-wide events include, for example, detecting prefix reachability within the network (i.e., whether a prefix is no longer reachable between all nodes within the network), detecting routing instability by tracking best path changes or route flapping, detecting route deprioritization and route hijacking, and detecting path cost changes by tracking next-hop information. The BGP prefix tracker described herein provides the option to specify a network size to enable prefix-level tracking by specifying a list of neighbor router identifiers that are part of the tracked network. Additionally, the BGP prefix tracker described herein provides the option to filter the nodes to be tracked within the network at a per-prefix level by specifying a list of neighbor router identifiers that are part of the nodes to be tracked within the network.
[0022] The prefix tracker is a real-time application that implements data streams. Data streams can be specifically implemented in a real-time streaming framework such as KafkaStream, where input and output data is stored in an Apache Kafka® cluster. Real-time data for all prefixes is provided to the prefix tracker from BGP speakers via local telemetry feeds. The prefix tracker tracks the state of all BGP speakers within the network topology, including BGP peers, BGP prefixes, and paths. The prefix tracker uses a state store to store state, which can include an in-memory hash map provided by the data stream. The state data store can be implemented by stream processing applications to store and query data. Data streams provide fault tolerance and automatic recovery for the local state store. Each stream task in the prefix tracker application can embed multiple state stores to track the entire network state. State stores can include, for example, device memory, configuration memory, peer memory, route memory, and prefix tracker memory. Related input source data received across one or more data streams is stored across different state stores using corresponding source processors.
[0023] The following provides further background information for the disclosure herein. In a computer network environment, networking devices such as switches or routers can be used to transmit information from one destination to another. In one embodiment, data packets and messages may be generated at a first location, such as on a computer in a person's home. The data packets and messages may be generated by a person interacting with a web browser and requesting or providing information to a remote server accessible via the Internet. In one example, the data packets and messages may be information that a person enters into a form accessible on a web page connected to the Internet. The data packets and messages may need to be transmitted to a remote server that may be geographically remote from the person's computer. Direct communication between the person's home router and the remote server may not exist. Therefore, the data packets and messages must be transmitted by "hopping" to different networking devices until they reach their destination at the remote server. The person's home router must determine the route to transmit the data packets and messages through multiple different devices connected to the Internet until the data packets and messages reach their destination at the remote server.
[0024] Determining the optimal path from a first location to a destination and forwarding data packets and messages to the next destination is a crucial function performed by networking devices, such as switches or routers. The connections between networking devices in a network are referred to as network topology. Network topology is the arrangement of elements, such as links and nodes, in a communications network. A network topology can include wired links, wireless links, or a combination of wired and wireless links between nodes in the network. Examples of wired links include coaxial cables, telephone lines, power lines, ribbon cables, and optical fibers. Examples of wireless links include satellites, cellular signals, radio signals, and free-space optical communications. A network topology includes an indication of all nodes (e.g., computers, routers, switches, and other devices) in the network, as well as an indication of the links between the nodes. Disclosed herein are systems, methods, and devices for improving network topology and network routing.
[0025] To further understand the present disclosure, some explanation will be provided of a number of network computing devices and protocols.
[0026] A BGP instance is a device used to route information within a network. A BGP instance can take the form of a route reflector (RR). A BGP instance can run on a switch, router, or BGP speaker on a switch. Generally speaking, a BGP instance sends all learned paths for a prefix to a best path controller. The best path controller responds with a set of best paths. The best path controller is allowed to modify the next hop and attributes of any path. Upon receiving the best path, the BGP instance updates its local routing information base (RIB) and advertises the best path to its neighbors.
[0027] Switches (alternatively referred to as switching hubs, bridging hubs, or MAC bridges) create networks. Most internal networks use switches to connect computers, printers, phones, cameras, lights, and servers within a building or campus. A switch acts as a controller, enabling networked devices to communicate efficiently with each other. Switches connect devices on a computer network by using packet switching to receive data, process it, and forward it to its destination. A network switch is a multi-port bridge that uses hardware addresses to process and forward data at the Data Link Layer (Layer 2) of the Open Systems Interconnection (OSI) model. Some switches can also process data at the Network Layer (Layer 3) by adding routing capabilities. Such switches are often referred to as Layer 3 switches or multilayer switches.
[0028] Routers connect networks. Switches and routers perform similar functions, but each has its own distinct functions within a network. A router is a networking device that forwards data packets between computer networks. Routers perform traffic routing functions on the Internet. Data sent over the Internet, such as web pages, emails, or other forms of information, is sent in packets. Data packets are typically forwarded from one router to another through the networks that make up an internetwork (for example, the Internet) until they reach their destination node. A router connects to two or more data lines from different networks. When a data packet enters through one of these lines, the router reads the network address information in the packet to determine the final destination. Then, using information in the router's routing table or routing policy, the router directs the packet to the next network in its path. A BGP speaker is a router that is enabled to use the Border Gateway Protocol (BGP).
[0029] A customer edge router (CE router) is a router located at the customer's premises, providing an interface between the customer's local area network (LAN) and the provider's core network. CE routers, provider routers, and provider edge routers are components of the Multiprotocol Label Switching (MPLS) architecture. Provider routers are located at the core of the provider or carrier network. Provider edge routers are located at the edge of the network. Customer edge routers connect to provider edge routers, and provider edge routers connect to other provider edge routers through provider routers.
[0030] A routing table, or routing information base (RIB), is a data table stored in a router or networked computer that lists routes to a specific network destination. In some cases, the routing table includes metrics for the routes, such as distance and weight. The routing table contains information about the network topology surrounding the router storing the routing table. The construction of routing tables is the primary goal of routing protocols. Static routes are entries added to the routing table by non-automatic means and are fixed, rather than the result of some network topology discovery process. A routing table may contain at least three fields: network ID, metric, and next hop. The network ID is the destination subnet. The metric is the routing metric for the path along which the packet is sent. Routing is directed toward the gateway with the lowest metric. The next hop is the address of the next stop to which the packet will be sent on its way to the destination. The routing table may further include information about the quality of service associated with the route, a list of filter criteria associated with the route, the interface of the Ethernet card, and so on.
[0031] To illustrate the concept of a routing table, you can think of it as a map used to deliver data packets. A routing table is like using a map to deliver data packets to their final destination. When a node needs to send data to another node on the network, the node must first know where to send the data. If the node cannot connect directly to the destination node, the node must send the data to other nodes along the appropriate route to the destination node. Most nodes do not try to figure out which routes might work. Instead, the node will send an IP packet to a gateway on the local area network, and the gateway will then decide how to route the data to the correct destination. Each gateway needs to keep track of the delivery routes of different data packets, and to do this it uses a routing table. A routing table is a database that tracks paths, like a map. Figure 1 The gateway can also share the contents of its routing table with other nodes that request this information.
[0032] With hop-by-hop routing, each routing table lists, for all reachable destinations, the address of the next device on the path to that destination, known as the next hop. Assuming the routing tables are consistent, the algorithm that relays a packet to the next hop at its destination is sufficient to deliver data anywhere in the network. Hop-by-hop routing is a characteristic of the IP internetwork layer and the Open Systems Interconnection (OSI) model.
[0033] The Open Systems Interconnection (OSI) model is a conceptual model that describes and standardizes the communication capabilities of computing systems, regardless of their underlying internal structure and technology. The goal of the OSI model is to enable interoperability among diverse communication systems using standard communication protocols. The OSI model divides communication systems into abstract layers. Layers serve the layers above them and are served by the layers below them. For example, a layer providing error-free communication in a network provides the necessary path for applications above it, while invoking the next lower layer to send and receive the data packets that constitute this path. Two instances of the same layer are considered to be connected by a horizontal connection within that layer. Communication protocols enable entities in one host to interact with corresponding entities of the same layer in another host. Like the OSI model, service definitions abstractly describe the functionality provided by layer (N-1) to layer (N), where N is one of the protocol layers running in the local host.
[0034] Route control is a type of network management designed to improve internet connectivity, reduce bandwidth costs, and overall interconnected network operations. Some route control services include a range of hardware- and software-based products and services that work together to improve overall internet performance and fine-tune the use of available internet bandwidth at the lowest cost. Route control is particularly successful in scenarios where a network or autonomous system (AS) draws internet bandwidth from multiple providers. Route control helps select the optimal path for data transmission.
[0035] Some network communication systems are large, enterprise-scale networks with thousands of processing nodes. These thousands of processing nodes share bandwidth from multiple Internet Service Providers (ISPs) and can handle large volumes of internet traffic. Such systems can be complex and must be configured correctly to achieve acceptable internet performance. If the system is not configured correctly for optimal data transmission, internet access speeds may decrease, and the system may experience high bandwidth consumption and high traffic. To address this, a set of services can be implemented to eliminate or reduce these concerns. This set of services can be referred to as routing control.
[0036] An embodiment of a routing control mechanism consists of both hardware and software. The routing control mechanism monitors all outgoing traffic through connections to internet service providers (ISPs). The routing control mechanism helps select the best path for efficient data transmission. The routing control mechanism can calculate the performance and efficiency of all ISPs and select only those that perform best in the applicable area. The routing control mechanism can be configured according to defined parameters related to cost, performance, and bandwidth.
[0037] One well-known algorithm for determining the best path for data transmission is called the Border Gateway Protocol (BGP). BGP is a path vector protocol that provides routing information to autonomous systems on the internet. When BGP is incorrectly configured, it can cause serious availability and security issues. Furthermore, modified BGP routing information could allow an attacker to redirect large blocks of traffic, causing it to pass through certain routers before reaching its intended destination. The BGP best path algorithm can be implemented to determine the best path to install in the Internet Protocol (IP) routing table for traffic forwarding. BGP routers can be configured to accept multiple paths to the same destination.
[0038] The BGP Best Path algorithm designates the first valid path as the current best path. The BGP Best Path algorithm compares this best path with the next path in the list until BGP reaches the end of the valid path list. This list provides the rules for determining the best path. For example, the list may include indications such as: the path with the highest weight is preferred; paths with no local preference are preferred; paths initiated locally through the network or aggregated BGP are preferred; the shortest path is preferred; the path with the lowest multi-exit discriminator is preferred; and so on. The BGP Best Path selection process can be customized.
[0039] In the context of BGP routing, each routing domain is called an autonomous system (AS). BGP helps select a path connecting two routing domains through the internet. BGP typically selects the route that traverses the fewest autonomous systems, known as the shortest AS path. In an embodiment, once BGP is enabled, a router pulls a list of internet routes from a BGP neighbor, which may be an ISP. BGP then goes through this list to find the route with the shortest AS path. These routes can be entered into the router's routing table. Typically, a router selects the shortest path to an AS. BGP uses path attributes to determine how to route traffic to a specific network.
[0040] Equal-cost multipath (ECMP) routing is a routing strategy in which packets are forwarded to a single destination via multiple "best paths" to the next hop. Based on a routing metric, these multiple best paths are considered equivalent. Because routing is a hop-by-hop decision and is localized to a single router, multipath routing can be used in conjunction with many routing protocols. Multipath routing can significantly increase bandwidth by balancing traffic loads across multiple paths. However, in practical applications, ECMP routing has several known issues. This document discloses systems, methods, and apparatus for improved ECMP routing.
[0041] Clos networks can be deployed in the telecommunications sector. A Clos network is a multi-stage circuit-switched network that represents an idealization of a multi-stage switching system. A Clos network consists of three stages: an ingress stage, an intermediate stage, and an egress stage. Each stage consists of a number of crossbar switches. Each cell enters an ingress crossbar switch, which can be routed to the associated egress crossbar switch via any available intermediate stage crossbar switch. If both the link connecting the ingress switch to the intermediate stage switch and the link connecting the intermediate stage switch to the egress switch are idle, the intermediate stage crossbar switch is available for a particular new call.
[0042] A leaf-spine network topology can be deployed to connect nodes in a computer network. A leaf-spine topology has two tiers: the leaf tier and the spine tier. The leaf tier consists of access switches connected to devices such as servers, firewalls, load balancers, and edge routers. The spine tier is composed of switches that perform routing and form the backbone of the network, where every leaf switch is interconnected with every spine switch. In a leaf-spine topology, all devices are separated by the same number of links, and information transmission experiences a predictable and consistent amount of latency.
[0043] A virtual local area network (VLAN) is a broadcast domain that is divided and isolated at the data link layer in a computer network. VLANs apply tags to network frames and process these tags within the networking system to create the appearance and functionality of network traffic that physically resides on a single network but behaves as if it were segmented across different networks. VLANs keep network applications separate despite being connected to the same physical network and eliminate the need to deploy multiple sets of cables and network equipment.
[0044] A Switched Virtual Interface (SVI) is a virtual interface and port that transports untagged VLAN packets for managed switches. Traditionally, switches only route traffic to hosts within the same broadcast domain (a single VLAN), while routers handle traffic between different broadcast domains (different VLANs). In this implementation, network devices in different broadcast domains cannot communicate without a router. When SVIs are implemented, switches can use virtual Layer 3 interfaces to route traffic to other Layer 3 interfaces, eliminating the need for physical routers. VLANs reduce network load by dividing a LAN into smaller segments and keeping local traffic within the VLAN. However, because each VLAN has its own domain, a mechanism is needed to allow VLANs to transfer data to other VLANs without routing data through a router. SVIs provide such a mechanism. SVIs are typically found on switches (e.g., Layer 3 and Layer 2 switches). When SVIs are implemented, switches can identify packets destined for a VLAN and can switch packets destined for different VLANs. In some embodiments, there is a one-to-one mapping between VLANs and SVIs. In such embodiments, only a single SVI can be mapped to a VLAN.
[0045] To facilitate an understanding of the principles of the present disclosure, reference will now be made to the embodiments illustrated in the accompanying drawings, and specific language will be used to describe these embodiments. However, it should be understood that this is not intended to limit the scope of the present disclosure. Any changes and further modifications to the inventive features shown herein that would normally occur to a person skilled in the art and possessing the present disclosure, as well as any additional applications of the principles of the present disclosure shown herein, are considered to be within the scope of the present disclosure as claimed.
[0046] Before disclosing and describing structures, systems, and methods for tracking the lifecycle of objects in a network computing environment, it should be understood that the present disclosure is not limited to the specific structures, configurations, process steps, and materials disclosed herein, as such structures, configurations, process steps, and materials may vary. It should also be understood that the terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting, as the scope of the present disclosure will be limited only by the appended claims and their equivalents.
[0047] In describing and claiming the subject matter of the present disclosure, the following terminology will be used in accordance with the definitions set forth below.
[0048] It must be noted that, as used in this specification and the appended claims, the singular forms "a," "an," and "the" include plural referents unless the context clearly dictates otherwise.
[0049] As used herein, the terms "comprising," "including," "containing," "characterized by," and grammatical equivalents thereof are inclusive or open-ended terms that do not exclude additional, unrecited elements or method steps.
[0050] As used herein, the phrase "consisting of and its grammatical equivalents exclude any elements or steps not specified in a claim.
[0051] As used herein, the phrase "consisting essentially of and its grammatical equivalents limit the scope of a claim to the specified materials or steps and those that do not materially affect the basic and novel characteristic or characteristics of the claimed disclosure.
[0052] Referring now to the accompanying drawings, Figure 1 A schematic diagram of a system 100 for connecting a device to the Internet is shown. The system 100 includes multiple local area networks 160 connected by a switch 106. Each of the multiple local area networks 160 can be connected to each other via a router 162 through the public Internet. Figure 1 In the exemplary system 100 shown, there are two local area networks 160. However, it should be noted that there may be many local area networks 160 connected to each other via the public Internet. Each local area network 160 includes multiple computing devices 108 connected to each other via a switch 106. The multiple computing devices 108 may include, for example, desktop computers, laptop computers, printers, servers, etc. The local area network 160 can communicate with other networks via the public Internet via a router 162. The router 162 connects the multiple networks to each other. The router 162 is connected to the Internet service provider 102. The Internet service provider 102 is connected to one or more network service providers 104. Figure 1 As shown, the network service provider 104 is in communication with other local network service providers 104 .
[0053] Switch 106 connects devices in LAN 160 by using packet switching to receive data, process the data, and forward the data to the destination device. For example, switch 106 can be configured to receive data from a computer destined for a printer. Switch 106 can receive the data, process the data, and send the data to the printer. Switch 106 can be a Layer 1 switch, a Layer 2 switch, a Layer 3 switch, a Layer 4 switch, a Layer 7 switch, and so on. Layer 1 network devices transmit data but do not manage any traffic passing through them. An example of a Layer 1 network device is an Ethernet hub. Layer 2 network devices are multi-port devices that process and forward data at the data link layer (Layer 2) using hardware addresses. Layer 3 switches can perform some or all of the functions typically performed by routers. However, some network switches are limited to supporting only a single type of physical network, typically Ethernet, while routers can support various types of physical networks on different ports.
[0054] Router 162 is a networking device that forwards data packets between computer networks. Figure 1 In the exemplary system 100 shown, the router 162 forwards data packets between the local area networks 160. However, the router 162 is not necessarily used to forward data packets between the local area networks 160, but can be used to forward data packets between wide area networks, etc. The router 162 performs traffic steering functions on the Internet. The router 162 can have interfaces for different types of physical layer connections such as copper cables, optical fibers, or wireless transmission. The router 162 can support different network layer transmission standards. Each network interface is used to implement forwarding of data packets from one transmission system to another transmission system. The router 162 can also be used to connect two or more logical groups of computer devices called subnets, each logical group having a different network prefix. Figure 1 As shown, router 162 can provide connections within an enterprise, between an enterprise and the Internet, or between the networks of Internet service providers. Some routers 162 are configured to interconnect various Internet service providers or can be used in large enterprise networks. Smaller routers 162 typically provide connections to the Internet for home and office networks. Figure 1 The illustrated router 162 may represent any suitable router for network transport, such as an edge router, a customer edge router, an inter-provider border router, a core router, an Internet backbone, a port forwarding router, a voice / data / fax / video processing router, etc.
[0055] An Internet service provider (ISP) 102 is an organization that provides services for accessing, using, or participating in the Internet. ISPs 102 can be organized in various forms, such as commercial, community-owned, non-profit, or private. Internet services typically provided by ISPs 102 include Internet access, Internet transit, domain name registration, website hosting, newsgroup services, and co-location. Figure 1 The illustrated ISP 102 may represent any suitable ISP, such as a hosted ISP, a transit ISP, a virtual ISP, a free ISP, a wireless ISP, or the like.
[0056] Network service providers (NSPs) 104 are organizations that provide bandwidth or network access by offering direct access to the internet backbone to internet service providers. They can also provide access to network access points (NAPs). Network service providers 104 are sometimes referred to as backbone providers or internet providers. Network service providers 104 can include telecommunications companies that offer high-speed internet access, data carriers, wireless providers, internet service providers, and cable operators. Network service providers 104 can also include information technology companies.
[0057] It should be noted that Figure 1 The system 100 shown is merely exemplary, and many different configurations and systems can be created for transferring data between networks and computing devices. Because there is considerable customizability in network configuration, it is desirable to create even greater customizability in determining the optimal path for transferring data between computers or networks. In view of the foregoing, disclosed herein are systems, methods, and devices for offloading the optimal path calculation to an external device, thereby enabling greater customizability in determining the optimal path algorithm best suited for a particular group of computers or an enterprise.
[0058] Figure 2 is a schematic diagram of a topology 200 for implementing the prefix tracker application described herein. The prefix tracker application can be specifically implemented to track events within a network implementing Border Gateway Protocol (BGP).
[0059] Topology 200 includes multiple input subject flows 202. Input subject flows 202 include, for example, configuration flow 204, device flow 206, peer flow 208, and routing flow 210. Peer flow 208 may specifically receive data related to BGP peers. Routing flow 210 may specifically receive data related to BGP routes. It should be noted that input subject flows 202 may include other data flows as needed. Input subject flows 202 are managed by and fed into independent processing resources. For example, configuration flow 204 feeds configuration processor 205. Similarly, device flow 206 feeds device processor 207, and peer flow 208 feeds peer processor 209. Routing flow 210 may directly feed routing processor 220.
[0060] In an embodiment, input topic stream 202 is an input topic stream within a real-time streaming framework such as Kafka®. Real-time streaming frameworks are client libraries for building applications and microservices where input and output data is stored in a cluster. Kafka Streams combines the simplicity of writing and deploying standard Java and Scala applications on the client with the advantages of server-side clustering technology. Real-time streaming frameworks are implemented for stateful processing capabilities, fault tolerance, and processing guarantees built on the capabilities provided by the storage and messaging layers.
[0061] Topology 200 includes multiple independent state memories, including, for example, configuration memory 212, device memory 214, peer memory 216, route memory 218, and prefix tracker memory 220. State memories 212-220 can be implemented as persistent hash maps present in streams within a real-time streaming framework. Topology 200 includes different state memories 212-220 for different information. State memories 212-220 are implemented with fault tolerance and automatic recovery.
[0062] Data received via configuration flow 204 is processed by configuration processor 205 and then stored in configuration memory 212. Similarly, data received via device flow 206 is processed by device processor 207 and then stored in device memory 214, and data received via peer flow 208 is processed by peer processor 209 and then stored in peer memory 216. Data received via routing flow 210 is processed by routing processor 222 and then stored in routing memory 218. Routing processor 222 communicates with each of configuration memory 212, device memory 214, peer memory 216, and routing memory 218. Routing processor 222 further communicates with prefix tracker memory 220, where data for the prefix tracker application is stored. Routing processor 222 communicates with alert sink 224, which serves as a notification queue for storing alert messages. Events detected by the prefix tracker are sent to the alert receiver 224 where the detected events are stored until consumed by a northbound application to be sent as notifications or for further data processing.
[0063] The prefix tracker application runs multiple different tasks. Each of these tasks may be referred to herein as a "flow task". Each flow task is associated with one or more flow memories 212-220. Each prefix and / or device in the network topology can be assigned to a specific set of flow tasks, which may include one of each type of flow memory mentioned in 212-220. Telemetry data for network resources such as devices, routes, peers, configurations, etc. can be divided into these multiple flow tasks of each type mentioned in 212-220 based on the device or another partitioning scheme. As the network topology grows, the prefix tracker can be modified to add additional flow tasks for new routes, devices, or other network resources.
[0064] Device memories 212-220 are implemented as hash maps. Configuration memory 212 stores configuration information about different prefix attributes, which the prefix tracker uses to match prefixes to those attributes and then track the prefix. If a path matches any attribute entry in the configuration memory, the path is of interest to the prefix tracker. Device memory 214 stores a list of devices in the network, including devices that send their prefixes to the prefix tracker. Peer memory 216 tracks peer data between BGP speakers within the network. The data in peer memory 216 is used to determine which peer is sending a route. This data can be particularly important when determining which devices are affected when a prefix is added, updated, or withdrawn in the network topology. Route memory 218 stores all routes in the network topology, including routes that are not currently tracked but may be tracked in the future. Prefix tracker memory 220 tracks routes of interest (i.e., routes currently being tracked by the prefix tracker application).
[0065] Processors 205, 207, 209, and 220 are responsible for retrieving data from the corresponding input topic stream 202, converting the data into the correct format, and then storing the data in the correct state store 212-218. When a state store 212-220 is updated, routing processor 222 updates the data in each state store 212-220 and updates alert receiver 224. When the network topology is updated or modified, state stores 212-220 are automatically updated using telemetry data received from network devices. Routing processor 222 processes telemetry routing and prefix updates received from network devices. The routing processor uses information from other state stores and updates the prefix tracker store and alert receiver.
[0066] The prefix tracker application can be configured to track different route attributes. Specifically, the prefix tracker can be implemented to track community attributes, extended community attributes, large community attributes, prefix attributes, neighbor address attributes, etc. The prefix tracker can be configured to track different events, including route-specific events and network events. Route-specific events include, for example, an indication that one or more routes within the network topology have been added, an indication that one or more routes within the network topology have been updated, or an indication that one or more routes within the network topology have been withdrawn or deleted.
[0067] Network events can include monitoring prefix network reachability, monitoring route stability by tracking best path changes and route flapping, monitoring for route deprioritization or hijacking, and monitoring next-hop tracking. When the best path for a route changes, the best path marker will now identify the new path. This information can be tracked after receiving new route updates via telemetry. When tracking changes in the best path for a route, other network-wide events can also be tracked, such as the stability of the route, whether the route has been deprioritized or hijacked, and the next hop for the route.
[0068] The system can track route stability by counting the number of times a route's best path changes over a period of time. If the number of route changes exceeds a threshold number within a given time period, the route stability for that period is considered low. The prefix tracker can track the number of flaps or best path changes as a function of time to determine whether a route is stable. If the prefix tracker determines that a route is unstable, it can trigger an alert notification indicating route instability. This information can be tracked within the network to indicate areas of route instability and provide information about unstable reachability.
[0069] The prefix tracker can track route deprioritization or hijacking. A route's best path may change because a new path takes precedence over an old one. This can happen when attributes of the current best path are updated to lower preference or priority values, or when attributes of the new best path have higher preference or priority values. The prefix tracker detects and records which route attributes have changed and provides the reason for the route's deprioritization. The prefix tracker also determines if a route has been maliciously deprioritized through hijacking.
[0070] The prefix tracker performs next-hop tracking, which provides information about the next-hop IP address that will be used to forward traffic to a certain destination. The next hop provides information about the link that the router needs to forward the traffic. Sometimes, it is better to use a lower-cost next-hop link. In some cases, certain next-hop IP addresses may be blacklisted via configuration, and the prefix tracker may trigger an alert if a route uses that next hop. Similarly, the prefix tracker can track the local preference and / or IGP metric of the next hop to investigate why a route was deprioritized.
[0071] The prefix tracker application can receive configuration instructions via the configuration stream 204. These configuration settings can then be stored in the configuration memory 212 and processed using the configuration processor 205. The configuration memory 212 can store the configuration settings in a key-value format. In this embodiment, the key is a tuple of attribute types and the value is the attribute value, allowing for easy lookup when processing routes. The route processor 222 uses the configuration memory 212 to check whether a prefix needs to be tracked. The prefix tracker can be configured and reconfigured at any time after initialization. These configuration settings can also contain multiple attribute-value pairs to filter and track prefixes, which will translate into multiple key-value pairs in the configuration memory.
[0072] The routing processor 222 receives routes from a telemetry data feed. This feed is continuously updated with data whenever the network path is updated. The routing processor 222 identifies path changes. A path change includes one or more of a newly added path, an updated path, or a withdrawn path. The routing processor 222 is able to identify path changes because all prefixes of the network topology are stored in the routing memory 218. The routing processor 222 determines whether the path change is of interest to the prefix tracker based on whether the path includes any attributes that match data in the configuration memory 212. If the path change is of interest to the prefix tracker, the modified prefix associated with the path change is stored in the prefix tracker memory 220. If the path change triggers an event, the prefix tracker generates an alert for the event.
[0073] The prefix tracker application processes telemetry updates online. In some implementations, routes are not post-processed after configuration. Instead, any route updates are processed online, and the context / state is stored as they arrive. Post-processing creates a window in which data may become out of sync with the real-time system. This step reduces the complexity of data synchronization and tracking prefixes that may already exist within any BGP speaker. This ensures that the prefix tracker can function as a full-fledged real-time application.
[0074] The processor topology 200 of the prefix tracker can be scaled by splitting the processor topology into multiple stream tasks. The input data stream can be split into separate partitions based on attributes such as device identifiers, and a fixed number of stream tasks are created based on the input stream partitions. Each of these stream tasks is assigned a list of partitions from the input stream. The partition assignments to these tasks do not change, making the stream tasks fixed parallel units of the prefix tracker. These tasks instantiate their own processor topology for the assigned partitions and process data independently and in parallel.
[0075] Figure 3AFIG3 is a diagram of a process flow 300 of a prefix tracker application as described herein. The process flow 300 is implemented at least when a route and an action are received at 302. The prefix tracker application is configured to identify a route state at 304, identify a path state at 306, track a path at 308, and synchronize at 310.
[0076] Figure 3B Includes a key that identifies routing key information applicable to process flow 300. As described herein, the route storage (RS) stores all received routes for lookup. The configuration storage (CS) stores all path configuration keys (PCK) configured by the customer for lookup. The path configuration key (PCK) formats the device identifier, BGP path attribute type, and BGP path attribute value. The PCK can be configured by the customer to specify the BGP prefix to be tracked. The routing key (r) includes (device, prefix, vrf, af). As described herein, RS (routing key (r)) is equal to r'. The r' described herein includes the old route (Old-Route), which is a route that already exists in the route storage. The r described herein includes the new route (New-Route), which is a new route that is received.
[0077] At 304, the prefix tracker application identifies the routing state. Figure 3B The additional routing key information table included in Figure 4 This process is further illustrated in The identification process includes determining whether an old route (existing route) exists and whether the old route corresponds to the new route received at 302 .
[0078] If the action indicates that a route should be added (ADDED), the prefix tracker determines whether the new route exists in route memory 218. If the new route exists in route memory (r in RS = TRUE), the route state is updated (UPDATED). Route memory 218 is updated to reflect the new route (r) and the old route (r'). If the new route does not exist in route memory (r in RS = FALSE), the new route is added (ADDED).
[0079] If the action indicates that the route should be deleted (DELETED), the prefix tracker determines whether the new route exists in route memory 218. If the new route exists in route memory (r in RS = TRUE), the route state is deleted (DELETED). After the route is processed by the prefix tracker, route memory 218 is updated to reflect the new route as NULL. If the new route does not exist in route memory (r in RS = FALSE), route memory 218 is not updated.
[0080] At 306, the prefix tracker application identifies the path status. Figure 5 This process is further illustrated in . The prefix tracker determines which paths are added, which paths are withdrawn, and which paths are updated.
[0081] The prefix tracker compares the old path with the new path. Figure 5 In the example shown, the prefix tracker compares the new path p1 with the old path p1'. If the new path p1 is modified from the old path p1', the prefix tracker determines that the path is updated (UPDATED). If the old path p1' is the same as the new path p1, the prefix tracker determines that the path is unchanged (UNCHANGED). For another example, if the prefix tracker does not find any equivalent old path for the new path p2, the prefix tracker determines that the new path p2 is added (ADDED). For another example, if the prefix tracker does not find any equivalent new path for the old path p3', the prefix tracker determines that the old path p3' is deleted (DELETED).
[0082] At 308, the prefix tracker application tracks the path. Figure 6 This process is further illustrated in . The prefix tracker matches each path with its associated attributes stored in the configuration memory 212. The configuration can be received directly from a client seeking to manage the network topology. The prefix tracker generates a list of path configuration keys (PCKs) based on the new path and the corresponding old path (if any), or any other old paths that do not have a corresponding new path. The PCKs are reconciled with the configuration memory 212 to determine if there are any matches. If the prefix tracker identifies a match, the prefix tracker will indicate that the path needs to be tracked. The PCK is a tuple with the format Device ID, BGP Path Attribute Type, and BGP Path Attribute Value.
[0083] exist Figure 6 The example shown shows a list of entries configured in the configuration store (Config-Store). Each entry indicates the provider and the BGP path attribute type and value. Any path that matches this is a path of interest to the customer and will be tracked by the prefix tracker. For example, the first entry in the CS indicates that all paths with the extended community value "route-target: 1:1" in device d1 must be tracked. As explained in 0081, the list of configured PCKs overlaps with the PCK lists generated from the old and new paths. If any matching entries exist, the prefix tracker tracks that path. The second entry indicates that all paths with the 100:1 community attribute in device d1 must be tracked. The third entry indicates that all prefixes with the prefix 100.1.1.0 / 24 in device d2 must be tracked.
[0084] The prefix tracker application is synchronized at 310. Figure 7 This process is further illustrated in . If the prefix tracker application identifies a path of interest while tracking the path at 308, the prefix tracker application synchronizes at 310. If multiple attribute value pairs are configured to track prefixes, the prefix tracker ensures that all attributes in the configuration match while identifying whether the path is of interest in this step.
[0085] The synchronization 310 process includes updating the prefix tracker memory 220 with the existing route data of interest from the routing memory 218 if no entry exists within the prefix tracker memory 220. The synchronization 310 process includes processing the matched path by processing the tracked paths stored within the prefix tracker memory 220, processing the matching path configuration key, and updating the prefix tracker memory 220 accordingly. (First, as part of the prefix tracker synchronization process 310, if the route data of interest from the routing memory does not already exist within the prefix tracker memory, the prefix tracker memory is synchronized with the data. This operation is performed to maintain / synchronize the routing context even if the prefix was not previously tracked or the configuration to track the prefix was recently added. This allows updates to be processed online. The tracked path and matching PCK from the previous step are then used along with the data in the prefix tracker memory to detect events.)
[0086] The configuration store also indicates the subscription events of the configured PCK entries, which can include routing events or network events as described below. If the matching PCK in the configuration store has subscribed to any routing events, notifications of the tracked path will be sent to the alert receiver for notification or further processing.
[0087] If the matching PCK in the Config Store has subscribed to any network events, such as route purges, further processing is performed based on the network event to detect whether such an event has occurred. For example, in a network-wide event like a route purge, if a path is withdrawn, the total number of paths in the prefix tracker's memory is checked for that route and PCK. If this number reaches 0 at the time of the last path withdrawal, this indicates that the prefix is no longer reachable through the network, and a route purge notification is sent to the alert receiver. If the number is not 0 at the time of the last path withdrawal, no notification is generated.
[0088] Figure 8800 is a schematic flow chart of a method 800 for tracking prefixes within a network topology based on telemetry data. The method 800 includes, at 802, receiving a new route for the network topology. The method 800 includes, at 804, determining whether the new route corresponds to an existing route stored in a route memory. The method 800 includes, in response to determining that the new route corresponds to an existing route, determining, at 806, whether any network routing paths between the existing route and the new route have been modified. The method 800 includes, in response to determining that at least one network routing path between the existing route and the new route has been modified, at 808, generating a path configuration key for each of the at least one network routing path.
[0089] Now refer to Figure 9 , a block diagram of an exemplary computing device 900 is shown. Computing device 900 can be used to perform various processes, such as those discussed herein. In one embodiment, computing device 900 can be used to perform the functions of an asynchronous object manager and can run one or more applications. Computing device 900 can be any of a variety of computing devices, such as a desktop computer, a dashboard computer, a vehicle control system, a laptop computer, a server computer, a handheld computer, a tablet computer, and the like.
[0090] The computing device 900 includes one or more processors 902, one or more memory devices 904, one or more interfaces 906, one or more mass storage devices 908, one or more input / output (I / O) devices 902, and a display device 930, all coupled to a bus 912. The processor 902 includes one or more processors or controllers that execute instructions stored in the memory device 904 and / or the mass storage device 908. The processor 902 may also include several types of computer-readable media, such as cache memory.
[0091] Memory device 904 includes various computer-readable media such as volatile memory (e.g., random access memory (RAM) 914) and / or nonvolatile memory (e.g., read-only memory (ROM) 916). Memory device 904 may also include rewritable ROM such as flash memory.
[0092] The mass storage device 908 includes various computer-readable media, such as magnetic tapes, magnetic disks, optical disks, solid-state memories (eg, flash memories), and the like. Figure 9 As shown, the specific mass storage device is a hard drive 924. Various drives may also be included in the mass storage device 908 to enable reading from and / or writing to various computer-readable media. The mass storage device 908 includes removable media 926 and / or non-removable media.
[0093] Input / output (I / O) devices 902 include various devices that allow data and / or other information to be input into or retrieved from computing device 900. Exemplary I / O devices 902 include a cursor control device, a keyboard, a keypad, a microphone, a monitor or other display device, speakers, a printer, a network interface card, a modem, and the like.
[0094] Display device 930 includes any type of device capable of displaying information to one or more users of computing device 900. Examples of display device 930 include a monitor, a display terminal, a video projection device, and the like.
[0095] Interfaces 906 include various interfaces that allow computing device 900 to interact with other systems, devices, or computing environments. Exemplary interfaces 906 may include any number of different network interfaces 920, such as interfaces to a local area network (LAN), a wide area network (WAN), a wireless network, and the Internet. Other interfaces include a user interface 918 and a peripheral device interface 922. Interfaces 906 may also include one or more user interface elements 918. Interfaces 906 may also include one or more peripheral interfaces, such as interfaces for a printer, a pointing device (a mouse, a trackpad, or any suitable user interface now known or later discovered by one of ordinary skill in the art), a keyboard, and the like.
[0096] The bus 912 allows the processor 902, memory device 904, interface 906, mass storage device 908, and I / O device 902 to communicate with each other and with other devices or components coupled to the bus 912. The bus 912 represents one or more of several types of bus structures, such as a system bus, a PCI bus, an IEEE bus, a USB bus, and the like.
[0097] For illustrative purposes, programs and other executable program components are shown herein as separate blocks, although it is understood that these programs and components may reside in different storage components of the computing device 900 at different times and be executed by the processor 902. Alternatively, the systems and processes described herein can be implemented in hardware, or in a combination of hardware, software, and / or firmware. For example, one or more application-specific integrated circuits (ASICs) may be programmed to implement one or more of the systems and processes described herein.
[0098] Example
[0099] The following examples relate to further embodiments.
[0100] Example 1 is a method. The method includes receiving a route of a network topology and determining whether the route corresponds to an existing route stored in a route memory. The method includes, in response to determining that the route corresponds to the existing route, determining whether any network routing paths between the existing route and the route have been modified. The method includes, in response to determining that at least one network routing path between the existing route and the route has been modified, generating a path configuration key for each of the at least one network routing paths.
[0101] Example 2 is the method of Example 1, wherein receiving the route of the network topology comprises receiving updates directly from an input topic stream dedicated to receiving updated routing information of the network topology.
[0102] Example 3 is the method of any of Examples 1 to 2, wherein determining whether the route corresponds to an existing route stored on the route memory comprises determining based on data associated with the route, and wherein the data comprises one or more of a prefix, a virtual routing and forwarding (VRF) address, or a device.
[0103] Example 4 is the method of any of Examples 1 to 3, further comprising receiving an add (ADD) or delete (DELETE) operation associated with the route, and wherein the method further comprises updating the route memory according to the add or delete operation.
[0104] Example 5 is the method of any one of Examples 1 to 4, further comprising, in response to the route being associated with an add (ADD) operation; and further in response to identifying an existing route on the route memory, updating the route memory to update (UPDATE) the existing route to reflect the route; or further in response to determining that there is no existing route corresponding to the route stored on the route memory, updating the route memory to add (ADD) the route.
[0105] Example 6 is the method of any one of Examples 1 to 5, further comprising, in response to the route being associated with a DELETE operation; and further in response to identifying an existing route on the route memory, updating the route to delete the existing route; or further in response to determining that no existing route corresponding to the route is stored on the route memory, ending the processing operation associated with the route.
[0106] Example 7 is a method as described in any one of Examples 1 to 6, wherein determining whether any network routing path between an existing route and a route has been modified includes: determining whether any routing path that does not exist in the existing route has been added to the route; determining whether any routing path that exists in the existing route has been modified within the route; and determining whether any routing path that exists in the existing route has been withdrawn from the route.
[0107] Example 8 is the method of any of Examples 1 to 7, wherein the path configuration key comprises one or more of a device identifier, a Border Gateway Protocol (BGP) path attribute type, or a BGP path attribute value.
[0108] Example 9 is the method of any of Examples 1 to 8, wherein the path configuration key includes an indication of one or more BGP prefixes to be tracked.
[0109] Example 10 is the method of any of Examples 1 to 9, wherein generating the path configuration key comprises generating a plurality of path configuration keys, and wherein each of the plurality of path configuration keys is associated with a network routing path between an existing route and a route that has been modified.
[0110] Example 11 is the method of any of Examples 1 to 10, further comprising identifying at least one path configuration key of the plurality of path configuration keys that matches configuration data of the new path, wherein the configuration data is stored in a configuration memory.
[0111] Example 12 is the method of any of Examples 1 to 11, wherein the configuration storage includes attributes associated with the new path, and wherein the attributes include one or more of an extended community attribute, a community attribute, or a prefix attribute.
[0112] Example 13 is the method of any of Examples 1 to 12, further comprising determining whether a route should be traced based on user input.
[0113] Example 14 is the method of any of Examples 1 to 13, further comprising: in response to determining that the route should be tracked, determining whether the route is already stored on the prefix tracker memory; and in response to determining that the route is not already stored on the prefix tracker memory, writing the prefix tracker memory to include the route.
[0114] Example 15 is the method of any of Examples 1 to 14, further comprising: processing a path configuration key for each of the at least one network routing path; and writing the prefix tracker memory to include the path configuration key for each of the at least one network routing path.
[0115] Example 16 is the method of any of Examples 1 to 15, further comprising detecting a route purge in response to determining that at least one element of the route has been deleted from the prefix tracker memory.
[0116] Example 17 is the method of any of Examples 1 to 16, wherein receiving the route of the network topology comprises receiving updates via a stream within a real-time streaming framework.
[0117] Example 18 is the method of any of Examples 1 to 17, wherein the routing memory is a stream memory in communication with a routing processor, and wherein the routing processor is in communication with a plurality of input topic streams that receive data in real time.
[0118] Example 19 is the method of any of Examples 1 to 18, wherein receiving a route of the network topology further comprises receiving an operation associated with the route, and wherein the operation comprises one of an add (ADD) or a delete (DELETE).
[0119] Example 20 is the method of any of Examples 1 to 19, wherein the method is performed by a prefix tracker application running on one or more servers associated with a network platform configured to manage a network topology.
[0120] Example 21 is a system. The system includes multiple input subject streams. The system includes multiple processors, wherein each of the multiple processors is dedicated to one of the multiple input subject streams. The system includes multiple flow memories for storing data, wherein each of the multiple flow memories is dedicated to one of the multiple input subject streams. The system includes a routing processor in communication with each of the multiple flow memories. The system causes the routing processor to determine whether a route of a network topology corresponds to an existing route stored in at least one of the multiple flow memories.
[0121] Example 22 is the system of Example 21, wherein the plurality of stream memories comprises a configuration memory, and wherein the configuration memory is processed by a dedicated configuration processor, and wherein the dedicated configuration processor communicates with the configuration streams of the plurality of input subject streams.
[0122] Example 23 is the system of any of Examples 21-22, wherein the configuration memory includes attribute information for a plurality of routes of the network topology, and wherein the attribute information includes one or more of a community attribute, an extended community attribute, or a large community attribute.
[0123] Example 24 is the system of any one of Examples 21 to 23, wherein the plurality of stream memories comprises a device memory, and wherein the device memory is processed by a dedicated device processor, and wherein the dedicated device processor is in communication with the device stream of the plurality of input subject streams.
[0124] Example 25 is the system of any of Examples 21 to 24, wherein the device memory includes an indication of which devices within the network topology are tracking a prefix of the network topology.
[0125] Example 26 is the system of any one of Examples 21 to 25, wherein the plurality of flow memories comprises a route memory, and wherein the route memory is processed by a route processor, and wherein the route memory comprises information of a plurality of routes of the network topology.
[0126] Example 27 is the system of any one of Examples 21 to 26, wherein one or more of the plurality of input subject streams is a stream having a real-time streaming framework.
[0127] Example 28 is the system of any one of Examples 21 to 27, wherein one or more of the plurality of input subject streams is a stream within a real-time streaming framework.
[0128] Example 29 is the system of any one of Examples 21 to 28, wherein each of the plurality of input subject streams receives data about the network topology in real time.
[0129] Example 30 is the system of any of Examples 21 to 29, wherein the routing processor is configured to execute instructions for tracking prefixes within the network topology based on the telemetry data.
[0130] Example 31 is the system of any of Examples 21 to 30, wherein the instructions include: receiving a route of the network topology via a routing stream of a plurality of input subject streams; and determining whether the route corresponds to an existing route stored on a routing store of the plurality of stream stores.
[0131] Example 32 is the system of any of Examples 21 to 31, wherein the instructions further comprise: in response to determining that the route corresponds to an existing route, determining whether any network routing paths between the existing route and the route have been modified; and in response to determining that at least one network routing path between the existing route and the route has been modified, generating a path configuration key for each of the at least one network routing path.
[0132] Example 33 is the system of any of Examples 21 to 32, further comprising storing a path configuration key for each of the at least one network routing path on a prefix tracker memory, wherein the prefix tracker memory is not dedicated to the input subject flow and is independent of the plurality of input subject flows.
[0133] Example 34 is the system of any of Examples 21 to 33, wherein the instructions cause determining whether the route corresponds to an existing route stored on the route memory to comprise determining based on data associated with the route, and wherein the data comprises one or more of a prefix, a virtual routing and forwarding (VRF) address, or a device.
[0134] Example 35 is the system of any of Examples 21 to 34, wherein the instructions further comprise receiving an add (ADD) or delete (DELETE) operation associated with the route, and wherein the method further comprises updating the route memory according to the add or delete operation.
[0135] Example 36 is a system as in any of Examples 21 to 35, wherein the instructions cause determining whether any network routing paths between an existing route and a route have been modified to include: determining whether any routing paths not present in the existing route have been added to the route; determining whether any routing paths present in the existing route have been modified within the route; and determining whether any routing paths present in the existing route have been withdrawn from the route.
[0136] Example 37 is the system of any of Examples 21 to 36, wherein the path configuration key comprises one or more of a device identifier, a Border Gateway Protocol (BGP) path attribute type, or a BGP path attribute value.
[0137] Example 38 is the system of any of Examples 21 to 37, wherein the path configuration key comprises an indication of one or more BGP prefixes to be tracked.
[0138] Example 39 is the system of any of Examples 21 to 38, wherein the instructions cause generating the path configuration key to include generating a plurality of path configuration keys, and wherein each of the plurality of path configuration keys is associated with a network routing path between an existing route and a route that has been modified.
[0139] Example 40 is the system of any of Examples 21 to 39, wherein the instructions further comprise identifying at least one path configuration key of the plurality of path configuration keys that matches configuration data for the new path, wherein the configuration data is stored in a configuration memory.
[0140] Example 41 is a system as in any of Examples 21 to 40, wherein the instructions further include: determining whether a route should be traced based on user input; in response to determining that the route should be traced, determining whether the route is already stored on the prefix tracker memory; in response to determining that the route is not already stored on the prefix tracker memory, writing the prefix tracker memory to include the route; processing a path configuration key for each of at least one network routing path; and writing the prefix tracker memory to include a path configuration key for each of the at least one network routing path.
[0141] The foregoing description has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the present disclosure to the precise forms disclosed. In light of the above teachings, many modifications and variations are possible. Furthermore, it should be noted that any or all of the alternative embodiments may be used in any desired combination to form additional hybrid embodiments of the present disclosure.
[0142] Furthermore, although specific embodiments of the present disclosure have been described and shown, the present disclosure is not limited to the specific forms or arrangements of parts described and shown. The scope of the present disclosure will be defined by the appended claims (if any), any future claims filed here and in different applications, and their equivalents.
[0143] It will be appreciated that any features of the above-described arrangements, examples, and embodiments may be combined in a single embodiment, with a single embodiment comprising a combination of features taken from any disclosed arrangements, examples, and embodiments.
[0144] It will be appreciated that the various features disclosed herein provide significant advantages and advances in the art. The following claims are examples of some of these features.
[0145] In the foregoing detailed description of the present disclosure, various features of the present disclosure are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure should not be interpreted as reflecting an intention that the claimed disclosure requires more features than expressly recited in each claim. Rather, inventive aspects may lie in fewer than all features of a single foregoing disclosed embodiment.
[0146] It should be understood that the above arrangement is only illustrative of the application of the principles of the present disclosure. Without departing from the spirit and scope of the present disclosure, those skilled in the art can design many modifications and alternative arrangements, and the appended claims are intended to cover these modifications and arrangements.
[0147] Therefore, although the present disclosure has been shown in the drawings and described above with particularity and detail, it is obvious to those skilled in the art that various modifications may be made without departing from the principles and concepts set forth herein, including but not limited to changes in size, materials, shapes, forms, functions and modes of operation, assembly and use.
[0148] Furthermore, where appropriate, the functions described herein may be implemented in one or more of the following: hardware, software, firmware, digital components, or analog components. For example, one or more application-specific integrated circuits (ASICs) or field-programmable gate arrays (FPGAs) may be programmed to implement one or more of the systems and processes described herein. Certain terms are used in the following description and claims to refer to specific system components. As those skilled in the art will appreciate, components may be referred to by different names. This document does not intend to distinguish between components that differ in name but function.
[0149] The foregoing description has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the present disclosure to the precise forms disclosed. In light of the above teachings, many modifications and variations are possible. Furthermore, it should be noted that any or all of the alternative embodiments may be used in any desired combination to form additional hybrid embodiments of the present disclosure.
[0150] Furthermore, although specific embodiments of the present disclosure have been described and shown, the present disclosure is not limited to the specific forms or arrangements of parts described and shown. The scope of the present disclosure will be defined by the appended claims, any future claims filed here and in different applications, and their equivalents.
Claims
1. A method comprising: Receive routing of network topology; determining whether the route corresponds to an existing route stored on a route memory; responsive to determining that the route corresponds to the existing route, determining whether any network routing path between the existing route and the route has been modified; as well as In response to determining that at least one network routing path between the existing route and the route is modified, a path configuration key is generated for each of the at least one network routing path.
2. The method according to claim 1, wherein Receiving the routing of the network topology includes receiving updates directly from an input topic stream, the input topic stream being dedicated to receiving updated routing information for the network topology.
3. The method according to claim 1, wherein Determining whether the route corresponds to an existing route stored on the route memory includes determining based on data associated with the route, and wherein the data includes one or more of a prefix, a virtual routing and forwarding (VRF) address, or a device. 4 . The method of claim 1 , further comprising receiving an add operation or a delete operation associated with the route, and wherein the method further comprises updating the route memory according to the add operation or the delete operation.
5. The method of claim 4, further comprising, in response to the routing being associated with the add operation; as well as further responsive to identifying an existing route on the route memory, updating the route memory to update the existing route to reflect the route; or Further in response to determining that there is no existing route corresponding to the route stored on the route memory, the route memory is updated to add the route.
6. The method according to claim 4, further comprising: In response to the route being associated with the delete operation; as well as further responsive to identifying an existing route on the route memory, updating the route to delete the existing route; or Further in response to determining that no existing route corresponding to the route is stored on the route memory, processing operations associated with the route are terminated.
7. The method according to claim 1, wherein Determining whether any network routing path between the existing route and the route has been modified includes: determining whether any routing paths not present in the existing route have been added to the route; determining whether any routing paths existing in the existing route have been modified within the route; and A determination is made as to whether any routing paths present in the existing route have been withdrawn in the route.
8. The method according to claim 1, wherein The path configuration key includes one or more of a device identifier, a Border Gateway Protocol (BGP) path attribute type, or a BGP path attribute value.
9. The method according to claim 1, wherein The path configuration key includes an indication of one or more BGP prefixes to be tracked.
10. The method according to claim 1, wherein Generating the path configuration key includes generating a plurality of path configuration keys, and wherein each of the plurality of path configuration keys is associated with at least one network routing path that has been added, modified, or deleted between the existing route and the route.
11. The method of claim 10, further comprising identifying at least one path configuration key from the plurality of path configuration keys that matches configuration data of the new path, wherein The configuration data is stored in a configuration memory.
12. The method according to claim 11, wherein The configuration memory includes attributes associated with the new path, and wherein the attributes include one or more of an extended community attribute, a community attribute, or a prefix attribute.
13. The method of claim 1, further comprising determining whether the route should be traced based on user input.
14. The method according to claim 13, further comprising: In response to determining that the route should be tracked, determining whether the route is already stored on a prefix tracker memory; as well as In response to determining that the route is not already stored on the prefix tracker memory, the prefix tracker memory is written to include the route.
15. The method according to claim 14, further comprising: processing the path configuration key for each of the at least one network routing path; as well as The prefix tracker memory is written to include a path configuration key for each of the at least one network routing path.
16. The method of claim 15, further comprising detecting a route purge in response to determining that at least one element of the route has been deleted from the prefix tracker memory.
17. The method according to claim 1, wherein Receiving the route of the network topology includes receiving updates via a stream within a real-time streaming framework.
18. The method according to claim 1, wherein The routing memory is a stream memory in communication with a routing processor, and wherein the routing processor is in communication with a plurality of input topic streams that receive data in real time.
19. The method according to claim 1, wherein Receiving a route of the network topology further includes identifying an operation associated with the route, and wherein the operation includes one of adding, deleting, or updating.
20. The method according to claim 1, wherein The method is performed by a prefix tracker application running on one or more servers associated with a network platform configured to manage, analyze, and visualize network topology.