The present disclosure relates to ensuring efficient distribution of packets in a network.
Link state packets (LSPs) are generated by a network router or node and are distributed in a network to propagate link state information associated with the network router. These LSPs are distributed hop-by-hop within a network such that the LSPs are sent from a network node to every adjacent neighbor node in the network. The techniques for distributing the LSPs hop-by-hop have scalability limits, as the LSP message distribution techniques within the network are inefficient and redundant. For example, in meshed network topologies, redundant network flooding is commonplace, which reduces the scalability of those networks.
Techniques are provided for generating and updating flooding tree paths in a network. At a particular node device in a network, a first flooding tree is generated by performing a first shortest path first operation from a first selected node device in the network to a plurality of other node devices in the network. A second flooding tree is generated by performing a second shortest path first operation from a second selected node device in the network to the plurality of other node devices in the network. A network topology change event is detected in either the first flooding tree or the second flooding tree, and a packet sequence exchange is initiated between the particular node device and another node device in the network in response to the detected network topology change. The first flooding tree and the second flooding tree are then updated based on information obtained during the packet sequence exchange.
The techniques described herein relate to generating flooding tree communication paths within a network and updating the flooding tree communication paths in response to network disruption events. One or more network nodes within the network may perform these techniques. An example system/topology 100 is illustrated in
Packets may be sent along one or more of the network links to the nodes 102(1)-102(n). These packets may be link state packets (LSPs), broadcast packets, etc. Often, packets may be broadcast to all of the nodes 102(1)-102(n) in the network 100. For example, information pertaining to network updates, administration and topology/architecture, etc., may need to be distributed to all of the nodes 102(1)-102(n). According to the techniques presented herein, multiple flooding tree paths (“flooding trees”) in the network 100 may be generated by one or more of the nodes 102(1)-102(n) to ensure that packets with such information are able to reach all of the nodes in the network 100 efficiently. For example, as shown in
One or more of the nodes 102(1)-102(n) may be identified as root nodes for corresponding flooding trees in the network 100. Flooding tree A and flooding tree B in the network 100 allow for efficient routing of packets within the network 100. In other words, packets that are intended to be distributed to all nodes 102(1)-102(n) can traverse the network 100 along the generated flooding trees to ensure that each node receives the packet without traversing unnecessary or redundant network links. The presence of multiple flooding trees in the network 100 ensures that LSPs and/or broadcast packets will be distributed to every node in a network, even in the event of a failure or disruption in one of the flooding trees (e.g., a “network topology change event”). That is, if there is a failure or disruption event (e.g., a node removal or link failure) in flooding tree A, LSPs and broadcast packets can still be distributed to the nodes 102(1)-102(n) via flooding tree B. Likewise, if there is a failure or disruption event in flooding tree B, LSPs and broadcast packets can still be distributed to the nodes 102(1)-102(n) via flooding tree A.
The techniques herein describe generating and updating the multiple flooding trees to ensure this network redundancy for LSPs and broadcast packets. In particular, the multiple flooding trees are generated to ensure that the flooding trees minimize the number of common network links. Instead, flooding tree A and flooding tree B are generated by using the maximum disjoint set of network links. For example, the disjoint sets may be produced by ensuring that a parent link selection algorithm for flooding tree B is based on a lower extended circuit identifier (circuit ID) as opposed to the higher circuit ID for flooding tree A. Flooding tree A and flooding tree B may efficiently route packets to all nodes in the network. The flooding trees described herein may be shared trees that span all of the nodes in a network. In one example, the flooding trees are broadcast trees, for example, in accordance with Cisco Systems' FabricPath network topologies.
In order to select the flooding tree paths in the network 100, each of the nodes 102(1)-102(n) is configured to gather and access node connectivity information associated with every other node in the network 100 (e.g., from a node identifier database accessible by the nodes 102(1)-102(n)). Based on the node connectivity information, the nodes 102(1)-102(n) can determine which node to classify or select as a root node for the flooding trees. After determining the root node for the flooding trees, the nodes 102(1)-102(n) can determine the flooding tree paths by performing a shortest path first (SPF) operation from the root flooding tree node to the plurality of node devices in the network. In one example, the flooding trees can be generated using a Transport Interconnect with Lots of Links (TRILL) protocol such that relatively high priority network links are used for flooding tree A and relatively low priority links are used for flooding tree B, in order to further ensure a maximum number of disjoint links between flooding tree A and flooding tree B.
As stated above, flooding tree A and flooding tree B may be modified and updated in response to a network topology event. For example, in the event of a network node being removed from one or more of the flooding trees, LSPs and broadcast packets continue to be flooded on remaining portions of the flooding tree. For example, a root node may be removed due to a node reload/reboot or a link failure. This may result in local triggers on nodes that neighbor the root node, and as a result, the neighboring nodes will attempt to flood packets to a sub-network that does not traverse through the root node. Meanwhile, a new root node will be re-elected, and since the flooding tree for the new neighboring nodes of the new root node has changed, these neighboring nodes will send a complete sequence number protocol data unit (CSNP) on the new flood tree links. This will cause any disjointed sets for nodes to receive a new copy of the LSPs that it may have missed due to the removal of the original root node.
If the removed node rejoins its corresponding flooding tree, LSPs and broadcast packets are distributed from one or more other nodes in the flooding tree to the rejoined network node. In the event of network changes that are local to a network node (e.g., a root priority change, a change to a metric of a link, etc.) the LSPs may be flooded on the union of network links that comprise flooding tree A and flooding tree B.
In another example, in the event of a new node joining a network (that has a corresponding new network link to one or more of the nodes 102(1)-102(n)), a packet sequence exchange occurs between one of the node devices (a “particular node” or “existing node”) in flooding tree A and/or flooding tree B and the new node (also referred to as “another node”). For example, in
Reference is now made to
As shown in
Node 3-Node 4
Node 3-Node 6-Node 5
Node 3-Node 6-Node 1-Node 2
Thus, the flooding tree path for flooding tree A originates from node 3 and the path reaches each of the nodes in the network by following the SPF path described above. Likewise, in
Node 1-Node 2
Node 1-Node 4-Node 3
Node 1-Node 4-Node 5-Node 6
Thus, the flooding tree path for flooding tree A originates from node 1 and the path reaches each of the nodes in the network by following the SPF path described above.
If a packet is to be distributed to all nodes in the network (e.g., link state packets, broadcast packets, etc.), the packet can traverse the flooding trees described above to reach all of the nodes in the network 100 without any redundant packet distribution to network nodes. In other words, packets can be sent to all nodes in the network across the flooding tree paths using a number of network links in the network 100 less than that which would be used without the flooding tree.
In the event of one or more link failures or other network disruption events in the network 100, the flooding trees can be updated to enable network connections to node devices associated with the network disruption event. For example, if a non-flooding tree network link is removed from the network 100, the flooding tree paths may not be altered since packet flooding may still occur to network nodes over the flooding trees even with the removal of the non-flooding tree network link. If, however, a flooding tree network link is removed from the network 100, flooding packets may be distributed along the flooding tree path up until the removed network link. When a packet cannot further traverse the original flooding tree (due to the removed link), the last node to receive the packet will perform a new SPF operation to determine the SPF path to the remaining nodes in the network 100. Thus, in response to the removal of a flooding tree network link, each flooding tree will be divided into two (or more) flooding sub-trees in network 100: the first flooding sub-tree defined as the original flooding tree up until the removed link, and the second flooding sub-tree defined as the new SPF from the last node receiving the packet in the first flooding sub-tree to the remaining nodes in the network. In other words, the last node receiving the packet in the first flooding sub-tree will be classified as a new root node of the new flooding sub-tree and a new flooding sub-tree will be generated by performing a new SPF operation from this new root node.
In response to a network link addition (due to the addition of a new network node (e.g., node N) in the network), the flooding trees can be updated by using the CSNP/PSNP packet exchange between any node in the existing flooding trees and the new node. In one example, the CSNP/PSNP exchange to update flooding tree A occurs between node 3 and node N, and the CSNP/PSNP exchange to update flooding tree B occurs between node 1 and node N.
Reference is now made to
Reference is now made to
Reference is now made to
The switch unit 504 is coupled to the processor 506. The processor 506 is, for example, a microprocessor or microcontroller that is configured to execute program logic instructions (i.e., software) for carrying out various operations and tasks of the network node 102, as described herein. For example, the processor 506 is configured to execute flooding tree selection process logic 510 to generate and update flooding trees in the network 100. The functions of the processor 506 may be implemented by logic encoded in one or more tangible computer readable storage media or devices (e.g., storage devices compact discs, digital video discs, flash memory drives, etc. and embedded logic such as an application specific integrated circuit, digital signal processor instructions, software that is executed by a processor, etc.).
The memory 508 may comprise read only memory (ROM), random access memory (RAM), magnetic disk storage media devices, optical storage media devices, flash memory devices, electrical, optical, or other physical/tangible (non-transitory) memory storage devices. The memory 508 stores software instructions for the flooding tree selection process logic 510. The memory 508 may also host a node identifier database (“database”) 200 that stores, for example, node connectivity information for nodes in flooding tree A and flooding tree B in the network 100. Thus, in general, the memory 506 may comprise one or more computer readable storage media (e.g., a memory storage device) encoded with software comprising computer executable instructions and when the software is executed (e.g., by the processor 506) it is operable to perform the operations described for the flooding tree selection process logic 510.
The flooding tree selection process logic 510 may take any of a variety of forms, so as to be encoded in one or more tangible computer readable memory media or storage device for execution, such as fixed logic or programmable logic (e.g., software/computer instructions executed by a processor), and the processor 506 may be an application specific integrated circuit (ASIC) that comprises fixed digital logic, or a combination thereof.
In still another example, the processor 506 may be embodied by digital logic gates in a fixed or programmable digital logic integrated circuit, which digital logic gates are configured to perform the flooding tree selection process logic 510. In general, the flooding tree selection process logic 510 may be embodied in one or more computer readable storage media encoded with software comprising computer executable instructions and when the software is executed operable to perform the operations described above.
It should be appreciated that the techniques described above in connection with all embodiments may be performed by one or more computer readable storage media that is encoded with software comprising computer executable instructions to perform the methods and steps described herein. For example, the operations performed by one or more of the network nodes 102(1)-102(n) may be performed by one or more computer or machine readable storage media (non-transitory) or device executed by a processor and comprising software, hardware or a combination of software and hardware to perform the techniques described herein.
In summary, a method is provided involving a particular node device in a network generating a first flooding tree by performing a first shortest path first operation from a first selected node device in the network to a plurality of other node devices in the network; generating a second flooding tree by performing a second shortest path first operation from a second selected node device in the network to the plurality of other node devices in the network; detecting a network topology change event in either the first flooding tree or the second flooding tree; initiating a packet sequence exchange between the particular node device and another node device in the network in response to the detecting; and updating the first flooding tree and the second flooding tree based on information obtained during the packet sequence exchange.
Additionally, an apparatus is provided comprising: a plurality of ports configured to receive packets from and send packets to a network; a switch unit coupled to the plurality of ports; a memory; and a processor coupled to the switch unit and the memory and configured to: generate a first flooding tree by performing a first shortest path first operation from a first selected node device in the network to a plurality of other node devices in a network; generate a second flooding tree by performing a second shortest path first operation from a second selected node device in the network to the plurality of other node devices in the network; detect a network topology change event in either the first flooding tree or the second flooding tree; initiate a packet sequence exchange between a particular node device and another node device in the network in response to the detecting; and update the first flooding tree and the second flooding tree based on information obtained during the packet sequence exchange.
In addition, one or more computer readable storage media encoded with software is provided comprising computer executable instructions and when the software is executed operable to: generate a first flooding tree by performing a first shortest path first operation from a first selected node device in the network to a plurality of other node devices in a network; generate a second flooding tree by performing a second shortest path first operation from a second selected node device in the network to the plurality of other node devices in the network; detect a network topology change event in either the first flooding tree or the second flooding tree; initiate a packet sequence exchange between a particular node device and another node device in the network in response to the detecting; and update the first flooding tree and the second flooding tree based on information obtained during the packet sequence exchange.
The above description is intended by way of example only. Various modifications and structural changes may be made therein without departing from the scope of the concepts described herein and within the scope and range of equivalents of the claims.