发明内容
本发明提供一种时钟频率调整方法及装置,用以减少由于网络设备处于负频偏而导致的报文丢弃现象。
本发明的第一方面提供了一种时钟频率调整方法,其特征在于,包括:
监控网络设备的时钟频率,所述网络设备的处理器包括M个通用输入输出GPIO,用于对所述网络设备的时钟频率进行调整,其中M为大于等于1的整数;
如果所述网络设备的时钟频率处于负频偏,则控制所述M个GPIO改变所述网络设备的压控振荡器的输入电压,以调整所述网络设备的时钟频率。
结合第一方面,在第一方面的第一种可能实现方式中,所述M为大于等于2的整数;
相应地,所述控制所述M个GPIO改变所述网络设备的压控振荡器的输入电压包括:
获取所述网络设备的端口的缓存中的报文数量;
如果所述端口的缓存中报文数量大于第一缓存门限,且小于第二缓存门限,控制所述M个GPIO中的第一GPIO输出高电平,所述M个GPIO中剩余的GPIO为输入状态,其中,所述压控振荡器的分压管脚连接在第一分压电阻和第二分压电阻之间,所述第一GPIO通过调整电阻与所述第一分压电阻并联。
结合第一方面以及第一方面的第一种可能实现方式,在第一方面的第二种可能实现方式中,所述监控网络设备的时钟频率包括:
实时检测所述网络设备的端口的缓存;
若所述端口的缓存中存在报文,则获取所述端口的瞬时流量带宽;
如果所述端口的瞬时流量带宽超过预设端口带宽门限值,则判定所述网络设备的时钟频率处于负频偏。
结合第一方面的第二种可能实现方式,在第一方面的第三种可能实现方式中,获取所述端口的瞬时流量带宽,包括:
获取所述端口在当前周期开始时的接收报文计数值和在当前周期结束时的接收报文计数值;
根据所述在当前周期开始时的接收报文计数值和所述在当前周期结束时的接收报文计数值,获取所述端口在当前周期内接收到的报文数量,所述当前周期内接收到的报文数量等于所述在当前周期结束时的接收报文计数值减去所述在当前周期开始时的接收报文计数值;
根据所述在当前周期内接收到的报文数量,获取所述端口的瞬时流量带宽,所述端口的瞬时流量带宽等于所述在当前周期内接收到的报文数量除以所述当前周期的时长所得的值。
结合第一方面的第二种可能实现方式,在第一方面的第四种可能实现方式中,还包括:
若所述的端口的缓存中不存在报文,判断所述网络设备的时钟频率是否做过频偏调整;
如果所述网络设备的时钟频率做过频偏调整,将所述网络设备的时钟频率恢复到正常频率。
本发明第二方面提供了一种时钟频率调整装置,包括:
监控模块,用于监控网络设备的时钟频率,所述网络设备的处理器包括M个通用输入输出GPIO,用于对所述网络设备的时钟频率进行调整,其中M为大于等于1的整数;
调整模块,用于如果判定所述网络设备的时钟频率处于负频偏,则控制所述M个GPIO改变所述网络设备的压控振荡器的输入电压,以调整所述网络设备的时钟频率。
结合第二方面,在第二方面的第一种可能实现方式中,所述M为大于等于2的整数;
所述调整模块具体用于:
获取所述网络设备的端口的缓存中的报文数量;
如果所述端口的缓存中报文数量大于第一缓存门限,且小于第二缓存门限,控制所述M个GPIO中的第一GPIO输出高电平,所述M个GPIO中剩余的GPIO为输入状态,其中,所述压控振荡器的分压管脚连接在第一分压电阻和第二分压电阻之间,所述第一GPIO通过调整电阻与所述第一分压电阻并联。
结合第二方面以及第二方面的第一种可能实现方式,在第二方面的第二种可能实现方式中,所述监控模块具体用于:
实时检测所述网络设备的端口的缓存;
若所述端口的缓存中存在报文,则获取所述端口的瞬时流量带宽;
如果所述端口的瞬时流量带宽超过预设端口带宽门限值,则判定所述网络设备的时钟频率处于负频偏。
结合第二方面的第二种可能实现方式,在第二方面的第三种可能实现方式中,所述监控模块具体用于:
获取所述端口在当前周期开始时的接收报文计数值和在当前周期结束时的接收报文计数值;
根据所述在当前周期开始时的接收报文计数值和所述在当前周期结束时的接收报文计数值,获取所述端口在当前周期内接收到的报文数量,所述当前周期内接收到的报文数量等于所述在当前周期结束时的接收报文计数值减去所述在当前周期开始时的接收报文计数值;
根据所述在当前周期内接收到的报文数量,获取所述端口的瞬时流量带宽,所述端口的瞬时流量带宽等于所述在当前周期内接收到的报文数量除以所述当前周期的时长所得的值。
结合第二方面的第二种可能实现方式,在第二方面的第四种可能实现方式中,所述监控模块还用于:
若所述端口的缓存中不存在报文,判断所述网络设备的时钟频率是否做过频偏调整;
相应地,所述调整模块还用于如果所述网络设备的时钟频率做过频偏调整,将所述网络设备的时钟频率恢复到正常频率。
本发明通过监控网络设备的端口的流量带宽来判断所述网络设备的时钟频率是否存在负频偏,当所述网络设备的时钟频率存在负频偏时,通过改变所述网络设备的压控振荡器的输入电压,从而实现了动态调整网络设备的时钟频率,减少了由于处于相对负频偏的网络设备上报文丢弃的现象。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的时钟频率调整方法流程图,适用于网络设备的晶振为压控振荡器,方法包括如下步骤:
步骤101,监控网络设备的时钟频率。
其中,网络设备的处理器包括M个GPIO(General Purpose Input Output,通用输入输出),用于对网络设备的时钟频率进行调整,其中M为大于等于1的整数。
处理器可以是中央处理器(central processing unit,简称CPU)。
本实施例的所谓负频偏是相对而言的,举例来说,进行报文传输的两个网络设备之间的时钟频率不同步时,会存在一个网络设备的时钟频率大于另一个网络设备的时钟频率的情况,此时,时钟频率较小的网络设备的时钟频率处于负频偏。
如图2所示,该步骤101具体可以包括如下步骤:
步骤201,实时检测该网络设备的端口的缓存是否存在报文,若端口的缓存中存在报文,执行步骤202,否则,执行步骤205。
在本实施例中,通过定时器实时检测该网络设备的端口的缓存中报文的数量来得知该网络设备的端口的缓存中是否存在报文,当该网络设备的端口的缓存中报文的数量大于或等于1时,该网络设备的端口的缓存中存在报文,则执行步骤202,当该网络设备的端口的缓存中报文的数量为0时,该网络设备的端口的缓存中不存在报文,则判断该网络设备的时钟频率是否做过频偏调整,当该网络设备的时钟频率做过频偏调整时,将时钟频率恢复到正常频率,当该网络设备的时钟频率没做过频偏调整,不调整时钟频率。
步骤202,获取端口的瞬时流量带宽。
在本实施例中,通过步骤201检测出该网络设备的端口的缓存中存在报文后,获取该网络设备的端口的瞬时流量带宽,具体可以是根据该网络设备的端口的报文数量计算出该网络设备的端口的瞬时流量带宽。
该步骤202具体包括如下步骤:
获取该端口在当前周期开始时的接收报文计数值和在当前周期结束时的接收报文计数值;
根据在当前周期开始时的接收报文计数值和在当前周期结束时的接收报文计数值,获取该端口在当期周期内接收到的报文数量,当前周期内接收到的报文数量等于在当前周期结束时的接收报文计数值减去在当前周期开始时的接收报文计数值;
根据在当前周期内接收到的报文数量,获取端口的瞬时流量带宽,端口的瞬时流量带宽等于在当前周期内接收到的报文数量除以当前周期的时长所得的值。
在本实施例中,假设该网络设备的端口在当前周期开始之前的接收报文计数值为P1,在当前周期结束时的接收报文计数值为P2,该网络设备的端口在当前周期内接收到的报文数量为P,则P=P2-P1,即该网络设备的端口在当前周期内接收到的报文数量等于该当前周期结束时的接收报文计数值减去该当前周期开始时接的收到报文计数值。假设定时器的间隔时间为T,即,当前周期的时长为T时,该网络设备的端口的瞬时流量带宽为B,因此,B=(P2-P1)T,即该网络设备的端口的瞬时流量带宽等于该当前周期内接收到的报文数量除以当前周期的时长所得的值,这样便可以由报文数量计算出该网络设备的端口的瞬时流量带宽。
本实施例的技术方案,通过检测该网络设备的端口的缓存中的报文数量来获取该网络设备的端口的瞬时流量带宽。
步骤203,判断该瞬时流量带宽是否超过预设端口带宽门限,若是,执行步骤204,否则,执行步骤205。
一般情况下,该预设端口带宽的门限可以由用户自定义设置。在本实施例中,由步骤202中已经获取了该网络设备的端口的瞬时流量带宽B,将该网络设备的端口的瞬时流量带宽B和预设端口带宽的门限进行比较,判断该端口的瞬时流量带宽是否超过预设端口带宽的门限,若超过,则执行步骤204,若不超过,则执行步骤205。
步骤204,确定该网络设备的时钟频率处于负频偏。
步骤205,确定该网络设备的时钟频率不处于负频偏。
在本实施例中,如果由步骤203判断出该网络设备的端口的瞬时流量带宽超过预设端口带宽门限,则确定该网络设备的时钟频率处于负频偏,如果由步骤203判断出该网络设备的端口的瞬时流量带宽没有超过预设端口带宽门限,则确定该网络设备的时钟频率不处于负频偏。
步骤102,如果该网络设备的时钟频率处于负频偏,则控制M个GPIO改变该网络设备的压控振荡器的输入电压,以调整该网络设备的时钟频率。
在本实施例中,网络设备的晶振为压控振荡器,压控振荡器的输出频率与输入电压之间存在一定的关系,通常压控振荡器的输出频率随输入电压的增大而增大。因此,当由步骤101判断出该网络设备的时钟频率处于负频偏时,通过改变该网络设备的压控振荡器的输入电压,可以达到调整该网络设备的时钟频率的目的。
本实施例的技术方案,可以通过定时器监控网络设备的时钟频率是否处于负频偏,当处于负频偏的时候通过改变该网络设备的压控振荡器的输入电压来调整该网络设备的时钟频率,减少了处于相对负频偏的网络设备上报文丢弃的现象。
进一步可选地,M为大于等于2的整数;相应地,所述控制M个GPIO改变网络设备的压控振荡器的输入电压包括:
获取网络设备的端口的缓存中的报文数量;
如果端口的缓存中报文数量大于第一缓存门限,且小于第二缓存门限,控制M个GPIO中的第一GPIO输出高电平,M个GPIO中剩余的GPIO为输入状态,其中,压控振荡器的分压管脚连接在第一分压电阻和第二分压电阻之间,第一GPIO通过调整电阻与第一分压电阻并联。
本发明实施例中,网络设备的处理器可以包括M个GPIO(General Purpose InputOutput,通用输入输出),用于对网络设备的时钟频率进行多级调整,其中M为大于等于1的整数。
当M=1时,即表示处理器有一个GPIO,例如第一GPIO。此时,若网络设备的端口的缓存报文数量大于第一缓存门限,且小于第二缓存门限时,可以将该第一GPIO设置为输出高电平,若网络设备的端口的缓存报文数量小于第一缓存门限,则将该第一GPIO设置为输入状态。
图3A为本发明实施例提供的部分网络设备的结构示意图,以该网络设备的处理器包括两个GPIO为例。如图3A所示,处理器的两个GPIO分别为GPIO1和GPIO2,VDD为压控振荡器的供电管脚(英文:pin),GND为接地管脚;output为时钟频率输出管脚,输出时钟信号(CLOCK);VCON为电压控制管脚,通过第一分压电阻R连接至供电电压VCC,通过第二分压电阻R’接地,第一分压电阻R和第二分压电阻R’串联。本实施例中以R=R’=4.7欧姆(Ω),R1=R2=10Ω为例进行说明。当然R和R’的阻值也可以不等,R1和R2的阻值也可以不等,具体可以根据实际需要进行设定,本实施例中不做限定。
举例来说,起始时刻,GPIO1和GPIO2均为输入状态时,即GPIO1和GPIO2均为高阻状态时,R1和R2不起作用,表示未通过GPIO1和GPIO2改变该网络设备的压控振荡器的输入电压,也即未对网络设备的时钟频率进行调整。此时电压控制管脚VCON的电压为假设压控振荡器的输出频率为25MHz+/-100PPM,其中,25MHz为期望输出的频率,+/-100PPM为输出频率的误差范围。
如果接下来监控到该网络设备的时钟频率处于负频偏,则控制GPIO1或GPIO2输出高电平,例如GPIO1输出高电平,GPIO2仍为输入状态。假设GPIO1的输出电压为VG,假设,则电压控制管脚VCON的电压升高即电压控制管脚VCON的电压为由于压控振荡器的输入电压越大,输出频率越大,因此压控振荡器的输出频率随着增加的电压增加,假设增加25PPM,这样调整后的压控振荡器的输出频率为(25MHz+25PPM)+/-100PPM。
如果接下来监控到该网络设备的时钟频率仍然处于负频偏,则控制GPIO1和GPIO2都输出高电平时,则电压控制管脚VCON的电压再升高为相应地,压控振荡器的输出频率再增加25PPM,此时,压控振荡器的输出频率为(25MHz+50PPM)+/-100PPM。
在上述实施例的基础上,当该网络设备的时钟频率处于负频偏时,通过控制该网络设备的处理器的GPIO的输出电平,改变该网络设备的压控振荡器的输入电压,多级调整该网络设备的时钟频率。具体步骤包括:获取网络设备的端口的缓存中的报文数量;如果端口的缓存中报文数量大于第一缓存门限,且小于第二缓存门限,控制M个GPIO中的第一GPIO输出高电平,M个GPIO中剩余的GPIO为输入状态,其中,压控振荡器的分压管脚连接在第一分压电阻和第二分压电阻之间,第一GPIO通过调整电阻与第一分压电阻并联。本实施例中,多级调整后的该网络设备的时钟频率差能够符合预设频率差,例如能够满足802.3协议要求,时钟频率差在+/-50PPM之内。该时钟频率差指的是多级调整的网络设备与另外一网络设备之间的时钟频率的差值。
接下来,将具体结合图3A说明本发明技术方案。参见图3B,为本发明实施例提供的时钟频率调整方法流程图,方法包括:
步骤301,识别该网络设备的端口的缓存中的报文数量。
该步骤即识别时钟频率处于负频偏的网络设备的端口的缓存中的报文数量,报文数量假设为p。
步骤302,识别该网络设备的端口的缓存中报文的数量是否大于第一缓存门限。
设置缓存门限,在本实施例中以两级缓存门限为例,假设第一缓存门限为p1,第二缓存门限为p2,其中,p1<p2。识别时钟频率处于负频偏的网络设备的端口的缓存中报文的数量p是否大于第一缓存门限p1,当大于第一缓存门限p1时,执行步骤304,当不大于第一缓存门限p1时,执行步骤303。
步骤303,将GPIO全设置为输入状态;
需要指出的是,如果预先将GPIO全部设置为输入状态,那么此时步骤303为保持GPIO全部为输入状态。
当网络设备的端口的缓存中报文的数量p不大于第一缓存门限p1时,表明该网络设备的时钟频率在预设范围内,不需要进行频率调整,则使连接压控振荡器电压控制管脚VCON的GPIO全为输入状态。
步骤304,识别该网络设备的端口的缓存中报文数量是否大于第二缓存门限;
在步骤302中识别出该网络设备的端口的缓存报文数量p大于第一缓存门限时p1,该步骤再识别该网络设备的端口的缓存报文数量p是否大于第二缓存门限p2,当p>p2时,执行步骤306,当p≤p2时,执行步骤305。
步骤305,将1个GPIO设置为输出高电平,其余GPIO设置为输入状态;
当识别出p1<p≤p2,使与压控振荡器的电压控制管脚VCON连接的GPIO中的1个GPIO输出高电平,其余GPIO为输入状态。例如,图3A中,将GPIO1设置为输出高电平,则GPIO2保持输入状态。
步骤306,将2个GPIO设置为输出高电平。
本领域技术人员可以理解,可以根据实际使用情况设定缓存门限的级数以及与压控振荡器的电压控制管脚并联的GPIO的个数,本发明在此不再赘述。
本实施例的技术方案,在将至少一个GPIO与压控振荡器的电压控制管脚VCON通过电阻并联的硬件连接基础上,通过设定报文数量的缓存门限,识别该网络设备的端口的缓存中报文的数量所达到的级别,使与压控振荡器的电压控制管脚VCON相连的GPIO中相应个数的GPIO输出高电平,其余为输入状态,达到了多级动态调整网络设备时钟频率的效果,进一步能够减少处于相对负频偏的网络设备上报文丢弃的现象。
图4为本发明实施例提供的时钟频率调整装置的结构示意图。如图4所示,所述装置包括监控模块41和调整模块42。
其中,监控模块41用于监控该网络设备的时钟频率,网络设备的处理器包括M个通用输入输出GPIO,用于对网络设备的时钟频率进行调整,其中M为大于等于1的整数;调整模块42用于如果该网络设备的时钟频率处于负频偏,则控制M个GPIO,改变该网络设备的压控振荡器的输入电压,以调整该网络设备的时钟频率。
具体地,监控模块41可以当监控到网络设备的时钟频率处于负频偏时,触发调整模块42,或者是频偏监控模块41将监控结果发送至调整模块42,以使调整模块42根据监控结果识别出网络设备的时钟频率处于负频偏时,改变该网络设备的压控振荡器的输入电压,调整该网络设备的时钟频率。
可选地,M为大于等于2的整数,调整模块42具体用于:
获取网络设备的端口的缓存中的报文数量;
如果端口的缓存中报文数量大于第一缓存门限,且小于第二缓存门限,控制M个GPIO中的第一GPIO输出高电平,M个GPIO中剩余的GPIO为输入状态,其中,压控振荡器的分压管脚连接在第一分压电阻和第二分压电阻之间,第一GPIO通过调整电阻与第一分压电阻并联。
具体地,监控模块41用于:
实时检测网络设备的端口的缓存;
若端口的缓存中存在报文,则获取端口的瞬时流量带宽;
如果端口的瞬时流量带宽超过预设端口带宽门限值,则判定网络设备的时钟频率处于负频偏。
更为具体地,监控模块41用于:
获取端口在当前周期开始时的接收报文计数值和在当前周期结束时的接收报文计数值;
根据在当前周期开始时的接收报文计数值和在当前周期结束时的接收报文计数值,获取端口在当前周期内接收到的报文数量,当前周期内接收到的报文数量等于在当前周期结束时的接收报文计数值减去在当前周期开始时的接收报文计数值;
根据在当前周期内接收到的报文数量,获取端口的瞬时流量带宽,端口的瞬时流量带宽等于在当前周期内接收到的报文数量除以当前周期的时长所得的值。
其中,监控模块41还用于:
若端口的缓存中不存在报文,判断网络设备的时钟频率是否做过频偏调整;
相应地,调整模块还用于如果网络设备的时钟频率做过频偏调整,将网络设备的时钟频率恢复到正常频率;如果挽留过设备的时钟频率未做过频偏调整,则不调整时钟频率。
本实施例的技术方案,通过检测该网络设备的端口的缓存中是否存在报文,当存在报文时,获取该网络设备的端口的瞬时流量带宽,并根据该瞬时流量带宽是否超过预设端口带宽门限来判断该网络设备的时钟频率是否处于负频偏,从而获知该网络设备是否可能存在报文丢弃的现象。
本实施例的技术方案,通过监控模块41监控该网络设备的时钟频率是否处于负频偏,再经过调整模块42改变处于负频偏的网络设备的压控振荡器的输入电压,调整该网络设备的时钟频率,减少了处于相对负频偏的网络设备上报文丢弃的现象。
在上述实施例的基础上,可选地,该调整模块42通过控制该网络设备的CPU的GPIO的输出电平,改变该网络设备的压控振荡器的输入电压,多级调整该网络设备的时钟频率。
本发明还提供了一种网络设备,如图5所示,包括:至少一个处理器601,以及存储器602,还包括压控振荡器603;存储器602,用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。所述处理器601与所述存储器602可以通过总线或其他方式连接,图5中以通过总线连接为例。处理器601和压控振荡器603之间的连接方式具体可以参考图3A,当然还可以有其它连接方式,本实施例中不做限定。
处理器601执行存储器602中存储的程序,实现本发明实施例提供的时钟频率调整方法,包括:
监控网络设备的时钟频率,网络设备的处理器包括M个通用输入输出GPIO,用于对网络设备的时钟频率进行调整,其中M为大于等于1的整数;
如果网络设备的时钟频率处于负频偏,则控制M个GPIO,改变网络设备的压控振荡器603的输入电压,以调整网络设备的时钟频率。
可选地,M为大于等于2的整数,则所述控制M个GPIO,改变网络设备的压控振荡器603的输入电压包括:
获取网络设备的端口的缓存中的报文数量;
如果端口的缓存中报文数量大于第一缓存门限,且小于第二缓存门限,控制M个GPIO中的第一GPIO输出高电平,M个GPIO中剩余的GPIO为输入状态,其中,压控振荡器的分压管脚连接在第一分压电阻和第二分压电阻之间,第一GPIO通过调整电阻与第一分压电阻并联。
可选地,所述监控网络设备的时钟频率,包括:
实时检测网络设备的端口的缓存;
若网络设备的端口的缓存中存在报文,则获取端口的瞬时流量带宽;
如果端口的瞬时流量带宽超过预设端口带宽门限值,则判定网络设备的时钟频率处于负频偏。
可选地,所述获取该端口的瞬时流量带宽,包括:
获取端口在当前周期开始时的接收报文计数值和在当前周期结束时的接收报文计数值;
根据在当前周期开始时的接收报文计数值和在当前周期结束时的接收报文计数值,获取端口在当前周期内接收到的报文数量,当前周期内接收到的报文数量等于在当前周期结束时的接收报文计数值减去在当前周期开始时的接收报文计数值;
根据在当前周期内接收到的报文数量,获取端口的瞬时流量带宽,端口的瞬时流量带宽等于在当前周期内接收到的报文数量除以当前周期的时长所得的值。
可选地,所述时钟频率调整方法还包括:
若端口的缓存中不存在报文,判断网络设备的时钟频率是否做过频偏调整;
如果网络设备的时钟频率做过频偏调整,将网络设备的时钟频率恢复到正常频率。
本实施例中,仅描述了网络设备与本发明相关的结构,所述网络设备还可以包括其他器件,对此本发明不做限定。
本发明实施例的网络设备,通过监控该网络设备的时钟频率是否处于负频偏,再经过改变处于负频偏的网络设备的压控振荡器的输入电压,调整该网络设备的时钟频率,减少了处于相对负频偏的网络设备上报文丢弃的现象。
需要说明的是:对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案和范围。