报文发送方法、装置及存储介质与流程

文档序号:23795512发布日期:2021-02-02 08:58阅读:164来源:国知局
报文发送方法、装置及存储介质与流程

[0001]
本申请涉及通信技术领域,特别涉及一种报文发送方法、装置及存储介质。


背景技术:

[0002]
在通信领域中,网络设备之间通常是通过报文进行信息交互。这样,就需要在网络设备之间发送报文。目前,对于一个报文,可能存在多条路径,此时,为了实现负载均衡的效果,通常需要从该多条路径中选择出一条路径来发送该报文。
[0003]
相关技术主要是根据报文的五元组信息,通过ecmp(equal cost multipath,等价路由)/ucmp(un-equal cost multipath,非等价路由)的方式,从该多条路径中选择一条路径,进而按照选择出的路径发送报文。
[0004]
但是这种方式中,五元组信息相同的报文都会通过同一条路径来发送,导致多条路径上的分流比例与ecmp/ucmp所期望的分流比例不符,而且,还可能出现多条大象流被分配到同一条路径上,造成负载不均衡的问题。


技术实现要素:

[0005]
本申请提供了一种报文发送方法、装置及存储介质,可以解决相关技术中多条路径上的分流比例与ecmp/ucmp所期望的分流比例不符,以及出现多条大象流被分配到同一条路径上,造成负载不均衡的问题。所述技术方案如下:
[0006]
第一方面,提供了一种报文发送方法,第一网络设备与第二网络设备之间存在多条路径,所述第一网络设备基于所述多条路径以负载分担方式向所述第二网络设备发送数据流,所述方法包括:
[0007]
所述第一网络设备接收报文,所述报文为所述数据流包括的一个报文;
[0008]
所述第一网络设备判断所述数据流是否为大象流;
[0009]
如果所述数据流是大象流,则所述第一网络设备通过第一路径策略表确定第一路径,所述第一路径为所述多条路径中的一条路径;
[0010]
其中,所述第一路径策略表用于描述经由所述多条路径发送给所述第二网络设备的所有数据流中大象流的发送路径,所述第一路径策略表包括多个表项,每个表项所指示的路径是通过加权轮询算法从所述多条路径中选择的;
[0011]
所述第一网络设备经由所述第一路径发送所述报文。
[0012]
由于第一路径策略表中的表项所指示的路径是通过加权轮询算法从上述多条路径中选择的,也即是,第一路径策略表中的表项所指示的路径是通过轮询的方式,从上述多条路径中选择出的。而且通常情况下,通过轮询的方式可以做到多条路径都能被轮询到的情况,因此,按照该数据流对应的表项中的路径发送该报文之后,即可实现负载均衡的效果。
[0013]
可选地,所述第一路径策略表中的表项用于指示流标识、路径信息与表项匹配时间之间的映射关系,所述表项匹配时间是指表项最后一次被匹配上的时间;
[0014]
所述通过第一路径策略表确定第一路径,包括:
[0015]
根据所述报文的五元组信息查询所述第一路径策略表;
[0016]
如果所述第一路径策略表中存在所述数据流对应的表项,则将所述数据流对应的表项中的路径信息所指示的路径确定为所述第一路径。
[0017]
需要说明的,流标识可以用来唯一指示一条数据流。而且通常情况下,一条数据流可以包括一个或多个报文,且这一个或多个报文的五元组信息相同,换句话说,五元组信息相同的一个或多个报文可以构成一条数据流。这样,对于一条数据流来说,这条数据流的流标识可以为这条数据流包括的报文的五元组信息,也可以是对这条数据流包括的报文的五元组信息进行处理后得到的。因此,第一网络设备可以根据该报文的五元组信息查询第一路径策略表,从而确定第一路径策略表中是否存在该报文所属的数据流对应的表项。
[0018]
可选地,所述将所述数据流对应的表项中的路径信息所指示的路径确定为所述第一路径之前,还包括:
[0019]
确定所述数据流对应的表项中的表项匹配时间与当前时间之间的时间差;
[0020]
如果所述时间差小于第一时间阈值,则执行将所述数据流对应的表项中的路径信息所指示的路径确定为所述第一路径的操作。
[0021]
在某些情况下,如果在上一时间,一个数据流被认为是大象流,且上一时间与当前时间之间的时长较长,那么在当前时间,这个数据流就不一定是大象流,因此,可以针对第一路径策略表中的表项设置有老化条件。这样,当确定第一路径策略表中存在该报文所属的数据流对应的表项时,可以确定该数据流对应的表项中的表项匹配时间与当前时间之间的时间差,如果该时间差小于第一时间阈值,那么可以表明该数据流对应的表项不满足老化条件,此时,可以将该数据流对应的表项中的路径信息所指示的路径确定为第一路径,并经由第一路径发送该报文。
[0022]
可选地,所述确定所述数据流对应的表项中的表项匹配时间与当前时间之间的时间差之后,还包括:
[0023]
如果所述时间差大于或等于第一时间阈值,则删除所述第一路径策略表中所述数据流对应的表项;
[0024]
按照加权轮询算法从所述多条路径中选择出一条路径,将选择出的路径作为所述第一路径。
[0025]
如果该数据流对应的表项中的表项匹配时间与当前时间之间的时间差大于或等于第一时间阈值,那么可以表明该数据流对应的表项满足老化条件,也即是,该数据流对应的表项在当前时间已经失效,那么就不能将该数据流对应的表项中的路径信息所指示的路径确定为第一路径。此时,可以删除第一路径策略表中该数据流对应的表项。然后,按照加权轮询算法从上述多条路径中选择出一条路径,将选择出的路径确定为第一路径,并经由第一路径发送该报文。
[0026]
可选地,所述根据所述报文的五元组信息查询所述第一路径策略表之后,还包括:
[0027]
如果所述第一路径策略表中不存在所述数据流对应的表项,则按照加权轮询算法从所述多条路径中选择出一条路径,将选择出的路径作为所述第一路径。
[0028]
在该数据流为大象流的情况下,如果第一路径策略表中不存在该数据流对应的表项,此时,为了实现负载均衡的效果,可以按照加权轮询算法从所述多条路径中选择出一条
路径,将选择出的路径作为所述第一路径。
[0029]
可选地,所述按照加权轮询算法从所述多条路径中选择出一条路径之后,还包括:
[0030]
根据所述报文的五元组信息、选择出的路径和当前时间,在所述第一路径策略表中添加所述数据流对应的表项。
[0031]
在按照加权轮询算法选择出一条路径之后,为了便于后续快速地确定出第一路径,可以根据该报文的五元组信息、选择出的路径和当前时间,在第一路径策略表中添加该数据流对应的表项。这样,在下次接收到该数据流的报文时,可以直接从第一路径策略表中确定第一路径,而不需要通过加权轮询算法来确定第一路径,从而可以节省时间,提高报文发送效率。
[0032]
可选地,所述方法还包括:
[0033]
周期性地确定所述第一路径策略表包括的每个表项中的表项匹配时间与当前时间之间的时间差;
[0034]
删除所述第一路径策略表中所述时间差大于或等于第一时间阈值的表项。
[0035]
值得注意的是,上述确定第一路径策略表中的表项是否满足老化条件是在发送某个报文,且第一路径策略表中存在这个报文所属的数据流对应的表项时触发的,也即是,在第一路径策略表中的某个表项匹配上报文时触发。但是,如果第一路径策略表中的某个表项一直未匹配上报文,那么,第一路径策略表中一直保留这个表项,可能会造成内存的占用。因此,在本申请实施例中,还可以周期性地确定第一路径策略表包括的每个表项中的表项匹配时间与当前时间之间的时间差,然后删除第一路径策略表中时间差大于或等于第一时间阈值的表项。这样,对于第一路径策略表中一直未匹配上报文,且满足老化条件的表项也可以删除。
[0036]
可选地,所述第一路径策略表中的表项用于指示流标识、路径信息、表项匹配时间、切换标志位与删除标志位之间的映射关系,所述表项匹配时间是指表项最后一次被匹配上的时间;
[0037]
所述通过第一路径策略表确定第一路径,包括:
[0038]
根据所述报文的五元组信息查询所述第一路径策略表;
[0039]
如果所述第一路径策略表中存在所述数据流对应的表项、所述数据流对应的表项中的切换标志位为第一数值,且所述数据流对应的表项中的删除标志位为第二数值,则将所述数据流对应的表项中的路径信息所指示的路径确定为所述第一路径。
[0040]
在flow-aware技术中,所有的数据流初始状态都认为是老鼠流,大象流的识别需要一定的时间。这样,可能有的数据流为大象流,但是初始状态还是作为老鼠流进行处理的。但是,经过一段时间之后,这个数据流可能会被识别为大象流,此时,这个数据流初始作为老鼠流的路径和当前作为大象流的路径可能不同,如果直接进行路径切换的话,可能打乱这个数据流中的报文的顺序,因此,第一路径策略表包括的表项中可以包括切换标志位,通过切换标志位确定当前是否需要按照表项中的路径信息所指示的路径发送该报文,也即是,当前是否需要进行路径的切换。
[0041]
也即是,切换标志位用于指示是否按照表项中的路径信息所指示的路径发送该报文,且切换标志位的取值可以为第一数值或者第二数值,当某个表项中的切换标志位为第一数值时,可以确定能够按照这个表项中的路径信息所指示的路径发送报文,当某个表项
中的切换标志位为第二数值时,可以确定不能按照这个表项中的路径信息所指示的路径发送报文。
[0042]
删除标志位用于指示表项是否为待删除的表项,且删除标志位的取值也可以为第一数值或者第二数值,当某个表项中的删除标志位为第一数值时,可以确定这个表项为待删除的表项,当某个表项中的删除标志位为第二数值时,可以确定这个表项不是待删除的表项。
[0043]
由于第一路径策略表中的表项所指示的路径是通过加权轮询算法从上述多条路径中选择的,也即是,第一路径策略表中的表项所指示的路径是通过轮询的方式,从上述多条路径中选择出的。而且通常情况下,通过轮询的方式可以做到多条路径都能被轮询到的情况,因此,按照该数据流对应的表项中的路径信息所指示的路径发送该报文之后,即可实现负载均衡的效果。另外,由于切换标志位用于指示是否按照表项中的路径信息所指示的路径发送该报文,删除标志位用于指示该表项是否为待删除的表项,换句话说,切换标志位用于指示当前是否能够安全切换路径,不会出现报文乱序的情况,删除标志位用于指示该表项当前是否有效,因此,当该数据流对应的表项中的切换标志位为第一数值,且该数据流对应的表项中的删除标志位为第二数值时,可以确定当前可以安全地切换路径,不会出现报文乱序的情况,而且该数据流对应的表项当前有效,这样,按照该数据流对应的表项中的路径信息所指示的路径发送该报文之后,不仅不会出现报文乱序的情况,还可以实现负载均衡的效果。
[0044]
可选地,所述根据所述报文的五元组信息查询所述第一路径策略表之后,还包括:
[0045]
如果所述第一路径策略表中存在所述数据流对应的表项,且所述数据流对应的表项中的切换标志位为第二数值,则确定所述数据流对应的表项中的表项匹配时间与当前时间之间的时间差;
[0046]
如果所述时间差大于或等于第二时间阈值,则将所述数据流对应的表项中的切换标志位置为第一数值,将所述数据流对应的表项中的路径信息所指示的路径作为所述第一路径。
[0047]
如果该时间差大于或等于第二时间阈值,那么可以表明当前可以安全地切换路径,不会出现报文乱序的情况,此时,可以将该数据流对应的表项中的切换标志位置为第一数值,并将该数据流对应的表项中的路径信息所指示的路径作为第一路径,并经由第一路径发送该报文。
[0048]
需要说明的是,如果该数据流对应的表项中的切换标志位为第二数值,那么该数据流对应的表项中的删除标志位必然为第二数值,因此,只要该数据流对应的表项中的切换标志位为第二数值,那么就可以不用管该数据流对应的表项中的删除标志位的取值,直接确定该数据流对应的表项中的表项匹配时间与当前时间之间的时间差。
[0049]
可选地,所述根据所述报文的五元组信息查询所述第一路径策略表之后,还包括:
[0050]
如果所述第一路径策略表中存在所述数据流对应的表项,且所述数据流对应的表项中的删除标志位为第一数值,则确定所述数据流对应的表项中的表项匹配时间与当前时间之间的时间差;
[0051]
如果所述时间差大于或等于第一时间阈值,则删除所述第一路径策略表中所述数据流对应的表项。
[0052]
如果在上一时间,一个数据流被认为是大象流,且上一时间与当前时间之间的时长较长,那么在当前时间,这个数据流就不一定是大象流,因此,可以针对第一路径策略表中的表项设置有老化条件。这样,当第一路径策略表中存在该数据流对应的表项时,可以确定该数据流对应的表项中的删除标志位的取值,如果该数据流对应的表项中的删除标志位为第一数值,那么可以表明该数据流对应的表项为待删除的表项,此时可以确定该数据流对应的表项中的表项匹配时间与当前时间之间的时间差。如果该时间差大于或等于第一时间阈值,那么可以表明该数据流对应的表项满足老化条件,也即是,该数据流对应的表项在当前时间已经失效,那么就不能按照该数据流对应的表项中的路径发送该报文。此时,可以删除第一路径策略表中该数据流对应的表项。
[0053]
进一步地,如果该时间差小于第一时间阈值,那么可以表明该数据流对应的表项不满足老化条件,此时,可以先不删除该数据流对应的表项。
[0054]
可选地,所述接收报文之后,还包括:
[0055]
如果所述第一路径策略表中不存在所述数据流对应的表项,则按照加权轮询算法从所述多条路径中选择出一条路径;
[0056]
根据所述报文的五元组信息、选择出的路径和当前时间,在所述第一路径策略表中添加所述数据流对应的表项,其中,当前添加的表项中的切换标志位和删除标志位为第二数值。
[0057]
可选地,所述根据所述报文的五元组信息、选择出的路径和当前时间,在所述第一路径策略表中添加所述数据流对应的表项之后,还包括:
[0058]
根据所述报文的五元组信息,按照等价路由ecmp/非等价路由ucmp的方式,确定一条路径;
[0059]
如果按照所述ecmp/ucmp方式确定的路径与按照加权轮询算法确定的路径相同,则将所述数据流对应的表项中的切换标志位置为第一数值。
[0060]
如果按照ecmp/ucmp方式确定的路径与按照加权轮询算法确定的路径相同,那么可以确定不存在安全切换的问题,也即是,不存在报文乱序的问题,此时可以直接将该数据流对应的表项中的切换标志位置为第一数值。
[0061]
可选地,所述方法还包括:
[0062]
如果确定所述数据流不再为大象流,则确定所述数据流对应的表项中的表项匹配时间与当前时间之间的时间差;
[0063]
如果所述时间差大于或等于第二时间阈值,则删除所述第一路径策略表中所述数据流对应的表项。
[0064]
由于本申请是通过其他技术来识别大象流,而且,上一时间一个数据流被识别为大象流,下一时间这个数据流可能就不是大象流,因此,本申请在确定某个数据流为大象流之后,还可以继续对这个数据流进行识别,以确定在之后的时间内这个数据流还是否为大象流。如果确定该数据流不再为大象流,则确定该数据流对应的表项中的表项匹配时间与当前时间之间的时间差。如果该时间差大于或等于第二时间阈值,那么可以表明当前可以安全地进行路径的切换,此时,可以直接删除第一路径策略表中该数据流对应的表项。
[0065]
可选地,所述确定所述数据流对应的表项中的表项匹配时间与当前时间之间的时间差之后,还包括:
[0066]
如果所述时间差小于所述第二时间阈值,则将所述第一路径策略表中所述数据流对应的表项中的删除标志位置为第一数值。
[0067]
如果该时间差小于第二时间阈值,那么可以表明当前进行路径切换之后会出现报文乱序的情况,因此可以将第一路径策略表中该数据流对应的表项中的删除标志位置为第一数值,先不删除。
[0068]
可选地,所述方法还包括:
[0069]
周期性地确定所述第一路径策略表中删除标志位为第一数值的表项中的表项匹配时间与当前时间之间的时间差;
[0070]
如果所述时间差大于或等于第一时间阈值,则删除所述第一路径策略表中删除标志位为第一数值的表项。
[0071]
值得注意的是,在上述过程中,有的表项可能不满足安全切换路径的条件,并没有直接删除,而是将表项中的删除标志位置为第一数值。如果第一路径策略表中一直保留这些表项,可能会造成内存的占用。因此,在本申请实施例中,还可以周期性地确定第一路径策略表中删除标志位为第一数值的表项中的表项匹配时间与当前时间之间的时间差。如果该时间差大于或等于第一时间阈值,则删除第一路径策略表中删除标志位为第一数值的表项。这样,对于第一路径策略表中一开始不满足安全切换路径条件的表项,后面还可以按照这种方式进行删除。
[0072]
可选地,所述经由所述第一路径发送所述报文之后,还包括:
[0073]
将所述第一路径策略表中所述数据流对应的表项中的表项匹配时间更新为当前时间。
[0074]
由于第一路径策略表包括的表项中的表项匹配时间是指表项最后一次被匹配上的时间,因此,当将该数据流对应的表项中的路径信息所指示的路径确定为第一路径,并经由第一路径发送该报文之后,可以将第一路径策略表中该数据流对应的表项中的表项匹配时间更新为当前时间。
[0075]
第二方面,提供了一种报文发送装置,所述报文发送装置具有实现上述第一方面中报文发送方法行为的功能。所述报文发送装置包括至少一个模块,该至少一个模块用于实现上述第一方面所提供的报文发送方法。
[0076]
第三方面,提供了一种网络设备,所述网络设备包括处理器和存储器,所述存储器用于存储执行上述第一方面所提供的报文发送方法的程序,以及存储用于实现上述第一方面所提供的报文发送方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述存储设备的操作装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。
[0077]
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的报文发送方法。
[0078]
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的报文发送方法。
[0079]
上述第二方面、第三方面、第四方面和第五方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
[0080]
本申请提供的技术方案至少可以带来以下有益效果:由于第一路径策略表用于描
述经由上述多条路径发送给第二网络设备的所有数据流中大象流的路径,第一路径策略表中的表项所指示的路径是通过加权轮询算法从上述多条路径中选择的,因此,如果该报文所属的数据流为大象流,且第一路径策略表中存在该报文所属的数据流对应的表项,那么可以按照该数据流对应的表项中的路径信息所指示的路径来发送该报文。由于通常情况下,通过轮询的方式可以做到多条路径都能被轮询到的情况,因此,按照该数据流对应的表项中的路径信息所指示的路径发送该报文之后,即可实现负载均衡的效果,不会出现多条大象流被分配到同一条路径上的问题。而且,由于老鼠流本身的流带宽就比较小,对分流比例的影响不大,而大象流的流带宽通常较大,对分流比例的影响较大,因此,在本申请中,将大象流包括的报文按照加权轮询的方式确定的路径进行发送,这样,在大象流实现负载均衡的情况下,可以保证多条路径上的分流比例与ecmp/ucmp所期望的分流比例接近或者相等。
附图说明
[0081]
图1是本申请实施例提供的一种基于service-aware的sr-te的网络架构的示意图;
[0082]
图2是本申请实施例提供的一种网络设备的结构示意图;
[0083]
图3是本申请实施例提供的一种报文发送方法的流程图;
[0084]
图4是本申请实施例提供的另一种报文发送方法的流程图;
[0085]
图5是本申请实施例提供的一种报文发送装置的结构示意图。
具体实施方式
[0086]
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
[0087]
在对本申请实施例提供的报文发送方法进行详细解释说明之前,先对本申请实施例涉及的应用场景进行介绍。
[0088]
在本申请实施例中,第一网络设备和第二网络设备之间存在多条路径,第一网络设备可以通过该多条路径中的任意一条路径与第二网络设备进行通信。但是,为了实现负载均衡的效果,第一网络设备通常需要从该多条路径中选择出一条路径与第二网络设备进行通信。也即是,第一网络设备通常需要从该多条路径中选择一条路径,向第二网络设备发送数据流。这种方式也可以称为负载分担方式。
[0089]
请参考图1,图1是根据本申请实施例示出的一种基于服务感知(service-aware)的分段路由流量工程(segment routing-traffic engineering,sr-te)的网络架构的示意图。该网络架构包括第一网络设备101、第二网络设备102、多个中间设备103和控制器104。第一网络设备101可以通过边界网关协议-链路状态(border gateway protocol-link state,bgp-ls)向控制器104上报网络拓扑信息,该网络拓扑信息是指第一网络设备101、第二网络设备102以及多个中间设备103组成的网络的拓扑信息。控制器104可以基于第一网络设备101上报的网络拓扑信息,确定第一网络设备101与第二网络设备102之间的多条路径(比如,图1中实线和虚线所示的两条路径)和该多条路径的分流比例,并将该多条路径和该多条路径的分流比例下发给第一网络设备101,以使第一网络设备101按照该多条路径和
该多条路径的分流比例发送数据流。而且,在通过该多条路径发送数据流的过程中,控制器104还可以从第一网络设备101处采集经由该多条路径中每条路径发送的数据流的流量,基于经由该多条路径中每条路径发送的数据流的流量,按照配置的带宽调优策略,对该多条路径和该多条路径的分流比例进行优化,将优化后的结果展示给用户。当用户确认优化时,可以将优化后的多条路径和该多条路径的分流比例下发给第一网络设备101,以使第一网络设备101按照优化后的多条路径和该多条路径的分流比例发送数据流。
[0090]
其中,不管第一网络设备101按照优化之前的多条路径和该多条路径的分流比例发送数据流,还是按照优化之后的多条路径和该多条路径的分流比例发送数据流,第一网络设备101都可以按照本申请实施例提供的方法发送数据流。
[0091]
请参考图2,图2是根据本申请实施例示出的一种网络设备的结构示意图,该网络设备可以是图1中的任一网络设备。该网络设备包括至少一个处理器201、通信总线202、存储器203以及至少一个通信接口204。
[0092]
处理器201可以是一个通用中央处理器(central processing unit,cpu)、网络处理器(np)、微处理器、或者可以是一个或多个用于实现本申请方案的集成电路,例如,专用集成电路(application-specific integrated circuit,asic),可编程逻辑器件(programmable logic device,pld)或其组合。上述pld可以是复杂可编程逻辑器件(complex programmable logic device,cpld),现场可编程逻辑门阵列(field-programmable gate array,fpga),通用阵列逻辑(generic array logic,gal)或其任意组合。
[0093]
通信总线202用于在上述组件之间传送信息。通信总线202可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0094]
存储器203可以是只读存储器(read-only memory,rom)或可存储静态信息和指令的其它类型的静态存储设备,也可以是随机存取存储器(random access memory,ram)或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、只读光盘(compact disc read-only memory,cd-rom)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器203可以是独立存在,并通过通信总线202与处理器201相连接。存储器203也可以和处理器201集成在一起。
[0095]
通信接口204使用任何收发器一类的装置,用于与其它设备或通信网络通信。通信接口204包括有线通信接口,还可以包括无线通信接口。其中,有线通信接口例如可以为以太网接口。以太网接口可以是光接口,电接口或其组合。无线通信接口可以为无线局域网(wireless local area networks,wlan)接口,蜂窝网络通信接口或其组合等。
[0096]
在具体实现中,作为一种实施例,处理器201可以包括一个或多个cpu,如图2中所示的cpu0和cpu1。
[0097]
在具体实现中,作为一种实施例,网络设备可以包括多个处理器,如图2中所示的处理器201和处理器205。这些处理器中的每一个可以是一个单核处理器(single-cpu),也
可以是一个多核处理器(multi-cpu)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。
[0098]
在具体实现中,作为一种实施例,网络设备还可以包括输出设备206和输入设备207。输出设备206和处理器201通信,可以以多种方式来显示信息。例如,输出设备206可以是液晶显示器(liquid crystal display,lcd)、发光二级管(light emitting diode,led)显示设备、阴极射线管(cathode ray tube,crt)显示设备或投影仪(projector)等。输入设备207和处理器201通信,可以以多种方式接收用户的输入。例如,输入设备207可以是鼠标、键盘、触摸屏设备或传感设备等。
[0099]
在一些实施例中,存储器203用于存储执行本申请方案的程序代码210,处理器201可以执行存储器203中存储的程序代码210。也即是,该网络设备可以通过处理器201以及存储器203中的程序代码210,来实现下文图3或图4实施例提供的报文发送方法。
[0100]
接下来对本申请实施例提供的报文发送方法进行详细地解释说明。在本申请中,可以通过两种技术来发送报文。一种是基于service-aware技术来发送报文,另一种是基于流感知(flow-aware)技术来发送报文。下面将分为两个实施例对这两种技术分别进行说明。
[0101]
请参考图3,图3是本申请实施例示出的一种报文发送方法的流程图。该方法应用于第一网络设备中,该方法是基于service-aware技术实现的。其中,在该方法中,第一网络设备与第二网络设备之间存在多条路径,且第一网络设备基于该多条路径以负载分担方式向第二网络设备发送数据流。该方法包括如下几个步骤。
[0102]
步骤301:第一网络设备接收报文,该报文为数据流包括的一个报文。
[0103]
需要说明的一点是,该报文可以是除第一网络设备和第二网络设备之外的其他网络设备发送的报文,也可以为第一网络设备自身生成且待发送给第二网络设备的报文。
[0104]
步骤302:第一网络设备判断该数据流是否为大象流。
[0105]
在service-aware技术中,报文通常携带有所属数据流的流带宽,通过该数据流的流带宽是否大于或等于带宽阈值,可以确定该数据流是大象流还是老鼠流。也即是,在一些实施例中,第一网络设备可以判断该数据流的流带宽是否大于或等于带宽阈值,如果该数据流的流带宽大于或等于带宽阈值,则确定该数据流为大象流。如果该数据流的流带宽小于带宽阈值,则确定该数据流不为大象流,换句话说,也可以确定该数据流为老鼠流。
[0106]
需要说明的是,大象流可以称为大流,老鼠流也可以称为小流。
[0107]
通常情况下,报文包含有报文头,报文头中可以包括元组信息,比如,四元组信息、五元组信息、七元组信息等等。通过报文头中包括的元组信息的数量,可以确定该数据流是大象流还是老鼠流。作为一种示例,当报文所属的数据流为大象流时,该报文的报文头中可以包括七元组信息,当该报文所属的数据流为老鼠流时,该报文的报文头中可以包括五元组信息。这样,第一网络设备可以确定该报文的报文头中携带的五元组信息还是七元组信息,如果该报文的报文头中携带七元组信息,则确定该数据流为大象流。如果该报文的报文头中携带五元组信息,则确定该数据流不为大象流,换句话说,也可以确定该数据流为老鼠流。
[0108]
作为另一种示例,当报文所属的数据流为大象流时,该报文的报文头中可以包括五元组信息,当该报文所属的数据流为老鼠流时,该报文的报文头中可以包括四元组信息。
这样,第一网络设备可以确定该报文的报文头中携带的五元组信息还是四元组信息,如果该报文的报文头中携带五元组信息,则确定该数据流为大象流。如果该报文的报文头中携带四元组信息,则确定该数据流不为大象流,换句话说,也可以确定该数据流为老鼠流。
[0109]
需要说明的是,四元组信息可以包括源互联网协议(internet protocol,ip)地址、源端口、目的ip地址和目的端口。五元组信息可以包括源ip地址、源端口、目的ip地址、目的端口和协议号。七元组信息可以包括源媒体接入控制(medium access control,mac)地址、目的mac地址、源ip地址、目的ip地址、源端口、目的端口和协议号。示例性地,假设第一网络设备当前需要向第二网络设备发送报文,那么,源mac地址、源ip地址和源端口为第一网络设备的mac地址、ip地址和端口,目的mac地址、目的ip地址和目的端口为第二网络设备的mac地址、ip地址和端口,协议号为第一网络设备和第二网络设备通信时所采用的协议的编号。
[0110]
当然,本申请实施例不仅可以通过上面的方式判断该数据流是否为大象流,还可以通过其他的方式来判断。比如,可以通过该数据流所属的业务类型来判断。即,当该数据流所属的业务类型为网页类时,可以确定该数据流为老鼠流,当该数据流所属的业务类型为视频类时,可以确定该数据流为大象流。
[0111]
当第一网络设备通过步骤302确定该数据流是大象流之后,第一网络设备可以根据该报文的元组信息,通过第一路径策略表确定第一路径。其中,该报文的元组信息可以为四元组信息、五元组信息、七元组信息等等,且不管该报文的元组信息是四元组信息、五元组信息还是七元组信息,通过第一路径策略表确定第一路径的方法相同。接下来,以五元组信息为例,对通过第一路径策略表确定第一路径的方法进行说明。
[0112]
步骤303:如果该数据流是大象流,则第一网络设备根据该报文的五元组信息查询第一路径策略表。
[0113]
第一路径策略表用于描述经由该多条路径发送给第二网络设备的所有数据流中大象流的路径,也即是,第一路径策略表仅仅用来描述大象流的路径,并没有描述老鼠流的路径。通俗地将,第一路径策略表仅对大象流起作用,对老鼠流不起作用。第一路径策略表包括多个表项,每个表项所指示的路径是通过加权轮询算法从该多条路径中选择的。而且,第一路径策略表中的表项用于指示流标识、路径信息与表项匹配时间之间的映射关系,表项匹配时间是指表项最后一次被匹配上的时间。
[0114]
示例性地,第一路径策略表可以如下述表1所示。其中,当第一网络设备采用不同的路由协议时,表1中的路径信息可以代表不同的含义。作为一种示例,如果第一网络设备采用设备级路由协议,那么,表1中的路径信息代表下一跳设备的设备标识。如果第一网络设备采用隧道级路由协议,那么,表1中的路径信息代表隧道的标识,或者隧道的入接口。也即是,不管第一网络设备采用哪种路由协议,表1中的路径信息都可以用来指示发送该报文的路径。
[0115]
表1
[0116]
流标识路径信息表项匹配时间id1p1t1id2p2t2
..................
[0117]
需要说明的,流标识可以用来唯一指示一条数据流。而且通常情况下,一条数据流可以包括一个或多个报文,且这一个或多个报文的五元组信息相同,换句话说,五元组信息相同的一个或多个报文可以构成一条数据流。这样,对于一条数据流来说,这条数据流的流标识可以为这条数据流包括的报文的五元组信息,也可以是对这条数据流包括的报文的五元组信息进行处理后得到的。因此,第一网络设备可以根据该报文的五元组信息查询第一路径策略表,从而确定第一路径策略表中是否存在该报文所属的数据流对应的表项。
[0118]
在一些实施例中,如果数据流的流标识为这条数据流包括的报文的五元组信息,那么,第一网络设备可以直接将该报文的五元组信息与第一路径策略表包括的表项中的流标识进行比较,如果第一路径策略表中存在流标识与该报文的五元组信息相同的表项,那么,可以确定第一路径策略表中存在该报文所属的数据流对应的表项,否则,可以确定第一路径策略表中不存在该报文所属的数据流对应的表项。
[0119]
在另一些实施例中,如果数据流的流标识是对这条数据流包括的报文的五元组信息进行处理后得到,那么,第一网络设备可以按照相同的处理方法,将该报文的五元组信息进行处理。之后,将处理结果与第一路径策略表包括的表项中的流标识进行比较,如果第一路径策略表中存在流标识与该处理结果相同的表项,那么,可以确定第一路径策略表中存在该报文所属的数据流对应的表项,否则,可以确定第一路径策略表中不存在该报文所属的数据流对应的表项。
[0120]
步骤304:如果第一路径策略表中存在该数据流对应的表项,则第一网络设备将该数据流对应的表项中的路径信息所指示的路径确定为第一路径,并经由第一路径发送该报文。
[0121]
如果第一路径策略表中存在该报文所属的数据流对应的表项,那么可以表明该报文所属的数据流为大象流。在这种情况,可以直接将该数据流对应的表项中的路径信息所指示的路径确定为第一路径,并经由第一路径发送给报文。
[0122]
由于第一路径策略表中的表项所指示的路径是通过加权轮询算法从上述多条路径中选择的,也即是,第一路径策略表中的表项所指示的路径是通过轮询的方式,从上述多条路径中选择出的。而且通常情况下,通过轮询的方式可以做到多条路径都能被轮询到的情况,因此,按照该数据流对应的表项中的路径发送该报文之后,即可实现负载均衡的效果。
[0123]
在一些实施例中,如果在上一时间,一个数据流被认为是大象流,且上一时间与当前时间之间的时长较长,那么在当前时间,这个数据流就不一定是大象流,因此,本申请实施例针对第一路径策略表中的表项设置有老化条件。这样,当确定第一路径策略表中存在该报文所属的数据流对应的表项时,可以确定该数据流对应的表项中的表项匹配时间与当前时间之间的时间差,如果该时间差小于第一时间阈值,那么可以表明该数据流对应的表项不满足老化条件,此时,可以将该数据流对应的表项中的路径信息所指示的路径确定为第一路径,并经由第一路径发送该报文。
[0124]
由于第一路径策略表包括的表项中的表项匹配时间是指表项最后一次被匹配上的时间,因此,当将该数据流对应的表项中的路径信息所指示的路径确定为第一路径,并经由第一路径发送该报文之后,可以将第一路径策略表中该数据流对应的表项中的表项匹配
时间更新为当前时间。
[0125]
如果该数据流对应的表项中的表项匹配时间与当前时间之间的时间差大于或等于第一时间阈值,那么可以表明该数据流对应的表项满足老化条件,也即是,该数据流对应的表项在当前时间已经失效,那么就不能将该数据流对应的表项中的路径信息所指示的路径确定为第一路径。此时,可以删除第一路径策略表中该数据流对应的表项。然后,按照加权轮询算法从上述多条路径中选择出一条路径,将选择出的路径确定为第一路径,并经由第一路径发送该报文。
[0126]
由于该数据流在当前时间仍旧为大象流,因此,按照加权轮询算法从上述多条路径中选择出一条路径之后,还可以根据该报文的五元组信息、选择出的路径和当前时间,在第一路径策略表中添加该数据流对应的表项。这样也可以看出第一路径策略表是用来描述经由上述多条路径发送给第二网络设备的所有数据流中大象流的发送流经,而且第一路径策略表中的每个表项所指示的路径是通过加权轮询算法从上述多条路径中选择的。
[0127]
需要说明的是,删除的表项中该数据流对应的路径与当前按照加权轮询算法选择出的路径可能相同,也可能不同。另外,第一时间阈值可以根据经验设置。
[0128]
值得注意的是,上述确定第一路径策略表中的表项是否满足老化条件是在发送某个报文,且第一路径策略表中存在这个报文所属的数据流对应的表项时触发的,也即是,在第一路径策略表中的某个表项匹配上报文时触发。但是,如果第一路径策略表中的某个表项一直未匹配上报文,那么,第一路径策略表中一直保留这个表项,可能会造成内存的占用。因此,在本申请实施例中,还可以周期性地确定第一路径策略表包括的每个表项中的表项匹配时间与当前时间之间的时间差,然后删除第一路径策略表中时间差大于或等于第一时间阈值的表项。这样,对于第一路径策略表中一直未匹配上报文,且满足老化条件的表项也可以删除。
[0129]
上述步骤304是在第一路径策略表中存在该报文所属的数据流对应的表项时,如何确定第一路径,并经由第一路径发送报文的。但是,在某些情况下,第一路径策略表中可能不存在该报文所属的数据流对应的表项,此时,可以通过下述步骤305确定第一路径,并经由第一路径发送该报文。
[0130]
步骤305:如果第一路径策略表中不存在该数据流对应的表项,则第一网络设备按照加权轮询算法从该多条路径中选择出一条路径,将选择出的路径作为第一路径,经由第一路径发送该报文。
[0131]
与上述同理,在第一路径策略表中不存在该报文所属的数据流对应的表项的情况下,当按照加权轮询算法从上述多条路径中选择出一条路径之后,也可以根据该报文的五元组信息、选择出的路径和当前时间,在第一路径策略表中添加该数据流对应的表项。
[0132]
上述步骤303-305是在该数据流为大象流的情况下如何发送该报文的过程。当通过上述步骤302确定该数据流为老鼠流时,可以按照ecmp/ucmp的方式从上述多条路径中选择出一条路径,根据选择出的路径发送该报文。
[0133]
在本申请实施例中,由于第一路径策略表用于描述经由上述多条路径发送给第二网络设备的所有数据流中大象流的路径,第一路径策略表中的表项所指示的路径是通过加权轮询算法从上述多条路径中选择的,且第一路径策略表中的表项用于指示流标识、路径信息与表项匹配时间之间的映射关系,因此,如果该报文所属的数据流为大象流,且第一路
径策略表中存在该报文所属的数据流对应的表项,那么可以按照该数据流对应的表项中的路径信息所指示的路径来发送该报文。由于通常情况下,通过轮询的方式可以做到多条路径都能被轮询到的情况,因此,按照该数据流对应的表项中的路径信息所指示的路径发送该报文之后,即可实现负载均衡的效果,不会出现多条大象流被分配到同一条路径上的问题。而且,由于老鼠流本身的流带宽就比较小,对分流比例的影响不大,而大象流的流带宽通常较大,对分流比例的影响较大,因此,在本申请实施例中,将老鼠流包括的报文按照原有的方式确定的路径进行发送,将大象流包括的报文按照加权轮询的方式确定的路径进行发送,这样,在大象流实现负载均衡的情况下,可以保证多条路径上的分流比例与ecmp/ucmp所期望的分流比例接近或者相等。
[0134]
请参考图4,图4是本申请实施例示出的一种报文发送方法的流程图,该方法应用于第一网络设备中,该方法是基于flow-aware技术实现的。其中,在该方法中,第一网络设备与第二网络设备之间存在多条路径,且第一网络设备基于该多条路径以负载分担方式向第二网络设备发送数据流。该方法包括如下几个步骤。
[0135]
步骤401:第一网络设备接收报文,该报文为数据流包括的一个报文。
[0136]
本步骤与上述步骤301类似,具体可以参考上述步骤301的描述,本申请实施例对此不再赘述。
[0137]
步骤402:第一网络设备判断该数据流是否为大象流。
[0138]
在flow-aware技术中,由于报文中不会携带所属的数据流的流带宽,因此,所有的数据流初始状态都认为是老鼠流,而大象流的识别需要一定的时间。也即是,需要单独通过其他的技术来识别大象流。目前可以采用多种方法进行大象流的识别。比如,在一些实施例中,可以在接收到一个数据流的首个报文时,可以统计从首个报文的接收时间开始的参考时间内接收到这个数据流的报文的数量,如果这个数量大于或等于数量阈值,那么可以确定这个数据流为大象流。如果这个数量小于数量阈值,那么可以确定这个数据流为老鼠流。在另一些实施例中,可以随机针对某个数据流,确定这个数据流在参考时间内需要发送的报文的数量,如果这个数量大于或等于数量阈值,那么可以确定这个数据流为大象流。如果这个数量小于数量阈值,那么可以确定这个数据流为老鼠流。
[0139]
需要说明的是,上面是通过报文的数量来确定数据流是大象流还是老鼠流,在其他一些实施例中,也可以通过这个数据流的流量大小来确定数据流是大象流还是老鼠流。比如,在一些实施例中,可以在接收到一个数据流的首个报文时,可以统计从首个报文的接收时间开始的参考时间内接收到这个数据流的流量大小,如果统计的流量大小大于或等于流量阈值,那么可以确定这个数据流为大象流。如果统计的流量大小小于流量阈值,那么可以确定这个数据流为老鼠流。在另一些实施例中,可以随机针对某个数据流,确定这个数据流在参考时间内需要发送的流量大小,如果确定的流量大小大于或等于流量阈值,那么可以确定这个数据流为大象流。如果确定的流量大小小于流量阈值,那么可以确定这个数据流为老鼠流。
[0140]
通常情况下,报文包含有报文头,报文头中可以包括元组信息,比如,四元组信息、五元组信息、七元组信息等等。通过报文头中包括的元组信息的数量,可以确定该数据流是大象流还是老鼠流。作为一种示例,当报文所属的数据流为大象流时,该报文的报文头中可以包括七元组信息,当该报文所属的数据流为老鼠流时,该报文的报文头中可以包括五元
组信息。这样,第一网络设备可以确定该报文的报文头中携带的五元组信息还是七元组信息,如果该报文的报文头中携带七元组信息,则确定该数据流为大象流。如果该报文的报文头中携带五元组信息,则确定该数据流不为大象流,换句话说,也可以确定该数据流为老鼠流。
[0141]
作为另一种示例,当报文所属的数据流为大象流时,该报文的报文头中可以包括五元组信息,当该报文所属的数据流为老鼠流时,该报文的报文头中可以包括四元组信息。这样,第一网络设备可以确定该报文的报文头中携带的五元组信息还是四元组信息,如果该报文的报文头中携带五元组信息,则确定该数据流为大象流。如果该报文的报文头中携带四元组信息,则确定该数据流不为大象流,换句话说,也可以确定该数据流为老鼠流。
[0142]
需要说明的是,大象流可以称为大流,老鼠流也可以称为小流。四元组信息可以包括源ip地址、源端口、目的ip地址和目的端口。五元组信息可以包括源ip地址、源端口、目的ip地址、目的端口和协议号。七元组信息可以包括源mac地址、目的mac地址、源ip地址、目的ip地址、源端口、目的端口和协议号。示例性地,假设第一网络设备当前需要向第二网络设备发送报文,那么,源mac地址、源ip地址和源端口为第一网络设备的mac地址、ip地址和端口,目的mac地址、目的ip地址和目的端口为第二网络设备的mac地址、ip地址和端口,协议号为第一网络设备和第二网络设备通信时所采用的协议的编号。
[0143]
当然,本申请实施例不仅可以通过上面的方式判断该数据流是否为大象流,还可以通过其他的方式来判断。比如,可以通过该数据流所属的业务类型来判断。即,当该数据流所属的业务类型为网页类时,可以确定该数据流为老鼠流,当该数据流所属的业务类型为视频类时,可以确定该数据流为大象流。
[0144]
当第一网络设备通过步骤402确定该数据流是大象流之后,第一网络设备可以根据该报文的元组信息,通过第一路径策略表确定第一路径。其中,该报文的元组信息可以为四元组信息、五元组信息、七元组信息等等,且不管该报文的元组信息是四元组信息、五元组信息还是七元组信息,通过第一路径策略表确定第一路径的方法相同。接下来,以五元组信息为例,对通过第一路径策略表确定第一路径的方法进行说明。
[0145]
步骤403:如果该数据流是大象流,则第一网络设备根据该报文的五元组信息查询第一路径策略表。
[0146]
第一路径策略表用于描述经由该多条路径发送给第二网络设备的所有数据流中大象流的路径,也即是,第一路径策略表仅仅用来描述大象流的路径,并没有描述老鼠流的路径。通俗地将,第一路径策略表仅对大象流起作用,对老鼠流不起作用。第一路径策略表包括多个表项,每个表项所指示的路径是通过加权轮询算法从该多条路径中选择的。而且,第一路径策略表中的表项用于指示流标识、路径信息、表项匹配时间、切换标志位与删除标志位之间的映射关系,表项匹配时间是指表项最后一次被匹配上的时间。
[0147]
示例性地,第一路径策略表可以如下述表2所示。其中,当第一网络设备采用不同的路由协议时,表2中的路径信息可以代表不同的含义。具体可以参考上述步骤303的描述。但是,不管第一网络设备采用哪种路由协议,表2中的路径信息都可以用来指示发送该报文的路径。
[0148]
表2
[0149]
流标识路径信息表项匹配时间切换标志位删除标志位id1p1t100id2p2t200..............................
[0150]
基于上述描述,在flow-aware技术中,所有的数据流初始状态都认为是老鼠流,大象流的识别需要一定的时间。这样,可能有的数据流为大象流,但是初始状态还是作为老鼠流进行处理的。但是,经过一段时间之后,这个数据流可能会被识别为大象流,此时,这个数据流初始作为老鼠流的路径和当前作为大象流的路径可能不同,如果直接进行路径切换的话,可能打乱这个数据流中的报文的顺序,因此,本申请实施例中,第一路径策略表包括的表项中可以包括切换标志位,通过切换标志位确定当前是否需要按照表项中的路径信息所指示的路径发送该报文,也即是,当前是否需要进行路径的切换。
[0151]
也即是,切换标志位用于指示是否按照表项中的路径信息所指示的路径发送该报文,且切换标志位的取值可以为第一数值或者第二数值,当某个表项中的切换标志位为第一数值时,可以确定能够按照这个表项中的路径信息所指示的路径发送报文,当某个表项中的切换标志位为第二数值时,可以确定不能按照这个表项中的路径信息所指示的路径发送报文。
[0152]
删除标志位用于指示表项是否为待删除的表项,且删除标志位的取值也可以为第一数值或者第二数值,当某个表项中的删除标志位为第一数值时,可以确定这个表项为待删除的表项,当某个表项中的删除标志位为第二数值时,可以确定这个表项不是待删除的表项。
[0153]
其中,第一数值可以为0或者1,第二数值也可以为0或者1,且当第一数值为0时,第二数值可以为1,当第一数值为1时,第二数值可以为0。当然,0或者1是一种示例,第一数值和第二数值也可以为其他的数值。
[0154]
另外,本申请实施例对本步骤中与上述步骤303相同的内容不做介绍,具体可以参考上述步骤303的描述。
[0155]
步骤404:如果第一路径策略表中存在该数据流对应的表项、该数据流对应的表项中的切换标志位为第一数值,且该数据流对应的表项中的删除标志位为第二数值,则第一网络设备将该数据流对应的表项中的路径信息所指示的路径确定为第一路径,并经由第一路径发送该报文。
[0156]
由于该报文所属的数据流为大象流,因此,当第一路径策略表中存在该报文所属的数据流对应的表项时,可以确定该数据流对应的表项中的切换标志位和删除标志位的取值,如果该数据流对应的表项中的切换标志位为第一数值,且该数据流对应的表项中的删除标志位为第二数值,那么可以表明当前可以按照该数据流对应的表项中的路径信息所指示的路径发送该报文,且该数据流对应的表项不是待删除的表项,这样,可以直接将该数据流对应的表项中的路径信息所指示的路径确定为第一路径,并经由第一路径发送该报文。
[0157]
由于第一路径策略表中的表项所指示的路径是通过加权轮询算法从上述多条路径中选择的,也即是,第一路径策略表中的表项所指示的路径是通过轮询的方式,从上述多条路径中选择出的。而且通常情况下,通过轮询的方式可以做到多条路径都能被轮询到的
情况,因此,按照该数据流对应的表项中的路径信息所指示的路径发送该报文之后,即可实现负载均衡的效果。另外,由于切换标志位用于指示是否按照表项中的路径信息所指示的路径发送该报文,删除标志位用于指示该表项是否为待删除的表项,换句话说,切换标志位用于指示当前是否能够安全切换路径,不会出现报文乱序的情况,删除标志位用于指示该表项当前是否有效,因此,当该数据流对应的表项中的切换标志位为第一数值,且该数据流对应的表项中的删除标志位为第二数值时,可以确定当前可以安全地切换路径,不会出现报文乱序的情况,而且该数据流对应的表项当前有效,这样,按照该数据流对应的表项中的路径信息所指示的路径发送该报文之后,不仅不会出现报文乱序的情况,还可以实现负载均衡的效果。
[0158]
在一些实施例中,如果第一路径策略表中存在该数据流对应的表项,且该数据流对应的表项中的切换标志位为第二数值,那么可以确定该数据流对应的表项中的表项匹配时间与当前时间之间的时间差。如果该时间差大于或等于第二时间阈值,那么可以表明当前可以安全地切换路径,不会出现报文乱序的情况,此时,可以将该数据流对应的表项中的切换标志位置为第一数值,并将该数据流对应的表项中的路径信息所指示的路径作为第一路径,并经由第一路径发送该报文。如果该时间差小于第二时间阈值,那么可以表明当前切换路径后,可能会出现报文乱序的情况,此时,不进行路径的切换,也即是,还是按照之前的路径发送该报文。其中,之前的路径是指该数据流作为老鼠流时,根据该报文的五元组信息,按照ecmp/ucmp确定的路径。
[0159]
需要说明的是,如果该数据流对应的表项中的切换标志位为第二数值,那么该数据流对应的表项中的删除标志位必然为第二数值,因此,只要该数据流对应的表项中的切换标志位为第二数值,那么就可以不用管该数据流对应的表项中的删除标志位的取值,直接确定该数据流对应的表项中的表项匹配时间与当前时间之间的时间差。
[0160]
另外,第二时间阈值可以通过上述多条路径对报文的传输时间确定,也即是,对于同一个报文,可以确定上述多条路径发送该报文所需的时间,然后确定每两条路径的传输时间差,将最大的传输时间差确定为第二时间阈值。当然,第二时间阈值也可以大于最大的传输时间差。或者,也可以通过其他的方式设置第二时间阈值,比如,通过经验设置第二时间阈值,只要不会出现报文乱序的情况即可。
[0161]
值得注意的是,第二时间阈值与第一时间阈值可能相同,也可能不同。当第二时间阈值与第一时间阈值不同时,第一时间阈值可以大于第二时间阈值。
[0162]
由于第一路径策略表包括的表项中的表项匹配时间是指表项最后一次被匹配上的时间,因此,当将该数据流对应的表项中的路径信息所指示的路径作为第一路径,并经由第一路径发送该报文之后,可以将第一路径策略表中该数据流对应的表项中的表项匹配时间更新为当前时间。
[0163]
在一些实施例中,如果在上一时间,一个数据流被认为是大象流,且上一时间与当前时间之间的时长较长,那么在当前时间,这个数据流就不一定是大象流,因此,本申请实施例针对第一路径策略表中的表项设置有老化条件。这样,当第一路径策略表中存在该数据流对应的表项时,可以确定该数据流对应的表项中的删除标志位的取值,如果该数据流对应的表项中的删除标志位为第一数值,那么可以表明该数据流对应的表项为待删除的表项,此时可以确定该数据流对应的表项中的表项匹配时间与当前时间之间的时间差。如果
该时间差大于或等于第一时间阈值,那么可以表明该数据流对应的表项满足老化条件,也即是,该数据流对应的表项在当前时间已经失效,那么就不能按照该数据流对应的表项中的路径发送该报文。此时,可以删除第一路径策略表中该数据流对应的表项。如果该时间差小于第一时间阈值,那么可以表明该数据流对应的表项不满足老化条件,此时,可以先不删除该数据流对应的表项。
[0164]
需要说明的是,如果该数据流对应的表项中的删除标志位为第一数值,那么该数据流对应的表项即为待删除的表项,此时,可以不用管该数据流对应的表项中的切换标志位的取值,直接确定该数据流对应的表项中的表项匹配时间与当前时间之间的时间差。
[0165]
上述步骤404是在第一路径策略表中存在该报文所属的数据流对应的表项时,如何确定第一路径,并经由第一路径发送报文的。但是,在某些情况下,第一路径策略表中可能不存在该报文所属的数据流对应的表项,此时,可以通过下述步骤305确定第一路径,并经由第一路径发送该报文。
[0166]
步骤405:如果第一路径策略表中不存在该数据流对应的表项,则第一网络设备按照加权轮询算法从该多条路径中选择出一条路径,将选择出的路径作为第一路径,经由第一路径发送该报文。
[0167]
当通过步骤401接收到报文之后,按照上述方法确定该报文所属的数据流为大象流且第一路径策略表中不存在该数据流对应的表项时,为了实现负载均衡的目的,可以按照加权轮询算法从上述多条路径中选择出一条路径。
[0168]
之后,可以根据该报文的五元组信息、选择出的路径和当前时间,在第一路径策略表中添加该数据流对应的表项,其中,当前添加的表项中的切换标志位和删除标志位为第二数值。也即是,第一路径策略表项包括的表项中的切换标志位和删除标志位的初值均为第二数值。这样也可以看出第一路径策略表是用来描述经由上述多条路径发送给第二网络设备的所有数据流中大象流的发送流经,而且第一路径策略表中的每个表项所指示的路径是通过加权轮询算法从上述多条路径中选择的。
[0169]
当根据报文的五元组信息、选择出的路径和当前时间,在第一路径策略表中添加该数据流对应的表项之后,还可以根据报文的五元组信息,按照ecmp/ucmp的方式,确定该报文的路径。如果按照ecmp/ucmp方式确定的路径与按照加权轮询算法确定的路径相同,那么可以确定不存在安全切换的问题,也即是,不存在报文乱序的问题,此时可以直接将该数据流对应的表项中的切换标志位置为第一数值。如果按照ecmp/ucmp方式确定的路径与按照加权轮询算法确定的路径不同,那么可以确定存在安全切换的问题,也即是,存在报文乱序的问题,此时可以不做任何操作,也即是,该数据流对应的表项中的切换标志位还是第二数值。
[0170]
由于本申请是通过其他技术来识别大象流,而且,上一时间一个数据流被识别为大象流,下一时间这个数据流可能就不是大象流,因此,本申请实施例在确定某个数据流为大象流之后,还可以继续对这个数据流进行识别,以确定在之后的时间内这个数据流还是否为大象流。如果确定该数据流不再为大象流,则确定该数据流对应的表项中的表项匹配时间与当前时间之间的时间差。如果该时间差大于或等于第二时间阈值,那么可以表明当前可以安全地进行路径的切换,此时,可以直接删除第一路径策略表中该数据流对应的表项。如果该时间差小于第二时间阈值,那么可以表明当前进行路径切换之后会出现报文乱
序的情况,因此可以将第一路径策略表中该数据流对应的表项中的删除标志位置为第一数值,先不删除。
[0171]
值得注意的是,在上述过程中,有的表项可能不满足安全切换路径的条件,并没有直接删除,而是将表项中的删除标志位置为第一数值。如果第一路径策略表中一直保留这些表项,可能会造成内存的占用。因此,在本申请实施例中,还可以周期性地确定第一路径策略表中删除标志位为第一数值的表项中的表项匹配时间与当前时间之间的时间差。如果该时间差大于或等于第一时间阈值,则删除第一路径策略表中删除标志位为第一数值的表项。这样,对于第一路径策略表中一开始不满足安全切换路径条件的表项,后面还可以按照这种方式进行删除。
[0172]
上述步骤403-405是在该数据流为大象流的情况下如何发送该报文的过程。当通过上述步骤402确定该数据流为老鼠流时,可以按照ecmp/ucmp的方式从上述多条路径中选择出一条路径,根据选择出的路径发送该报文。
[0173]
在本申请实施例中,由于第一路径策略表用于描述经由上述多条路径发送给第二网络设备的所有数据流中大象流的路径,第一路径策略表中的表项所指示的路径是通过加权轮询算法从上述多条路径中选择的,且第一路径策略表中的表项用于指示流标识、路径信息、表项匹配时间、切换标志位与删除标志位之间的映射关系,因此,如果该报文所属的数据流为大象流、第一路径策略表中存在该报文所属的数据流对应的表项、该数据流对应的表项中的切换标志位为第一数值,且该数据流对应的表项中的删除标志位为第二数值,那么可以按照该数据流对应的表项中的路径信息所指示的路径来发送该报文。由于通常情况下,通过轮询的方式可以做到多条路径都能被轮询到的情况,因此,按照该数据流对应的表项中的路径发送该报文之后,即可实现负载均衡的效果,不会出现多条大象流被分配到同一条路径上的问题。而且,由于老鼠流本身的流带宽就比较小,对分流比例的影响不大,而大象流的流带宽通常较大,对分流比例的影响较大,因此,在本申请实施例中,将老鼠流包括的报文按照原有的方式确定的路径进行发送,将大象流包括的报文按照加权轮询的方式确定的路径进行发送,这样,在大象流实现负载均衡的情况下,可以保证多条路径上的分流比例与ecmp/ucmp所期望的分流比例接近或者相等。
[0174]
图5是本申请实施例提供的一种报文发送装置的结构示意图,该报文发送装置可以由软件、硬件或者两者的结合实现成为第一网络设备的部分或者全部。第一网络设备与第二网络设备之间存在多条路径,第一网络设备基于该多条路径以负载分担方式向第二网络设备发送数据流。参见图5,该装置包括:接收模块501、判断模块502、第一确定模块503和发送模块504。
[0175]
接收模块501,用于执行上述图3所示实施例中的步骤301或图4所示实施例中的步骤401;
[0176]
判断模块502,用于执行上述图3所示实施例中的步骤302或图4所示实施例中的步骤402;
[0177]
第一确定模块503,用于执行上述图3所示实施例中的步骤303-304中通过第一路径策略表确定第一路径的步骤,或者用于执行图4所示实施例中的步骤403-404中通过第一路径策略表确定第一路径的步骤。
[0178]
发送模块504,用于执行上述图3所示实施例中的步骤303-304中经由第一路径发
送报文的步骤,或者用于执行图4所示实施例中的步骤403-404中经由第一路径发送报文的步骤。
[0179]
可选地,第一路径策略表中的表项用于指示流标识、路径信息与表项匹配时间之间的映射关系,表项匹配时间是指表项最后一次被匹配上的时间;
[0180]
第一确定模块503包括:
[0181]
第一查询子模块,用于根据该报文的五元组信息查询第一路径策略表;
[0182]
第一确定子模块,用于如果第一路径策略表中存在该数据流对应的表项,则将该数据流对应的表项中的路径信息所指示的路径确定为第一路径。
[0183]
可选地,该装置还包括:
[0184]
第二确定模块,用于确定该数据流对应的表项中的表项匹配时间与当前时间之间的时间差;
[0185]
触发模块,用于如果该时间差小于第一时间阈值,则触发第一确定模块503将该数据流对应的表项中的路径信息所指示的路径确定为第一路径。
[0186]
可选地,该装置还包括:
[0187]
第一删除模块,用于如果该时间差大于或等于第一时间阈值,则删除第一路径策略表中该数据流对应的表项;
[0188]
选择模块,用于按照加权轮询算法从该多条路径中选择出一条路径,将选择出的路径作为第一路径。
[0189]
可选地,第一确定模块503还包括:
[0190]
选择子模块,用于如果第一路径策略表中不存在该数据流对应的表项,则按照加权轮询算法从该多条路径中选择出一条路径,将选择出的路径作为第一路径。
[0191]
可选地,第一确定模块503还包括:
[0192]
添加子模块,用于根据该报文的五元组信息、选择出的路径和当前时间,在第一路径策略表中添加该数据流对应的表项。
[0193]
可选地,该装置还包括:
[0194]
第三确定模块,用于周期性地确定第一路径策略表包括的每个表项中的表项匹配时间与当前时间之间的时间差;
[0195]
第二删除模块,用于删除第一路径策略表中时间差大于或等于第一时间阈值的表项。
[0196]
可选地,第一路径策略表中的表项用于指示流标识、路径信息、表项匹配时间、切换标志位与删除标志位之间的映射关系,表项匹配时间是指表项最后一次被匹配上的时间;
[0197]
第一确定模块503包括:
[0198]
第二查询子模块,用于根据该报文的五元组信息查询第一路径策略表;
[0199]
第二确定子模块,用于如果第一路径策略表中存在该数据流对应的表项、该数据流对应的表项中的切换标志位为第一数值,且该数据流对应的表项中的删除标志位为第二数值,则将该数据流对应的表项中的路径信息所指示的路径确定为第一路径。
[0200]
可选地,第一确定模块503还包括:
[0201]
第三确定子模块,用于如果第一路径策略表中存在该数据流对应的表项,且该数
据流对应的表项中的切换标志位为第二数值,则确定该数据流对应的表项中的表项匹配时间与当前时间之间的时间差;
[0202]
置位子模块,用于如果该时间差大于或等于第二时间阈值,则将该数据流对应的表项中的切换标志位置为第一数值,将该数据流对应的表项中的路径信息所指示的路径作为第一路径。
[0203]
可选地,第一确定模块503还包括:
[0204]
第四确定子模块,用于如果第一路径策略表中存在该数据流对应的表项,且该数据流对应的表项中的删除标志位为第一数值,则确定该数据流对应的表项中的表项匹配时间与当前时间之间的时间差;
[0205]
删除子模块,用于如果该时间差大于或等于第一时间阈值,则删除第一路径策略表中该数据流对应的表项。
[0206]
可选地,该装置还包括:
[0207]
选择模块,用于如果第一路径策略表中不存在该数据流对应的表项,则按照加权轮询算法从该多条路径中选择出一条路径;
[0208]
添加模块,用于根据该报文的五元组信息、选择出的路径和当前时间,在第一路径策略表中添加该数据流对应的表项,其中,当前添加的表项中的切换标志位和删除标志位为第二数值。
[0209]
可选地,该装置还包括:
[0210]
第四确定模块,用于根据所述报文的五元组信息,按照等价路由ecmp/非等价路由ucmp的方式,确定一条路径;
[0211]
第一置位模块,用于如果按照ecmp/ucmp方式确定的路径与按照加权轮询算法确定的路径相同,则将该数据流对应的表项中的切换标志位置为第一数值。
[0212]
可选地,该装置还包括:
[0213]
第五确定模块,用于如果确定该数据流不再为大象流,则确定该数据流对应的表项中的表项匹配时间与当前时间之间的时间差;
[0214]
第三删除模块,用于如果该时间差大于或等于第二时间阈值,则删除第一路径策略表中该数据流对应的表项。
[0215]
可选地,该装置还包括:
[0216]
第二置位模块,用于如果该时间差小于第二时间阈值,则将第一路径策略表中该数据流对应的表项中的删除标志位置为第一数值。
[0217]
可选地,该装置还包括:
[0218]
第六确定模块,用于周期性地确定第一路径策略表中删除标志位为第一数值的表项中的表项匹配时间与当前时间之间的时间差;
[0219]
第四删除模块,用于如果该时间差大于或等于第一时间阈值,则删除第一路径策略表中删除标志位为第一数值的表项。
[0220]
可选地,该装置还包括:
[0221]
更新模块,用于将第一路径策略表中该数据流对应的表项中的表项匹配时间更新为当前时间。
[0222]
在本申请实施例中,由于第一路径策略表用于描述经由上述多条路径发送给第二
网络设备的所有数据流中大象流的路径,第一路径策略表中的表项所指示的路径是通过加权轮询算法从上述多条路径中选择的,因此,如果该报文所属的数据流为大象流,且第一路径策略表中存在该报文所属的数据流对应的表项,那么可以按照该数据流对应的表项中的路径信息所指示的路径来发送该报文。由于通常情况下,通过轮询的方式可以做到多条路径都能被轮询到的情况,因此,按照该数据流对应的表项中的路径信息所指示的路径发送该报文之后,即可实现负载均衡的效果,不会出现多条大象流被分配到同一条路径上的问题。而且,由于老鼠流本身的流带宽就比较小,对分流比例的影响不大,而大象流的流带宽通常较大,对分流比例的影响较大,因此,在本申请中,将大象流包括的报文按照加权轮询的方式确定的路径进行发送,这样,在大象流实现负载均衡的情况下,可以保证多条路径上的分流比例与ecmp/ucmp所期望的分流比例接近或者相等。
[0223]
需要说明的是:上述实施例提供的报文发送装置在发送报文时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的报文发送装置与报文发送方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0224]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络或其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(digital subscriber line,dsl))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质,或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(digital versatile disc,dvd))或半导体介质(例如:固态硬盘(solid state disk,ssd))等。值得注意的是,本申请提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
[0225]
以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1