本发明涉及网络通信技术领域,特别地,涉及到一种通信网络中的高可靠时钟同步方法和系统。
背景技术:
通信网络中的各个节点都具有自身时钟,这些时钟由于制作工艺、晶振频率、外界电磁干扰等因素,在同一时刻各个时钟的计数难以保持一致,而且随着时间推移,偏差可能越来越大,造成各个节点的时钟有较大差异。通信网络中的报文在传输时要求网络中的节点有严格统一的时钟,故各个网络节点之间的时钟同步非常重要。
ieee802.1as协议可以为网络中的一个域提供时钟同步功能。ieee802.1as时钟同步的主要内容为:在网络中划分出若干个域,每个域内通过手动配置的方式或者所有时钟选举的方式产生一个主时钟。若选举主时钟采用bmca(bestmasterclockalgorithm)算法,则根据域内各个时钟的时钟性能参数选取时钟性能参数最优的那个作为主时钟。选定主时钟以后,其他时钟为从时钟,主时钟定期和从时钟之间发送时钟同步报文进行校时,以更新从时钟的本地时间,从而实现网络节点间的时钟同步。主时钟也会定期向从时钟发送announce报文,以表明自己的运行状态。
在通信网络的运行过程中,网络节点有可能会发生故障,比如电源线损坏、网线被剪断、电路板烧毁等等;另外,主时钟自身虽未发生故障,但是其时钟值可能会被人为修改成一个异常值。如果一个时钟同步域中的主时钟发生了故障,则会导致时钟同步功能无法进行;主时钟虽未发生故障,但其同步出去的时间如果是个异常值,则会导致所有从时钟的本地时间被同步为一个异常的时间。上述两种情况都会导致时钟同步功能不可靠。为了保障时钟同步的可靠性,tsn(timesensitivenetworking)工作组提出了主时钟重选的方案,从时钟在经过几次接收announce报文失败以后,判定主时钟发生了故障,发起主时钟重选流程,重新执行bmca算法,选举出一个新的主时钟,如附图1所示。
但是,主时钟重选机制存在一定问题。由于从时钟判定主时钟故障和发起重选都需要一定的时间间隔,故从主时钟发生故障开始,到新的主时钟被选出之前,时钟同步功能是不可用的。在时钟同步功能不可用期间,主从时钟之间的时钟偏移会不断增大,若此时有时延敏感报文进行传输,可能会导致报文无法正确传输,导致网络故障。此外,主时钟重选机制是根据announce报文的发送情况来触发的,当主时钟正常但是其时钟值被人为修改的时候,由于主时钟状态是正常的,它仍会定期发送announce报文,所以从时钟不会触发重选,故重选机制无法解决时钟值被人为修改的情况。
技术实现要素:
针对上述背景技术中的问题,本发明的目的在于提供一种高可靠的时钟同步方法和系统,在某个主时钟发生故障的时候,能够实现时钟同步功能的无缝切换,同时在主时钟的时钟值被人为修改的时候,不会造成所有的从时钟都被同步为错误的时间值。采用本发明的方案,能够解决主时钟重选机制存在的时钟同步功能间断问题和主时钟时间值被人为修改的问题。
本发明提出一种高可靠的时钟同步方法和系统,其关键点在于,网络采用手动配置主时钟的方式,将多个sdn控制器配置为主时钟。上电后由sdn控制器向各个从时钟进行集中配置下发,下发时钟同步参数配置,然后定期发送时钟同步报文。当有多个控制器时,它们形成集群,每个控制器都定期发送时钟同步报文,各个控制器之间不进行时钟同步,但需要进行时钟状态的监控,当监控到某个控制器时钟值异常时,则修改其时钟值。从时钟会在相近的时间里收到多个时钟同步报文,从时钟在本地设置过滤算法,满足过滤条件的报文则不进行同步,否则从时钟就进行同步,将本地时间调整为主时钟时间。
为了实现以上目的,本发明提供的一种基于sdn主时钟的时钟同步方法包括以下步骤:
步骤一,手动配置sdn控制器集群中的每个控制器为主时钟设备,每个控制器分别与网络中的其他从时钟设备相连;
步骤二,所述主时钟设备向所述从时钟设备下发配置参数,该配置参数是sdn控制器在本地计算得到;
步骤三,所述控制器主时钟定期发送时钟同步报文;
步骤四,所述从时钟设备接收到时钟同步报文后,在本地执行过滤算法,满足所述过滤算法的过滤条件的报文不进行同步,否则进行同步;
步骤五,当某控制器监控到集群中其他控制器的时钟值有异常时,发送通知给所述时钟值异常的控制器,所述时钟值异常的控制器根据所述通知携带的时钟值修改本地时钟值。
进一步的,所述控制器相互之间发送交互消息,所述交互消息中携带时间戳,根据时间戳判断其他控制器的时钟是否有异常。
进一步的,所述交互消息内容包括但不限于修正值、异常标识、时间戳。
进一步的,步骤一中,所述控制器的存在形式包括物理机、虚拟机、进程,所述控制器之间的连接方式包括有线连接、无线连接、进程间通信、管道通信。
更进一步的,步骤一中,所述每个控制器分别与从时钟设备相连,具体为:
每个所述控制器与所述从时钟设备以有线连接的方式相连,或者通过无线通信的方式交互。
作为本申请的一种实施方式,所述配置参数包括但不限于每个从时钟设备的时钟角色、每个从时钟设备上每个端口的角色。
进一步的,步骤二主时钟设备向所述从时钟设备下发配置参数具体为:
所述配置参数向从时钟设备依次分别下发,或者将所述从时钟设备形成列表,向列表内的从时钟设备统一下发。
进一步的,步骤三中,所述控制器定期发送时钟同步报文,具体为:
各控制器在同一时刻或不同时刻发送第一个时钟同步报文;
所述控制器的转发面,支持ieee802.1as协议时钟同步报文的收发;
所述转发面,包括逻辑转发面、抽象出来的转发功能集合、专用于转发的进程或者功能模块。
更进一步的,步骤五中,所述通知为所述sdn控制器集群中的一类已有消息,通过在所述已有消息中增加内容以达到通知目的;
或者,所述通知为所述sdn控制器集群中新增加的一类消息。
基于sdn主时钟的时钟同步系统,所述系统包括sdn控制器、sdn交换机以及端设备,其中,所述sdn控制器为设定的主时钟设备,其与sdn交换机相交互,向从时钟设备下发配置参数,并且,系统中各sdn控制器之间发送交互消息,所述交互消息为控制器状态监控消息,其内容包含但不限于时钟修正值、异常标识、时间戳交互时钟同步报文;
所述sdn交换机和端设备,即从时钟设备,接收到时钟同步报文后,在本地执行过滤算法,满足所述过滤算法的过滤条件的报文不进行同步,否则进行同步。
通过使用以上方法和步骤,在主时钟发生故障,或者主时钟虽未故障、但是其时间值被人为修改的情况下,由于sdn控制器集群中的每个控制器都会发送时钟同步报文以及从时钟会过滤掉异常的时间值,从而保证了从时钟仍然可以接收到正常的时钟同步报文,能够为网络提供高可靠的时钟同步功能。
附图说明
为了更清楚地说明本发明中的技术方案,下面将对本发明中所需要使用的附图进行简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,可以根据这些附图获得其它附图。
图1是ieee802.1as协议主时钟重选机制示意图;
图2是一种两个控制器构成sdn集群的时钟同步网络拓扑示意图;
图3是一种两个控制器构成sdn集群有故障的网络拓扑示意图;
图4是一种三个控制器构成sdn集群的时钟同步网络拓扑示意图;
图5是一种sdn主时钟可能发生异常的时钟同步网络拓扑示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合说明书附图对本发明的实施方式做进一步地详细叙述。
软件定义网络sdn(softwaredefinednetwork)是将网络控制功能软件化的技术,sdn的目的是实现网络控制功能和转发功能的分离,以实现控制功能集中化,sdn控制器是实现sdn技术的主要设备。为保障sdn功能的可靠性,实际部署时,多采用集群的方式,即同时部署多个控制器作为一个集群,多个控制器同时工作,在逻辑上形成一个统一的控制器,即其天然具有冗余特性。此外,sdn能够对网络设备进行集中配置下发和集中纳管,有利于集中管理、集中配置下发时钟同步的相关参数。
本申请公开一种基于sdn主时钟的时钟同步方法包括以下步骤:
步骤一,手动配置sdn控制器集群中的每个控制器为主时钟设备,每个控制器分别与网络中的其他从时钟设备相连;
步骤二,所述主时钟设备向所述从时钟设备下发配置参数,该配置参数是sdn控制器在本地计算得到;
步骤三,所述控制器主时钟定期发送时钟同步报文;
步骤四,所述从时钟设备接收到时钟同步报文后,在本地执行过滤算法,满足所述过滤算法的过滤条件的报文不进行同步,否则进行同步;
步骤五,当某控制器监控到集群中其他控制器的时钟值有异常时,发送通知给所述时钟值异常的控制器,所述时钟值异常的控制器根据所述通知携带的时钟值修改本地时钟值。
进一步的,所述控制器相互之间发送交互消息,所述交互消息中携带时间戳,根据时间戳判断其他控制器的时钟是否有异常。
进一步的,所述交互消息内容包括但不限于修正值、异常标识、时间戳。
进一步的,步骤一中,所述控制器的存在形式包括物理机、虚拟机、进程,所述控制器之间的连接方式包括有线连接、无线连接、进程间通信、管道通信。
更进一步的,步骤一中,所述每个控制器分别与从时钟设备相连,具体为:
每个所述控制器与所述从时钟设备以有线连接的方式相连,或者通过无线通信的方式交互。
作为本申请的一种实施方式,所述配置参数包括但不限于每个从时钟设备的时钟角色、每个从时钟设备上每个端口的角色。
进一步的,步骤二主时钟设备向所述从时钟设备下发配置参数具体为:
所述配置参数向从时钟设备依次分别下发,或者将所述从时钟设备形成列表,向列表内的从时钟设备统一下发。
进一步的,步骤三中,所述控制器定期发送时钟同步报文,具体为:各控制器在同一时刻或不同时刻发送第一个时钟同步报文;
所述控制器的转发面,支持ieee802.1as协议时钟同步报文的收发;
所述转发面,包括逻辑转发面、抽象出来的转发功能集合、专用于转发的进程或者功能模块。
更进一步的,步骤五中,所述通知为所述sdn控制器集群中的一类已有消息,通过在所述已有消息中增加内容以达到通知目的;
或者,所述通知为所述sdn控制器集群中新增加的一类消息。
实施例1
初始时,sdn控制器集群中存在两个控制器,且主时钟设备没有故障的情况:
手动配置每个控制器为主时钟,并配置网络拓扑中每个设备的各个端口的角色为主端口或者从端口,主端口用于发送时钟同步报文,从端口用于接收时钟同步报文。两个控制器分别与不同的从时钟端口相连,如附图2所示。
sdn集群下发与时钟同步功能相关的配置参数,包括但不限于每个设备的时钟角色属性、每个设备上每个端口的角色。该参数为时钟同步功能相关参数的集合,不同的网络设备参数可能不同,通过不同的目标地址发往不同的设备。可在两个控制器中任意选取一个,进行初始配置的下发,不同的从时钟设备分别下发。
与sdn集群相连的从时钟设备,接收到时钟同步参数以后,首先判断该参数是否是发给本从时钟设备,如果该参数是下发给自己的,与sdn集群相连的从时钟设备更新本地参数。
与sdn集群相连的从时钟设备,接收到时钟同步参数以后,首先判断该参数是否是发给本从时钟设备,如果该参数不是下发给自己的,则将其转发给目标地址标识的设备。通过不同设备的依次转发,时钟同步参数最终到达目标设备,完成各个设备的参数更新。
sdn控制器集群中的两个控制器,每个控制器都开始发送第一个时钟同步报文,然后周期性发送时钟同步报文。发送时钟同步报文的周期在初始时根据需要进行配置,两个控制器发送时钟同步报文的周期相同。
与sdn集群相连的从时钟设备,接收到时钟同步报文以后,先根据时钟同步报文的内容进行本地操作,再将时钟同步报文经由所有的主端口进行转发,最终时钟同步报文到达各个从时钟。
从时钟接收到sdn主时钟发来的时钟同步报文以后,解析需要同步的时间值,依据设置的算法,对该值进行判定。如果从时钟判定同步的时间值需要过滤,则不修改本地时间,否则修改本地的时间值与同步的时间值保持一致。
sdn集群中的两个控制器在发送第一个时钟同步报文的同时,启动两个控制器之间的状态监控,两个控制器之间进行监控消息交互。两个控制器之间的交互消息中携带自身时间值,该时间值用于判断控制器主时钟的时钟值是否有异常。
上述系统在运行一段时间后,控制器a的时钟模块发生了故障。当控制器a发生故障以后,它会停止发送时钟同步相关的报文。但是,由于控制器b仍然正常发送时钟同步相关报文,通过各网络节点的依次转发,各个从时钟仍然能正常进行时钟同步,故时钟同步功能不受影响,如附图3所示。
本实施例的方法,能够在控制器主时钟a发生故障的情况下,保持时钟同步功能的正常运行,提供高可靠的时钟同步。
实施例2
本实施例为一种三个控制器提供时钟同步的方法,初始时,sdn控制器集群中存在三个控制器,且主时钟设备没有故障的情况:
手动配置每个控制器为主时钟,并配置网络拓扑中每个设备的各个端口的角色为主端口或者从端口,主端口用于发送时钟同步报文,从端口用于接收时钟同步报文。三个控制器分别与不同的从时钟端口相连,如附图4所示。
sdn集群下发与时钟同步功能相关的配置参数,包括但不限于每个设备的时钟角色属性、每个设备上每个端口的角色。该参数为时钟同步功能相关参数的集合,不同的网络设备参数可能不同,通过不同的目标地址发往不同的设备。可在三个控制器中任意选取一个,进行初始配置的下发,不同的从时钟设备分别下发。
与sdn集群相连的从时钟设备,接收到时钟同步参数以后,首先判断该参数是否是发给本从时钟设备,如果该参数是下发给自己的,与sdn集群相连的从时钟设备更新本地参数。
与sdn集群相连的从时钟设备,接收到时钟同步参数以后,首先判断该参数是否是发给本从时钟设备,如果该参数不是下发给自己的,则将其转发给目标地址标识的设备。通过不同设备的依次转发,时钟同步参数最终到达目标设备,完成各个设备的参数更新。
sdn控制器集群中的三个控制器,每个控制器都开始发送第一个时钟同步报文,然后周期性发送时钟同步报文。发送时钟同步报文的周期在初始时根据需要进行配置,三个控制器发送时钟同步报文的周期相同。
与sdn集群相连的从时钟设备,接收到时钟同步报文以后,先根据时钟同步报文的内容进行本地操作,再将时钟同步报文经由所有的主端口进行转发,最终时钟同步报文到达各个从时钟。
从时钟接收到sdn主时钟发来的时钟同步报文以后,解析需要同步的时间值,依据设置的算法,对该值进行判定。如果从时钟判定同步的时间值需要过滤,则不修改本地时间,否则修改本地的时间值与同步的时间值保持一致。
sdn集群中的三个控制器在发送第一个时钟同步报文的同时,启动三个控制器之间的状态监控,三个控制器之间互相进行监控消息交互。三个控制器之间的交互消息中携带自身时间值,该时间值用于判断控制器主时钟的时钟值是否有异常。
上述系统在运行一段时间后,控制器a的时钟模块发生了故障。当控制器a发生故障以后,它会停止发送时钟同步相关的报文。但是,由于控制器b和控制器c仍然正常发送时钟同步相关报文,通过各网络节点的依次转发,各个从时钟仍然能正常进行时钟同步,故时钟同步功能不受影响。
本实施例的方法,能够在控制器主时钟a发生故障的情况下,由于控制器b和控制器c仍然正常发送时钟同步相关报文,能够保持时钟同步功能的正常运行。即网络运行出现了控制器主时钟a异常的情况,但这种异常可以无缝排除,提供高可靠的时钟同步。
将sdn控制器作为主时钟设备天然具有优势,能够解决前述所描述的背景问题,不需要关注任何本地算法。主控制器是2个还是3个,所能提供的可靠性不一样,3个sdn控制器能够提升系统时钟同步功能的可靠性,如果有一个控制器的时钟发生故障,另一个控制器的时钟被修改的情况,此时如果是2个控制器主时钟,则无法保证可靠性。
实施例3
与上述两个实施例相比,不同之处在于,控制器a的时钟发生故障以后,网络运行过程中,控制器b的本地时钟被人为修改成某个异常值,如附图5所示。控制器a的时钟模块发生故障以后,它停止发送时钟同步相关报文。但是,控制器b和控制器c仍然正常发送时钟同步报文,各个从时钟节点仍然能够接收到时钟同步报文。
控制器b和控制器c发送的时钟同步报文分别到达从时钟以后,由于控制器b的同步报文中携带的时间值是一个异常值,从时钟根据本地设置的过滤算法判定,不与控制器b的时钟同步报文同步,但是会与控制器c的时钟同步报文同步。故从时钟仍然能接收到正常的时钟同步报文,其时钟值仍能与主时钟保持一致。
控制器c通过与控制器b之间的状态监控消息所携带的时间戳,判定控制器b的时间值出现了异常,控制器c向控制器b发送通知消息,通知控制器b修改本地时钟值与控制器c保持一致。
本实施例的方法,能够在控制器主时钟a发生故障、控制器主时钟b的时钟值被人为修改的恶劣情况下,仍然保持时钟同步功能的正常运行,提供高可靠的时钟同步。
实施例4
本申请公开基于sdn主时钟的时钟同步系统,所述系统包括sdn控制器、sdn交换机以及端设备,其中,所述sdn控制器为设定的主时钟设备,其与sdn交换机相交互,向从时钟设备下发配置参数,并且,系统中各sdn控制器之间发送交互消息,所述交互消息为控制器状态监控消息,其内容包含但不限于时钟修正值、异常标识、时间戳交互时钟同步报文;所述sdn交换机和端设备,即从时钟设备,接收到时钟同步报文后,在本地执行过滤算法,满足所述过滤算法的过滤条件的报文不进行同步,否则进行同步。
本申请还提供含有上述基于sdn主时钟的时钟同步方法的计算机可读存储介质。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。另外,本申请实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
1.一种基于sdn主时钟的时钟同步方法,其特征在于,所述方法包括以下步骤:
步骤一,手动配置sdn控制器集群中的每个控制器为主时钟设备,每个控制器分别与网络中的其他从时钟设备相连;
步骤二,所述主时钟设备向所述从时钟设备下发配置参数,该配置参数是sdn控制器在本地计算得到;
步骤三,所述控制器主时钟定期发送时钟同步报文;
步骤四,所述从时钟设备接收到时钟同步报文后,在本地执行过滤算法,满足所述过滤算法的过滤条件的报文不进行同步,否则进行同步;
步骤五,当某控制器监控到集群中其他控制器的时钟值有异常时,发送通知给所述时钟值异常的控制器,所述时钟值异常的控制器根据所述通知携带的时钟值修改本地时钟值。
2.根据权利要求1所述的基于sdn主时钟的时钟同步方法,其特征在于,所述控制器相互之间发送交互消息,所述交互消息中携带时间戳,根据时间戳判断其他控制器的时钟是否有异常。
3.根据权利要求2所述的基于sdn主时钟的时钟同步方法,其特征在于,所述交互消息内容包括但不限于修正值、异常标识、时间戳。
4.根据权利要求1至3任一项所述的基于sdn主时钟的时钟同步方法,其特征在于,步骤一中,所述控制器的存在形式包括物理机、虚拟机、进程,所述控制器之间的连接方式包括有线连接、无线连接、进程间通信、管道通信。
5.根据权利要求4所述的基于sdn主时钟的时钟同步方法,其特征在于,步骤一中,所述每个控制器分别与从时钟设备相连,具体为:
每个所述控制器与所述从时钟设备以有线连接的方式相连,或者通过无线通信的方式交互。
6.根据权利要求4所述的基于sdn主时钟的时钟同步方法,其特征在于,所述配置参数包括但不限于每个从时钟设备的时钟角色、每个从时钟设备上每个端口的角色。
7.根据权利要求4所述的基于sdn主时钟的时钟同步方法,其特征在于,步骤二主时钟设备向所述从时钟设备下发配置参数具体为:
所述配置参数向从时钟设备依次分别下发,或者将所述从时钟设备形成列表,向列表内的从时钟设备统一下发。
8.根据权利要求4所述的基于sdn主时钟的时钟同步方法,其特征在于,步骤三中,所述控制器定期发送时钟同步报文,具体为:
各控制器在同一时刻或不同时刻发送第一个时钟同步报文;
所述控制器的转发面,支持ieee802.1as协议时钟同步报文的收发;
所述转发面,包括逻辑转发面、抽象出来的转发功能集合、专用于转发的进程或者功能模块。
9.根据权利要求4所述的基于sdn主时钟的时钟同步方法,其特征在于,步骤五中,所述通知为所述sdn控制器集群中的一类已有消息,通过在所述已有消息中增加内容以达到通知目的;
或者,所述通知为所述sdn控制器集群中新增加的一类消息。
10.基于sdn主时钟的时钟同步系统,其特征在于,所述系统包括sdn控制器、sdn交换机以及端设备,其中,所述sdn控制器为设定的主时钟设备,其与sdn交换机相交互,向从时钟设备下发配置参数,并且,系统中各sdn控制器之间发送交互消息;
所述sdn交换机和端设备,即从时钟设备,接收到时钟同步报文后,在本地执行过滤算法,满足所述过滤算法的过滤条件的报文不进行同步,否则进行同步。
11.一种计算机可读存储介质,其特征在于,所述存储介质中含有如权利要求1至9任一项所述的基于sdn主时钟的时钟同步方法。
技术总结