CN115004655B - 用于边界网关协议(bgp)控制的网络可靠性的系统和方法 - Google Patents

用于边界网关协议(bgp)控制的网络可靠性的系统和方法 Download PDF

Info

Publication number
CN115004655B
CN115004655B CN202080094697.7A CN202080094697A CN115004655B CN 115004655 B CN115004655 B CN 115004655B CN 202080094697 A CN202080094697 A CN 202080094697A CN 115004655 B CN115004655 B CN 115004655B
Authority
CN
China
Prior art keywords
controller
bgp
controllers
cluster
network
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202080094697.7A
Other languages
English (en)
Other versions
CN115004655A (zh
Inventor
陈怀谟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202311237020.6A priority Critical patent/CN117376234A/zh
Publication of CN115004655A publication Critical patent/CN115004655A/zh
Application granted granted Critical
Publication of CN115004655B publication Critical patent/CN115004655B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/64Routing or path finding of packets in data switching networks using an overlay routing layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/28Routing or path finding of packets in data switching networks using route fault recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/46Cluster building
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/58Association of routers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请提供了一种由包括控制器集群的网络中的第一控制器实现的方法,所述控制器集群包括所述第一控制器和第二控制器,所述方法包括:向网元(network element,NE)发送包括第一控制器网络层可达信息(network layer reachability information,NLRI)的第一BGP消息,所述第一控制器NLRI携带所述第一控制器相对于所述控制器集群中的其它控制器的位置;从所述NE接收包括第二控制器NLRI的第二BGP消息,所述第二控制器NLRI携带所述第二控制器相对于所述控制器集群中的所述其它控制器的位置;基于所述第一控制器的所述位置和所述第二控制器的所述位置从所述控制器集群中确定主控制器,所述主控制器负责控制所述网络。

Description

用于边界网关协议(BGP)控制的网络可靠性的系统和方法
技术领域
本申请大体上涉及网络通信,具体涉及用于提高实现边界网关协议(bordergateway protocol,BGP)的网络中一个或多个控制器的可靠性的各种系统和方法。
背景技术
BGP是一种协议,通过在位于通信系统内的边缘网元(network element,NE)(例如路由器)之间交换路由和可达信息,管理数据包在互联网上的传输。BGP指导自治系统(autonomous system,AS)或由单个企业或服务提供商管理的网络之间的数据包。BGP提供了网络稳定性,保证当特定路径发生故障时,网元(network element,NE)可以快速适应,以通过另一个重新连接发送数据包。实现BGP的NE基于网络管理员配置的路径、规则或网络策略进行路由决策。
在实现为软件定义网络(software defined network,SDN)的网络中,控制器集群通过与网络中的一个或多个NE通信来控制网络中的所有NE。控制器集群包括两个或两个以上控制器,其中,一个控制器被选择为控制网络中NE的主控制器。主控制器通过BGP会话从网络中的NE接收信息,并将信息发送给控制器集群中的其它控制器。在这些网络中,网络的可靠性和可用性在很大程度上取决于控制器集群中控制器和连接的正常运行。控制器集群中出现的任何问题或故障都会严重影响网络中NE的运行和可靠性。
发明内容
根据本申请的第一方面,提供了一种由包括控制器集群的网络中的第一控制器实现的方法,所述控制器集群包括所述第一控制器和第二控制器。所述方法包括:与所述网络中的网元(network element,NE)建立边界网关协议(border gateway protocol,BGP)会话;向所述NE发送包括第一控制器网络层可达信息(network layer reachabilityinformation,NLRI)的第一BGP消息,所述第一控制器NLRI携带所述控制器集群中每个控制器的标识(identifier,ID),所述第一控制器NLRI还携带基于优先级顺序所述第一控制器相对于所述控制器集群中的其它控制器的位置;从所述NE接收包括第二控制器NLRI的第二BGP消息,所述第二控制器NLRI携带所述控制器集群中每个控制器的所述ID,所述第二控制器NLRI携带基于所述优先级顺序所述第二控制器相对于所述控制器集群中的所述其它控制器的位置;基于所述第一控制器NLRI中携带的所述第一控制器的所述位置和所述第二控制器NLRI中携带的所述第二控制器的所述位置,从所述控制器集群中确定主控制器,所述主控制器负责控制所述网络。
可选地,在第一方面所述的第一种实现方式中,所述第一BGP消息包括以下各项中的至少一项:指示所述第一控制器是否为所述网络的所述主控制器的标志、所述第一控制器的所述位置、所述第一控制器的旧位置、所述控制器集群中的控制器数量,以及所述第一控制器相对于所述控制器集群中的其它控制器的优先级。
可选地,在第一方面所述的第二种实现方式或第一方面的任何其它实现方式中,所述第二BGP消息包括以下各项中的至少一项:指示所述第二控制器是否为所述网络的所述主控制器的第二标志、所述第二控制器的所述位置、所述第二控制器的旧位置、所述控制器集群中的控制器数量,以及所述第二控制器相对于所述控制器集群中的其它控制器的优先级。
可选地,在第一方面所述的第三种实现方式或第一方面的任何其它实现方式中,与所述NE建立所述BGP会话包括:与所述网络中的多个NE建立多个BGP会话,以创建多个控制信道,所述多个NE包括所述NE;与所述NE分别建立带扩展的BGP会话,以创建信息信道。
可选地,在第一方面所述的第四种实现方式或第一方面的任何其它实现方式中,与所述NE建立所述BGP会话包括:与所述网络中的多个NE建立多个BGP会话,以创建多个控制信道,所述多个NE不包括所述NE;与所述NE建立带扩展的BGP会话,以创建信息信道。
可选地,在第一方面所述的第五种实现方式或第一方面的任何其它实现方式中,与所述NE建立所述BGP会话包括:向所述NE发送具有高可用性支持能力三元组的第一OPEN消息,所述高可用性支持能力三元组包括指示所述第一控制器为控制器的标志;从所述NE接收具有高可用性支持能力三元组的第二OPEN消息,所述高可用性支持能力三元组包括指示所述NE是所述网络中的节点的标志。
可选地,在第一方面所述的第六种实现方式或第一方面的任何其它实现方式中,所述第一OPEN消息中的所述高可用性支持能力三元组携带在所述第一OPEN消息的可选参数中,所述第二OPEN消息中的所述高可用性支持能力三元组携带在所述第二OPEN消息的可选参数中。
可选地,在第一方面所述的第七种实现方式或第一方面的任何其它实现方式中,所述第一BGP消息包括第一控制器地址族标识(address family identifier,AFI)、第一控制器子地址族标识(sub-address family identifier,SAFI)和所述第一控制器NLRI,其中,所述第二BGP消息包括第二控制器AFI、第二控制器SAFI和所述第二控制器NLRI。
可选地,在第一方面所述的第八种实现方式或第一方面的任何其它实现方式中,所述第一BGP消息编码为BGP UPDATE,所述第一控制器NLRI携带在所述第一BGP消息的第一路径属性字段中,并且,所述第二BGP消息编码为BGP UPDATE,所述第二控制器NLRI携带在所述第二BGP消息的第二路径属性字段中。
可选地,在第一方面所述的第九种实现方式或第一方面的任何其它实现方式中,所述方法还包括:在从所述NE接收所述第二控制器发生故障的指示后,或在确定预定时间段内未从辅助控制器接收到BGP消息后,确定所述第二控制器是否发生故障;在所述第二控制器发生故障时,选择所述第一控制器作为所述网络的所述主控制器;向所述NE发送包括第三控制器NLRI的第三BGP消息,所述第三控制器NLRI指示所述第一控制器是所述网络的所述主控制器。
可选地,在第一方面所述的第十种实现方式或第一方面的任何其它实现方式中,所述控制器集群包括多个控制器,所述多个控制器包括所述第一控制器和所述第二控制器,其中,所述方法还包括:确定在所述控制器集群内发生了至少一个故障,以在所述控制器集群内创建第一组控制器和第二组控制器;确定所述第一控制器耦合到不包括所述第二控制器的所述第一组控制器,所述第二控制器耦合到不包括所述第一控制器的所述第二组控制器。
可选地,在第一方面所述的第十一种实现方式或第一方面的任何其它实现方式中,所述第一组控制器具有第一数量的控制器,所述第二组控制器具有第二数量的控制器,其中,所述方法还包括:基于所述第一控制器的旧位置或所述第一控制器相对于所述第一组控制器中的其它控制器的优先级,确定所述第一组控制器中的所述第一控制器为所述第一组控制器的意向主控制器;向所述NE发送指示所述第一组控制器的状态的第三BGP消息,所述第三BGP消息包括所述第一组控制器中的控制器数量、所述第一控制器的所述旧位置和所述第一控制器的所述优先级;从所述NE接收指示所述第二组控制器的状态的第四BGP消息,所述第四BGP消息指示所述第二控制器为所述第二组控制器的意向主控制器,所述第四BGP消息包括所述第二组控制器中的控制器数量、所述第二控制器的旧位置以及所述第二控制器相对于所述第二组控制器中的其它控制器的优先级。
可选地,在第一方面所述的第十二种实现方式或第一方面的任何其它实现方式中,所述方法还包括:基于所述第一组控制器和所述第二组控制器中的每个组中的控制器数量、所述第一控制器或所述第二控制器的最高旧位置,或所述第一控制器或所述第二控制器的最高优先级,选择所述第一控制器作为所述网络的所述主控制器。
可选地,在第一方面所述的第十三种实现方式或第一方面的任何其它实现方式中,所述控制器集群还包括第三控制器,其中,所述方法还包括接收包括第三控制器NLRI的第三BGP消息,所述第三控制器NLRI携带所述控制器集群中每个控制器的所述ID,所述第三控制器NLRI携带基于所述优先级顺序第二控制器相对于所述控制器集群中的所述其它控制器的位置,其中,所述主控制器是基于所述第一控制器NLRI中携带的所述第一控制器的所述位置、所述第二控制器NLRI中携带的所述第二控制器的所述位置和所述第三控制器NLRI中携带的所述第三控制器的所述位置确定的。
根据本申请的第二方面,提供了一种由包括控制器集群的网络中的网元(networkelement,NE)提供的方法。所述方法包括:与所述网络的主控制器建立第一边界网关协议(border gateway protocol,BGP)会话;与所述网络的辅助控制器建立第二BGP会话,所述控制器集群包括所述主控制器和所述辅助控制器,所述主控制器负责控制所述网络;从所述主控制器接收BGP消息,所述BGP消息包括指示所述BGP消息由所述主控制器发送的控制器网络层可达信息(network layer reachability information,NLRI),所述控制器NLRI携带所述主控制器相对于所述控制器集群中的其它控制器的位置和所述控制器集群中每个控制器的标识(identifier,ID);将所述BGP消息转发给所述辅助控制器。
可选地,在第二方面所述的第一种实现方式中,所述BGP消息包括以下各项中的至少一项:指示所述主控制器控制所述网络的标志、所述主控制器相对于所述控制器集群中的其它控制器的位置、所述主控制器的旧位置、所述控制器集群中的控制器数量,以及所述主控制器相对于所述控制器集群中的其它控制器的优先级。
可选地,在第二方面所述的第二种实现方式或第二方面的任何其它实现方式中,与所述主控制器建立所述第一BGP会话包括:向所述主控制器发送具有高可用性支持能力三元组的第一OPEN消息,所述高可用性支持能力三元组包括指示所述NE是所述网络中的节点的标志;从所述主控制器接收具有高可用性支持能力三元组的第二OPEN消息,所述高可用性支持能力三元组包括指示所述主控制器是所述网络中的控制器的标志。
可选地,在第二方面所述的第三种实现方式或第二方面的任何其它实现方式中,所述第一OPEN消息中的所述高可用性支持能力三元组携带在所述第一OPEN消息的可选参数中,所述第二OPEN消息中的所述高可用性支持能力三元组携带在所述第二OPEN消息的可选参数中。
可选地,在第二方面所述的第二种实现方式或第二方面的任何其它实现方式中,所述方法还包括:检测所述主控制器的故障;向所述辅助控制器发送第二BGP消息,所述第二BGP消息包括指示所述主控制器发生故障的第三控制器NLRI,所述第二BGP消息指示所述辅助控制器从状态数据库中撤回关于所述主控制器的信息。
根据本申请的第三方面,提供了一种在包括控制器集群的网络中实现的第一控制器,所述控制器集群包括所述第一控制器和第二控制器。所述第一控制器包括:存储器,用于存储指令;处理器,耦合所述存储器并用于执行所述指令,所述指令使所述第一控制器用于:与所述网络中的网元(network element,NE)建立边界网关协议(border gatewayprotocol,BGP)会话;向所述NE发送包括第一控制器网络层可达信息(network layerreachability information,NLRI)的第一BGP消息,所述第一控制器NLRI携带所述控制器集群中每个控制器的标识(identifier,ID),所述第一控制器NLRI还携带基于优先级顺序所述第一控制器相对于所述控制器集群中的其它控制器的位置;从所述NE接收包括第二控制器NLRI的第二BGP消息,所述第二控制器NLRI携带所述控制器集群中每个控制器的所述ID,所述第二控制器NLRI携带基于所述优先级顺序所述第二控制器相对于所述控制器集群中的所述其它控制器的位置;基于所述第一控制器NLRI中携带的所述第一控制器的所述位置和所述第二控制器NLRI中携带的所述第二控制器的所述位置,从所述控制器集群中确定主控制器,所述主控制器负责控制所述网络。
可选地,在第三方面所述的第一种实现方式中,所述第一BGP消息包括以下各项中的至少一项:指示所述第一控制器是否为所述网络的所述主控制器的标志、所述第一控制器的所述位置、所述第一控制器的旧位置、所述控制器集群中的控制器数量,以及所述第一控制器相对于所述控制器集群中的其它控制器的优先级。
可选地,在第三方面所述的第二种实现方式或第三方面的任何其它实现方式中,所述第二BGP消息包括以下各项中的至少一项:指示所述第二控制器是否为所述网络的所述主控制器的第二标志、所述第二控制器的所述位置、所述第二控制器的旧位置、所述控制器集群中的控制器数量,以及所述第二控制器相对于所述控制器集群中的其它控制器的优先级。
可选地,在第三方面所述的第三种实现方式或第三方面的任何其它实现方式中,所述指令还使所述第一控制器用于:与所述网络中的多个NE建立多个BGP会话,以创建多个控制信道,所述多个NE包括所述NE;与所述NE分别建立带扩展的BGP会话,以创建信息信道。
可选地,在第三方面所述的第四种实现方式或第三方面的任何其它实现方式中,所述指令还使所述第一控制器用于:与所述网络中的多个NE建立多个BGP会话,以创建多个控制信道,所述多个NE不包括所述NE;与所述NE建立带扩展的BGP会话,以创建信息信道。
可选地,在第三方面所述的第五种实现方式或第三方面的任何其它实现方式中,所述指令还使所述第一控制器用于:向所述NE发送具有高可用性支持能力三元组的第一OPEN消息,所述高可用性支持能力三元组包括指示所述第一控制器为控制器的标志;从所述NE接收具有高可用性支持能力三元组的第二OPEN消息,所述高可用性支持能力三元组包括指示所述NE是所述网络中的节点的标志。
可选地,在第三方面所述的第六种实现方式或第三方面的任何其它实现方式中,所述第一OPEN消息中的所述高可用性支持能力三元组携带在所述第一OPEN消息的可选参数中,所述第二OPEN消息中的所述高可用性支持能力三元组携带在所述第二OPEN消息的可选参数中。
可选地,在第三方面所述的第七种实现方式或第三方面的任何其它实现方式中,所述第一BGP消息包括第一控制器地址族标识(address family identifier,AFI)、第一控制器子地址族标识(sub-address family identifier,SAFI)和所述第一控制器NLRI,其中,所述第二BGP消息包括第二控制器AFI、第二控制器SAFI和所述第二控制器NLRI。
可选地,在第三方面所述的第八种实现方式或第三方面的任何其它实现方式中,所述第一BGP消息编码为BGP UPDATE,所述第一控制器NLRI携带在所述第一BGP消息的第一路径属性字段中,并且,所述第二BGP消息编码为BGP UPDATE,所述第二控制器NLRI携带在所述第二BGP消息的第二路径属性字段中。
可选地,在第三方面所述的第九种实现方式或第三方面的任何其它实现方式中,所述指令还使所述第一控制器用于:在从所述NE接收所述第二控制器发生故障的指示后,或在确定预定时间段内未从辅助控制器接收到BGP消息后,确定所述第二控制器是否发生故障;在所述第二控制器发生故障时,选择所述第一控制器作为所述网络的所述主控制器;向所述NE发送包括第三控制器NLRI的第三BGP消息,所述第三控制器NLRI指示所述第一控制器是所述网络的所述主控制器。
可选地,在第三方面所述的第十种实现方式或第三方面的任何其它实现方式中,所述控制器集群包括多个控制器,所述多个控制器包括所述第一控制器和所述第二控制器,其中,所述指令还使所述第一控制器用于:确定在所述控制器集群内发生了至少一个故障,以在所述控制器集群内创建第一组控制器和第二组控制器;确定所述第一控制器耦合到不包括所述第二控制器的所述第一组控制器,所述第二控制器耦合到不包括所述第一控制器的所述第二组控制器。
可选地,在第三方面所述的第十一种实现方式或第三方面的任何其它实现方式中,所述第一组控制器具有第一数量的控制器,所述第二组控制器具有第二数量的控制器,其中,所述指令还使所述第一控制器用于:基于所述第一控制器的旧位置或所述第一控制器相对于所述第一组控制器中的其它控制器的优先级,确定所述第一组控制器中的所述第一控制器为所述第一组控制器的意向主控制器;向所述NE发送指示所述第一组控制器的状态的第三BGP消息,所述第三BGP消息包括所述第一组控制器中的控制器数量、所述第一控制器的所述旧位置和所述第一控制器的所述优先级;从所述NE接收指示所述第二组控制器的状态的第四BGP消息,所述第四BGP消息指示所述第二控制器为所述第二组控制器的意向主控制器,所述第四BGP消息包括所述第二组控制器中的控制器数量、所述第二控制器的旧位置以及所述第二控制器相对于所述第二组控制器中的其它控制器的优先级。
可选地,在第三方面所述的第十二种实现方式或第三方面的任何其它实现方式中,所述指令还使所述第一控制器用于:基于所述第一组控制器和所述第二组控制器中的每个组中的控制器数量、所述第一控制器或所述第二控制器的最高旧位置,或所述第一控制器或所述第二控制器的最高优先级,选择所述第一控制器作为所述网络的所述主控制器。
可选地,在第三方面所述的第十三种实现方式或第三方面的任何其它实现方式中,所述控制器集群还包括第三控制器,其中,所述指令还使所述第一控制器用于接收包括第三控制器NLRI的第三BGP消息,所述第三控制器NLRI携带所述控制器集群中每个控制器的所述ID,所述第三控制器NLRI携带基于所述优先级顺序第二控制器相对于所述控制器集群中的所述其它控制器的位置,其中,所述主控制器是基于所述第一控制器NLRI中携带的所述第一控制器的所述位置、所述第二控制器NLRI中携带的所述第二控制器的所述位置和所述第三控制器NLRI中携带的所述第三控制器的所述位置确定的。
根据本申请的第四方面,提供了一种实现包括控制器集群的网络的NE。所述NE包括:存储器,用于存储指令;处理器,耦合到所述存储器并用于执行所述指令,所述指令使所述NE用于:与所述网络的主控制器建立第一边界网关协议(border gateway protocol,BGP)会话;与所述网络的辅助控制器建立第二BGP会话,所述控制器集群包括所述主控制器和所述辅助控制器,所述主控制器负责控制所述网络;从所述主控制器接收BGP消息,所述BGP消息包括指示所述BGP消息由所述主控制器发送的控制器网络层可达信息(networklayer reachability information,NLRI),所述控制器NLRI携带所述主控制器相对于所述控制器集群中的其它控制器的位置和所述控制器集群中每个控制器的标识(identifier,ID);将所述BGP消息转发给所述辅助控制器。
可选地,在第四方面所述的第一种实现方式中,所述BGP消息包括以下各项中的至少一项:指示所述主控制器控制所述网络的标志、所述主控制器相对于所述控制器集群中的其它控制器的位置、所述主控制器的旧位置、所述控制器集群中的控制器数量,以及所述主控制器相对于所述控制器集群中的其它控制器的优先级。
可选地,在第四方面所述的第二种实现方式或第四方面的任何其它实现方式中,所述指令还使所述NE用于:向所述主控制器发送具有高可用性支持能力三元组的第一OPEN消息,所述高可用性支持能力三元组包括指示所述NE是所述网络中的节点的标志;从所述主控制器接收具有高可用性支持能力三元组的第二OPEN消息,所述高可用性支持能力三元组包括指示所述主控制器是所述网络中的控制器的标志。
可选地,在第四方面所述的第三种实现方式或第四方面的任何其它实现方式中,所述第一OPEN消息中的所述高可用性支持能力三元组携带在所述第一OPEN消息的可选参数中,所述第二OPEN消息中的所述高可用性支持能力三元组携带在所述第二OPEN消息的可选参数中。
可选地,在第四方面所述的第二种实现方式或第四方面的任何其它实现方式中,所述指令还使所述NE用于:检测所述主控制器的故障;向所述辅助控制器发送第二BGP消息,所述第二BGP消息包括指示所述主控制器发生故障的第三控制器NLRI,所述第二BGP消息指示所述辅助控制器从状态数据库中撤回关于所述主控制器的信息。
根据本申请的第五方面,提供了一种在包括控制器集群的网络中实现的第一控制器,所述控制器集群包括所述第一控制器和第二控制器,所述第一控制器包括:用于与所述网络中的网元(network element,NE)建立边界网关协议(border gateway protocol,BGP)会话的模块;用于向所述NE发送包括第一控制器网络层可达信息(network layerreachability information,NLRI)的第一BGP消息的模块,所述第一控制器NLRI携带所述控制器集群中每个控制器的标识(identifier,ID),所述第一控制器NLRI还携带基于优先级顺序所述第一控制器相对于所述控制器集群中的其它控制器的位置;用于从所述NE接收包括第二控制器NLRI的第二BGP消息的模块,所述第二控制器NLRI携带所述控制器集群中每个控制器的所述ID,所述第二控制器NLRI携带基于所述优先级顺序所述第二控制器相对于所述控制器集群中的所述其它控制器的位置;用于基于所述第一控制器NLRI中携带的所述第一控制器的所述位置和所述第二控制器NLRI中携带的所述第二控制器的所述位置,从所述控制器集群中确定主控制器的模块,所述主控制器负责控制所述网络。
根据本申请的第六方面,提供了一种在包括控制器集群的网络中实现的NE,所述NE包括:用于与所述网络的主控制器建立第一边界网关协议(border gateway protocol,BGP)会话的模块;用于与所述网络的辅助控制器建立第二BGP会话的模块,所述控制器集群包括所述主控制器和所述辅助控制器,所述主控制器负责控制所述网络;用于从所述主控制器接收BGP消息的模块,所述BGP消息包括指示所述BGP消息由所述主控制器发送的控制器网络层可达信息(network layer reachability information,NLRI),所述控制器NLRI携带所述主控制器相对于所述控制器集群中的其它控制器的位置和所述控制器集群中每个控制器的标识(identifier,ID);用于将所述BGP消息转发给所述辅助控制器的模块。
为了清楚起见,任一上述实施例可以与上述其它任何一个或多个实施例组合以创建在本申请范围内的新实施例。
根据以下具体实施方式结合附图和权利要求书能更清楚地理解这些和其它特征。
附图说明
图1是根据本申请的各种实施例,用于实现用于网络高可用性(highavailability,HA)的BGP的控制器集群网络的图示。
图2是根据本申请的各种实施例,用于实现用于网络HA的BGP的另一个控制器集群网络的图示。
图3是根据本申请的各种实施例,用于实现用于网络HA的BGP的NE的图示。
图4A至图4D是根据本申请的各种实施例,用于对控制器和NE的能力进行编码的TLV的图示。
图5A至图5B是根据本申请的各种实施例,通过控制器集群网络通信的BGP消息的图示。
图6A至图6C是根据本申请的各种实施例,用于将BGP消息编码为现有BGP NLRI的TLV的图示。
图7A至图7C是根据本申请的各种实施例,新BGP消息或现有BGP消息中包括的BGP通用头的图示。
图8A至图8C是根据本申请的各种实施例,在控制器集群网络中的集群发生任何故障之前通过控制器集群网络通信的BGP消息的图示。
图9A至图9C是根据本申请的各种实施例,在控制器集群网络中的集群发生故障之后通过控制器集群网络通信的BGP消息的图示。
图10A至图10C是根据本申请的各种实施例,在控制器集群网络的集群中的主控制器发生故障之后通过控制器集群网络通信的BGP消息的图示。
图11A至图11C是根据本申请的各种实施例,在控制器集群网络中的集群发生任何故障之前通过控制器集群网络通信的BGP消息的图示。
图12A至图12E是根据本申请的各种实施例,在控制器集群网络的集群中的链路发生故障之后通过控制器集群网络通信的BGP消息的图示。
图13A至图13E是根据本申请的各种实施例,在控制器集群网络的集群中的控制器发生故障之后通过控制器集群网络通信的BGP消息的图示。
图14是根据本申请的各种实施例,控制器执行的用于实现用于网络HA的BGP的方法的流程图。
图15是根据本申请的各种实施例,NE执行的用于实现用于网络HA的BGP的方法的流程图。
图16是根据本申请的各种实施例,实现为控制器的装置的图示,所述控制器用于执行用于网络HA的BGP。
图17是根据本申请的各种实施例,实现为NE的装置的图示,所述NE用于执行用于网络HA的BGP。
具体实施方式
首先应理解,尽管下文提供了一个或多个实施例的说明性实现方式,但所公开的系统和/或方法可以使用任何数量的技术来实现。本申请决不应限于下文所说明的说明性实现方式、附图和技术,包括本文所说明并描述的示例性设计和实现方式,而是可以在所附权利要求书的范围以及其等效物的完整范围内修改。
图1是根据本申请的各种实施例,用于实现用于网络高可用性(highavailability,HA)的BGP的控制器集群网络100的图示。控制器集群网络100包括网络103和控制器109A-B的集群106。
控制器集群网络100包括通过链路119互连的NE 110-116。NE 110-116可以是物理设备,例如路由器、网桥、虚拟机、网络交换机。NE 110-116也可以是逻辑设备,例如虚拟机,用于根据各种路由协议执行交换和路由。如本文所述,NE 110-116用于实现BGP。BGP在Y.Rekhter等人于2006年1月在域间路由工作组(Inter-Domain Routing Working Group,IDR WG)请求意见稿(Request for Comments,RFC)4271中发布的题为“边界网关协议4(BGP-4)(A Border Gateway Protocol 4(BGP-4))”的文章中进一步定义(以下简称“RFC4271”)。
互连NE 110-116的链路119可以是互连NE 110-116中的每个NE的有线或无线链路,或接口。链路119中的每个链路用于根据各种路由协议(例如BGP)转发流量。
集群106包括至少两个控制器109A和109B,通过链路121互连。虽然图1示出了集群106包括两个控制器109A-B,但应当理解,集群106可以包括任何数量的控制器109A-B。与链路119类似,链路121可以是互连控制器109A和109B的有线或无线链路或接口。链路121用于在控制器109A与109B之间转发流量。
每个控制器109A-B可以实现为中央实体,用于控制控制器集群网络100中的NE110-116。在一个实施例中,每个控制器109A-B可以实现为SDN控制器,这在C.Filsfils于2018年7月在IETF RFC 8402中提交的题为“分段路由架构(Segment RoutingArchitecture)”的文章中进一步描述。在另一个实施例中,每个控制器109A-B可以实现为路径计算单元(path computation element,PCE),这在E.Crabbe于2017年12月在互联网工程任务组(Internet Engineering Task Force,IETF)请求意见稿(Request forComments,RFC)8281中发布的题为“有状态PCE模型中PCE发起的LSP建立的路径计算元件通信协议(PCEP)扩展”的文章中进一步描述。在另一个实施例中,每个控制器109A-B可以实现为应用层流量优化(application layer traffic optimization,ALTO)服务器,这在R.Alimi于2014年9月在IETF RFC 7285中提交的题为“应用层流量优化(ALTO)协议(Application Layer Traffic Optimization(ALTO)Protocol)”的文章中进一步描述。
在控制器集群网络100中,单个控制器109A-B充当控制器集群网络100的主控制器,负责控制和管理网络103中的NE 110-116。不用作主控制器的其它控制器109A-B充当控制器集群网络100中的备份控制器。为此,集群106中的每个控制器109A-B在本地存储在控制器109A-B处的状态数据库124中维护关于每个NE 110-116的相同的最新信息。如图1所示,控制器109A存储具有关于网络103中NE 110-116的最新信息的状态数据库124。类似地,控制器109B存储具有关于网络103中NE 110-116的最新信息的相同状态数据库124。
虽然集群106包括多个控制器109A-B,但NE 110-116将集群106视为单个控制器,因为NE 110-116中的一个或多个NE仅与单个控制器(即主控制器)通信。这样一来,NE 110-116不会维护关于集群106内不同控制器109A-B的信息。相反,NE 110-116可以仅维护关于在NE 110-116中的一个或多个NE与控制器集群网络100的主控制器之间建立的链路的信息。
在图1所示的示例中,控制器109A是主控制器(本文有时称为“主控制器109A”)。控制器109A与网络103中的一个或多个NE 110-116建立链路127、128和129。链路127、128和129可以类似于链路119和121,因为链路127、128和129可以是分别将控制器109A与NE 114、110和111互连的有线或无线链路或接口。
在图1中,链路127将主控制器109A与NE 114互连,链路128将主控制器109A与NE110互连,链路129将主控制器109A与NE 111互连。在控制器集群网络100中,链路127-129表示在主控制器109A与NE 114、110和111之间建立的BGP会话。因此,链路127-129在本文也分别称为BGP会话127-129。
为了建立BGP会话127-129,主控制器109A和NE 114、110和111根据RFC 4271交换OPEN消息。主控制器109A向NE 114、110和111发送OPEN消息。每个OPEN消息包括用于在主控制器109A与NE 114、110和111之间协商和建立BGP会话127-129的信息。例如,OPEN消息包括主控制器109A能够实现的BGP版本、BGP标识、抑制计时器以及一个或多个可选参数。类似地,NE 114、110和111中的每个NE都向主控制器109A发送OPEN消息。NE 114、110和111发送的OPEN消息包括用于在主控制器109A与NE 114、110和111之间协商和建立BGP会话127-129的信息。例如,OPEN消息包括相应的NE 114、110和111能够实现的BGP版本、BGP标识、抑制计时器以及一个或多个可选参数。当主控制器109A与NE 114、110和111的特性和能力兼容时,在主控制器109A与NE 114、110和111中的每个NE之间建立BGP会话127-129。这样一来,控制器109A和NE 114、110和114是控制器集群网络100中的BGP扬声器。虽然图1中仅示出了建立三个BGP会话127-129,但应当理解,主控制器109A可以与任何数量的NE 110-116建立BGP会话。
在控制器集群网络100中,仅集群106中的控制器109A与NE 114、110和111建立BGP会话127-129。集群106中不是主控制器109A的其它控制器109B不会与网络103中的任何NE110-116建立BGP会话127-129。主控制器109A负责与NE 110-116通信以控制网络103,并且主控制器109A向其它控制器109B发送相关信息,以在集群106中的所有控制器109A-B中维护状态数据库124。
例如,主控制器109A可以在网络103中提供路径122。如图1所示,路径122流经NE110、113和112。为了提供路径122,主控制器109A可以通过BGP会话128向NE 110发送具有关于路径122的信息的消息。例如,根据S.Previdi等人于2020年5月提交的题为“BGP中的广告分段路由策略(Advertising Segment Routing Policies in BGP)”的IETF文档,该消息可以编码为BGP UPDATE消息,BGP UPDATE消息可以包括分段路由(segment routing,SR)路径属性字段,该字段携带描述路径122(可以是SR路径122)的NE 113和NE 112的段标识(segment identifier,SID)等信息。NE 110从主控制器109A接收到消息之后,更新本地转发表以指示关于SR路径122的信息。在更新本地转发表以指示关于SR路径122的信息后,路径122上的NE 110、113和112已经成功地在网络103中提供路径122。
在成功提供路径122之后,NE 110、113和112中的一个或多个NE生成反馈消息,该反馈消息指示路径122已由路径122上的相应NE 110、113和112成功提供。在一种情况下,SR路径122的头部或入口NE 110生成指示路径122已成功提供的反馈消息。在另一种情况下,从NE 110到控制器的充当保活(keep live)消息的任何BGP消息都可以作为指示SR路径122已经成功提供的反馈消息。在另一种情况下,主控制器109A与路径122上的每个NE 110、113和112之间可以建立链路,每个NE 110、113和112通过这些链路将反馈消息发回主控制器109A。在另一种情况下,NE 112和113将反馈消息发送回NE 110(作为BGP扬声器)。然后,NE110通过BGP会话128将指示路径122已经在NE 110、113和112之间成功提供的反馈消息转发给主控制器109A。
在主控制器109A接收到反馈消息之后,控制器109A更新本地状态数据库124,以指示路径122已经在网络103中的NE 110、113和112上成功提供。为了确保集群106中的所有控制器109A-B维护公共状态数据库124,主控制器109A通过链路121将反馈消息中的信息转发到控制器109B。类似地,控制器109B更新本地状态数据库124,以指示路径122已经在网络103中的NE 110、113和112上成功提供。
在此阶段,所有控制器109A-B维护公共状态数据库124。随后,当主控制器109A发生故障时,控制器109B被提升为控制器集群网络100的主控制器109B。例如,当控制器109B检测到主控制器109A发生故障时,控制器109B确定控制器109B被提升为负责控制网络103的主控制器109B。在这种情况下,控制器109B接管与网络103中的一个或多个NE 110-116的BGP会话127-129,并开始控制网络103,NE 110-116不知道主控制器从控制器109A变更为控制器109B。
但是,在某些情况下,控制器109B可能错误地检测到主控制器109A已经发生故障。在这种情况下,控制器109B开始充当主控制器,而控制器109A仍然充当网络103的主控制器。例如,控制器109B可能检测到控制器109A与109B之间的链路121发生故障,并假设主控制器109A也发生故障。但是,实际上,主控制器109A可能仍然在正常运行并控制网络103中的NE 110-116。然后,控制器109B可能确定控制器109B是网络103的主控制器109B,并且还开始控制网络103中的NE 110-116。发生这种情况时,网络103由两个不同的主控制器109A和109B控制,这可能会导致网络103发生故障,因为主控制器109A和109B对网络103内的NE110-116进行编程的方式不一致。因此,在控制器109A-B的集群106内发生的任何故障或问题也可能导致整个网络103崩溃或发生故障。
本文公开了实施例,这些实施例旨在通过配置控制器109A-B中的每个控制器和网络103中的一个或多个NE 110-116来实现用于网络HA的BGP,防止当控制器109A-B的集群106内发生故障时网络103发生故障。为了实现用于网络HA的BGP,集群106中的所有控制器109A-B和一个或多个NE 110-116建立带扩展的BGP会话(本文也称为“增强BGP会话”)。NE110-116中的一个或多个NE与集群106中的所有控制器109A-B通信,而不是仅与控制器集群网络100中的主控制器109A通信。
在一个实施例中,一个或多个NE 110-116与集群106中的每个控制器109A-B建立增强BGP会话。在图1所示的示例中,控制器109A-B和/或NE 110-116选择NE 110和111作为网络103中与集群106中的所有控制器109A-B通信的两个指定NE。NE 110和111可以基于标识NE 110-116中的每个NE的标识(identifier,ID)来选择。例如,网络103中具有最高ID的NE 110和111被指定用于与集群106中的所有控制器109A-B通信。例如,NE 110和111在网络103中可以分别具有最高ID和第二高ID。这样一来,NE 110和111中的每个NE与集群106中的每个控制器109A-B建立增强BGP会话。
如图1所示,NE 110通过链路130耦合到控制器109A,并通过链路132耦合到控制器109B。NE 111通过链路131耦合到控制器109A,并通过链路133耦合到控制器109B。链路130-133与链路127-129类似。链路130-133中的每个链路代表增强BGP会话,因此,在本文也可以称为增强BGP会话130-133,通过这些会话,可以传输带扩展的BGP消息140。在一个实施例中,增强BGP会话130-133通过NE 110和111与控制器109A和109B之间的互联网协议(Internet Protocol,IP)路径建立和维护。增强BGP会话130-133在本文也可以称为“信息信道130-133”。
为了建立增强BGP会话130-133,控制器109A和109B中的每个控制器与NE 110和111交换OPEN消息。OPEN消息可以包括用于在控制器109A和109B与NE 110和111之间协商和建立增强BGP会话130-133的信息。例如,OPEN消息可以包括控制器109A-B和NE 110-111能够实现的BGP版本、BGP标识、抑制计时器和一个或多个可选参数。在一个实施例中,OPEN消息包括控制器能力三元组,当包括在OPEN消息中时,该控制器能力三元组指示发送OPEN消息的控制器109A-B或NE 110-111能够实现用于网络HA的BGP。能力三元组包括三个元素:1字节的能力代码、1字节的能力长度和能力值。代码的值表示能力。长度的值表示能力值的大小,以字节为单位。图4A示出了在本文公开的实施例中可以发送的控制器能力三元组的示例。当控制器109A-B和NE 110-111的特性和能力兼容时,在控制器109A-B与NE 110-111之间建立增强BGP会话130-133。
在图1所示的实施例中,主控制器109A分别与NE 110建立BGP会话128和增强BGP会话130作为单独的会话(例如,具有单独的OPEN消息集)。在另一个实施例中,主控制器109A可以仅与NE 110建立增强BGP会话130,该会话将充当主控制器109A与NE 110之间的控制信道和信息信道。
类似地,图1所示的实施例示出,主控制器109A分别与NE 111建立BGP会话129和增强BGP会话131作为单独的会话。在另一个实施例中,主控制器109A可以仅与NE 111建立增强BGP会话131,该会话将充当主控制器109A与NE 111之间的控制信道和信息信道。
在控制器集群网络100中建立了增强BGP会话130-133之后,控制器109A-B和NE110-111彼此交换BGP消息140,以传输描述控制器109A-B的集群106的信息。在一个实施例中,控制器109A生成包括指示控制器109A和集群106的状态的信息的第一BGP消息140。第一BGP消息140可以指示控制器109A是否为主控制器109A。第一BGP消息140还可以包括控制器109A相对于集群106中的其它控制器109B的位置。该位置是指控制器109A在集群106内控制器109A-B的优先级顺序内的当前或预期位置。
优先级顺序指示控制器109A-B的顺序,通过该顺序从集群106中选择主控制器109A。例如,控制器集群网络100的运营商可以设置集群106中每个控制器109A-B的优先级,从而指示从最高优先级到最低优先级,控制器109A-B的优先级顺序。具有最高优先级(例如,优先级200)的控制器109A是第一主控制器109A,具有下一个最高优先级(例如,优先级180)的辅助控制器109B是第一主控制器109A的备份控制器,具有下一个最高优先级(例如,优先级178)的第三控制器是第一主控制器109A和第二控制器109B的备份控制器,依此类推。
控制器109A-B相对于集群106中的其它控制器109A-B的位置是指集群106的控制器109A-B的优先级顺序内的当前或预期位置。在图1所示的示例中,优先级顺序可以是{控制器109A,控制器109B}。主控制器109A的位置是1,因为控制器109A在优先级顺序内的当前位置是第一。辅助控制器109B的位置是2,因为控制器109B在优先级顺序内的当前位置是第二。
在一个实施例中,第一BGP消息140包括控制器109A相对于集群106中的其它控制器109B的旧位置。旧位置是指控制器109A在控制器109A-B的优先级顺序内的先前位置。例如,假设以前,优先级顺序是{另一个控制器X,控制器109A,控制器109B},然后另一个控制器X发生故障。在这种情况下,控制器109A成为主控制器109A,控制器109A的旧位置是2,因为控制器109A在优先级顺序中的先前位置是第二。
在一个实施例中,第一BGP消息140包括控制器109A的优先级。如上所述,控制器集群网络100的运营商可以预先配置集群106中每个控制器109A-B的优先级。
在一个实施例中,第一BGP消息140包括集群106中控制器109A-B的数量。在图1所示的示例中,控制器109A-B的数量是两个。但是,应当理解,集群106可以包括任何数量的控制器109A-B。
在一个实施例中,第一BGP消息140包括集群106中每个控制器109A-B的控制器ID。在图1所示的示例中,第一BGP消息140包括控制器109A的控制器ID和控制器109B的控制器ID。应当理解,第一BGP消息140可以包括本文未描述的其它信息。下文将参考图5A-5B至图7A-7C进一步描述第一BGP消息140的示例。
在生成第一BGP消息140之后,主控制器109A通过增强BGP会话130向NE 110发送第一BGP消息140,并通过增强BGP会话131向NE 111发送第一BGP消息140。NE 110通过增强BGP会话132将第一BGP消息140转发给控制器109B。NE 111还通过增强BGP会话133将第一BGP消息140转发给控制器109B。将第一BGP消息140从NE 110和111发送到控制器109B的冗余用于进一步确保当NE 110和NE 111中的一个发生故障时,控制器109B从控制器109A接收第一BGP消息140。控制器109B接收第一BGP消息140,并更新状态数据库124,以包括指示第一BGP消息140中携带的控制器109A和集群106的状态的信息。
类似地,控制器109B生成第二BGP消息140。第二BGP消息140包括与第一BGP消息140类似的信息,不同之处在于第二BGP消息140包括指示控制器109B和集群106的状态的信息。在生成第二BGP消息140之后,控制器109B通过增强BGP会话133向NE 111发送第二BGP消息140,并通过增强BGP会话132向NE 110发送第二BGP消息140。NE 110通过增强BGP会话130将第二BGP消息140转发给控制器109A。NE 111还通过增强BGP会话131将第二BGP消息140转发给控制器109A。从NE 110和111发送第二BGP消息140的冗余用于进一步确保当NE 110和NE 111中的一个发生故障时,控制器109A从控制器109B接收第二BGP消息140。控制器109A接收第二BGP消息140,并更新状态数据库124,以包括指示第二BGP消息140中携带的控制器109B和集群106的状态的信息。
在一些实施例中,当相应控制器109A-B或集群106的状态发生更新时,每个控制器109A-B发送具有关于相应控制器109A-B和集群106的状态的更新信息的后续BGP消息140。类似地,当集群106发生故障或出现问题时,每个控制器109A-B发送具有关于相应控制器109A-B和集群106的状态的更新信息的后续BGP消息140。
在图1所示的这一实施例中,两个控制器109A-B维护关于集群106中所有控制器109A-B的状态的信息,并维护与网络103中的两个NE 110-111的增强BGP会话130-133。在该实施例中,当互连控制器109A-B的链路121发生故障时,控制器109B将不会错误地充当主控制器。控制器109B将在检测到链路121处的故障后等待预定的时间段,以确定是否通过NE110或NE 111从控制器109A接收后续BGP消息140。
例如,当主控制器109A检测到链路121的故障时,主控制器109A通过增强BGP会话130向NE 110发送第三BGP消息140,并通过增强BGP会话131向NE 111发送第三BGP消息140。第三BGP消息140指示主控制器109A检测到链路121处的故障,因此不再耦合到控制器109B。在该示例中,第三BGP消息140可以指示集群106中的控制器109A-B的数量是一个,因为控制器109A不能再通过链路121与控制器109B通信,因此,假设控制器109B关闭。NE 110通过增强BGP会话132将第三BGP消息140转发给控制器109B,NE 111通过增强BGP会话133将第三BGP消息140转发给控制器109B。
在一个实施例中,控制器109B等待预定的时间段,以通过NE 110和/或111从控制器109A接收第三BGP消息140。当控制器109B接收到第三BGP消息140时,控制器109B确定主控制器109A仍然活动并正常运行,因此,将不充当主控制器。当控制器109B在预定时间段内没有接收到第三BGP消息140时,控制器109B充当主控制器,并开始控制网络103。
这样一来,当集群106中的多个控制器109A-B充当控制器集群网络100中的主控制器时,本申请的实施例防止网络103发生故障。为此,本申请的实施例增加了控制器集群网络100内NE 110-116的寿命,并提高了控制控制器集群网络100的准确性。
图2是根据本申请的各种实施例,用于实现用于网络HA的BGP的另一个控制器集群网络200的图示。控制器集群网络200与图1的控制器集群网络100类似,不同之处在于集群106包括两个以上控制器109A-D。控制器109A-D类似于上文参考图1描述的控制器109A-B。
控制器109A-D通过链路121A-E互连。链路121A-E类似于上文参考图1描述的链路121。链路121A将控制器109A和控制器109B互连。链路121B将控制器109A和控制器109C互连。链路121C将控制器109A和控制器109D互连。链路121D将控制器109C和控制器109D互连。链路121E将控制器109B和控制器109D互连。
图2所示的网络103与图1的网络103类似,因为网络103包括通过链路119互连的NE110-116。但是,在网络103中,只有一个NE 111与集群106中的控制器109A-D建立增强BGP会话131、133、203和206。例如,控制器109A-D和/或NE 110-116确定NE 111在所有NE 110-116中具有最高ID,因此,NE 111被指定用于与集群106中的控制器109A-D建立增强BGP会话131、133、203以及206。
与图1的控制器集群网络100类似,控制器109A与NE 111建立增强BGP会话131,控制器109B与NE 111建立增强BGP会话133。与图1的控制器集群网络100不同,NE 111还分别与控制器109C和109D建立增强BGP会话203和206。这样一来,控制器109A-D中的每个控制器与NE 111建立增强BGP会话131、133、203和206。
在建立增强BGP会话131、133、203和206之后,控制器109A-D中的每个控制器生成BGP消息140,该BGP消息包括描述相应控制器109A-D和集群106的状态的信息。由控制器109A-D发送的BGP消息140可以指示相应控制器109A-D是否为主控制器。BGP消息140还可以包括相应控制器109A-D的位置、相应控制器109A-D的旧位置、相应控制器109A-D的优先级、集群106中控制器109A-D的数量,以及网络103中控制器109A-D中的每个控制器的控制器ID。应当理解,BGP消息140可以包括本文未描述的其它信息。下文将参考图5A-5B至图7A-7C进一步描述BGP消息140的示例。
在某些情况下,可能沿着互连控制器109A-D的链路121A-E中的一个或多个链路发生故障215。在图2所示的示例中,沿着链路121A、121C和121D发生故障215。在发生故障215之后,控制器109A和控制器109C通过链路121B互连,控制器109B和控制器109D通过链路121E互连。即,控制器109A和109C不再连接到控制器109B或控制器109D,因此,控制器109A和109C假设控制器109B和控制器109D已经发生故障。类似地,控制器109B和109D不再连接到控制器109A或控制器109C,因此,控制器109B和109D假设控制器109A和控制器109C已经发生故障。这样一来,其余互连的控制器109A和109C以及控制器109B和109D形成两个单独的控制器组210A和210B。控制器组210A包括通过链路121B互连的控制器109A和控制器109C。控制器组210B包括通过链路121E互连的控制器109B和控制器109D。
每个控制器组210A-B不知道另一个控制器组210A-B的存在。在这种情况下,两个控制器组210A-B确定每个控制器组210A-B内的主控制器,从而导致两个主控制器控制网络103。如上所述,当多个主控制器控制网络103时,不同的主控制器可能不一致地对NE 110-116进行编程,这可能导致网络103作为一个整体发生故障。
本文公开的实施例通过网络103中的NE 111从控制器109A-D中的每个控制器传输BGP消息140,防止网络103发生这种故障。在一个实施例中,在沿着链路121A、121C和121D检测到故障215之后,控制器109A-D中的每个控制器等待预定时间段,以在确定是否重新分配集群106中的另一个主控制器之前,从另一个控制器组210A-B中的控制器109A-D接收BGP消息140。
例如,控制器109A可以是控制器集群网络200中的主控制器109A。在集群106内发生故障215之后,控制器109B最初确定与主控制器109A的连接已经发生故障。然后,控制器109B等待预定的时间段,以从NE 111接收来自控制器109A的BGP消息140。
在此期间,控制器109A检测链路121A、121C和121D的故障215。然后,控制器109A生成BGP消息140,例如,该BGP消息指示集群106中的控制器109A-B的数量现在是两个,因为控制器109A不再连接到控制器109B和109D。BGP消息140还可以包括控制器109A和109C的ID。控制器109A通过增强BGP会话131将BGP消息140发送到NE 111。
NE 111仍然分别与其它控制器109C、109B和109D保持增强BGP会话203、206和133。然后,NE 111分别通过增强BGP会话203、206和133将BGP消息140转发给控制器109C、109B和109D。当控制器109B接收到指示在预定的时间段内主控制器109A仍然活动并且组210A中存在两个控制器的BGP消息140时,控制器109B不充当主控制器。相反,当控制器109B在预定的时间段内不等待接收BGP消息140时,控制器109B不充当控制器集群网络200中的主控制器109B。
图3是根据本申请的各种实施例,用于实现用于网络HA的BGP的NE 300的图示。在一个实施例中,NE 300可以实现为NE 110-116中的任何一个NE或控制器109A-D中的任何一个控制器。
NE 300包括端口320、收发单元(Tx/Rx)310、处理器330和存储器333。处理器330包括控制器模块334。端口320与Tx/Rx 310耦合,Tx/Rx 310可以是发送器、接收器或其组合。Tx/Rx 310可以通过端口320发送和接收数据。处理器330用于处理数据。存储器333用于存储用于实现本文所描述的实施例的数据和指令。NE 300还可以包括与端口320和Tx/Rx310耦合的电光(electrical-to-optical,EO)组件和光电(optical-to-electrical,OE)组件,用于接收和发送电信号和光信号。
处理器330可以通过硬件和软件实现。处理器330可以实现为一个或多个中央处理单元(central processing unit,CPU)和/或图形处理单元(graphics processing unit,GPU)芯片、逻辑单元、核(例如,多核处理器)、现场可编程门阵列(field-programmablegate array,FPGA)、专用集成电路(application specific integrated circuit,ASIC)和数字信号处理器(digital signal processor,DSP)。处理器330与端口320、Tx/Rx 310和存储器333通信。控制器模块334由处理器330实现,以执行用于实现本文所述的各种实施例的指令。例如,控制器模块334用于建立增强BGP会话130-133、203和206,并传输BGP消息140。包括控制器模块334可以改进NE 300的功能。控制器模块334还可以使NE 300转换到不同状态。或者,控制器模块334实现为存储在存储器333中的指令。
存储器333包括磁盘、磁带机或固态硬盘中的一个或多个,可以用作溢出数据存储设备,用于在选择执行程序时存储此类程序,并且存储在程序执行过程中读取的指令和数据。存储器333可以是易失性和非易失性的,并且可以是只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、三态内容寻址存储器(ternarycontent-addressable memory,TCAM)和静态随机存取存储器(static random-accessmemory,SRAM)。
在一个实施例中,当NE 300为控制器109A-D时,存储器333存储状态数据库124、能力303、位置306、旧位置309、控制器109A-D的数量312、控制器ID 315和优先级318。状态数据库124维护关于网络103中的NE 110-116的最新信息和关于集群106中的控制器109A-D的最新信息。能力303可以指示NE 300是否能够实现用于网络HA的BGP(例如,建立增强BGP会话130-133、203和206,并发送带扩展的BGP消息140)。
位置306是指NE 300在集群106内控制器109A-D的优先级顺序内的当前或预期位置。旧位置309是指NE 300在集群106内控制器109A-D的优先级顺序内的先前位置。数量312是指集群106内控制器109A-D的数量。
控制器ID 315是标识集群106中的控制器109A-D的每个控制器的ID或值。在一个实施例中,控制器ID 315包括在集群106中可到达的控制器109A-D的ID。在另一个实施例中,控制器ID 315包括集群106中不可达或已经发生故障的控制器109A-D的ID。优先级318是指示NE 300相对于集群106中的其它控制器109A-D的优先级的值。
应理解,通过编程和/或将可执行指令加载到NE 300上,处理器330和/或存储器333中的至少一个被改变,将NE 300部分地转换为具有本申请所教导的新功能的特定机器或装置(例如多核转发架构)。可以通过将可执行软件加载至计算机来实现的功能可以通过公知设计规则转换成硬件实现,这在电力工程和软件工程领域是基础的。决定使用软件还是硬件来实施一个概念通常取决于对设计稳定性及待生产的单元数量的考虑,而不是从软件领域转换至硬件领域中所涉及的任何问题。通常,经常变动的设计更适于在软件中实现,因为重新编写硬件实现比重新编写软件设计更为昂贵。通常,将大量生产的稳定设计更适于在硬件中实现,例如在ASIC中实现,因为对于大型生产运行,硬件实现可能比软件实现更便宜。通常,设计可以以软件形式开发和测试,然后通过公知设计规则将其转换为ASIC中的等效硬件实现,该硬件实现硬连接软件的指令。特定机器或装置与由新ASIC控制的机器的方式相同,同样,已经编程和/或加载有可执行指令的计算机可以被视为特定机器或装置。
图4A至图4D是根据本申请的各种实施例,用于对控制器109A-D和NE 110-116的能力303进行编码的类型-长度-值(type-length-value,TLV)的图。具体而言,图4A示出了用于指示控制器109A-D或NE 110-116的能力的控制器能力三元组的第一实施例。图4B示出了用于指示控制器109A-D或NE 110-116的能力的控制器能力三元组的第二实施例。图4C示出了包括图4A的控制器能力三元组或图4B的控制器能力三元组的能力可选参数。图4D示出了包括图4C的能力可选参数的OPEN消息。
现在参考图4A,示出了用于指示控制器109A-D或NE 110-116的能力的控制器能力三元组400的第一实施例。如上文参考图1和图2所述,控制器109A-D和/或NE 110-111交换OPEN消息,以相互建立增强BGP会话130-133、203和206。在一个实施例中,当发送OPEN消息的控制器109A-D或NE 110-111能够实现用于网络HA的BGP(例如,建立增强BGP会话130-133、203和206,并发送带扩展的BGP消息140)时,控制器109A-D或NE 110-111在OPEN消息中包括控制器能力三元组400。
如图4A所示,控制器能力三元组400包括1个八位字节的能力代码401、1个八位字节的能力长度402和标志403。能力代码401是将由互联网号码分配局(Internet AssignedNumbers Authority,IANA)分配的值。能力代码401中的值表示控制器能力三元组400携带NE 110-116或控制器109A-D的能力303。能力长度402表示标志403的长度。标志403包括32位,其中1位是C位404。C位404被设置为指示控制器109A-D还是NE 110-111正在发送控制器能力三元组400。例如,当控制器109A-D发送控制器能力三元组400时,C位404可以设置为1,当NE 110-111发送控制器能力三元组400时,C位404可以设置为0。或者,当控制器109A-D发送控制器能力三元组400时,C位404可以设置为0,当NE 110-111发送控制器能力三元组400时,C位404可以设置为1。
现在参考图4B,示出了用于指示控制器109A-D或NE 110-116的能力的控制器能力三元组425的第二实施例。在一个实施例中,当发送OPEN消息的控制器109A-D或NE 110-111能够实现用于网络HA的BGP(例如,建立增强BGP会话130-133、203和206,并发送带扩展的BGP消息140)时,控制器109A-D或NE 110-111在OPEN消息中包括控制器能力三元组425。
如图4B所示,控制器能力三元组425包括1个八位字节的能力代码426、1个八位字节的能力长度427、控制器地址族标识(address family identifier,AFI)428、控制器子地址族标识(sub-address family identifier,SAFI)429和标志403。能力代码426类似于图4A的能力代码401。能力长度427类似于图4A的能力长度402。
控制器AFI 428是将由互联网号码分配局(Internet Assigned NumbersAuthority,IANA)分配的16位值。控制器SAFI 429是将由IANA分配的8位值。控制器AFI 428和SAFI 429是定义为携带关于集群106中控制器109A-D的信息的值。标志403包括8位,其中1位是C位404。如上所述,C位404被设置为指示控制器109A-D还是NE 110-111正在发送控制器能力三元组425。在一些实施例中,图4A的控制器能力三元组400和图4B的控制器能力三元组425基于由J.Scudder等人于2009年2月发布的题为“具有BGP-4的能力通告”的RFC5492(以下简称“RFC 5492”)定义的能力可选参数。
现在参考图4C,示出了包括图4A的控制器能力三元组400或图4B的控制器能力三元组425的能力可选参数450。能力可选参数450包括参数类型451、参数长度452和多个能力的三元组,包括图4A的控制器能力三元组400或图4B的控制器能力三元组425。参数类型451是设置为2的8位字段,以指示TLV是能力可选参数450。参数长度452是指示多个能力的三元组的长度的8位字段。
现在参考图4D,示出了根据RFC 4271的OPEN消息475,包括图4C的能力可选参数450。在一个实施例中,当发送OPEN消息475的控制器109A-D或NE 110-111能够实现用于网络HA的BGP(例如,建立增强BGP会话130-133、203和206,并发送带扩展的BGP消息140)时,控制器109A-D或NE 110-111在OPEN消息475中包括图4C的能力可选参数450。图4C的能力可选参数450包括图4A的控制器能力三元组400或图4B的控制器能力三元组425。
如图4D所示,OPEN消息475包括版本476、我的自治系统字段477、保持时间字段478、BGP标识479、可选参数长度480和包括能力可选参数450的可选参数。版本476表示BGP的协议版本号,可以指示当前BGP版本号为4。我的自治系统字段477指示发送OPEN消息475的控制器109A-D或NE 110-11的自治系统编号。保持时间字段478指示发送OPEN消息475的控制器109A-D或NE 110-11建议保持定时器的值的秒数。BGP标识479指示发送OPEN消息475的控制器109A-D或NE 110-11的BGP标识,可以是发送OPEN消息475的控制器109A-D或NE110-11的IP地址。可选参数长度480表示包括在OPEN消息475中的可选参数的总长度。
图5A至图5B是根据本申请的各种实施例,通过控制器集群网络100和200通信的BGP消息140的内容的图示。具体而言,图5A示出了BGP消息140的内容,图5B示出了用于对携带BGP消息140内容的控制器网络层可达信息(network layer reachabilityinformation,NLRI)字段进行编码的TLV。
现在参考图5A,示出了根据本申请的各种实施例,通过控制器集群网络100和200通信的BGP消息140的内容。如上文参考图1和图2所述,控制器109A-D生成BGP消息140,并通过增强BGP会话130-133、203和206,通过NE 110-111转发BGP消息140,以到达集群106中的其它控制器109A-D。
在一个实施例中,BGP消息140包括控制器网络层可达信息(network layerreachability information,NLRI)503。控制器NLRI 503描述生成BGP消息140的控制器109A-D(本文也称为“始发控制器109A-D”)的状态。控制器NLRI 503还描述了集群106中的其它控制器109A-D。如图5A所示,控制器NLRI 503包括主控制器标志(C)506、位置306、旧位置309、控制器数量312、优先级318,以及标识集群106中所有控制器109A-D的控制器ID315A-N。应当理解,BGP消息140可以包括图5A中没有以其它方式示出的附加信息。
在一个实施例中,主控制器标志(C)506是被设置为指示始发控制器109A-D是否为主控制器109A的标志或位。例如,主控制器109A生成BGP消息140,其中,主控制器标志(C)506设置为1。
位置306是指控制器109A在集群106内控制器109A-D的优先级顺序内的当前或预期位置。优先级顺序指示从集群106中选择主控制器109A的顺序。例如,控制器集群网络100的运营商可以设置集群106中每个控制器109A-D的优先级,从而指示从最高优先级到最低优先级,控制器109A-D的优先级顺序。具有最高优先级(例如,优先级200)的控制器109A是第一主控制器109A,具有下一个最高优先级(例如,优先级188)的第二控制器109B是第一主控制器109A的备份控制器,具有下一个最高优先级(例如,优先级180)的第三控制器109C是第一主控制器109A和第二控制器109B的备份控制器,以及具有下一个最高优先级(例如,优先级178)的第四控制器109D是第一主控制器109A、第二控制器109B和第三控制器109C的备份控制器。在本示例中,优先级顺序可以是{控制器109A,控制器109B,控制器109C和控制器109D}。因此,主控制器109A的位置306为1,辅助控制器109B的位置306为2,第三控制器109C的位置306为3,第四控制器109D的位置306为4。
在一个实施例中,控制器109A-D的位置306因控制器109A-D的集群106发生故障而改变。旧位置309是指在控制器109A-D的优先级顺序内始发控制器109A-D相对于集群106中的其它控制器109A-D的旧位置。例如,当控制器109A发生故障时,控制器109B成为主控制器,控制器109B的旧位置309为2。
控制器109A-D的数量312是指集群106中控制器109A-D的数量或计数。在图2所示的示例中,集群106包括四个控制器109A-D,因此,数量312设置为4。优先级318是指始发控制器109A-D的优先级,其可以由控制器集群网络100或200的运营商分配。
控制器ID 315A-N是标识集群106中的控制器109A-D的每个控制器的ID。控制器ID315A-N可以是集群106中控制器109A-D的每个控制器的标识、标签或地址。例如,BGP消息140可以包括控制器109A-D的IP地址作为控制器ID 315A-D。
现在参考图5B,示出了用于对携带图5A的NLRI 503的控制器NLRI字段510进行编码的TLV。控制器NLRI字段510与BGP UPDATE消息中携带的RFC 4271定义的NLRI字段的编码类似,不同之处在于控制器NLRI字段510携带控制器NLRI 503。
如图5B所示,控制器NLRI字段510包括类型字段511、长度字段512、标志513、位置字段515、控制器数量字段516(图5B中示为“无控制器”)、旧位置字段517、保留位518、优先级字段519和连接的控制器ID字段520A-N。应当理解,控制器NLRI字段510可以包括图5B中没有以其它方式示出的其它字段。
类型字段511是由IANA分配的16位字段,用于指示控制器NLRI 503携带在控制器NLRI字段510中。长度字段512是16位字段,以八位字节表示不包括类型字段511和长度字段512的控制器NLRI字段510的长度。标志513包括8位,其中,1个标志定义为C位514。C位514指示主控制器标志(C)506。位置字段515是指示始发控制器109A-D的位置306的8位字段。控制器数量字段516是指示集群106中控制器109A-D的数量312的8位字段。旧位置字段517是指示始发控制器109A-D的旧位置309的8位字段。保留位518包括设置为零并在接收时忽略的24个位。优先级字段519是指示始发控制器109A-D的优先级318的8位字段。连接的控制器ID字段520A-N是指示集群106中控制器109A-D的控制器ID 315A-N的32位字段。
在一个实施例中,控制器NLRI 503携带在现有的BGP NLRI中,例如多协议可达NLRI(MP_REACH_NLRI)或多协议不可达NLRI(MP_UNREACH_NLRI)。MP_REACH_NLRI和MP_UNREACH_NLRI都在T.Bates等人于2007年1月提交的题为“BGP-4的多协议扩展(Multiprotocol Extensions for BGP-4)”的RFC 4760(以下简称“RFC 4760”)中定义。
图6A至图6C是根据本申请的各种实施例,用于将BGP消息140编码为现有BGP NLRI的TLV的图示。图6A是MP_REACH_NLRI的图示;图6B是MP_UNREACH_NLRI的图示;图6C是用于对图6B的MP_UNREACH_NLRI中携带的未达控制器NLRI字段进行编码的TLV的图示。
现在参考图6A,示出了BGP MP_REACH_NLRI 600,类似于RFC 4760定义的MP_REACH_NLRI,不同之处在于MP_REACH_NLRI 600携带图5B的控制器NLRI字段510。如图6A所示,MP_REACH_NLRI 600还包括控制器AFI字段601、控制器SAFI字段602、下一跳网络地址的长度字段603、下一跳的网络地址字段604、保留字段605和控制器NLRI字段510。
控制器AFI字段601是携带控制器AFI的2个八位字节字段,它是将由IANA分配的值。控制器AFI携带在MP_REACH_NLRI 600中时,指示MP_REACH_NLRI 600包括控制器NLRI字段510,该字段携带控制器NLRI 503。控制器SAFI字段602是携带控制器SAFI的1个八位字节字段,它也是将由IANA分配的值。控制器SAFI携带在MP_REACH_NLRI 600中时,也指示MP_REACH_NLRI 600包括控制器NLRI字段510,该字段携带控制器NLRI 503。下一跳网络地址的长度字段603、下一跳的网络地址字段604和保留字段605留空,因为它们与控制器NLRI字段510中携带的控制器NLRI 503无关。
在一个实施例中,MP_REACH_NLRI 600的控制器NLRI字段510中携带的控制器NLRI503指示关于集群106中在发送MP_REACH_NLRI 600时可到达或可用的控制器109A-D的信息。相反,控制器109A-D或NE 110-111发送MP_UNREACH_NLRI以指示关于集群106中不可达、不可用或已经发生故障的控制器109A-D的信息。
现在参考图6B,示出了BGP MP_UNREACH_NLRI 610,其指示关于集群106中不可达、不可用或已经发生故障的控制器109A-D的信息。BGP MP_UNREACH_NLRI 610类似于RFC4760定义的MP_UNREACH_NLRI,不同之处在于MP_UNREACH_NLRI 610携带未达控制器NLRI字段615。
如图6B所示,MP_UNREACH_NLRI 610包括控制器AFI字段601、控制器SAFI字段602和未达控制器NLRI字段615。未达控制器NLRI字段615类似于控制器NLRI字段510,不同之处在于未达控制器NLRI字段615仅携带关于集群106中不可达、不可用或已发生故障的控制器109A-D的信息。图6C示出了包括在MP_UNREACH_NLRI 610中的未达控制器NLRI字段615的示例。
现在参考图6C,示出了用于对包括在MP_UNREACH_NLRI 610中的未达控制器NLRI字段615进行编码的TLV。未达控制器NLRI字段615类似于图5B的控制器NLRI字段510,不同之处在于只有控制器109A-D的已经变得不可达、不可用或发生故障的控制器ID 315X包括在连接的控制器ID字段520X中。
例如,NE 111可以检测到与控制器109A的会话发生故障,并且NE 111可以基于源自控制器109A的BGP消息140生成包括MP_UNREACH_NLRI 610的BGP消息150,该MP_UNREACH_NLRI 610包括未达控制器NLRI字段615。然后,NE 111可以向其它控制器B-D发送BGP消息150。在接收到消息之后,其它控制器109B-D删除源自控制器109A的关于控制器的信息。未达控制器NLRI字段615包括指示控制器109A是主控制器的C位514、指示位置306为1的位置字段515、指示控制器109A-D的数量312为4的控制器数量字段516、指示控制器109A的旧位置309的旧位置字段517、指示控制器109A具有最高优先级318的优先级字段519,以及指示控制器109A-D的控制器ID 315的连接的控制器ID字段520X。
图7A至图7C是根据本申请的各种实施例,新BGP消息140或现有BGP消息140中的BGP通用头的图示。具体地,图7A示出了包括在BGP消息140中的BGP消息通用头。图7B示出了编码为新类型的BGP消息140的BGP消息140中包括的BGP消息通用头。图7C示出了包括在根据RFC 4271编码为BGP UPDATE消息的BGP消息140中的BGP消息通用头。
现在参考图7A,示出了BGP消息通用头700。BGP消息通用头700可以用作新类型的BGP消息140的报头,被定义为携带到控制器NLRI 503,并且可以用作现有BGP消息140(例如BGP UPDATE消息)的报头。如图7A所示,BGP消息通用头700包括标记字段701、长度字段702和类型字段703。标记字段701是设置为1的16个八位字节字段。长度字段702是指示BGP消息140(包括BGP消息通用头700)的总长度的2个八位字节字段。类型字段703是1个八位字节字段,携带由IANA定义的值。该值表示BGP消息140的类型。例如,第一值指示BGP消息140是新类型的BGP消息140,第二值指示BGP消息140是现有类型的BGP消息140,例如BGP UPDATE消息。
现在参考图7B,示出了新BGP消息140A,其被编码为新类型的BGP消息140A。新BGP消息140A包括BGP消息通用头700A,该BGP消息通用头包括类型字段703中的值,该值指示消息被编码为新类型的BGP消息140A。新BGP消息140A还包括MP_REACH_NLRI 600或MP_UNREACH_NLRI 610,这取决于新BGP消息140A是指示关于可达控制器109A-D还是不可达控制器109A-D的信息。如上所述,MP_REACH_NLRI 600包括控制器NLRI字段510,MP_UNREACH_NLRI 610包括未达控制器NLRI字段615。
现在参考图7C,示出了根据RFC 4271编码的现有BGP UPDATE消息140B。现有BGPUPDATE消息140B包括BGP消息通用头700B,该BGP消息通用头包括类型字段703中的值,该值指示消息被编码为现有类型的BGP消息140B。现有BGP UPDATE消息140B包括撤销路径长度字段753、撤销路径字段756、路径属性长度字段759和路径属性字段762。撤销路径长度字段753指示撤销路径的总长度,在该BGP UPDATE消息140B中,该字段可以设置为0,因为路径没有被撤销。撤销路径字段756留空,因为没有路径要由该BGP UPDATE消息140B撤销。路径属性长度字段759是指示路径属性字段762的总长度的2个八位字节字段。路径属性字段762包括MP_REACH_NLRI 600或MP_UNREACH_NLRI 610,这取决于现有BGP UPDATE消息140B是指示关于可达控制器109A-D还是不可达控制器109A-D的信息。如上所述,MP_REACH_NLRI 600包括控制器NLRI字段510,MP_UNREACH_NLRI 610包括未达控制器NLRI字段615。
图8A至图8C是根据本申请的各种实施例,在控制器集群网络100中的集群106发生任何故障之前通过图1的控制器集群网络100通信的BGP消息140的图示。具体地,图8A示出了通过图1的控制器集群网络100通信的BGP消息140的传输。图8B至图8C示出了用于对通过图8A的控制器集群网络100通信的BGP消息140进行编码的TLV。
现在参考图8A,示出了根据本申请的各种实施例,通过图1的控制器集群网络100发送BGP消息800和803的图示。在图8A中,在控制器集群网络100中的集群106发生任何故障之前发送BGP消息800和803。
如图8A所示,控制器109A生成BGP消息800,该BGP消息可以编码为新BGP消息140A或现有的BGP UPDATE消息140B。BGP消息800包括图5A的控制器NLRI 503。BGP消息800的控制器NLRI 503包括主控制器标志(C)506(图8A中示为“C”)、位置306、旧位置309、数量312、优先级318,以及控制器ID 315A-B。主控制器标志(C)506设置为1,以指示发送BGP消息800的控制器109A(本文也称为“始发控制器109A”)是控制器集群网络100的主控制器109A。位置306是1,指示在集群106中可达的控制器109A-D的优先级顺序中的第一位置。旧位置309还指示值1,例如,因为自用控制器109A-B初始化集群106以来,控制器109A一直是主控制器109A。控制器109A-B的数量312指示集群106中存在两个控制器109A-B。优先级318指示控制器109A在集群106中具有最高优先级318。控制器ID 315A-B包括标识控制器109A的控制器ID 315A和标识控制器109B的控制器ID 315B。
控制器109A通过增强BGP会话130将BGP消息800发送到NE 110。NE 110通过增强BGP会话132将BGP消息800转发给控制器109B。控制器109B确定控制器109A在接收到BGP消息800时仍然可达和可用,并更新状态数据库124以包括来自BGP消息800的数据。
控制器109A通过增强BGP会话131将BGP消息800发送到NE 111。NE 111通过增强BGP会话133将BGP消息800转发给控制器109B。控制器109B确定控制器109A在接收到BGP消息800时仍然可达和可用,并更新状态数据库124以包括来自BGP消息800的数据。
类似地,控制器109B生成BGP消息803,该BGP消息可以编码为新BGP消息140A或现有的BGP UPDATE消息140B。BGP消息803包括控制器NLRI 503,该控制器NLRI包括主控制器标志(C)506(图8A中示为“C”)、位置306、旧位置309、数量312、优先级318,以及控制器ID315A-B。主控制器标志(C)506设置为0,以指示发送BGP消息803的控制器109B(本文也称为“始发控制器109B”)不是控制器集群网络100的主控制器109A。位置306是值2,指示在集群106中可达的控制器109A-D的优先级顺序中的第二位置。位置306的值2还指示控制器109B是主控制器109A的备份。旧位置309还指示值2,例如,因为自用控制器109A-B初始化集群106以来,控制器109B一直是辅助控制器109B。控制器109A-B的数量312指示集群106中存在2个控制器109A-B。优先级318指示控制器109B在集群106中具有第二高优先级318。控制器ID 315A-B包括标识控制器109A的控制器ID 315A和标识控制器109B的控制器ID 315B。
控制器109B通过增强BGP会话132将BGP消息803发送到NE 110。NE 110通过增强BGP会话130将BGP消息803转发给控制器109A。控制器109A确定控制器109B在接收到BGP消息803时仍然可达和可用,并更新状态数据库124以包括来自BGP消息803的数据。
控制器109B通过增强BGP会话133将BGP消息803发送到NE 111。NE 111通过增强BGP会话131将BGP消息803转发给控制器109A。控制器109A再次确定控制器109B在接收到BGP消息803时仍然可达和可用,并更新状态数据库124以包括来自BGP消息803的数据。
现在参考图8B,示出了由控制器109A生成的BGP消息800的TLV,该TLV以类似于图5B的控制器NLRI字段510的格式编码。BGP消息800的TLV包括类型字段511、长度字段512、标志513、位置字段515、控制器数量字段516、旧位置字段517、保留位518、优先级字段519,以及连接的控制器ID字段520A-N。在BGP消息800的TLV中,标志513包括C位514,其设置为1以指示控制器109A是主控制器109A。位置字段515包括控制器109A的位置306,指示值1。控制器数量字段516包括控制器109A-B的数量312,指示值2。旧位置字段517包括控制器109A的旧位置309,指示值1。优先级字段519包括指示控制器109A具有最高优先级318的值。连接的控制器ID字段520A-N分别包括控制器109A-B的控制器ID 315A-B。
现在参考图8C,示出了由控制器109B生成的BGP消息803的TLV,该TLV以类似于控制器NLRI字段510的格式编码。BGP消息803的TLV包括类型字段511、长度字段512、标志513、位置字段515、控制器数量字段516、旧位置字段517、保留位518、优先级字段519,以及连接的控制器ID字段520A-N。在BGP消息803的TLV中,标志513包括C位514,其设置为0以指示控制器109B不是主控制器。位置字段515包括控制器109B的位置306,指示值2。控制器数量字段516包括控制器109A-B的数量312,指示值2。旧位置字段517包括控制器109B的旧位置309,指示值2。优先级字段519包括指示控制器109B具有第二高优先级318的值。连接的控制器ID字段520A-N分别包括控制器109A-B的控制器ID 315A-B。
图9A至图9C是根据本申请的各种实施例,在控制器集群网络100中的集群106发生故障之后通过控制器集群网络100通信的BGP消息140的图示。具体地,图9A示出了在集群106发生故障之后通过控制器集群网络100通信的BGP消息140的传输。图9B至图9C示出了用于对通过控制器集群网络100通信的BGP消息140进行编码的TLV。
现在参考图9A,示出了根据本申请的各种实施例,通过图1的控制器集群网络100发送BGP消息900和903的图示。在图9A中,在控制器109A和109B检测到在互连控制器109A和109B的链路121处发生的故障910之后发送BGP消息900和903。
在图9A中,控制器109A在检测到故障910在互连控制器109A和109B的链路121处发生之后,生成BGP消息900。当故障910在互连控制器109A和109B的链路121处发生时,控制器109A不再连接到控制器109B,因此,控制器109A假设控制器109B已经发生故障并变得不可达。该检测触发控制器109A生成包括关于集群106的更新信息的BGP消息900,并且BGP消息900可以编码为新BGP消息140A或现有的BGP UPDATE消息140B。
BGP消息900的内容类似于在控制器集群网络100中发生故障910之前发送的BGP消息800的内容,BGP消息900的字段类似于在控制器集群网络100中发生故障910之前发送的BGP消息800的字段。但是,在BGP消息900中,集群106中控制器109A的数量312指示集群106中只有一个控制器,因为控制器109A不再能检测控制器109B的存在。类似地,控制器ID315A-B仅指示标识控制器109A的控制器ID 315A,因为控制器109A不再能检测控制器109B的存在。
类似地,控制器109B在检测到故障910在互连控制器109A和109B的链路121处发生之后,生成BGP消息903。当故障910在互连控制器109A和109B的链路121处发生时,控制器109B不再连接到控制器109A,因此,控制器109B假设主控制器109A已经发生故障并变得不可达。该检测触发控制器109B生成包括关于集群106的更新信息的BGP消息903,并且BGP消息903可以编码为新BGP消息140A或现有的BGP UPDATE消息140B。该检测还触发控制器109B等待预定的时间段,以确定是否已经接收到源自主控制器109A的消息,该消息指示主控制器109A仍然可达和活动。
BGP消息903的内容类似于在控制器集群网络100中发生故障910之前发送的BGP消息803的内容,BGP消息903的字段类似于在控制器集群网络100中发生故障910之前发送的BGP消息800的字段。但是,在BGP消息903中,控制器109B的位置306更新为1,指示控制器109B在检测到故障910之后的预期位置为1。位置306为1指示控制器109B将成为控制器集群网络100的主控制器。此外,集群106中控制器109B的数量312指示集群106中只有一个控制器109B,因为控制器109B不再能检测控制器109A的存在。类似地,控制器ID 315A-B仅指示标识控制器109B的控制器ID 315B,因为控制器109B不再能检测控制器109A的存在。
在生成BGP消息900之后,控制器109A通过增强BGP会话130将BGP消息900发送到NE110。NE 110通过增强BGP会话132将BGP消息900转发给控制器109B。类似地,控制器109A通过增强BGP会话131将BGP消息900发送到NE 111。NE 111通过增强BGP会话133将BGP消息900转发给控制器109B。控制器109B在接收到BGP消息900时确定控制器109A仍然可达和可用,并确定控制器109A仍然是控制器集群网络100的主控制器109A。这样一来,控制器109B不会错误地将自己提升为控制集群网络100的主控制器。
现在参考图9B,示出了由控制器109A生成的BGP消息900的TLV,该TLV以类似于图5B的控制器NLRI字段510的格式编码。控制器109A在检测到链路121的故障910之后生成并发送BGP消息900。
BGP消息900的TLV包括类型字段511、长度字段512、标志513、位置字段515、控制器数量字段516、旧位置字段517、保留位518、优先级字段519,以及连接的控制器ID字段520A。在BGP消息900的TLV中,标志513包括C位514,其设置为1以指示控制器109A是主控制器109A。位置字段515包括控制器109A的位置306,指示值1。控制器数量字段516包括集群106中控制器109A的数量312,指示值1,因为控制器109A不再连接到控制器109B,并且不再能检测控制器109B的存在。旧位置字段517包括控制器109A的旧位置309,指示值1。优先级字段519包括指示控制器109A具有最高优先级318的值。连接的控制器ID字段520A仅包括控制器109A的控制器ID 315A,因为控制器109A不再连接到控制器109B,并且不再能检测控制器109B的存在。
现在参考图9C,示出了由控制器109B生成的BGP消息903的TLV,该TLV以类似于控制器NLRI字段510的格式编码。控制器109B在检测到链路121的故障910之后生成并发送BGP消息903。
BGP消息903的TLV包括类型字段511、长度字段512、标志513、位置字段515、控制器数量字段516、旧位置字段517、保留位518、优先级字段519,以及连接的控制器ID字段520A-N。在BGP消息903的TLV中,标志513包括C位514,其设置为0以指示控制器109B不是主控制器109A。位置字段515包括控制器109B的位置306,指示值1。控制器数量字段516包括控制器109A-B的数量312,指示值1,因为控制器109B不再连接到控制器109A,并且不再能检测控制器109A的存在。旧位置字段517包括控制器109B的旧位置309,指示值2。优先级字段519包括指示控制器109B具有第二高优先级318的值。连接的控制器ID字段520B仅包括控制器109B的控制器ID 315B,因为控制器109A不再连接到控制器109B,并且不再能检测控制器109A的存在。
图10A至图10C是根据本申请的各种实施例,在控制器集群网络100的集群106中的主控制器109A发生故障之后通过控制器集群网络100通信的BGP消息140的图示。具体地,图10A示出了在主控制器109A发生故障之后通过控制器集群网络100通信的BGP消息140的传输。图10B至图10C示出了用于对通过控制器集群网络100通信的BGP消息140进行编码的TLV。
现在参考图10A,示出了根据本申请的各种实施例,通过图1的控制器集群网络100发送BGP消息1003的图示。在图10A中,控制器109A已发生故障,因此控制器109A不生成任何消息。控制器109B检测到当在预定的时间段内没有从控制器109A接收到消息或心跳消息时,在控制器109A处发生故障1010。在该状态下,控制器109B确定控制器109A已经发生故障并变得不可达。该检测触发控制器109B生成包括关于集群106的更新信息的BGP消息1003,并且BGP消息1003可以编码为新BGP消息140A或现有的BGP UPDATE消息140B。
BGP消息1003的内容类似于图9A的BGP消息903的内容。在BGP消息1003中,控制器109B的位置306更新为1,指示控制器109B在检测到故障1010之后的预期位置为1。位置1指示控制器109B应该成为控制器集群网络100的主控制器。此外,集群106中控制器109B的数量312指示集群106中仅有1个控制器。此外,控制器ID 315A-B仅指示标识控制器109B的控制器ID 315B。
在生成BGP消息1003之后,控制器109B通过增强BGP会话132将BGP消息1003发送到NE 110。类似地,控制器109B通过增强BGP会话133将BGP消息1003发送到NE 111。
此时,控制器109B等待预定的时间段以确定是否接收到源自原始主控制器109A的心跳消息或任何其它消息。当在预定的时间段内没有接收到源自主控制器109A的心跳或消息时,控制器109B确定控制器109B现在是控制器集群网络100的主控制器109B。为此,控制器109B生成并发送另一个BGP消息1006,该消息与BGP消息1003基本相同。但是,在BGP消息1006中,主控制器标志(C)506设置为指示控制器109B是控制器集群网络100的主控制器109B。
现在参考图10B,示出了由控制器109B生成的BGP消息1003的TLV,该TLV以类似于图5A的控制器NLRI字段510的格式编码。在检测到控制器集群网络100的主控制器的故障1010之后,但在控制器109B成为控制器集群网络100的主控制器之前,控制器109B生成并发送BGP消息1003。
BGP消息1003的TLV包括类型字段511、长度字段512、标志513、位置字段515、控制器数量字段516、旧位置字段517、保留位518、优先级字段519,以及连接的控制器ID字段520B。在BGP消息1003的TLV中,标志513包括C位514,其设置为0以指示控制器109B还不是控制器集群网络100的主控制器。位置字段515包括控制器109B的位置306,指示值1,因为控制器109B应该是控制器集群网络100的主控制器。控制器数量字段516包括集群106中控制器109B的数量312,指示值1,因为控制器109A已经发生故障。旧位置字段517包括控制器109B的旧位置309,指示值2。优先级字段519包括指示控制器109B具有第二高优先级318的值。由于控制器109A已经发生故障,连接的控制器ID字段520B包括控制器109B的控制器ID 315B。
现在参考图10C,示出了由控制器109B生成的BGP消息1006的TLV,该TLV以类似于控制器NLRI字段510的格式编码。在检测到控制器集群网络100的主控制器的故障1010之后,并且在成为控制器集群网络100的主控制器之后,控制器109B生成并发送BGP消息1006。
BGP消息1006的TLV包括类型字段511、长度字段512、标志513、位置字段515、控制器数量字段516、旧位置字段517、保留位518、优先级字段519,以及连接的控制器ID字段520B。在BGP消息1006的TLV中,标志513包括C位514,其设置为1以指示控制器109B现在是控制器集群网络100的主控制器。位置字段515包括控制器109B的位置306,指示值1。控制器数量字段516包括控制器集群网络100中控制器109B的数量312,指示值1。旧位置字段517包括控制器109B的旧位置309,指示值2。优先级字段519包括指示控制器109B具有第二高优先级318的值。连接的控制器ID字段520B包括控制器109B的控制器ID 315B。
图11A至图11C是根据本申请的各种实施例,在控制器集群网络200中的集群106发生任何故障之前通过控制器集群网络200通信的BGP消息140的图示。具体地,图11A示出了通过图2的控制器集群网络200通信的BGP消息140的传输。图11B至图11C示出了用于对通过图2的控制器集群网络200通信的BGP消息140进行编码的TLV。
现在参考图11A,示出了根据本申请的各种实施例,通过图2的控制器集群网络200发送BGP消息1100和1103的图示。在图11A中,在控制器集群网络200中的集群106发生任何故障之前发送BGP消息1100和1103。
如图11A所示,控制器109A生成BGP消息1100,该BGP消息可以编码为新BGP消息140A或现有的BGP UPDATE消息140B。BGP消息1100包括图5A的控制器NLRI 503。BGP消息1100的控制器NLRI 503包括主控制器标志(C)506(图11A中示为“C”)、位置306、旧位置309、数量312、优先级318,以及控制器ID 315A-D。主控制器标志(C)506设置为1,以指示发送BGP消息1100的控制器109A(本文也称为“始发控制器109A”)是控制器集群网络200的主控制器109A。位置306是值1,指示在集群106中可达的控制器109A-D的优先级顺序中的第一位置。旧位置309还指示值1,例如,因为自用控制器109A-D初始化集群106以来,控制器109A一直是主控制器109A。控制器109A-D的数量312指示集群106中存在四个控制器109A-D。优先级318指示控制器109A在集群106中具有最高优先级318。控制器ID 315A-D包括标识控制器109A的控制器ID 315A、标识控制器109B的控制器ID 315B、标识控制器109C的控制器ID315C和标识控制器109D的控制器ID 315D。
控制器109A通过增强BGP会话131将BGP消息1100发送到NE 111。NE 111将BGP消息1100转发给集群106中的所有其它控制器109B-D。控制器109B-D分别确定控制器109A在接收到BGP消息1100时仍然可达和可用,并更新状态数据库124以包括来自BGP消息1100的数据。
类似地,控制器109B生成BGP消息1103,该BGP消息可以编码为新BGP消息140A或现有的BGP UPDATE消息140B。BGP消息1103包括控制器NLRI 503,该控制器NLRI包括主控制器标志(C)506(图11A中示为“C”)、位置306、旧位置309、数量312、优先级318,以及控制器ID315A-D。主控制器标志(C)506设置为0,以指示发送BGP消息1103的控制器109B不是控制器集群网络200的主控制器。位置306是值2,指示在集群106中可达的控制器109A-D的优先级顺序中的第二位置。位置306的值2还指示控制器109B是主控制器109A的备份。旧位置309还指示值2,例如,因为自用控制器109A-D初始化集群106以来,控制器109B一直是辅助控制器109B。控制器109A-D的数量312指示集群106中存在四个控制器109A-D。优先级318指示控制器109B在集群106中具有第二高优先级318。控制器ID 315A-D包括标识控制器109A的控制器ID 315A、标识控制器109B的控制器ID 315B、标识控制器109C的控制器ID 315C和标识控制器109D的控制器ID 315D。
控制器109B通过增强BGP会话133将BGP消息1103发送到NE 111。NE 111将BGP消息1103转发给集群106中的所有其它控制器109A和109C-D。控制器109A和109C-D分别确定控制器109B在接收到BGP消息1103时仍然可达和可用,并更新状态数据库124以包括来自BGP消息1103的数据。
控制器109C和109D类似地生成BGP消息1100和1103并发送到NE 111。NE 111将BGP消息1100和1103转发给集群106中的其它控制器109A-D。这样一来,控制器109A-D的每个控制器通过NE 111发送BGP消息1100和1103,从而维护关于控制器集群网络200中每个其它控制器109A-D的最新状态的信息。
现在参考图11B,示出了由控制器109A生成的BGP消息1100的TLV,该TLV以类似于图5B的控制器NLRI字段510的格式编码。BGP消息1100的TLV包括类型字段511、长度字段512、标志513、位置字段515、控制器数量字段516、旧位置字段517、保留位518、优先级字段519,以及连接的控制器ID字段520A-D。在BGP消息1100的TLV中,标志513包括C位514,其设置为1以指示控制器109A是主控制器109A。位置字段515包括控制器109A的位置306,指示值1。控制器数量字段516包括控制器109A-D的数量312,指示值4。旧位置字段517包括控制器109A的旧位置309,指示值1。优先级字段519包括指示控制器109A具有最高优先级318的值。连接的控制器ID字段520A-D分别包括控制器109A-D的控制器ID 315A-D。
现在参考图11C,示出了由控制器109B生成的BGP消息1103的TLV,该TLV以类似于控制器NLRI字段510的格式编码。BGP消息1103的TLV包括类型字段511、长度字段512、标志513、位置字段515、控制器数量字段516、旧位置字段517、保留位518、优先级字段519,以及连接的控制器ID字段520A-D。在BGP消息1103的TLV中,标志513包括C位514,其设置为0以指示控制器109B不是主控制器。位置字段515包括控制器109B的位置306,指示值2。控制器数量字段516包括控制器109A-D的数量312,指示值4。旧位置字段517包括控制器109B的旧位置309,指示值2。优先级字段519包括指示控制器109B具有第二高优先级318的值。连接的控制器ID字段520A-D分别包括控制器109A-D的控制器ID 315A-D。
图12A至图12E是根据本申请的各种实施例,在控制器集群网络200的集群106中链路121A、121C和121D中的每个链路发生故障之后通过控制器集群网络200通信的BGP消息140的图示。具体地,图12A示出了在集群106发生故障之后通过控制器集群网络200通信的BGP消息140的传输。图12B至图12C示出了用于对在集群106发生故障之后通过控制器集群网络200通信的BGP消息140进行编码的TLV。图12D示出了在选择控制器集群网络200的主控制器之后通过控制器集群网络200通信的BGP消息140的传输。图12E示出了用于对在选择控制器集群网络200的主控制器之后通过控制器集群网络200通信的另一个BGP消息140进行编码的TLV。
现在参考图12A,示出了根据本申请的各种实施例,通过图2的控制器集群网络200发送BGP消息1200和1203的图示。在图12A中,在控制器109A和109B检测到在链路121A、121C和121D处发生的故障215之后发送BGP消息1200和1203。在发生故障215之后,控制器109A和控制器109C通过链路121B互连,控制器109B和控制器109D通过链路121E互连。即,控制器109A和109C不再连接到控制器109B或控制器109D,因此,控制器109A和109C不能检测控制器109B和控制器109D的存在。类似地,控制器109B和109D不再连接到控制器109A或控制器109C,因此,控制器109B和109D不能检测控制器109A和控制器109C的存在。这样一来,其余互连的控制器109A和109C以及控制器109B和109D分别形成两个单独的控制器组210A和210B。控制器组210A包括通过链路121B互连的控制器109A和控制器109C。控制器组210B包括通过链路121E互连的控制器109B和控制器109D。
在这种情况下,两个控制器组210A-B确定每个控制器组210A-B内的主控制器,因为每个控制器组210A-B不知道另一个控制器组210A-B的存在。基于控制器组210A-B中的每个控制器109A-D的优先级318确定每个控制器组210A-B中的主控制器。具有最高优先级318的控制器109A-D成为控制器组210A-B的主控制器。
例如,在控制器组210A中,控制器109A具有比控制器109C更高的优先级。因此,控制器109A和109C确定控制器109A是组210A的主控制器。类似地,在控制器组210B中,控制器109B具有比控制器109D更高的优先级。因此,控制器109B和109D确定控制器109B是组210B的主控制器。
在一个实施例中,组210A的主控制器109A仅是组210A中生成和发送描述组210A中的控制器109A和109C的BGP消息1200的控制器。类似地,组210B的主控制器109B仅是组210B中生成和发送描述组210B中的控制器109B和109D的BGP消息1203的控制器。在另一个实施例中,每个组210A-B中的所有控制器109A-D发送描述相应控制器109A-D、组210A-B和/或集群106的BGP消息。在图12A所示的示例中,只有每个组210A和210B的主控制器109A和109B分别生成和发送BGP消息1200和1203。
控制器109A在检测到故障215并确定控制器109A是组210A的主控制器之后生成BGP消息1200。BGP消息1200可以编码为新BGP消息140A或现有的BGP UPDATE消息140B。
BGP消息1200的内容类似于在控制器集群网络200中发生故障215之前发送的BGP消息1100的内容,BGP消息1200的字段类似于在控制器集群网络200中发生故障215之前发送的BGP消息1100的字段。但是,在BGP消息1200中,主控制器标志(C)506被重置为0,因为需要从集群106的不同组210A-B中的控制器109A-D确定整个集群106的新主控制器。此外,在BGP消息1200中,集群106中控制器109A和109C的数量312指示集群106中现在有两个控制器109A和109C,因为控制器109A不再能检测控制器109B和109D的存在。类似地,控制器ID315A-D仅指示标识控制器109A的控制器ID 315A和控制器109C的控制器ID 315C。
控制器109B在检测到故障215并确定控制器109B是组210B的主控制器之后生成BGP消息1203。BGP消息1203可以编码为新BGP消息140A或现有的BGP UPDATE消息140B。
BGP消息1203的内容类似于在控制器集群网络200中发生故障215之前发送的BGP消息1200的内容,BGP消息1203的字段类似于在控制器集群网络200中发生故障215之前发送的BGP消息1100的字段。但是,在BGP消息1203中,集群106中控制器109B和109D的数量312指示集群106中现在有两个控制器109B和109D,因为控制器109B不再能检测控制器109A和109C的存在。类似地,控制器ID 315A-D仅指示标识控制器109B的控制器ID 315B和控制器109D的控制器ID 315D。
在生成BGP消息1200之后,控制器109A通过增强BGP会话131将BGP消息1200发送到NE 111。NE 111将描述组210A的BGP消息1200转发给组210B。NE 111可以通过增强BGP会话133将BGP消息1200仅转发给组210B的主控制器109B。或者,NE 111可以通过增强BGP会话206和133将BGP消息1200转发给组210B中的所有控制器109B和109D。
类似地,控制器109B通过增强BGP会话133将BGP消息1203发送到NE 111。NE 111将描述组210B的BGP消息1203转发给组210A。NE 111可以通过增强BGP会话131将BGP消息1203仅转发给组210A的主控制器109A。或者,NE 111可以通过增强BGP会话131和203将BGP消息1203转发给组210A中的所有控制器109A和109C。
在一个实施例中,控制器109B在发送BGP消息1203之后等待预定的时间段,以确定是否从原始主控制器109A接收到消息。在图12A中,控制器109B在接收到BGP消息1200时确定控制器109A仍然可达和可用,并确定控制器109A仍然是整个控制器集群网络200的主控制器109A。这样一来,控制器109B不会错误地提升自己成为所有组210A-B和整个控制器集群网络200的主控制器。
在预定时间段内没有从原始主控制器109A接收到消息的实施例中,控制器109B-D基于BGP消息1200和1203中的信息确定所有组210A-B和整个控制器集群网络200的新主控制器。在一个实施例中,控制器109A-D基于每个组210A-B中的控制器109A-D的数量312选择或提升控制器109A-D作为所有组210A-B和整个控制器集群网络200的主控制器。例如,当组210A具有三个控制器而组210B仅具有两个控制器时,控制器109A-D确定组210A是集群106的主组。控制器109A-D还确定主组210A的主控制器109A是所有组210A-B和整个控制器集群网络200的新主控制器。
在组210A-B具有相同数量312的控制器109A-D的实施例中,可以基于组210A-B的主控制器109A-D中的最高旧位置309选择所有组210A-B和整个控制器集群网络200的主控制器。在图12A所示的示例中,控制器109A的旧位置309为1,而控制器109B的旧位置309为2。在这种情况下,为1的旧位置309高于为2的旧位置309,因此,控制器109A-D确定组210A是集群106的主组。控制器109A-D还确定主组210A的主控制器109A是所有组210A-B和整个控制器集群网络200的新主控制器。
在组210A-B具有相同数量312的控制器109A-D的另一个实施例中,可以基于组210A-B的主控制器109A-D中的最高优先级318选择所有组210A-B和整个控制器集群网络200的主控制器。在图12A所示的示例中,控制器109A具有集群106中控制器109A-D的最高优先级318,而控制器109B具有集群106中控制器109A-D的第二高优先级318。在这种情况下,控制器109A-D确定组210A是集群106的主组。控制器109A-D还确定主组210A的主控制器109A是所有组210A-B和整个控制器集群网络200的新主控制器。
现在参考图12B,示出了由控制器109A生成的BGP消息1200的TLV,该TLV以类似于图5B的控制器NLRI字段510的格式编码。控制器109A在检测到控制器集群网络200中发生的故障215之后生成并发送BGP消息1200。
BGP消息1200的TLV包括类型字段511、长度字段512、标志513、位置字段515、控制器数量字段516、旧位置字段517、保留位518、优先级字段519,以及连接的控制器ID字段520A和520C。在BGP消息1200的TLV中,标志513包括C位514,其设置为0以指示控制器109A还没有被确定为整个控制器集群网络200的主控制器。位置字段515包括控制器109A的位置306,指示值1。控制器数量字段516包括组210A中控制器109A和109B的数量312,指示值2,因为控制器109A不再连接到控制器109B和109D。旧位置字段517包括控制器109A的旧位置309,指示值1。优先级字段519包括指示控制器109A具有集群106中所有控制器109A-D的最高优先级318的值。连接的控制器ID字段520A和520C包括控制器109A的控制器ID 315A和控制器109C的控制器ID 315C。
现在参考图12C,示出了由控制器109B生成的BGP消息1203的TLV,该TLV以类似于控制器NLRI字段510的格式编码。控制器109B在检测到控制器集群网络200中发生的故障215之后生成并发送BGP消息1203。
BGP消息1203的TLV包括类型字段511、长度字段512、标志513、位置字段515、控制器数量字段516、旧位置字段517、保留位518、优先级字段519,以及连接的控制器ID字段520B和520D。在BGP消息1203的TLV中,标志513包括C位514,其设置为0以指示控制器109B不是整个控制器集群网络200的主控制器。位置字段515包括控制器109B的位置306,指示值1。控制器数量字段516包括组210B中控制器109B和109D的数量312,指示值2,因为控制器109B不再连接到控制器109A和109C。旧位置字段517包括控制器109B的旧位置309,指示值2。优先级字段519包括指示控制器109B具有集群106中所有控制器109A-D的第二高优先级318的值。连接的控制器ID字段520B和520D包括控制器109B的控制器ID 315B和控制器109D的控制器ID 315D。
现在参考图12D,示出了在控制器109A被选择为控制器集群网络200的主控制器之后,通过图2的控制器集群网络200发送BGP消息1206的图示。在图12D中,控制器109A-D已经交换BGP消息1203和1206,并且使用BGP消息1203和1206确定主控制器109A是所有组210A-B和整个控制器集群网络200的新主控制器。
主控制器109A生成BGP消息1206,该BGP消息指示控制器109A是所有组210A-B和整个控制器集群网络200的主控制器。BGP消息1206基本上类似于图12A的BGP消息1203,不同之处在于主控制器标志(C)506设置为1,指示控制器109A现在是所有组210A-B和整个控制器集群网络200的主控制器。
主控制器109A通过增强BGP会话131将BGP消息1206发送到NE 111。在一个实施例中,NE 111将BGP消息1206转发给集群106中的所有其它控制器109B-D。在另一个实施例中,NE 111仅将BGP消息1206转发给集群106的另一个组210B的主控制器109B。无论哪一种情况,当从NE 111接收到BGP消息1206时,所有控制器109A-D维护数据,该数据指示控制器109A是所有组210A-B和整个控制器集群网络200的主控制器,并且控制器109A是活动和可达的。
现在参考图12E,示出了由控制器109A生成的BGP消息1206的TLV,该TLV以类似于图5B的控制器NLRI字段510的格式编码。控制器109A在检测到控制器集群网络200中发生的故障215并确定主控制器之后生成并发送BGP消息1206。
BGP消息1206的TLV包括类型字段511、长度字段512、标志513、位置字段515、控制器数量字段516、旧位置字段517、保留位518、优先级字段519,以及连接的控制器ID字段520A和520C。在BGP消息1206中,标志513包括C位514,其设置为1以指示控制器109A已被选择或提升为整个控制器集群网络200的主控制器。位置字段515包括控制器109A的位置306,指示值1。控制器数量字段516包括集群组210B中控制器109A和109B的数量312,指示值2。旧位置字段517包括控制器109A的旧位置309,指示值1。优先级字段519包括指示控制器109A具有集群106中所有控制器109A-D的最高优先级318的值。连接的控制器ID字段520A和520C仍然仅包括控制器109A的控制器ID 315A和控制器109C的控制器ID 315C。
图13A至图13E是根据本申请的各种实施例,在控制器集群网络200的集群106中的主控制器109A发生故障之后通过控制器集群网络200通信的BGP消息140的图示。具体地,图13A示出了在主控制器109A发生故障之后通过控制器集群网络200通信的BGP消息140的传输。图13B至图13C示出了用于对在主控制器109A发生故障之后通过控制器集群网络200通信的BGP消息140进行编码的TLV。图13D示出了在选择控制器集群网络200的主控制器之后通过控制器集群网络200通信的BGP消息140的传输。图13E示出了用于对在选择控制器集群网络200的主控制器之后通过控制器集群网络200通信的另一个BGP消息140进行编码的TLV。
现在参考图13A,示出了根据本申请的各种实施例,通过图2的控制器集群网络200发送BGP消息1300和1303的图示。在图13A中,在控制器109B、109C和109D检测到在链路121A、121C和121D发生的故障215和在控制器109A处发生的故障1310之后发送BGP消息1300和1303。如上文参考图12A所述,在链路121A、121C和121D处发生的故障215导致产生控制器109A-D的两个组210A-B。第一组210A包括控制器109C。第二组210B包括控制器109B和109D。但是,故障1310导致控制器109A对于控制器集群网络200的其余部分不再可达或可用。
在检测到故障215和1310时,控制器109B和109D以类似于上文参考图12A所述的方式确定组210B的主控制器109B。由于控制器109A不再可用,控制器109C成为组210A的主控制器。在一个实施例中,控制器109C和109B生成并发送描述组210A-B和集群106的BGP消息1300和1303。在另一个实施例中,所有控制器109B-D生成并发送描述组210A-B和集群106的BGP消息。在图13A所示的示例中,仅控制器109C和109B生成并发送描述组210A-B和集群106的BGP消息1300和1303。
控制器109C生成BGP消息1300,该BGP消息可以编码为新BGP消息140A或现有的BGPUPDATE消息140B。BGP消息1300包括图5A的控制器NLRI 503。BGP消息1300的控制器NLRI503包括主控制器标志(C)506(图13A中示为“C”)、位置306、旧位置309、数量312、优先级318以及控制器ID 315C。主控制器标志(C)506设置为0,指示发送BGP消息1300的控制器109C(本文也称为“始发控制器109C”)不是控制器集群网络200的主控制器。位置306是值1,指示在组210A中可达的控制器109A-D的优先级顺序中的第一位置。即,由于组210A中仅存在控制器109A,控制器109C按照组210A中可达的控制器109A-D的优先级顺序升到第一位置。旧位置309指示值3,例如,因为在控制器集群网络200中发生故障215和1310之前,控制器109C具有控制器109A-D的优先级顺序中的第三位置。控制器109C的数量312指示现在该组210A中只有一个控制器。优先级318指示控制器109C在集群106中具有第三高优先级318。控制器ID 315C标识控制器109C。
控制器109C通过增强BGP会话203将BGP消息1300发送到NE 111。NE 111将BGP消息1300转发给另一个组210B中的主控制器109B,或转发给集群106中的所有其它控制器109B和109D。控制器109B和109D分别确定控制器109C在接收到BGP消息1300时仍然可达和可用,并更新状态数据库124以包括来自BGP消息1300的数据。
类似地,控制器109B生成BGP消息1303,该BGP消息可以编码为新BGP消息140A或现有的BGP UPDATE消息140B。BGP消息1303包括控制器NLRI 503,该控制器NLRI包括主控制器标志(C)506(图11A中示为“C”)、位置306、旧位置309、数量312、优先级318,以及控制器ID315A-D。主控制器标志(C)506设置为0,以指示发送BGP消息1103的控制器109B不是控制器集群网络200的主控制器。位置306是值1,指示在集群106中可达的控制器组210B的优先级顺序中的第一位置。旧位置309还指示值2,例如,因为自用控制器109A-D初始化集群106以来,控制器109B一直是辅助控制器109B。控制器109A-D的数量312指示组210B中存在两个控制器109B和109D。优先级318指示控制器109B在集群106中具有第二高优先级318。控制器ID315A-D包括标识控制器109B的控制器ID 315B和标识控制器109D的控制器ID 315D。
控制器109B通过增强BGP会话133将BGP消息1303发送到NE 111。NE 111将BGP消息1303转发给另一个组210A中的控制器109C,或转发给集群106中的所有其它控制器109C-D。控制器109C-D分别确定控制器109B在接收到BGP消息1303时仍然可达和可用,并更新状态数据库124以包括来自BGP消息1303的数据。
在接收到BGP消息1300和1303时,控制器109B-D确定原始主控制器109A不再可达或可用。因此,控制器109B-D基于BGP消息1300和1303中携带的信息确定需要从其余控制器109B-D中确定新主控制器。在一个实施例中,控制器109B-D基于每个组210A-B中的控制器B-D的数量312确定新主控制器。在图13A所示的示例中,组210B具有比组210A更多的活动控制器109B和109D,组210A仅具有一个活动控制器109C。在这种情况下,控制器109B-D确定组210B是集群106的主组。控制器109B-D还基于BGP消息1300和1303中的信息确定主组210B的主控制器109B是所有组210A-B和整个控制器集群网络200的新主控制器。如上所述,所有组210A-B和整个控制器集群网络200的主控制器可以以其它方式基于BGP消息1300和1303中携带的旧位置309或优先级318确定。
现在参考图13B,示出了由控制器109C生成的BGP消息1300的TLV,该TLV以类似于图5B的控制器NLRI字段510的格式编码。控制器109C在检测到控制器集群网络200中发生的故障215和1310之后生成并发送BGP消息1300。
BGP消息1300的TLV包括类型字段511、长度字段512、标志513、位置字段515、控制器数量字段516、旧位置字段517、保留位518、优先级字段519,以及连接的控制器ID字段520C。在BGP消息1200的TLV中,标志513包括C位514,其设置为0以指示控制器109C不是整个控制器集群网络200的主控制器。位置字段515包括控制器109C的位置306,指示值1。控制器数量字段516包括组210A中控制器的数量312,指示值1。旧位置字段517包括控制器109C的旧位置309,指示值3。优先级字段519包括指示控制器109C具有集群106中所有控制器109A-D的第三高优先级318的值。连接的控制器ID字段520C仅包括控制器109C的控制器ID 315C。
现在参考图13C,示出了由控制器109B生成的BGP消息1303的TLV,该TLV以类似于控制器NLRI字段510的格式编码。控制器109B在检测到控制器集群网络200中发生的故障215和故障1310之后生成并发送BGP消息1303。
BGP消息1303的TLV包括类型字段511、长度字段512、标志513、位置字段515、控制器数量字段516、旧位置字段517、保留位518、优先级字段519,以及连接的控制器ID字段520B和520D。在BGP消息1303的TLV中,标志513包括C位514,其设置为0以指示控制器109B不是整个控制器集群网络200的主控制器。位置字段515包括控制器109B的位置306,指示值1。控制器数量字段516包括组210B中控制器109B和109D的数量312,指示值2。旧位置字段517包括控制器109B的旧位置309,指示值2。优先级字段519包括指示控制器109B具有集群106中所有控制器109A-D的第二高优先级318的值。连接的控制器ID字段520B和520D包括控制器109B的控制器ID 315B和控制器109D的控制器ID 315D。
现在参考图13D,示出了通过图2的控制器集群网络200发送BGP消息1306的图示。在图13D中,控制器109B-D已经确定主控制器109B是所有组210A-B和整个控制器集群网络200的新主控制器。
主控制器109B生成BGP消息1306,该BGP消息指示控制器109B是所有组210A-B和整个控制器集群网络200的主控制器。BGP消息1306基本上类似于图13A的BGP消息1303,不同之处在于主控制器标志(C)506设置为1,指示控制器109B现在是所有组210A-B和整个控制器集群网络200的主控制器。
主控制器109B通过增强BGP会话133将BGP消息1306发送到NE 111。在一个实施例中,NE 111将BGP消息1306转发给集群106中的所有其它控制器109C-D。在另一个实施例中,NE 111仅将BGP消息1306转发给集群106的另一个组210A的主控制器109C。无论哪一种情况,当从NE 111接收到BGP消息1306时,所有控制器109B-D维护数据,该数据指示控制器109B是所有组210A-B和整个控制器集群网络200的主控制器,并且控制器109B是活动和可达的。
现在参考图13E,示出了由控制器109B生成的BGP消息1306的TLV,该TLV以类似于图5B的控制器NLRI字段510的格式编码。控制器109B在检测到控制器集群网络200中发生的故障215和1310之后生成并发送BGP消息1306。
BGP消息1306的TLV包括类型字段511、长度字段512、标志513、位置字段515、控制器数量字段516、旧位置字段517、保留位518、优先级字段519,以及连接的控制器ID字段520B和520D。在BGP消息1306的TLV中,标志513包括C位514,其设置为1以指示控制器109B已被选择或提升为整个控制器集群网络200的主控制器。位置字段515包括控制器109A的位置306,指示值1。控制器数量字段516包括集群组210B中控制器109B和109D的数量312,指示值2。旧位置字段517包括控制器109B的旧位置309,指示值2。优先级字段519包括指示控制器109B具有集群106中所有控制器109A-D的第二高优先级318的值。连接的控制器ID字段520B和520D仍然仅包括控制器109B的控制器ID 315B和控制器109D的控制器ID 315D。
图14是根据本申请的各种实施例,第一控制器109A-D执行的用于实现用于网络HA的BGP的方法1400的流程图。方法1400由控制器集群网络100或200(本文称为“网络”)中的第一控制器109A-D(以下称为“第一控制器”)实现。第一控制器在连接到一个或多个NE110-116之后实现方法1400。
在步骤1403中,第一控制器与网络中的NE 110-111(以下称为“NE”)建立BGP会话。第一控制器包括在集群106中,该集群包括至少两个控制器。BGP会话可以是增强BGP会话,其中可以通信带扩展的BGP消息。在一个实施例中,根据图4A-4D至图7A-7C编码的消息可以通过BGP会话通信。
在步骤1406中,控制器向NE发送第一BGP消息140、800、803、900、903、1000、1003、1006、1100、1103、1200、1203、1206、1300、1303或1306(以下称为“BGP消息”)。第一BGP消息包括指示第一控制器的状态的第一控制器NLRI 503。第一控制器NLRI 503携带集群106中每个控制器的控制器ID 513。第一控制器NLRI 504还基于优先级顺序携带控制器相对于集群106中的其它控制器的位置306。
在步骤1409中,控制器从NE接收第二BGP消息。第二BGP消息包括指示集群106中第二控制器的状态的第二控制器NLRI 503。第一BGP消息包括指示第一控制器的状态的第一控制器NLRI 503。第二控制器NLRI 503携带集群106中每个控制器的控制器ID 513。第二控制器NLRI 503还基于优先级顺序携带第二控制器相对于集群106中的其它控制器的位置306。
在步骤1412中,控制器使用第一控制器NLRI 503和第二控制器NLRI 503从控制器集群106中确定主控制器。例如,控制器基于第一控制器NLRI 503中携带的控制器的位置306和第二控制器NLRI 503中携带的第二控制器的位置306确定主控制器。主控制器负责控制网络。
图15是根据本申请的各种实施例,NE 110-111执行的用于实现用于网络HA的BGP的方法1500的流程图。方法1500由NE 110-111(以下称为“NE”)中的一个NE在连接到网络的集群106中的一个或多个控制器之后执行。
在步骤1503中,NE与网络的主控制器建立第一BGP会话。BGP会话可以是增强BGP会话,其中可以通信带扩展的BGP消息。在一个实施例中,根据图4A-4D至图7A-7C编码的消息可以通过BGP会话通信。
在步骤1506中,NE与网络的辅助控制器建立第二BGP会话。例如,主控制器是集群106的控制器109A,辅助控制器是集群106的控制器109B。集群106包括至少两个控制器。主控制器负责控制网络。
在步骤1509中,NE从主控制器接收BGP消息。BGP消息包括控制器NLRI 503,指示BGP消息是由主控制器发送的。控制器NLRI 503还携带主控制器相对于集群106中的其它控制器的位置,以及集群106中每个控制器的控制器ID 315A-N。在步骤1512中,NE将BGP消息转发给集群106中的辅助控制器。
图16是根据本申请的各种实施例,实现为控制器的装置1600的图示,所述控制器用于实现用于网络HA的BGP。装置1600包括建立模块1603、发送模块1606、接收模块1609和确定模块1612。建立模块1603包括用于与网络中的NE建立BGP会话的模块,其中,集群106包括第一控制器和第二控制器。发送模块1606包括用于向NE发送第一BGP消息的模块,所述第一BGP消息包括指示第一控制器状态的第一控制器NLRI。接收模块1609包括用于从NE接收第二BGP消息的模块,所述第二BGP消息包括指示第二控制器状态的第二控制器NLRI。确定模块1612包括用于基于第一控制器NLRI和第二控制器NLRI确定主控制器的模块,其中,主控制器负责控制网络。
图17是根据本申请的各种实施例,实现为NE的装置1700的图示,所述NE用于实现用于网络HA的BGP。装置1700包括建立模块1702、接收模块1706和转发模块1709。建立模块1703包括用于与网络的主控制器建立第一BGP会话并与网络的辅助控制器建立第二BGP会话的模块,其中,集群106包括主控制器和辅助控制器,主控制器负责控制网络。接收模块1706包括用于从主控制器接收BGP消息的模块,所述BGP消息指示BGP消息是由主控制器发送的,并且包括主控制器相对于集群106中的其它控制器的位置306,以及集群106中每个控制器的控制器ID 315。转发模块1709包括用于将BGP消息转发给辅助控制器的模块。

Claims (23)

1.一种由网络中的第一控制器实现的方法,其特征在于,所述网络包括控制器集群,所述控制器集群包括所述第一控制器和第二控制器,所述方法包括:
与所述网络中的网元NE建立带扩展的边界网关协议BGP会话,以创建用于作为所述网元NE与所述第一控制器之间的控制信道和信息信道,在建立带扩展的BGP会话之后,每个控制器和一个或多个NE彼此交换BGP消息;
向所述NE发送第一BGP消息,所述第一BGP消息包括第一控制器网络层可达信息NLRI,所述第一控制器NLRI携带所述控制器集群中每个控制器的标识ID,所述第一控制器NLRI还携带基于优先级顺序所述第一控制器相对于所述控制器集群中的其它控制器的位置;
从所述NE接收包括第二控制器NLRI的第二BGP消息,所述第二控制器NLRI携带所述控制器集群中每个控制器的所述ID,所述第二控制器NLRI携带基于所述优先级顺序所述第二控制器相对于所述控制器集群中的所述其它控制器的位置;
基于所述第一控制器NLRI中携带的所述第一控制器的所述位置和所述第二控制器NLRI中携带的所述第二控制器的所述位置,从所述控制器集群中确定主控制器,所述主控制器负责控制所述网络。
2.根据权利要求1所述的方法,其特征在于,所述第一BGP消息包括以下各项中的至少一项:指示所述第一控制器是否为所述网络的所述主控制器的标志、所述第一控制器的所述位置、所述第一控制器的旧位置、所述控制器集群中的控制器数量,以及所述第一控制器相对于所述控制器集群中的其它控制器的优先级。
3.根据权利要求1或2所述的方法,其特征在于,所述第二BGP消息包括以下各项中的至少一项:指示所述第二控制器是否为所述网络的所述主控制器的第二标志、所述第二控制器的所述位置、所述第二控制器的旧位置、所述控制器集群中的控制器数量,以及所述第二控制器相对于所述控制器集群中的其它控制器的优先级。
4.根据权利要求1或2所述的方法,其特征在于,与所述NE建立所述BGP会话包括:
与所述网络中的多个NE建立多个BGP会话,以创建多个控制信道,所述多个NE包括所述NE;
与所述NE分别建立带扩展的BGP会话,以创建信息信道。
5.根据权利要求1或2所述的方法,其特征在于,与所述NE建立所述BGP会话包括:
与所述网络中的多个NE建立多个BGP会话,以创建多个控制信道,所述多个NE不包括所述NE;
与所述NE建立带扩展的BGP会话,以创建信息信道。
6.根据权利要求1或2所述的方法,其特征在于,与所述NE建立所述BGP会话包括:
向所述NE发送具有高可用性支持能力三元组的第一OPEN消息,所述高可用性支持能力三元组包括指示所述第一控制器为控制器的标志;
从所述NE接收具有高可用性支持能力三元组的第二OPEN消息,所述高可用性支持能力三元组包括指示所述NE是所述网络中的节点的标志。
7.根据权利要求6所述的方法,其特征在于,所述第一OPEN消息中的所述高可用性支持能力三元组携带在所述第一OPEN消息的可选参数中,所述第二OPEN消息中的所述高可用性支持能力三元组携带在所述第二OPEN消息的可选参数中。
8.根据权利要求7所述的方法,其特征在于,所述第一BGP消息包括第一控制器地址族标识AFI、第一控制器子地址族标识SAFI和所述第一控制器NLRI,其中,所述第二BGP消息包括第二控制器AFI、第二控制器SAFI和所述第二控制器NLRI。
9.根据权利要求7所述的方法,其特征在于,所述第一BGP消息编码为BGP UPDATE,所述第一控制器NLRI携带在所述第一BGP消息的第一路径属性字段中,并且,所述第二BGP消息编码为BGP UPDATE,所述第二控制器NLRI携带在所述第二BGP消息的第二路径属性字段中。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
在从所述NE接收所述第二控制器发生故障的指示后,或在确定预定时间段内未从辅助控制器接收到BGP消息后,确定所述第二控制器是否发生故障;
在所述第二控制器发生故障时,选择所述第一控制器作为所述网络的所述主控制器;
向所述NE发送包括第三控制器NLRI的第三BGP消息,所述第三控制器NLRI指示所述第一控制器是所述网络的所述主控制器。
11.根据权利要求9所述的方法,其特征在于,所述控制器集群包括多个控制器,所述多个控制器包括所述第一控制器和所述第二控制器,其中,所述方法还包括:
确定在所述控制器集群内发生了至少一个故障,以在所述控制器集群内创建第一组控制器和第二组控制器;
确定所述第一控制器耦合到不包括所述第二控制器的所述第一组控制器,所述第二控制器耦合到不包括所述第一控制器的所述第二组控制器。
12.根据权利要求11所述的方法,其特征在于,所述第一组控制器具有第一数量的控制器,所述第二组控制器具有第二数量的控制器,其中,所述方法还包括:
基于所述第一控制器的旧位置或所述第一控制器相对于所述第一组控制器中的其它控制器的优先级,确定所述第一组控制器中的所述第一控制器为所述第一组控制器的意向主控制器;
向所述NE发送指示所述第一组控制器的状态的第三BGP消息,所述第三BGP消息包括所述第一组控制器中的控制器数量、所述第一控制器的所述旧位置和所述第一控制器的所述优先级;
从所述NE接收指示所述第二组控制器的状态的第四BGP消息,所述第四BGP消息指示所述第二控制器为所述第二组控制器的意向主控制器,所述第四BGP消息包括所述第二组控制器中的控制器数量、所述第二控制器的旧位置以及所述第二控制器相对于所述第二组控制器中的其它控制器的优先级。
13.根据权利要求12所述的方法,其特征在于,还包括:基于所述第一组控制器和所述第二组控制器中的每个组中的控制器数量、所述第一控制器或所述第二控制器的最高旧位置,或所述第一控制器或所述第二控制器的最高优先级,选择所述第一控制器作为所述网络的所述主控制器。
14.根据权利要求13所述的方法,其特征在于,所述控制器集群还包括第三控制器,其中,所述方法还包括接收包括第三控制器NLRI的第三BGP消息,所述第三控制器NLRI携带所述控制器集群中每个控制器的所述ID,所述第三控制器NLRI携带基于所述优先级顺序第二控制器相对于所述控制器集群中的所述其它控制器的位置,其中,所述主控制器是基于所述第一控制器NLRI中携带的所述第一控制器的所述位置、所述第二控制器NLRI中携带的所述第二控制器的所述位置和所述第三控制器NLRI中携带的所述第三控制器的所述位置确定的。
15.一种由包括控制器集群的网络中的网元NE实现的方法,其特征在于,所述方法包括:
与所述网络的主控制器建立第一带扩展的边界网关协议BGP会话,以创建用于作为所述网元NE与所述主控制器之间的控制信道和信息信道,在建立带扩展的BGP会话之后,每个控制器和一个或多个NE彼此交换BGP消息;
与所述网络的辅助控制器建立第二BGP会话,所述控制器集群包括所述主控制器和所述辅助控制器,所述主控制器负责控制所述网络;
从所述主控制器接收BGP消息,所述BGP消息包括指示所述BGP消息由所述主控制器发送的控制器网络层可达信息NLRI,所述控制器NLRI携带所述主控制器相对于所述控制器集群中的其它控制器的位置和所述控制器集群中每个控制器的标识ID;
将所述BGP消息转发给所述辅助控制器。
16.根据权利要求15所述的方法,其特征在于,所述BGP消息包括以下各项中的至少一项:指示所述主控制器控制所述网络的标志、所述主控制器相对于所述控制器集群中的其它控制器的位置、所述主控制器的旧位置、所述控制器集群中的控制器数量,以及所述主控制器相对于所述控制器集群中的其它控制器的优先级。
17.根据权利要求15或16所述的方法,其特征在于,与所述主控制器建立所述第一BGP会话包括:
向所述主控制器发送具有高可用性支持能力三元组的第一OPEN消息,所述高可用性支持能力三元组包括指示所述NE是所述网络中的节点的标志;
从所述主控制器接收具有高可用性支持能力三元组的第二OPEN消息,所述高可用性支持能力三元组包括指示所述主控制器是所述网络中的控制器的标志。
18.根据权利要求17所述的方法,其特征在于,所述第一OPEN消息中的所述高可用性支持能力三元组携带在所述第一OPEN消息的可选参数中,所述第二OPEN消息中的所述高可用性支持能力三元组携带在所述第二OPEN消息的可选参数中。
19.根据权利要求15或16所述的方法,其特征在于,还包括:
检测所述主控制器的故障;
向所述辅助控制器发送第二BGP消息,所述第二BGP消息包括指示所述主控制器发生故障的第三控制器NLRI,所述第二BGP消息指示所述辅助控制器从状态数据库中撤回关于所述主控制器的信息。
20.一种通信装置,用作第一控制器,其特征在于,所述通信装置包括:
存储器,用于存储指令;
处理器,当所述处理器执行所述指令时,使得所述通信装置实现权利要求1-14中任一所述的方法。
21.一种通信装置,用作网元NE,其特征在于,所述通信装置包括:
存储器,用于存储指令;
处理器,当所述处理器执行所述指令时,使得所述通信装置实现权利要求15-19中任一所述的方法。
22.一种第一控制器,其特征在于,网络包括控制器集群,所述控制器集群包括所述第一控制器和第二控制器,所述第一控制器包括:
用于与所述网络中的网元NE建立带扩展的边界网关协议BGP会话,以创建用于作为所述网元NE与所述第一控制器之间的控制信道和信息信道,在建立带扩展的BGP会话之后,使每个控制器和一个或多个NE彼此交换BGP消息的模块;
用于向所述NE发送包括第一控制器网络层可达信息NLRI的第一BGP消息的模块,所述第一控制器NLRI携带所述控制器集群中每个控制器的标识ID,所述第一控制器NLRI还携带基于优先级顺序所述第一控制器相对于所述控制器集群中的其它控制器的位置;
用于从所述NE接收包括第二控制器NLRI的第二BGP消息的模块,所述第二控制器NLRI携带所述控制器集群中每个控制器的所述ID,所述第二控制器NLRI携带基于所述优先级顺序所述第二控制器相对于所述控制器集群中的所述其它控制器的位置;
用于基于所述第一控制器NLRI中携带的所述第一控制器的所述位置和所述第二控制器NLRI中携带的所述第二控制器的所述位置,从所述控制器集群中确定主控制器的模块,所述主控制器负责控制所述网络。
23.一种网元NE,其特征在于,网络包括控制器集群,所述NE包括:
用于与所述网络的主控制器建立第一带扩展的边界网关协议BGP会话,以创建用于作为所述网元NE与所述主控制器之间的控制信道和信息信道,在建立带扩展的BGP会话之后,使每个控制器和一个或多个NE彼此交换BGP消息的模块;
用于与所述网络的辅助控制器建立第二BGP会话的模块,所述控制器集群包括所述主控制器和所述辅助控制器,所述主控制器负责控制所述网络;
用于从所述主控制器接收BGP消息的模块,所述BGP消息包括指示所述BGP消息由所述主控制器发送的控制器网络层可达信息NLRI,所述控制器NLRI携带所述主控制器相对于所述控制器集群中的其它控制器的位置和所述控制器集群中每个控制器的标识ID;
用于将所述BGP消息转发给所述辅助控制器的模块。
CN202080094697.7A 2020-02-18 2020-12-14 用于边界网关协议(bgp)控制的网络可靠性的系统和方法 Active CN115004655B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311237020.6A CN117376234A (zh) 2020-02-18 2020-12-14 用于边界网关协议(bgp)控制的网络可靠性的系统和方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202062978099P 2020-02-18 2020-02-18
US62/978,099 2020-02-18
PCT/US2020/064888 WO2021167685A1 (en) 2020-02-18 2020-12-14 System and method for border gateway protocol (bgp) controlled network reliability

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202311237020.6A Division CN117376234A (zh) 2020-02-18 2020-12-14 用于边界网关协议(bgp)控制的网络可靠性的系统和方法

Publications (2)

Publication Number Publication Date
CN115004655A CN115004655A (zh) 2022-09-02
CN115004655B true CN115004655B (zh) 2023-10-10

Family

ID=74141973

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202311237020.6A Pending CN117376234A (zh) 2020-02-18 2020-12-14 用于边界网关协议(bgp)控制的网络可靠性的系统和方法
CN202080094697.7A Active CN115004655B (zh) 2020-02-18 2020-12-14 用于边界网关协议(bgp)控制的网络可靠性的系统和方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202311237020.6A Pending CN117376234A (zh) 2020-02-18 2020-12-14 用于边界网关协议(bgp)控制的网络可靠性的系统和方法

Country Status (4)

Country Link
US (1) US20220393936A1 (zh)
EP (1) EP4085580A1 (zh)
CN (2) CN117376234A (zh)
WO (1) WO2021167685A1 (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104468236A (zh) * 2014-12-19 2015-03-25 上海斐讯数据通信技术有限公司 Sdn控制器集群、sdn交换机及其连接控制方法
US9660897B1 (en) * 2013-12-04 2017-05-23 Juniper Networks, Inc. BGP link-state extensions for segment routing
CN108881059A (zh) * 2018-05-29 2018-11-23 新华三技术有限公司 控制器角色确定方法、网络交换设备、控制器及网络系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10126719B2 (en) * 2013-06-17 2018-11-13 Kt Corporation Methods for changing an authority of control for a controller in environment having multiple controllers
US10263828B2 (en) * 2015-09-30 2019-04-16 Nicira, Inc. Preventing concurrent distribution of network data to a hardware switch by multiple controllers
US10432427B2 (en) * 2016-03-03 2019-10-01 Futurewei Technologies, Inc. Border gateway protocol for communication among software defined network controllers
US10523499B2 (en) * 2016-09-20 2019-12-31 Hewlett Packard Enterprise Development Lp Master controller selection in a software defined network
US10511524B2 (en) * 2017-10-03 2019-12-17 Futurewei Technologies, Inc. Controller communications in access networks
CN109936505B (zh) * 2017-12-15 2021-06-22 上海诺基亚贝尔股份有限公司 以数据为中心的软件定义网络中的方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9660897B1 (en) * 2013-12-04 2017-05-23 Juniper Networks, Inc. BGP link-state extensions for segment routing
CN104468236A (zh) * 2014-12-19 2015-03-25 上海斐讯数据通信技术有限公司 Sdn控制器集群、sdn交换机及其连接控制方法
CN108881059A (zh) * 2018-05-29 2018-11-23 新华三技术有限公司 控制器角色确定方法、网络交换设备、控制器及网络系统

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
amp ; lt ; /a amp ; amp ; gt ; .IETF .2019,全文. *
amp ; lt ; a href= amp ; quot ; ./draft-ietf-idr-rfc7752bis-02 amp *
K. Talaulikar, Ed. ; Cisco Systems ; .Distribution of Link-State and Traffic Engineering Information Using BGP amp *
quot ; amp ; amp ; gt ; draft-ietf-idr-rfc7752bis-02 amp *

Also Published As

Publication number Publication date
EP4085580A1 (en) 2022-11-09
WO2021167685A1 (en) 2021-08-26
CN117376234A (zh) 2024-01-09
US20220393936A1 (en) 2022-12-08
CN115004655A (zh) 2022-09-02

Similar Documents

Publication Publication Date Title
US10218600B2 (en) Path computation element hierarchical software defined network control
US8082340B2 (en) Technique for distinguishing between link and node failure using bidirectional forwarding detection (BFD)
EP2680510B1 (en) Service plane triggered fast reroute protection
EP1779568B1 (en) Graceful shutdown of ldp on specific interfaces between label switched routers
US8543718B2 (en) Technique for efficiently and dynamically maintaining bidirectional forwarding detection on a bundle of links
US7894335B2 (en) Redundant routing capabilities for a network node cluster
CN110535760B (zh) 聚合接口的转发检测
CN110784400B (zh) N:1有状态应用网关冗余方法、系统和备用服务网关
JP4598123B2 (ja) 2つのルーティングドメイン間のリンクの障害に対する迅速な対応として代替経路を提供する方法
JP7176095B2 (ja) 通信方法、通信機器、および通信システム
JP2006135970A (ja) SoftRouter動的バインディング・プロトコル
JP7306642B2 (ja) ループ回避通信方法、ループ回避通信デバイスおよびループ回避通信システム
US8824451B2 (en) Method and system for establishing an associated bidirectional label-switched path
WO2022105927A1 (zh) 一种通告网络设备处理能力的方法、设备和系统
WO2020244550A1 (zh) 路径计算方法及存储介质、电子装置
EP3188408B1 (en) Method and apparatus for determining network topology, and centralized network state information storage device
US11641307B2 (en) Method for configuring a network node
CN115004655B (zh) 用于边界网关协议(bgp)控制的网络可靠性的系统和方法
CN113872843B (zh) 一种路由生成方法、路由处理方法及装置
CN115152192A (zh) Pce受控网络可靠性
US20200145326A1 (en) Path data deletion method, message forwarding method, and apparatus
WO2023103504A1 (zh) 链路检测方法、公网节点和存储介质
US11888596B2 (en) System and method for network reliability
CN111614558B (zh) 一种主备路径计算单元工作优化方法及系统
CN118055138A (zh) 标签分发协议邻居保活方法、装置和设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant