本申请涉及网络通信技术领域,尤其涉及一种环路检测报文的发送方法及装置。
背景技术:
在目前网络中,通常利用环路检测协议,检测网络设备的端口是否存在环路,当检测到某一端口存在环路时,根据用户的配置对该端口执行相应的动作,以使该网络设备的业务正常运行。因此,网络设备每隔一段时间(例如,每隔10秒)就会遍历所有运行环路检测协议的端口,利用该端口对应的所有VLAN(Virtual Local Area Network,虚拟局域网)发送环路检测报文。然而,当运行环路检测协议的端口数较多,且每个端口对应的VLAN也较多的情况下,在同一时间,网络设备需要发送大量的环路检测报文,这对网络设备是一个较大的负荷,可能会导致网络设备运行出错。
技术实现要素:
有鉴于此,本申请提供一种环路检测报文的发送方法及装置,以解决现有的发送方式容易导致网络设备运行出错的问题。
根据本申请实施例的第一方面,提供一种环路监测报文的发送方法,所述方法应用于网络设备上,所述网络设备包括多个端口,每个端口包括至少一个VLAN,所述方法包括:
针对每个端口,获取一个随机数,并利用所述随机数确定所述端口的开始发包时间;
若某一端口的开始发包时间超时,则利用所述某一端口对应的所有VLAN确定所述某一端口的发包批次,并按照所述发包批次发送环路检测报文;为所述某一端口创建一个定时器,并将所述定时器的超时时间设为第一预设间隔,以使所述某一端口每隔第一预设间隔的时间按照所述发包批次发送环路检测报文。
根据本申请实施例的第二方面,提供一种环路监测报文的发送装置,所述装置应用于网络设备上,所述网络设备包括多个端口,每个端口包括至少一个VLAN,所述装置包括:
确定单元,用于针对每个端口,获取一个随机数,并利用所述随机数确定所述端口的开始发包时间;
发包单元,用于若某一端口的开始发包时间超时,则利用所述某一端口对应的所有VLAN确定所述某一端口的发包批次,并按照所述发包批次发送环路检测报文;
创建定时器单元,用于为所述某一端口创建一个定时器,并将所述定时器的超时时间设为第一预设间隔,以使所述某一端口每隔第一预设间隔的时间按照所述发包批次发送环路检测报文。
应用本申请实施例,网络设备针对每个端口,获取一个随机数,并利用随机数确定该端口的开始发包时间;当某一端口的开始发包时间超时时,利用该某一端口对应的所有VLAN确定该某一端口的发包批次,并按照发包批次发送环路检测报文,然后再为该某一端口创建一个定时器,并将定时器的超时时间设为第一预设间隔,以使该某一端口每隔第一预设间隔的时间按照发包批次发送环路检测报文。基于上述实现方式,由于随机数不具有序性,因此网络设备为每个端口获取的随机数可以不同,从而得到的开始发包时间也就不同,这样,网络设备的每个端口发送环路检测报文的时间就被分散开了,减少了在同一时间发送环路检测报文的数量,因此可以避免在同一时间发送所有端口的环路检测报文而导致网络设备运行出错的问题。又由于每个端口按照发包批次发送环路检测报文,即网络设备将该端口的环路检测报文一批一批的发送出去,这样进一步减少了在同一时间发送环路检测报文的数量,并且在端口处也不会拥塞很多报文,能够提高端口收发报文的效率。
附图说明
图1A为本申请根据一示例性实施例示出的一种环路检测报文的发送方法的实施例流程图;
图1B为图1A所示实施例中的一种示例性的环路检测报文发送时间顺序图;
图2为本申请根据一示例性实施例示出的一种网络设备的硬件结构图;
图3为本申请根据一示例性实施例示出的一种环路检测报文的发送装置的实施例结构图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
图1A为本申请根据一示例性实施例示出的一种环路检测报文的发送方法的实施例流程图,该实施例应用于网络设备上,例如,可以应用在交换机上,也可以应用在路由器上,在本申请实施例中,网络设备上包括有多个端口,并且每个端口包括多个VLAN,因此可以通过将每个运行环路检测协议端口的发包时间错开,以减少同一时间该网络设备发送环路检测报文的数量。如图1A所示,该实施例包括以下步骤:
步骤101:针对每个端口,获取一个随机数,并利用该随机数确定该端口的开始发包时间。
在执行步骤101之前,网络设备可以先获取所有运行环路检测协议的端口,而对于未运行环路检测协议的端口不做任何处理。
针对获取一个随机数的过程,网络设备可以从本设备的内核熵池中获得,或者也可以利用随机数生成算法获得。内核熵池与随机数生成算法相比,由于内核熵池中的随机数是由设备环境噪声产生的,例如,网络设备发生中断的时间、用户点击鼠标的时间等均是环境噪声,获得的随机数的随机性比较大、有序性差,因此从内核熵池中获得的随机数是真正的随机数。在本申请实施例中,推荐使用从内核熵池获得随机数。
针对利用该随机数确定该端口的开始发包时间的过程,网络设备可以将该随机数与第二预设间隔之和确定为该端口的开始发包时间;或者,将该随机数确定为该端口的开始发包时间。
其中,第二预设间隔可以是5秒,开始发包时间指的是该端口在多久之后开始发送环路检测报文。
下面以随机数与第二预设间隔之和确定端口的开始发包时间为例进行说明,例如网络设备包括端口1、端口2以及端口3,第二预设间隔为5秒,为端口1获取到的随机数为0,为端口2获取到的随机数3,为端口3获取到的随机数为2,则可以得到端口1的开始发包时间为5秒,端口2的开始发包时间为8秒,端口3的开始发包时间为7秒。
基于步骤101的描述可知,由于随机数不具有序性,因此,网络设备为每个端口获取的随机数可以不同,从而由随机数得到的开始发包时间也就不同,这样,网络设备的每个端口发送环路检测报文的时间就被分散开了,减少了在同一时间发送环路检测报文的数量,因此可以避免在同一时间发送所有端口的环路检测报文而导致网络设备运行出错的问题。
步骤102:若某一端口的开始发包时间超时,则利用该某一端口对应的所有VLAN确定该某一端口的发包批次,并按照该发包批次发送环路检测报文。
针对利用该某一端口对应的所有VLAN确定该某一端口的发包批次的过程,网络设备可以先确定该某一端口对应的所有VLAN的数量,并将所有VLAN的数量与预设数值之商确定为该某一端口的发包批次。
其中,网络设备中设置有每批次最大发包个数为预设数值,该预设数值指的是网络设备一次能够发送的最大报文数,该预设数值如果过大,每批次发送的环路检测报文数仍然较多,影响网络设备的性能,而该预设数据如果太小,在网络中存在环路的情况下,网络设备需要耗费较长的时间发送环路检测报文,导致检测不到环路,使业务运行出错,该预设数据需要根据实践经验进行设置。每一发包批次之间的间隔时间可以为预设时间,例如,10毫秒。如步骤101所述,例如,假设预设数值是10,网络设备的端口1包括的VLAN为VLAN 0至VLAN 15,则端口1对应的VLAN的数量为16,由16/10≈2,可以得到端口1的发包批次为二批次,即端口1需要分两个批次发送VLAN 0至VLAN 15的环路检测报文;端口2包括的VLAN为VLAN 16至VLAN 20,则可以得到端口2的发包批次为一批次;端口3包括的VLAN为VLAN 17至VLAN 46,则可以得到端口2的发包批次也为三批次。
针对按照该发包批次发送环路检测报文的过程,网络设备可以将该某一端口对应的所有VLAN对应的VLAN标识从小到大进行排序;在每一发包批次中,按照VLAN标识的排序发送环路检测报文,并记录该批次发送最后一个环路检测报文携带的VLAN标识,以在下一发包批次中从记录的VLAN标识对应的下一个VLAN标识开始发送环路检测报文。
其中,由于网络设备发送的环路检测报文中携带有VLAN标识,即VLAN的编号,为了保证每个端口对应的VLAN的环路检测报文都能发送出去,网络设备可以按照VLAN标识从小到大的排序发送环路检测报文,并且在下一发包批次中,从记录的VLAN标识对应的下一个VLAN标识开始发送环路检测报文,当发送到最后一个VLAN标识时,表示该端口对应的VLAN的环路检测报文全部发完。
结合步骤101与步骤102所述,图1B为图1A所示实施例中的一种示例性的环路检测报文发送时间顺序图,如图1B所示,网络设备上的端口1、端口2以及端口3的发包时间均被分散到不同的时间发送。
基于步骤102的描述可知,由于每个端口按照发包批次发送环路检测报文,即在端口的开始发包时间超时之后,该端口以预设时间间隔一批一批的将环路检测报文发送出去,这样进一步减少了网络设备在同一时间发送环路检测报文的数量,并且在端口处不会拥塞很多报文,能够提高端口收发报文的效率。
步骤103:为该某一端口创建一个定时器,并将该定时器的超时时间设为第一预设间隔,以使该某一端口每隔第一预设间隔的时间按照该发包批次发送环路检测报文。
在该某一端口第一次发包完成之后,网络设备可以为该某一端口创建一个定时器,并且该定时器的超时时间为第一预设间隔,以后该某一端口便可以每隔第一预设间隔的时间按照该发包批次发送环路检测报文。
由此可知,由于所有端口的第一次发包的时间错开之后,以后每个端口的的发包时间均不会重合在一起。
需要说明的是,网络设备发送的环路检测报文中均携带有网络设备的设备令牌,该网络设备的设备令牌的更新时间为第三预设间隔。为了确保当网络存在环路时,网络设备刚发送一个环路检测报文出去,该环路检测报文还未经网络内转发回到本设备,本设备的设备令牌就被更新了,这种情况下,环路检测报文携带的设备令牌是旧的,即使网络设备收到自身发出去的环路检测报文,也会因为设备令牌不一致而检测不到环路的存在。因此,设备令牌的更新时间需要等于端口的定时器的超时时间,即第三预设间隔需要与第一预设间隔相等。
由上述实施例可知,网络设备针对每个端口,获取一个随机数,并利用随机数确定该端口的开始发包时间;当某一端口的开始发包时间超时时,利用该某一端口对应的所有VLAN确定该某一端口的发包批次,并按照发包批次发送环路检测报文,然后再为该某一端口创建一个定时器,并将定时器的超时时间设为第一预设间隔,以使该某一端口每隔第一预设间隔的时间按照发包批次发送环路检测报文。基于上述实现方式,由于随机数不具有序性,因此网络设备为每个端口获取的随机数可以不同,从而得到的开始发包时间也就不同,这样,网络设备的每个端口发送环路检测报文的时间就被分散开了,减少了在同一时间发送环路检测报文的数量,因此可以避免在同一时间发送所有端口的环路检测报文而导致网络设备运行出错的问题。又由于每个端口按照发包批次发送环路检测报文,即网络设备将该端口的环路检测报文一批一批的发送出去,这样进一步减少了在同一时间发送环路检测报文的数量,并且在端口处也不会拥塞很多报文,能够提高端口收发报文的效率。
与前述环路监测报文的发送方法的实施例相对应,本申请还提供了环路监测报文的发送装置的实施例。
本申请环路监测报文的发送装置的实施例可以应用在网络设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图2所示,为本申请根据一示例性实施例示出的一种网络设备的硬件结构图,除了图2所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常根据该设备的实际功能,还可以包括其他硬件,对此不再赘述。
图3为本申请根据一示例性实施例示出的一种环路检测报文的发送装置的实施例结构图,所述网络设备包括多个端口,每个端口包括至少一个VLAN,该装置应用于网络设备上,如图3所示,该装置包括:确定单元310、发包单元320、创建定时器单元330。
其中,确定单元310,用于针对每个端口,获取一个随机数,并利用所述随机数确定所述端口的开始发包时间;
发包单元320,用于若某一端口的开始发包时间超时,则利用所述某一端口对应的所有VLAN确定所述某一端口的发包批次,并按照所述发包批次发送环路检测报文;
创建定时器单元330,用于为所述某一端口创建一个定时器,并将所述定时器的超时时间设为第一预设间隔,以使所述某一端口每隔第一预设间隔的时间按照所述发包批次发送环路检测报文。
在一个可选的实现方式中,所述确定单元310,具体用于在利用所述随机数确定所述端口的开始发包时间的过程中,将所述随机数与第二预设间隔之和确定为所述端口的开始发包时间;或者,将所述随机数确定为所述端口的开始发包时间。
在另一个可选的实现方式中,所述网络设备设置有每批次的最大发包个数为预设数值,所述发包单元320,具体用于在利用所述某一端口对应的所有VLAN确定所述某一端口的发包批次的过程中,确定所述某一端口对应的所有VLAN的数量;将所述所有VLAN的数量与所述预设数值之商确定为所述某一端口的发包批次。
在另一个可选的实现方式中,所述环路检测报文中携带有VLAN标识,所述发包单元320,具体用于在按照所述发包批次发送环路检测报文的过程中,将所述某一端口对应的所有VLAN对应的VLAN标识从小到大进行排序;在每一发包批次中,按照所述VLAN标识的排序发送环路检测报文,并记录该批次发送最后一个环路检测报文携带的VLAN标识,以在下一发包批次中从记录的VLAN标识对应的下一个VLAN标识开始发送环路检测报文。
在另一个可选的实现方式中,所述环路检测报文中携带有网络设备的设备令牌,所述网络设备的设备令牌的更新时间为第三预设间隔;所述第三预设间隔与所述第一预设间隔相等。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
由上述实施例可知,网络设备针对每个端口,获取一个随机数,并利用随机数确定该端口的开始发包时间;当某一端口的开始发包时间超时时,利用该某一端口对应的所有VLAN确定该某一端口的发包批次,并按照发包批次发送环路检测报文,然后再为该某一端口创建一个定时器,并将定时器的超时时间设为第一预设间隔,以使该某一端口每隔第一预设间隔的时间按照发包批次发送环路检测报文。基于上述实现方式,由于随机数不具有序性,因此网络设备为每个端口获取的随机数可以不同,从而得到的开始发包时间也就不同,这样,网络设备的每个端口发送环路检测报文的时间就被分散开了,减少了在同一时间发送环路检测报文的数量,因此可以避免在同一时间发送所有端口的环路检测报文而导致网络设备运行出错的问题。又由于每个端口按照发包批次发送环路检测报文,即网络设备将该端口的环路检测报文一批一批的发送出去,这样进一步减少了在同一时间发送环路检测报文的数量,并且在端口处也不会拥塞很多报文,能够提高端口收发报文的效率。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。