In packet-switched networks, a router is a network device or, in some cases, software in a computer, that determines the next network point to which a packet should be forwarded toward its destination. The router is connected to at least two networks and decides which way to send each information packet based on its current understanding of the state of the networks it is connected to. A router is located at any gateway where one network meets another and is often included as part of a network switch.
Typically, packets are transported through a router by hardware and software operating in a data plane which is in turn controlled by hardware and software operating in a control plane. In general, the control plane includes the hardware and software that handles non-wire speed functions and data that are required to operate a network device or network. These functions include connection, setup, and tear down, operations, administration, and management. In general, the data plane includes the hardware and software that handles the classification, modification, scheduling, and transmission of wire-speed application data. The control and data planes maybe combined into a single processing plane.
To improve availability, a router may be equipped with redundant or two control, data, or processing planes. A first control plane, for example, is designated as the active control plane and a second control plane is designated as the inactive control plane. In the event that a device in the active control plane fails, the inactive control plane takes over to reduce down time and hence maintain availability of the router. In such a case, activity is said to switch from the active control plane to the inactive control plane, that is, the two planes exchange roles. Routers and other network devices having redundant systems (i.e., control or data plane devices) are often referred to as “high availability” systems. Thus, a typical high availability router may have two main processing cards that run the same software and perform the same operation. If one card fails in the field, the other card takes over in order to keep the router up and running. Such a router is highly available as the card redundancy ensures that the router is almost always operable or available.
Thus, in a redundant or high availability system, two redundant control planes or cards typically run the same software as mentioned above. Even if both control plane cards are running, the system is still one system and therefore only one control card can configure and operate the system. This one card is the active card. The other card remains in a standby mode monitoring what is going on within the system. It is the inactive card. If the active card fails, then the inactive card takes over and becomes the active card. This is an activity switch. An activity switch can occur due to a failure of the active card, but it is also possible to trigger an activity switch by removing the active card from the system to perform an upgrade, for example. An activity switch may also be generated by entering a software command but this is typically done only for internal debugging purposes. An activity switch may also be generated by entering a software command.
In addition to control and data plane cards, the router also includes various-external modules or “off-card” assemblies or cards that may be plugged into (or unplugged from) the system. They are physically separated from the control planes but connect to them once they are inserted into the system. Typically, an off-card assembly terminates the control path and the data path.
One problem with current control plane management schemes is that they cannot typically detect and respond quickly enough to changes on multiple off-card assemblies, particularly when an activity switch is required in a high availability system in order to maintain stringent customer service level agreements. This problem causes the following: loss of bandwidth resulting from control plane traffic timing out when the status from an off-card assembly changes (or has been removed) and cannot be responded to efficiently; and, loss of reliability resulting from unauthorized write accesses to the off-card assembly from the inactive control plane. In addition, off-card assemblies cannot quickly detect and react to an activity switch in order to optimize performance of the active control plane and hence maintain bandwidth.
Another problem with current control plane management schemes relates to reset mechanisms. Control plane cards and off-card assemblies are typically provided with reset mechanisms which may be based, for example, on the power provided to the card. Until a card is properly powered-up and its alimentation (i.e., support and maintenance) is stable, a reset line or pin is kept low hence keeping the card in a reset state. The use of such reset mechanisms in high availability systems can be problematic. First, in general, existing reset mechanisms cannot target resets to a subset of the logic on a control plane or on an off-card assembly. This prevents the core logic from staying in-service during an activity switch or a failure and can result in increased recovery time (which is contrary to the objective of a high availability system). Second, existing reset mechanisms cannot detect and respond to changes in conditions in a timely fashion, which is important for high availability systems (i.e., to maintain customer service level agreements). Third, existing reset mechanisms cannot properly handle independent reset instructions from redundant control planes, thereby preventing resolution of conflicts and leading to false resets. Fourth, existing reset mechanisms use many signals to distribute reset instructions to multiple off-card assemblies. This increases package pin count, which leads to increased system cost.
A need therefore exists for an improved method and system for control plane signaling in high availability network devices such as routers. Accordingly, a solution that addresses, at least in part, the above and other shortcomings is desired.