The present disclosure is generally related to network communication, and is specifically related to a path computational element (PCE) controlled network.
In a Path Computation Element (PCE) controlled network, every network element (NE) in the network is controlled by a PCE controller cluster, which normally comprises two or more controllers working together to control the network (i.e., the network elements).
For the controller cluster comprising only two controllers (i.e., primary and secondary controller), there may be two separated primary controllers controlling the network at the same time when the connection between the two controllers is broken. The secondary controller assumes that the primary controller is dead and promotes itself as the new primary controller to control the network.
For the controller cluster comprising more than two controllers (i.e., primary controller, secondary controller, third controller, and so on), the failures in the cluster may split the cluster into a few separated controller groups. These groups do not know each other. Two or more groups may be elected as primary groups controlling the network at the same time.
The disclosed embodiments provide path computation element protocol (PCEP) extensions transmitted through network elements (NEs). The PECP extensions ensure separated controllers (or separated controller groups) are able to correctly determine whether a new primary controller (or new primary controller group) should be promoted when a link between the controllers, or a controller itself, has failed. Therefore, the PCEP extensions prevent more than one primary controller (or primary controller group) from managing or attempting to manage a network at the same time, which would lead to network instability, packet loss, and other undesirable results. Thus, controllers implementing the PCEP extensions disclosed herein are able to better manage a telecommunication network relative to current technology.
A first aspect relates to a method implemented by a secondary controller in a controller cluster including a primary controller and the secondary controller, comprising: detecting a failure of a communication link between the primary controller and the secondary controller; transmitting a first message to a network element (NE) in communication with the primary controller and the secondary controller, wherein the first message includes a controllers type length value (TLV) structure with an indication that the secondary controller is attempting to promote itself to a new primary controller for the controller cluster based on detection of the failure; receiving a second message from the network element, wherein the second message includes a second controllers TLV structure that indicates a status of the primary controller; and determining to maintain its position as the secondary controller for the controller cluster when the status of the primary controller is active.
Optionally, in any of the preceding aspects, another implementation of the aspect provides that
Optionally, in any of the preceding aspects, another implementation of the aspect provides the indication in the controllers TLV structure that the secondary controller intends to promote itself comprises a C-bit set to a first value and a position field set to a second value.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the first value is zero and the second value is one.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the controllers TLV structure further identifies a number of controllers advertising the controllers TLV structure, an old position of the secondary controller, a priority of the secondary controller, and an identifier (ID) of the secondary controller.
Optionally, in any of the preceding aspects, another implementation of the aspect provides one or more of the first message and the second message are exchanged over an information channel.
Optionally, in any of the preceding aspects, another implementation of the aspect provides one or more of the primary controller and the secondary controller is a path computational element (PCE), and wherein the network element is a path computational client (PCC).
Optionally, in any of the preceding aspects, another implementation of the aspect provides transmitting an open message to the network element to indicate a capability for high availability of controllers (HAC).
Optionally, in any of the preceding aspects, another implementation of the aspect provides the open message includes an open object, wherein the open object includes a controller capability TLV structure, wherein the controller capability TLV structure includes a second C-bit, wherein the second C-bit is set to a first value to indicate the secondary controller is a controller.
A second aspect relates to a method implemented by a secondary controller in a controller cluster including a primary controller and the secondary controller, comprising: detecting a potential failure of the primary controller; transmitting a first message to a network element (NE) in communication with the primary controller and the secondary controller, wherein the first message includes a controllers type length value (TLV) structure with an indication that the secondary controller is attempting to promote itself to a new primary controller for the controller cluster based on detection of the potential failure; failing to receive, within a predetermined period of time, a second message from the network element indicating that the primary controller is still active; and promoting itself to the new primary controller for the controller cluster.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the indication in the controllers TLV structure that the secondary controller is attempting to promote itself comprises a C-bit set to a first value and a position field set to a second value.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the first value is zero and the second value is one.
Optionally, in any of the preceding aspects, another implementation of the aspect provides removing an information channel between the secondary controller and the network element and establishing a control channel between the secondary controller and the network element after the secondary controller has promoted itself to the new primary controller for the controller cluster.
Optionally, in any of the preceding aspects, another implementation of the aspect provides transmitting, to the network element, a third message including an updated controllers TLV structure, the updated controllers TLV structure comprising a C-bit set to a first value and a position field set to the second value to indicate that the secondary controller is the new primary controller, wherein the first value is one.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the first message is transmitted over an information channel, and wherein the third message is transmitted over the information channel or a control channel.
Optionally, in any of the preceding aspects, another implementation of the aspect provides one or more of the primary controller and the secondary controller is a path computational element (PCE), and wherein the network element is a path computational client (PCC).
A third aspect relates to a method implemented by a network element (NE) in communication with a primary controller and a secondary controller in a controller cluster, comprising: receiving a first message from the secondary controller, wherein the first message includes a controllers type length value (TLV) structure with an indication that the secondary controller is attempting to promote itself to a new primary controller for the controller cluster based on detection of a failure of a communication link between the primary controller and the secondary controller; transmitting the first message to the primary controller; receiving a second message from the primary controller, wherein the second message includes a second controllers type length value (TLV) structure with an indication that the primary controller is still active; and transmitting the second message to the secondary controller to prevent the secondary controller from promoting itself to the new primary controller.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the indication in the controllers TLV structure that the secondary controller is attempting to promote itself comprises a C-bit set to a first value and a position field set to a second value, wherein the first value is zero and the second value is one.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the indication in the second controllers TLV structure that the primary controller is still active comprises a second C-bit set to one and a second position field set to one.
A fourth aspect relates to a method implemented by a secondary controller in a controller cluster, comprising: detecting a failure that divides the controller cluster into a first controller group and a second controller group, wherein the second controller group includes the secondary controller; transmitting a first message to a network element (NE) in communication with each controller in the controller cluster, wherein the first message includes a controllers type length value (TLV) structure identifying the secondary controller as an intended primary controller for the second controller group, a total number of controllers in the second controller group, and a prior position of the secondary controller in the controller cluster; receiving a second message from the NE, wherein the second message includes a second controllers TLV structure identifying a primary controller from the first controller group as an intended primary controller for the first controller group, a number of controllers in the first controller group, and a prior position of the primary controller in the controller cluster; comparing the number of controllers in the first controller group to the number of controllers in the second controller group; determining to maintain its position as the secondary controller for the controller cluster when the number of controllers in the first controller group exceeds the number of controllers in the second controller group; and promoting itself to anew primary controller for the controller cluster when the number of controllers in the second controller group exceeds the number of controllers in the first controller group.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the controllers TLV in the first message and the controllers TLV in the second message each comprise a C-bit set to a first value, and wherein the first value is zero.
Optionally, in any of the preceding aspects, another implementation of the aspect provides comparing the prior position of the primary controller in the controller cluster with the prior position of the secondary controller in the controller cluster when the number of controllers in the second controller group is equal to the number of controllers in the first controller group; and promoting itself to a new primary controller for the controller cluster when the prior position of the secondary controller in the controller cluster is lower than the prior position of the primary controller in the controller cluster.
Optionally, in any of the preceding aspects, another implementation of the aspect provides receiving a third message from the NE when the secondary controller has determined to maintain its position as the secondary controller, wherein the third message includes a third controllers TLV structure identifying a primary controller from the first controller group as the new primary controller.
A fifth aspect relates to a secondary controller in a controller cluster including a primary controller and the secondary controller, comprising: a processor configured to detect a failure of a communication link between the primary controller and the secondary controller; a transmitter coupled to the processor and configured to transmit a first message to a network element (NE) in communication with the primary controller and the secondary controller, wherein the first message includes a controllers type length value (TLV) structure with an indication that the secondary controller is attempting to promote itself to a new primary controller for the controller cluster based on detection of the failure; and a receiver coupled to the transmitter and configured to receive a second message from the network element, wherein the second message includes a second controllers TLV structure that indicates a status of the primary controller, wherein the secondary controller for the controller cluster is configured to determine to maintain its position as the secondary controller when the status of the primary controller is active.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the indication in the controllers TLV structure that the secondary controller is attempting to promote itself comprises a C-bit set to a first value and a position bit set to a second value.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the first value is zero and the second value is one.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the controllers TLV structure further identifies a number of controllers connecting the secondary controller, an old position of the secondary controller, a priority of the secondary controller, and an identifier (ID) of the secondary controller.
Optionally, in any of the preceding aspects, another implementation of the aspect provides one or more of the first message, the second message, and the open message are exchanged over an information channel.
Optionally, in any of the preceding aspects, another implementation of the aspect provides one or more of the primary controller and the secondary controller is a path computational element (PCE), and wherein the network element is a path computational client (PCC).
Optionally, in any of the preceding aspects, another implementation of the aspect provides transmitting an open message to the network element to indicate a capability for high availability of controllers (HAC).
Optionally, in any of the preceding aspects, another implementation of the aspect provides the open message includes an open object, wherein the open object includes a controller capability TLV structure, wherein the controller capability TLV structure includes a second C-bit, wherein the second C-bit is set to a first value to indicate the secondary controller is a controller, wherein the first value is one.
A sixth aspect relates to a secondary controller in a controller cluster including a primary controller and the secondary controller, comprising: a processor configured to detect a potential failure of the primary controller; a transmitter coupled to the processor and configured to transmit a first message to a network element (NE) in communication with the primary controller and the secondary controller, wherein the first message includes a controllers type length value (TLV) structure with an indication that the secondary controller is attempting to promote itself to a new primary controller for the controller cluster based on detection of the potential failure; a receiver coupled to the transmitter and configured to receive a second message from the network element indicating that the primary controller is still active; wherein the processor is further configured to promote the secondary controller to the new primary controller for the controller cluster when the receiver has failed to receive the secondary message indicating that the primary controller is still active within a predetermined period of time.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the indication in the controllers TLV structure that the secondary controller is attempting to promote itself comprises a C-bit set to a first value and a position field set to a second value.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the first value is zero and the second value is one.
Optionally, in any of the preceding aspects, another implementation of the aspect provides removing an information channel between the secondary controller and the network element and establishing a controller channel between the secondary controller and the network element after the secondary controller has promoted itself to the new primary controller for the controller cluster.
Optionally, in any of the preceding aspects, another implementation of the aspect provides transmitting, to the network element, a third message including an updated controllers TLV structure, the updated controllers TLV structure comprising a C-bit set to a first value and a position field set to a second value to indicate that the secondary controller is the new primary controller, wherein the first value is one and the second value is one.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the first message is transmitted over an information channel, and wherein the third message is transmitted over the information channel or a control channel.
Optionally, in any of the preceding aspects, another implementation of the aspect provides one or more of the primary controller and the secondary controller is a path computational element (PCE), and wherein the network element is a path computational client (PCC).
A seventh aspect relates to a network element in communication with a primary controller and a secondary controller in a controller cluster, comprising: a receiver configured to: receive a first message from the secondary controller, wherein the first message includes a controllers type length value (TLV) structure with an indication that the secondary controller is attempting to promote itself to a new primary controller for the controller cluster based on detection of a failure of a communication link between the primary controller and the secondary controller; and receive a second message from the primary controller, wherein the second message includes a second controllers type length value (TLV) structure with an indication that the primary controller is still active; a transmitter coupled to the receiver and configured to: transmit the first message to the primary controller; and transmit the second message to the secondary controller to prevent the secondary controller from promoting itself to the new primary controller.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the indication in the controllers TLV structure that the secondary controller is attempting to promote itself comprises a C-bit set to a first value and a position bit set to a second value, wherein the first value is zero and the second value is one.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the indication in the second controllers TLV structure that the primary controller is still active comprises a second C-bit set to a first value and a second position field set to a second value, wherein the first value is one and the second value is one.
An eighth aspect relates to a secondary controller in a controller cluster, comprising: a processor configured to detect a failure that divides the controller cluster into a first controller group and a second controller group, wherein the second controller group includes the secondary controller; a transmitter coupled to the processor and configured to transmit a first message to a network element (NE) in communication with each controller in the controller cluster, wherein the first message includes a controllers type length value (TLV) structure identifying the secondary controller as an intended primary controller for the second controller group, a total number of controllers in the second controller group, and a prior position of the secondary controller in the controller cluster; a receiver coupled to the transmitter and configured to receive a second message from the NE, wherein the second message includes a second controllers TLV structure identifying a primary controller from the first controller group as an intended primary controller for the first controller group, a number of controllers in the first controller group, and a prior position of the primary controller in the controller cluster; wherein the processor is further configured to: compare the number of controllers in the first controller group to the number of controllers in the second controller group; determine to maintain the secondary controller's position as the secondary controller for the controller cluster when the number of controllers in the first controller group exceeds the number of controllers in the second controller group; and promote the secondary controller to a new primary controller for the controller cluster when the number of controllers in the second controller group exceeds the number of controllers in the first controller group.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the controllers TLV in the first message and the controllers TLV in the second message each comprise a C-bit set to a first value, and wherein the first value is zero.
Optionally, in any of the preceding aspects, another implementation of the aspect provides the processor is further configured to compare the prior position of the primary controller in the controller cluster with the prior position of the secondary controller in the controller cluster when the number of controllers in the second controller group is equal to the number of controllers in the first controller group, and wherein the secondary controller is configured to promote itself to a new primary controller for the controller cluster when the prior position of the secondary controller in the controller cluster is lower than the prior position of the primary controller in the controller cluster.
A ninth aspect relates to a system, comprising: a primary controller in a controller cluster; a secondary controller in the controller cluster, wherein the secondary controller comprises the secondary controller in any of the disclosed embodiments; and a network element, wherein the network element comprises the network element in any of the disclosed embodiments.
A tenth aspect relates to a non-transitory computer readable medium comprising a computer program product for use by a secondary controller or a network element, the computer program product comprising computer executable instructions stored on the non-transitory computer readable medium such that when executed by a processor cause the secondary controller to perform the method in any of the disclosed embodiments.
An eleventh aspect relates to a means for network communication, comprising: receiving means configured to receive one or more messages; transmission means coupled to the receiving means, the transmission means configured to transmit the one or more messages; storage means coupled to at least one of the receiving means or the transmission means, the storage means configured to store instructions; and processing means coupled to the storage means, the processing means configured to execute the instructions stored in the storage means to perform the method in any of the disclosed embodiments.
For the purpose of clarity, any one of the foregoing embodiments may be combined with any one or more of the other foregoing embodiments to create a new embodiment within the scope of the present disclosure.
These and other features will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings and claims.
For a more complete understanding of this disclosure, reference is now made to the following brief description, taken in connection with the accompanying drawings and detailed description, wherein like reference numerals represent like parts.
It should be understood at the outset that although illustrative implementations of one or more embodiments are provided below, the disclosed systems and/or methods may be implemented using any number of techniques, whether currently known or in existence. The disclosure should in no way be limited to the illustrative implementations, drawings, and techniques illustrated below, including the exemplary designs and implementations illustrated and described herein, but may be modified within the scope of the appended claims along with their full scope of equivalents.
The network 104 includes a plurality of network elements (NEs) 150. The network elements 150 may be a router, switch, or other communication device configured to send and receive data, information, packets, and so on. The network elements 150 may operate as an ingress edge, an egress edge, or an intermediate node depending on their position within the topology of network 104. For the purposes of discussion, some of the network elements 150 have been labeled with a provider edge (PE) number, e.g., PE1, PE2, PE3, PE4, and PE5 to identify that they are edge devices.
In normal operations, the primary controller 106 controls the network 104 (e.g., manages each of the network elements 150) through a control channel 152 (e.g., a PCEP session) established between the controller cluster 102 and one or more of the network elements 150. The primary controller 106 sends instructions to the network elements 150 through the control channel 152 to, for example, establish a tunnel 190 traversing the network 104 from the network element 150 labeled PE1 to the network element 150 labeled PE4. The primary controller 106 also stores the instructions and/or a current status of the network 104 in a status database (SDB) 170.
In an embodiment, the controllers in the controller cluster 102 are coupled to communicate with every network element 150 in the network 104. That is, in an embodiment the controllers in the controller cluster 102 are in direct communication, and have a session established with, each element. In an embodiment, the controllers in the controller cluster 102 are only coupled to some of the network elements 150 in the network (e.g., an ingress edge and an egress edge).
The primary controller 106 is coupled to the secondary controller 108 through connection 180. The connection 180 may be a wired link, a wireless link, or some combination thereof. The connection 180 permits the primary controller 106 to exchange information with the secondary controller 108. In an embodiment, the primary controller 106 is able to synchronize the instructions and/or the current state of the network 104 with the secondary controller 108, which stores this information in SDB 172. Despite having access to the instructions, the secondary controller 108 does not send the instructions to any of the network elements 150. Rather, the secondary controller 108 in the controller cluster 102 functions as a backup in case the primary controller 106 and/or the connection 180 experiences a failure (a. k. a, fails, becomes inactive, dies, malfunctions, ceases to operate, halts communication, etc.). In such a circumstance, the primary controller 106 may not be able to effectively control or manage the network 104 any longer. Thus, one function of the secondary controller 108 is to provide redundancy.
When the primary controller 106 fails, the secondary controller 108 promotes itself to be the new primary controller and begins to control or manage the network 104. That is, the secondary controller 108 starts to send instructions to the network elements 150 through the control channel 152 established between the controller cluster 102 and the network elements 150. In an embodiment, the secondary controller 108 stores the instructions and/or the current status of the network 104 in the SDB 172.
In normal operations, the primary controller 106 controls the network 104 (e.g., manages each of the network elements 150) through the control channel 152 established between the controller cluster 102 and one or more of the network elements 150. The primary controller 106 sends instructions to the network elements 150 through the control channel 152 to, for example, establish the tunnel 190 traversing the network 104 from the network element 150 labeled PE1 to the network element 150 labeled PE4.
The primary controller 106, the secondary controller 108, the third controller 110, and the n-th controller 112 are coupled to each through connections 180. Each of the connections 180 may be a wired link, a wireless link, or some combination thereof. The connections 180 permit the primary controller 106 to exchange information with the secondary controller 108, the third controller 110, and the n-th controller 112.
The primary controller 106 stores the instructions and/or a current status of the network 104 in a status database (not shown, but similar to SDB 170 in
Despite having access to the instructions, the secondary controller 108, the third controller 110, and the n-th controller 112 do not send the instructions to any of the network elements 150. Rather, the secondary controller 108, the third controller 110, and the n-th controller 112 in the controller cluster 102 each function as a backup in case the primary controller 106 and/or the connections 180 experience a failure (a. k. a, fails, becomes inactive, dies, malfunctions, ceases to operate, halts communication, etc.). In such a circumstance, the primary controller 106 may not be able to effectively control or manage the network 104 any longer. Thus, one function of the secondary controller 108, the third controller 110, and the n-th controller 112 is to provide redundancy.
When the primary controller 106 fails, the secondary controller 108 promotes itself to be the new primary controller and begins to control or manage the network 104. That is, the secondary controller 108 starts to send instructions to the network elements 150 through the control channel 152 established between the controller cluster 102 and the network elements 150. In an embodiment, the secondary controller 108 stores the instructions and/or the current status of the network 104 in the SDB 172.
When multiple failures happen in the controller cluster 102, the group with the maximum number of controllers is responsible for controlling the network. For example, the group with the most controllers becomes the primary group of controllers for the controller cluster 102. Thereafter, the primary group of controllers elects a new primary controller, a new secondary controller, and so on.
However, a separated group of controllers cannot determine whether their group has the largest number of controllers due to the failures. That is, each group of controllers has no way of determining how many controllers are in the other groups. Therefore, as shown in
Disclosed herein are techniques that provide path computation element protocol (PCEP) extensions transmitted through network elements (NEs). The PECP extensions ensure separated controllers (or separated controller groups) are able to correctly determine whether a new primary controller (or new primary controller group) should be promoted when a link between the controllers, or a controller itself, has failed. Therefore, the PCEP extensions prevent more than one primary controller (or primary controller group) from managing or attempting to manage a network at the same time, which would lead to network instability, packet loss, and other undesirable results. Thus, controllers implementing the PCEP extensions disclosed herein are able to better manage a telecommunication network relative to current technology.
When set to a first value (e.g., one), the one flag bit 708 indicates that a PCEP speaker supports the high availability of controllers as a controller (e.g., the first controller 106, the second controller 108). When set to a second value (e.g., zero), the one flag bit 708 indicates that the PCEP speaker supports the high availability of controllers as a network element (e.g., the network element 150). Thus, the one flag bit 708 is used to determine whether a sending device (a.k.a., the PCEP speaker) is a controller or a network element. In an embodiment, the primary controller 106 and the secondary controller 108 each receive the open message 600 from the same network elements 150 (e.g., PE2 and PE3) with the one flag bit 708 set to the second value, and the network elements 150 receive the open message 600 from the same controllers (e.g., the first controller 106 and the second controller 108) with the one flag bit 708 set to the first value. The indication of whether another device supports the high availability of controllers as a controller or as a network element may be stored by the primary controller 106, the secondary controller 108, and the network elements 150.
If the primary controller 106, the secondary controller 108, or the network elements 150 receive an open message 600 without the controllers capability TLV structure 604, then these devices can determine that the sending device does not support the high availability of controllers.
Referring back to
The type field 1002 comprises 16 bits and is to be assigned by IANA. The length field 1004 comprises 16 bits and indicates a length of the value portion in octets. The flags field 1006 comprises 8 bits and includes one flag bit 1008. The one flag bit 1008 may be designated a C-bit.
When set to a first value (e.g., one), the one flag bit 1008 indicates that the controller originating the controllers TLV structure 806 currently has the position indicated in the position field 1010. When set to a second value (e.g., zero), the one flag bit 1008 indicates that the controller originating the controllers TLV structure 806 is intending to promote itself to the position indicated in the position field 1010. The position field 1010 comprises 8 bits and indicates that the controller originating the controllers TLV structure 806 has the current or intended position within the controller cluster 102 or in the controller group. In an embodiment, position 1 is the primary (or first) controller, position 2 is the secondary (or second) controller, position 3 is the third controller, and so on up to the n-th controller in the controller cluster 102 or controller group.
By way of example, suppose the primary controller 106 transmits a controllers message 800 containing a controllers TLV structure 806 with the one flag bit 1008 set to 1 and the value in the position field 1010 set to 1. Such a controllers TLV structure 806 would indicate to a receiving controller (e.g., the secondary controller 108) that the primary controller 106 is the active primary controller controlling the network (e.g., network 104). As an additional example, suppose the secondary controller 108 transmits a controllers message 800 containing a controllers TLV structure 806 with the one flag bit 1008 set to 0 and the value in the position field 1010 set to 1. Such a controllers TLV structure 806 would indicate to a receiving controller (e.g., the primary controller 106) that the secondary controller 108 is intending to promote itself to be the active primary controller controlling the network (e.g., network 104).
The number of controllers field 1012 comprises 8 bits and indicates the number of controllers connected to the controller that originated the controllers message 800 containing the controllers TLV structure 806 (plus one so as to be inclusive of the originating controller). The old position field 1014 comprises 8 bits and indicates the prior position (a.k.a., former position, old position, previous position) of the controller that originated the controllers message 800 containing the controllers TLV structure 806 prior to the controller cluster 102 or controller group being split.
The reserved field 1016 comprises 24 bits and is set to zero for transmission. As such, the reserved field 1016 is ignored on reception. The priority field 1018 comprises 8 bits and indicates the priority of the controller to be elected as a primary controller, which is configured. The connected controller ID field 1020 comprises multiple 32 bits and represents the IDs of the controllers at their relative position. For example, the connected controllers ID field 1020 contains the ID of controller i at position (i=1 to n) in the controller cluster or controller group.
Referring back to
Because the primary controller 106 was previously the active primary controller, the old position field 1014 has been set to a value of 1. In addition, the priority field 1018 has been updated to include the primary controller's priority and the connected controller ID field 1020 has been populated with the ID of the primary controller 106 as well as the ID of each controller in communication with the primary controller 106.
Because the secondary controller 108 was previously a backup controller, the old position field 1014 has been set to a value of 2. In addition, the priority field 1018 has been updated to include the secondary controller's priority and the connected controller ID field 1020 has been populated with the ID of the secondary controller 108 as well as the ID of each controller in communication with the secondary controller 108.
As shown in
As shown in
Once the network element 150 labeled PE2 receives the controllers message 800 containing the controllers TLV structure 806 of
As shown in
In an embodiment, when the network element 150 labeled PE2 receives the controllers message 800 carrying the controllers TLV structure 806 of
When the secondary controller 108 fails to receive a controllers message 800 (having a controllers TLV structure 806 similar to that in
As shown in
Unlike the embodiments depicted in
Because the primary controller 106 was previously the active primary controller, the old position field 1014 has been set to a value of 1. In addition, the priority field 1018 has been updated to include the primary controller's priority and the connected controller ID field 1020 has been populated with the ID of each of the controllers in the controller cluster 102 (e.g., primary controller 106, the secondary controller 108, the third controller 110, and the n-th controller 112).
Because the secondary controller 108 was previously a backup controller, the old position field 1014 has been set to a value of 2. In addition, the priority field 1018 has been updated to include the secondary controller's priority and the connected controller ID field 1020 has been populated with the ID of each of the controllers in the controller cluster 102 (e.g., primary controller 106, the secondary controller 108, the third controller 110, and the n-th controller 112).
It should be recognized that the third controller 110 and the n-th controller 112 also transmit a controllers TLV structure 806 to the network element 150 labeled PE2 using an information channel. For the third controller 110, the one flag bit 1008 has been set to a value of 0 to indicate that the third controller 110 is not the primary controller for the network 104. In addition, the position field 1010 has been set to a value of 3 to indicate that the third controller 110 has a third position (relative to the first position of the primary controller 106 and the second position of the secondary controller 108) and serves as another backup controller. The number of controllers field 1012 is set to indicate the number of controllers in communication with the primary controller 106. As such, the number of controllers field 1012 is set to the value of n, which represents that there are n controllers in the controller cluster 102.
Because the third controller 110 was previously a backup controller, the old position field 1014 has been set to a value of 3. In addition, the priority field 1018 has been updated to include the third controller's priority and the connected controller ID field 1020 has been populated with the ID of each of the controllers in the controller cluster 102 (e.g., primary controller 106, the secondary controller 108, the third controller 110, and the n-th controller 112).
For the n-th controller 112, the one flag bit 1008 has been set to a value of 0 to indicate that the n-th controller 110 is not the primary controller for the network 104. In addition, the position field 1010 has been set to a value of n to indicate that the n-th controller 112 has an n-th position (relative to the first position of the primary controller 106, the second position of the secondary controller 108, and the third position of the third controller 110) and serves as another backup controller. The number of controllers field 1012 is set to indicate the number of controllers in communication with the primary controller 106. As such, the number of controllers field 1012 is set to the value of n, which represents that there are n controllers in the controller cluster 102.
Because the n-th controller 112 was previously a backup controller, the old position field 1014 has been set to a value of n. In addition, the priority field 1018 has been updated to include the n-th controller's priority and the connected controller ID field 1020 has been populated with the ID of each of the controllers in the controller cluster 102 (e.g., primary controller 106, the secondary controller 108, the third controller 110, and the n-th controller 112).
In an embodiment, each group elects a primary controller, a secondary controller, and so on for that group. For example, the first group in
As shown in
As shown in
Once the network element 150 labeled PE2 receives the controllers TLV structure 806 from the primary controller 106, the network element 150 transmits the controllers TLV structure 806 to the secondary controller 108. Likewise, once the network element 150 labeled PE2 receives the controllers TLV structure 806 from the secondary controller 108, the network element 150 transmits the controllers TLV structure 806 to the primary controller 106.
The primary controller 106 and the secondary controller 108 each examine the controllers TLV structure 806 to determine whether the first group or the second group has the most controllers. To do so, the primary controller 106 and the secondary controller 108 evaluate the value in the number of controllers field 1012.
For example, if the value in the number of controllers field 1012 in the controllers TLV structure 806 sent by the primary controller 106 to the network element 150 is higher than the value in the number of controllers field 1012 in the controllers TLV structure 806 received by the primary controller 106 from the network element 150, then there are a higher number of controllers in the first group (relative to the second group). If the value in the number of controllers field 1012 in the controllers TLV structure 806 sent by the secondary controller 108 to the network element 150 is higher than the value in the number of controllers field 1012 in the controllers TLV structure 806 received by the secondary controller 108 from the network element 150, then there are a higher number of controllers in the second group (relative to the first group).
If the first group has the most controllers, the intended or presumptive primary controller for the first group (e.g., the primary controller 106) is elected as the primary controller for the controller cluster 102. On the other hand, if the second group has the most controllers, the intended or presumptive primary controller for the second group (e.g., the secondary controller 108) is elected as the primary controller for the controller cluster 102.
In the illustrated embodiment, the value in the number of controllers field 1012 in the controllers TLV structure 806 sent by the primary controller 106 to the network element 150 is the same as the value in the number of controllers field 1012 in the controllers TLV structure 806 received by the primary controller 106 from the network element 150. That is, both the first group and the second group of controllers each contain 2 controllers after the failures 180. In such an embodiment, the value in the old position field 1014 is used as a tie-breaker. For example, because the primary controller 106 has an old position of 1 and the secondary controller has an old position of 2, the primary controller 106 is elected the primary controller for the controller cluster 102.
As shown in
In an embodiment, each group elects a primary controller, a secondary controller, and so on for that group. For example, the first group in
As shown in
As shown in
Once the network element 150 labeled PE2 receives the controllers TLV structure 806 from the third controller 110, the network element 150 transmits the controllers TLV structure 806 to the secondary controller 108. Likewise, once the network element 150 labeled PE2 receives the controllers TLV structure 806 from the secondary controller 108, the network element 150 transmits the controllers TLV structure 806 to the third controller 110.
The third controller 110 and the secondary controller 108 each examine the controllers TLV structure 806 to determine whether the first group or the second group has the most controllers. To do so, the third controller 110 and the secondary controller 108 evaluate the value in the number of controllers field 1012.
In the illustrated embodiment, the value in the number of controllers field 1012 in the controllers TLV structure 806 sent by the secondary controller 108 to the network element 150 is higher than the value in the number of controllers field 1012 in the controllers TLV structure 806 received by the secondary controller 108 from the network element 150, then there are a higher number of controllers in the second group (relative to the first group). Because the second group has the most controllers, the intended or presumptive primary controller for the second group (e.g., the secondary controller 108) is elected as the primary controller for the controller cluster 102.
As shown in
In block 3102, the secondary controller detects a failure of a communication link (e.g., connection 180) between the primary controller (e.g., primary controller 106) and the secondary controller (e.g., secondary controller 108). Because of the failure, the primary controller and the secondary controller are no longer in direct communication with each other.
In block 3104, the secondary controller transmits a first message to a network element (e.g., the network element 150 labeled PE2) in communication with the primary controller and the secondary controller. The first message includes a controllers type length value (TLV) structure (e.g., TLV 806) with an indication that the secondary controller is attempting to (i.e., intends to) promote itself to a new primary controller for the controller cluster based on detection of the failure. In an embodiment, the indication in the controllers TLV structure that the secondary controller is attempting to promote itself comprises a C-bit set to a first value and a position field set to a second value. In an embodiment, the first value is zero and the second value is one.
In an embodiment, the controllers TLV structure further identifies a number of controllers advertising the controllers TLV structure, an old position of the secondary controller, a priority of the secondary controller, and an identifier (ID) of the secondary controller.
In an embodiment, one or more of the primary controller and the secondary controller is a path computational element (PCE). In an embodiment, the network element is a path computational client (PCC).
In block 3106, the secondary controller receives a second message from the network element. The second message includes a second controllers TLV structure that indicates a status of the primary controller. In an embodiment, one or more of the first message and the second message are exchanged over an information channel (e.g., the information channel 162). In an embodiment, the first message is exchanged over a control channel (e.g., the control channel 152).
In block 3108, the secondary controller determines to maintain its position as the secondary controller for the controller cluster when the status of the primary controller is active (a.k.a., alive, functioning, managing the network, etc.).
In an embodiment, the secondary controller transmits a capability message to the network element to indicate a capability for high availability of controllers (HAC) as described herein. In an embodiment, the capability message comprises an open message including an open object, wherein the open object includes a controller capability TLV structure, wherein the controller capability TLV structure includes a second C-bit, wherein the second C-bit is set to a first value to indicate the secondary controller is a controller. In an embodiment, the capability message is sent to the network element prior to detection of the failure in the communication link.
In block 3202, the secondary controller detects a potential failure of the primary controller. Detection of the potential failure may occur because, for example, the secondary controller stops receiving a heartbeat message or other expected communications from the primary controller over the connection 180.
In block 3204, the secondary controller transmits a first message to a network element (NE) in communication with the primary controller and the secondary controller. The first message includes a controllers type length value (TLV) structure (e.g., the controllers TLV structure 806) with an indication that the secondary controller is attempting to promote itself to a new primary controller for the controller cluster based on detection of the potential failure. In an embodiment, the indication in the controllers TLV structure that the secondary controller is attempting to promote itself comprises a C-bit set to a first value and a position field set to a second value. In an embodiment, the first value is zero and the second value is one.
In block 3206, the secondary controller fails to receive, within a predetermined period of time, a second message from the network element indicating that the primary controller is still active.
In block 3208, the secondary controller promotes itself to the new primary controller for the controller cluster. In an embodiment, the secondary controller removes an information channel (e.g., information channel 162) between the secondary controller and the network element and establishes a control channel (e.g., control channel 152) between the secondary controller and the network element after the secondary controller has promoted itself to the new primary controller for the controller cluster.
In an embodiment, the secondary controller transmits a third message to the network element. The third message includes an updated controllers TLV structure. The updated controllers TLV structure comprises a C-bit set to a first value and a position filed set to a second value to indicate that the secondary controller is the new primary controller. In an embodiment, the first value is zero and the second value is one. In an embodiment, the first message is transmitted over an information channel, and wherein the third message is transmitted over the information channel or a control channel. In an embodiment, one or more of the primary controller and the secondary controller is a path computational element (PCE), and wherein the network element is a path computational client (PCC).
In block 3302, the network element receives a first message from the secondary controller. The first message includes a controllers type length value structure (e.g., the TLV structure 806) with an indication that the secondary controller is attempting to promote itself to a new primary controller for the controller cluster based on detection of a failure of a communication link between the primary controller and the secondary controller. In an embodiment, the indication in the controllers TLV structure that the secondary controller is attempting to promote itself comprises a C-bit set to a first value and a position field set to a second value. In an embodiment, the first value is zero and the second value is one. In an embodiment, the first message is received through an information channel (e.g., information channel 162).
In block 3304, the network element transmits the first message to the primary controller. In an embodiment, the first message is transmitted to the primary controller through an information channel or through a control channel (e.g., control channel 152).
In block 3306, the network element receives a second message from the primary controller. The second message includes a second controllers type length value structure with an indication that the primary controller is still active. In an embodiment, the indication in the second controllers TLV structure that the primary controller is still active comprises a second C-bit set to a third value and a second position field set to a forth value. In an embodiment, the third value is one and the forth value is one.
In block 3308, the network element transmits the second message to the secondary controller to prevent the secondary controller from promoting itself to the new primary controller.
In block 3402, the secondary controller detects a failure that divides the controller cluster into a first controller group and a second controller group. That is, some of the controllers in the controller cluster are separated from (e.g., unable to directly communicate with) other controllers in the controller cluster, which effectively creates two distinct groups of controllers within the controller cluster (see, for example,
In block 3404, the secondary controller transmits a first message to a network element (NE) in communication with each controller in the controller cluster. The first message includes a controllers type length value structure (e.g., the TLV structure 806) identifying the secondary controller as an intended primary controller for the second controller group, a total number of controllers in the second controller group, and a prior position of the secondary controller in the controller cluster.
In block 3406, the secondary controller receives a second message from the NE. The second message includes a second controllers TLV structure identifying a primary controller from the first controller group as an intended primary controller for the first controller group, a number of controllers in the first controller group, and a prior position of the primary controller in the controller cluster.
In an embodiment, the controllers TLV in the first message and the controllers TLV in the second message each comprise a C-bit set to a first value. In an embodiment, the first value is zero.
In block 3408, the secondary controller compares the number of controllers in the first controller group to the number of controllers in the second controller group.
In block 3410, the secondary controller determines to maintain its position as the secondary controller for the controller cluster when the number of controllers in the first controller group exceeds the number of controllers in the second controller group. In an embodiment, the secondary controller receives a third message from the NE when the secondary controller has determined to maintain its position as the secondary controller. The third message includes a third controllers TLV structure identifying a primary controller from the first controller group as the new primary controller.
In block 3412, the secondary controller promotes itself to a new primary controller for the controller cluster when the number of controllers in the second controller group exceeds the number of controllers in the first controller group.
In an embodiment, the secondary controller compares the prior position of the primary controller in the controller cluster with the prior position of the secondary controller in the controller cluster when the number of controllers in the second controller group is equal to the number of controllers in the first controller group. Thereafter, the secondary controller promotes itself to a new primary controller for the controller cluster when the prior position of the secondary controller in the controller cluster is lower than the prior position of the primary controller in the controller cluster. The secondary controller determines to maintain its position as the secondary controller for the controller cluster when the prior position of the secondary controller in the controller cluster is higher than the prior position of the primary controller in the controller cluster.
In an embodiment, the secondary controller receives a third message from the NE. The third message includes a third controllers TLV structure identifying a primary controller from the first controller group as the new primary controller.
It should also be understood that the steps of the exemplary methods set forth herein are not necessarily required to be performed in the order described, and the order of the steps of such methods should be understood to be merely exemplary. Likewise, additional steps may be included in such methods, and certain steps may be omitted or combined, in methods consistent with various embodiments of the present disclosure.
The processor 3530 is implemented by hardware and software. The processor 3530 may be implemented as one or more CPU chips, cores (e.g., as a multi-core processor), field-programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), and digital signal processors (DSPs). The processor 3530 is in communication with the ingress ports 3510, receiver units 3520, transmitter units 3540, egress ports 3550, and memory 3560. The processor 3530 comprises a communication module 3570. The communication module 3570 implements the disclosed embodiments described above. For instance, the communication module 3570 implements, processes, prepares, or provides the various functions disclosed herein. The inclusion of the communication module 3570 therefore provides a substantial improvement to the functionality of the communication device 3500 and effects a transformation of the communication device 3500 to a different state. Alternatively, the communication module 3570 is implemented as instructions stored in the memory 3560 and executed by the processor 3530.
The communication device 3500 may also include input and/or output (I/O) devices 3580 for communicating data to and from a user. The I/O devices 3580 may include output devices such as a display for displaying video data, speakers for outputting audio data, etc. The I/O devices 3580 may also include input devices, such as a keyboard, mouse, trackball, etc., and/or corresponding interfaces for interacting with such output devices.
The memory 3560 comprises one or more disks, tape drives, and solid-state drives and may be used as an over-flow data storage device, to store programs when such programs are selected for execution, and to store instructions and data that are read during program execution. The memory 3560 may be volatile and/or non-volatile and may be read-only memory (ROM), random access memory (RAM), ternary content-addressable memory (TCAM), and/or static random-access memory (SRAM).
The communication device 3602 includes a storage means 3603. The storage means 3603 is coupled to at least one of the receiving means 3601 or the transmission means 3607. The storage means 3603 is configured to store instructions. The video coding device 3602 also includes processing means 3605. The processing means 3605 is coupled to the storage means 3603. The processing means 3605 is configured to execute the instructions stored in the storage means 3603 to perform the methods disclosed herein.
While several embodiments have been provided in the present disclosure, it may be understood that the disclosed systems and methods might be embodied in many other specific forms without departing from the spirit or scope of the present disclosure. The present examples are to be considered as illustrative and not restrictive, and the intention is not to be limited to the details given herein. For example, the various elements or components may be combined or integrated in another system or certain features may be omitted, or not implemented.
In addition, techniques, systems, subsystems, and methods described and illustrated in the various embodiments as discrete or separate may be combined or integrated with other systems, components, techniques, or methods without departing from the scope of the present disclosure. Other examples of changes, substitutions, and alterations are ascertainable by one skilled in the art and may be made without departing from the spirit and scope disclosed herein.
This patent application is a continuation of International Application No. PCT/US2020/066595 filed on Dec. 22, 2020, by Futurewei Technologies, Inc., and titled “PCE Controlled Network Reliability,” which claims the benefit of U.S. Provisional Patent Application No. 62/982,431 filed Feb. 27, 2020 by Futurewei Technologies, Inc., and titled “System and Method for PCE Controlled Network Reliability,” which is hereby incorporated by reference.
Number | Date | Country | |
---|---|---|---|
62982431 | Feb 2020 | US |
Number | Date | Country | |
---|---|---|---|
Parent | PCT/US2020/066595 | Dec 2020 | US |
Child | 17896514 | US |