一种数据流路由方法及装置与流程

文档序号:17757496发布日期:2019-05-24 21:25阅读:184来源:国知局
一种数据流路由方法及装置与流程

本发明涉及拥塞通告与负载均衡技术领域,特别是涉及一种数据流路由方法及装置。



背景技术:

vxlan(virtualextensiblelocalareanetwork,可扩展虚拟局域网络)可以基于已有的服务提供商或企业ip(internetprotocol,网络协议)网络,为分散的物理服务器提供二层互联,并能够为不同的租户提供业务隔离。vxlan技术将已有的三层物理网络作为underlay网络,在其上构建出虚拟的二层网络,即overlay网络。overlay通过封装技术,在租户服务器之间建立vxlan隧道。利用underlay网络提供的三层转发路径,实现租户二层报文跨越三层网络在不同服务器间传递。

spine-leaf(脊叶)组网为一种常见的应用vxlan技术的组网方案,该组网结构可以如图1所示,包括多个叶节点(如,leaf1,leaf2和leaf3)和多个上脊节点(如,spine1和spine2),各leaf设备下下挂有一个或多个服务器,leaf设备为vxlan组网中的vtep(vxlantunnelendpoint,vxlan隧道终端)设备,spine设备为一个leaf设备向另一个leaf设备发送数据流时的下一跳设备。假设leaf1向leaf2发送数据流时的下一跳设备为spine1,相关技术中,如果spine1与leaf2之间的链路发生故障,则leaf1可以将除spine1以外的其他任一spine设备(例如spine2),作为向leaf2发送数据流时的下一跳设备。

但是,如果spine1与leaf2之间的链路只是发生拥塞,而没有发生故障,则leaf1仍然将spine1作为向leaf2发送数据流时的下一跳设备,可能导致该数据流在由spine1向leaf2转发的过程中因链路拥塞发生丢包。



技术实现要素:

本发明实施例的目的在于提供一种数据流路由方法,以实现在数据流的传输路径发生拥塞后,能够自动为数据流重新规划传输路径,以避免使用发生拥塞的路径传输数据流,降低数据流因拥塞导致数据流丢包的可能性。具体技术方案如下:

在本发明实施例的第一方面,提供了一种数据流路由方法,所述方法应用于spine-leaf组网中的第一leaf设备,所述spine-leaf组网还包括至少一个第二leaf设备、第一spine以及至少一个第二spine设备,各spine设备分别与各leaf设备建立邻居关系,所述第一spine设备为所述第一leaf设备向一个第二leaf设备发送目标数据流的下一跳设备,所述方法包括:

接收所述第一spine设备发送的拥塞通知报文,其中,所述拥塞通知报文是所述第一spine设备在检测到转发所述目标数据流的出端口发生拥塞时发送的,所述拥塞通知报文携带有所述目标数据流的流标识、外层目的ip地址以及速率;

向各第二spine设备发送携带所述外层目的ip地址的带宽查询报文,以使得各第二spine设备确定与所述外层目的ip地址对应的出端口的剩余带宽,并将剩余带宽携带在带宽通知报文中发送给所述第一leaf设备;

接收各第二spine设备发送的带宽通知报文,并将剩余带宽大于所述目标数据流的速率的一个第二spine设备确定为发送所述目标数据流的下一跳设备。

结合第一方面,在第一种可能的实现方式中,在所述接收所述第一spine设备发送的拥塞通知报文之后,在所述向各第二spine设备发送携带所述外层目的ip地址的带宽查询报文之前,所述方法还包括:

基于所述拥塞通知报文,在拥塞流列表中建立所述目标数据流对应的拥塞流表项,其中,所述拥塞流表项包括所述第一spine设备与所述第一leaf设备相连的端口的ip地址、所述流标识以及所述外层目的ip地址;

在所述将剩余带宽大于所述目标数据流的速率的一个第二spine设备确定为发送所述目标数据流的下一跳设备之后,所述方法还包括:

在所述拥塞流列表中删除针对所述目标数据流建立的拥塞流表项。

结合第一方面的第一种可能的实现方式,所述向各第二spine设备发送携带所述外层目的ip地址的带宽查询报文,包括:

查询所述拥塞流列表,获取包含所述外层目的ip地址的拥塞流表项,并将该拥塞流表项所包含的spine设备与所述第一leaf设备相连的端口的ip地址对应的spine设备作为拥塞spine设备;

向除所述拥塞spine设备之外的其它第二spine设备发送带宽查询报文。

结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述方法还包括:

若不存在剩余带宽大于所述目标数据流的速率的第二spine设备,则将所述第一spine设备确定为发送所述目标数据流的下一跳设备;

在接收到所述第一spine设备发送的拥塞解除通知报文时,在所述拥塞流列表中删除针对所述目标数据流建立的拥塞流表项,其中,所述拥塞解除通知报文携带有所述目标数据流的流标识。

结合第一方面,在第四种可能的实现方式中,在所述接收第一spine设备发送的拥塞通知报文之前,所述方法还包括:

接收各spine设备发送的携带有其自身与各leaf设备相连的端口的ip地址的第一报文,并根据接收到的各第一报文,建立本地的spine列表;

针对接收到的各第一报文,分别向各spine设备发送携带有其自身与各spine设备相连的端口的mac地址的第二报文,以使得各spine设备根据接收到的各第二报文,建立本地的leaf列表。

在本发明实施例的第二方面,提供了一种数据流路由方法,所述方法应用于spine-leaf组网中的第一spine设备,所述spine-leaf组网还包括第一leaf设备、至少一个第二leaf设备以及至少一个第二spine设备,各spine设备分别与各leaf设备建立邻居关系,所述第一spine设备为所述第一leaf设备向一个第二leaf设备发送目标数据流的下一跳设备,所述方法包括:

若检测到转发所述目标数据流的出端口发生拥塞,则获取所述目标数据流的流标识、外层目的ip地址以及速率;

以所述目标数据流的外层源ip地址作为目的ip地址,生成携带有所述目标数据流的流标识、外层目的ip地址以及速率的拥塞通知报文;

将所述拥塞通知报文发送至所述第一leaf设备。

结合第二方面,在第一种可能的实现方式中,在所述生成携带有所述目标数据流的流标识、外层目的ip地址以及速率的拥塞通知报文之前,所述方法还包括:

在所述出端口对应的拥塞流列表中建立所述目标数据流对应的拥塞流表项,所述拥塞流表项包括所述目标数据流的流标识和速率;

所述方法还包括:

在检测到所述出端口拥塞解除后,向所述第一leaf设备发送携带有所述目标数据流对应的拥塞流表项的拥塞解除通知报文,并删除所述出端口对应的拥塞流列表。

在本发明实施例的第三方面,提供了一种数据流路由装置,所述装置所述方法应用于spine-leaf组网中的第一leaf设备,所述spine-leaf组网还包括至少一个第二leaf设备、第一spine设备以及至少一个第二spine设备,各spine设备分别与各leaf设备建立邻居关系,所述第一spine设备为所述第一leaf设备向一个第二leaf发送目标数据流的下一跳设备,所述装置包括:

报文接收模块,用于接收所述第一spine设备发送的拥塞通知报文,其中,所述拥塞通知报文是所述第一spine设备在检测到转发所述目标数据流的出端口发生拥塞时发送的,所述拥塞通知报文携带有所述目标数据流的流标识、外层目的ip地址以及速率;

带宽查询模块,用于向各第二spine设备发送携带所述外层目的ip地址的带宽查询报文,以使得各第二spine设备确定与所述外层目的ip地址对应的出端口的剩余带宽,并将剩余带宽携带在带宽通知报文中发送给所述第一leaf设备;

路由确定模块,用于接收各第二spine设备发送的带宽通知报文,并将剩余带宽大于所述目标数据流的速率的一个第二spine设备确定为发送所述目标数据流的下一跳设备。

结合第三方面,在第一种可能的实现方式中,所述装置还包括第一拥塞流管理模块,用于在所述接受所述第一spine设备发送的拥塞通知报文之后,在所述向各第二spine设备发送携带所述外层目的ip地址的带宽查询报文之前,基于所述拥塞通知报文,在拥塞流列表中建立所述目标数据流对应的拥塞流表项,其中,所述拥塞流表项包括所述第一spine设备与所述第一leaf设备相连的端口的ip地址、所述流标识以及所述外层目的ip地址;

所述第一拥塞流管理模块,还用于在所述将剩余带宽大于所述目标数据流的速率的一个第二spine设备确定为发送所述目标数据流的下一跳设备之后,在所述拥塞流列表中删除针对所述目标数据流建立的拥塞流表项。

结合第三方面的第一种可能的实现方式,在第二种可能的实现方式中,,所述带宽查询模块,具体用于查询所述拥塞流列表,获取包含所述外层目的ip地址的拥塞流表项,并将该拥塞流表项所包含的spine设备与所述第一leaf设备相连的端口的ip地址对应的spine设备作为拥塞spine设备;

向除所述拥塞spine设备之外的其他第二spine设备发送带宽查询报文。

结合第三方面的第一种可能的实现方式,在第三种可能的实现方式中,所述路由确定模块,还用于若不存在剩余带宽大于所述目标数据流的速率的第二spine设备,则将所述第一spine设备确定为发送所述目标数据流的下一跳设备;

所述第一拥塞流管理模块,还用于在接收到所述第一spine设备发送的拥塞解除通知报文时,在所述拥塞流列表中删除针对所述目标数据流建立的拥塞流表项,其中,所述拥塞解除通知报文携带有所述目标数据流的流标识。

结合第三方面,在第四种可能的实现方式中,所述装置还包括spine列表模块,用于在所述接收第一spine设备发送的拥塞通知报文之前,接收各spine设备发送的携带有其自身与各leaf设备相连的端口的ip地址的第一报文,并根据接收到的各第一报文,建立本地的spine列表;

针对接收到的各第一报文,分别向各spine设备发送携带有其自身与各spine设备相连的端口的mac地址的第二报文,以使得各spine设备根据接收到的各第二报文,建立本地的leaf列表。

在本发明实施例的第四方面,提供了一种数据流路由装置,所述装置应用于spine-leaf组网中的第一spine设备,所述spine-leaf组网还包括第一leaf设备、至少一个第二leaf设备以及至少一个第二spine设备,各spine设备分别与各leaf设备建立邻居关系,所述第一spine设备为所述第一leaf设备向一个第二leaf设备发送目标数据流的下一跳设备,所述装置包括:

拥塞检测模块,用于若检测到转发所述目标数据流的出端口发生拥塞,则获取所述目标数据流的流标识、外层目的ip地址以及速率;

拥塞通知模块,用于以所述目标数据流的外层源ip地址作为目的ip地址,生成携带有所述目标数据流的流标识、外层目的ip地址以及速率的拥塞通知报文;并将所述拥塞通知报文发送至所述第一leaf设备。

结合第四方面,在第一种可能的实现方式中,所述装置还包括第二拥塞流管理模块,用于在所述生成携带有所述目标数据流的流标识、外层目的ip地址以及速率的拥塞通知报文之前,在所述出端口对应的的拥塞流列表中建立所述目标数据流对应的拥塞流表项,所述拥塞流表项包括所述目标数据流的流标识和速率;

拥塞解除通知模块,还用于在检测到所述出端口拥塞解除后,向所述第一leaf设备发送携带有所述目标数据流对应的拥塞流表项的拥塞解除通知报文;

所述第二拥塞流管理模块,还用于删除所述出端口对应的拥塞流列表。

在本发明实施例的第五方面,提供了一种第一leaf设备,应用于spine-leaf组网,所述spine-leaf组网还包括至少一个第二leaf设备、第一spine以及至少一个第二spine设备,各spine设备分别与各leaf设备建立邻居关系,所述第一spine设备为所述第一leaf设备向一个第二leaf设备发送目标数据流的下一跳设备,所述第一leaf设备包括:

第一存储器,用于存放计算机程序;

第一处理器,用于执行存储器上所存放的程序时,实现上述第一方面任一所述的数据流路由方法。

在本发明实施例的第六方面,提供了一种第一spine设备,应用于spine-leaf组网的第一spine,所述spine-leaf组网还包括第一leaf设备、至少一个第二leaf设备以及至少一个第二spine设备,各spine设备分别与各leaf设备建立邻居关系,所述第一spine设备为所述第一leaf设备向一个第二leaf设备发送目标数据流的下一跳设备,所述第一spine设备包括:

第二存储器,用于存放计算机程序;

第二处理器,用于执行存储器上所存放的程序时,实现上述第二方面任一所述的数据流路由方法。

在本发明实施例的第七方面,提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面任一所述的数据流路由方法。

在本发明实施例的第八方面,提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第二方面任一所述的数据流路由方法。

本发明实施例提供的数据流路由方法及装置,可以在接到第一spine设备发送的用于通知第一数据流的传输路径发生拥塞的拥塞通知报文,并且第二spine设备连接第二leaf设备的出端口的剩余带宽足够的情况下,将第二spine设备作为向第二leaf设备发送目标数据流时的下一跳设备,由于第二spine设备连接第二leaf设备的出端口的剩余带宽大于目标数据流的速率,所以,即使由该第二spine设备负责转发目标数据流的,也不会导致该第二spine设备连接第二leaf设备的出端口发生拥塞,因此,实现了为目标数据流重新规划新的不拥塞的传输路径,可以有效降低因拥塞导致丢包的可能性。当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的spine-leaf组网的一种组网结构示意图;

图2为本发明实施例提供的数据流路由方法的一种流程示意图;

图3为本发明实施例提供的数据流路由方法的另一种流程示意图;

图4为本发明实施例提供的spine-leaf组网的另一种组网结构示意图;

图5为本发明实施例提供的应用于leaf设备的数据流路由装置的一种结构示意图;

图6为本发明实施例提供的应用于spine设备的数据流路由装置的一种结构示意图;

图7为本发明实施例提供的第一leaf设备的一种结构示意图;

图8为本发明实施例提供的第一spine设备的一种结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在基于vxlan技术的spine-leaf组网中,leaf设备可以作为vxlan组网中的vtep设备,该spine-leaf组网中的任一leaf设备可以接收到其下挂的各服务器发送的数据流,并根据实际需求将这些数据流通过该spine-leaf组网中对应的spine设备转发至其他leaf设备(即转发至对应的leaf设备下挂的服务器)。在一些应用场景中。例如,一个leaf设备将一个数据流通过一个spine设备转发至另一个leaf设备可以理解为:一个leaf设备下挂的某一服务器通过一个spine设备将目标数据流转发至另一个leaf设备下挂的某一服务器。

以图1所示的spine-leaf组网为例,在该spine-leaf组网中,假设leaf1(以下简称为第一leaf设备)下挂的服务器1需要将目标数据流发送至leaf2(以下简称为第二leaf设备)下挂的服务器2,那么,就需要通过spine1或spine2(以下简称为第一spine设备)将目标数据流转发至第二leaf设备,再由第二leaf设备转发至服务器2。如果第一spine设备与第二leaf设备之间的链路出现拥塞,第一leaf设备仍然会将第一spine设备作为向第二leaf设备发送目标数据流时的下一跳设备,在第一spine设备将目标数据流转发至第二leaf设备的过程中,可能由于链路拥塞,导致目标数据流出现丢包的情况。

当然,一个spine-leaf组网中,可以包括多个leaf设备和多个spine设备,且任一leaf设备下挂的服务器可以为一个或多个。本申请实施例仅以图1所示的spine-leaf组网示意,并不用于限制本发明。

有鉴于此,本发明实施例提供了一种数据流路由方法,以解决由于链路拥塞而导致丢包的问题。具体的,参阅图2所示,本发明实施例提供的数据流路由方法的一种流程示意图,该方法应用于spine-leaf组网中的第一leaf设备,该spine-leaf组网还包括至少一个第二leaf设备、第一spine以及至少一个第二spine设备,各spine设备分别与各leaf设备建立邻居关系,该第一spine设备为该第一leaf设备向一个第二leaf设备发送目标数据流的下一跳设备,该方法可以包括以下步骤:

s201,接收第一spine设备发送的拥塞通知报文,其中,上述拥塞通知报文是上述第一spine设备在检测到转发上述目标数据流的出端口发生拥塞时发送的,上述拥塞通知报文携带有上述目标数据流的流标识、外层目的ip地址以及速率。

具体的,spine-leaf组网中各spine设备可以基于预设的监测规则监测自身的各出端口的带宽使用率,当一个spine设备在监测到自身的任一出端口的带宽使用率大于设定阈值时,即可确认该出端口发生拥塞,该一个spine设备即可生成对应的拥塞通知报文,并发送给对应的leaf设备。

例如,假设第一leaf设备下挂的服务器1在将目标数据报文(该目标数据报文所属于目标数据流,目标数据流由各个目标数据报文组成)发送至第二leaf设备下挂的服务器2时,首先,服务器1生成原始目标数据报文,并将该原始目标数据报文发送至第一leaf设备,其中,该原始目标数据报文的源ip地址为服务器1的ip地址,目的ip地址为服务器2的ip地址;然后,由第一leaf设备对该原始目标数据报文进行vxlan封装处理,得到封装后的目标数据报文,并通过第一leaf设备与第二leaf设备之间的vxlan隧道,经由第一spine设备将该封装后的目标数据报文转发至第二leaf设备,再由第二leaf设备对该封装后的目标数据报文进行解封装处理,得到原始目标数据报文;最后,由第二leaf设备将该原始目标数据报文转发至服务器2。那么,第一spine设备在检测到自身与第二leaf设备相连的出端口(即转发该目标数据流的出端口)发生拥塞时,生成拥塞通知报文,并发送给第一leaf设备。

本发明实施例中,拥塞通知报文可以携带有目标数据流的流标识,传输该目标数据流的vxlan隧道的vni(如vni=100)、该目标数据流的外层目的ip地址(即第一leaf设备与第二leaf设备之间的vxlan隧道的目的ip地址,也即第二leaf设备的公网ip地址)以及该目标数据流的速率。

可选的,所谓流标识指的是唯一标识一个数据流的标识,本发明实施例中,可以根据原始目标数据报文的源ip地址和目的ip地址唯一标识一个数据流,即目标数据流的流标识可以是所属该目标数据流的原始目标数据报文的源ip地址(即服务器1的ip地址)和目的ip地址(即服务器2的ip地址),也就是经过vxlan封装后的内层源ip地址和目的ip地址。

可选的,本发明实施例中,在执行步骤s201之前,还可以包括:接收各spine设备发送的携带有其自身与各leaf设备相连的端口的ip地址的第一报文,并根据接收到的各第一报文,建立本地的spine列表;针对接收到的各第一报文,分别向各spine设备发送携带有其自身与各spine设备相连的端口的mac地址的第二报文,以使得各spine设备根据接收到的各第二报文,建立本地的leaf列表。

例如,假设leaf-spine组网中leaf设备包括leaf1,leaf2和leaf3,spine设备包括spine1和spine2,spine1与leaf1,leaf2和leaf3相连的端口是分别是端口1(ip地址为ipa),端口2(ip地址为ipb)和端口3(ip地址为ipc),那么,spine1就会定期向leaf1,leaf2和leaf3发送携带有ipa,ipb和ipc的第一报文,同理,spine2也会定期向leaf1,leaf2和leaf3发送第一报文,那么,leaf1,leaf2和leaf3就可以根据spine设备发送的第一报文建立包含有各spine设备的端口的ip地址的spine设备列表;当然,leaf1,leaf2和leaf3在接收到任一第一报文后,会向发送该任一第一报文的发送端(即各spine设备)发送携带有自身端口的mac地址的第二报文,以使得各leaf设备可以根据接收到的各第二报文,建立包含各leaf设备的端口的mac地址的leaf设备列表。

s202,向各第二spine设备发送携带上述外层目的ip地址的带宽查询报文,以使得各第二spine设备确定与上述外层目的ip地址对应的出端口的剩余带宽,并将剩余带宽携带在带宽通知报文中发送给第一leaf设备。

本发明实施例中,第一leaf设备在接收到第一spine设备发送的拥塞报文通知后,可以向各第二spine设备发送携带有第二leaf设备的公网ip地址的带宽查询报文,以使得各第二spine设备根据第二leaf设备的公网ip地址,查找本地的arp表项,确定出与第二leaf设备的公网ip地址对应的出端口,并确定出该出端口的剩余带宽,并将确定出的该剩余带宽携带在带宽通知报文中发送给第一leaf设备。

进一步的,本发明实施例中,一种可选的实施方式为,在接收到第一spine发送的拥塞通知报文之后,在向各第二spine发送携带上述外层目的ip地址的带宽查询报文之前,第一leaf设备可以基于接收到的拥塞通知报文,在拥塞流列表中建立上述目标数据流对应的拥塞流表项,其中,上述拥塞流表项包括上述第一spine设备与自身相连的端口的ip地址、上述流标识以及上述外层目的ip地址。还可以包括传输该目标数据流的vxlan隧道的vni(100)。

基于此,本发明实施例中,由于第一leaf设备维护有本地的拥塞流列表,该拥塞流列表是基于各spine设备发送的拥塞通知报文发送的,那么,第一leaf设备在向各第二spine发送携带上述外层目的ip地址的带宽查询报文的一种方式可以为:查询上述拥塞流列表,获取包含上述外层目的ip地址的拥塞流表项,并将该拥塞流表项所包含的spine设备与自身相连的端口的ip地址对应的spine设备作为拥塞spine设备;向除上述拥塞spine设备之外的第二spine发送带宽查询报文。

例如,假设spine-leaf组网中包括spine1,spine2和spine3,第一leaf设备本地维护的拥塞流列表中spine2与第二leaf设备之间的链路拥塞,那么,当第一leaf设备接收到spine1发送的拥塞通知报文,确定spine1与第二leaf设备之间的链路拥塞时,即可根据本地维护的拥塞流列表确定出,spine1和spine2与第二leaf设备之间的链路均拥塞,此时,只需向spine3发送带宽查询报文即可。无需再向spine2发送带宽查询报文。

s203,接收各第二spine设备发送的带宽通知报文,并将剩余带宽大于上述目标数据流的速率的一个第二spine设备确定为发送上述目标数据流的下一跳设备。

本发明实施例中,第一leaf设备可以在接收到各第二spine设备发送的带宽通知报文后,基于各带宽通知报文携带的剩余带宽与该目标数据流的速率进行比较,分别判断各第二spine设备对应的剩余带宽是否大于该目标数据流的速率。

若存在剩余带宽大于该目标数据流的速率的第二spine设备,则可以将剩余带宽大于该目标数据流的速率的一个第二spine设备(如,spine2)作为后续发送该目标数据流的下一跳设备。

具体的,可以下发对应的路由策略,例如,路由策略为:将vni=100,原始数据报文的源ip地址为服务器1的ip地址,目的ip地址为服务器2的ip地址所属的数据流(即目标数据流)对应的下一跳设备指定为上述一个第二spine设备(如,spine2)。

进一步的,本发明实施例中,第一leaf设备在将剩余带宽大于上述目标数据流的速率的一个第二spine设备确定为发送上述流标识对应的数据流的下一跳设备之后,在本地的拥塞流列表中删除针对上述目标数据流建立的拥塞流表项。

若第一leaf设备根据各第二spine设备发送的带宽通知报文,确定不存在剩余带宽大于上述目标数据流的速率的第二spine设备,则将上述第一spine设备确定为发送上述目标数据流的下一跳设备;并在接收到上述第一spine发送的拥塞解除通知报文时,在本地拥塞流列表中删除针对上述目标数据流建立的拥塞流表项,其中,上述拥塞解除通知报文包括上述目标数据流的流标识。

参阅图3所示,本发明实施例提供的数据流路由方法的另一种流程示意图,该方法应用于spine-leaf组网中的第一spine设备,该spine-leaf组网还包括第一leaf设备、至少一个第二leaf设备以及至少一个第二spine设备,各spine设备分别与各leaf设备建立邻居关系,该第一spine设备为该第一leaf设备向一个第二leaf设备发送目标数据流的下一跳设备,该方法可以包括以下步骤:

s301:若检测到转发上述目标数据流的出端口发生拥塞,则获取上述目标数据流的流标识、外层目的ip地址以及速率。

s302:以上述目标数据流的外层源ip地址作为目的ip地址,生成携带有上述目标数据流的流标识、外层目的ip地址以及速率的拥塞通知报文。

本发明实施例中,一种可选的实施方式为:在上述出端口对应的拥塞流列表中建立上述目标数据流对应的拥塞流表项,上述拥塞流表项包括上述目标数据流的流标识和速率。

s303:将上述拥塞通知报文发送给上述第一leaf设备。

进一步的,在检测到上述出端口拥塞解除后,向上述第一leaf设备发送携带有上述目标数据流对应的拥塞流表项的拥塞解除通知报文,并删除上述出端口对应的拥塞流列表。

下面将结合一种可能的应用场景,对本发明实施例提供的数据流路由方法进行说明,该应用场景中,如图4所示的spine-leaf组网的组网结构可以包括:leaf1,leaf2和leaf3;spinea和spineb;以及leaf1下挂的服务器1和服务器2,leaf2下挂的服务器3和leaf3下挂的服务器4。

其中,spinea与leaf1,leaf2和leaf3相连的端口的ip地址分别为ipa1,ipa2和ipa3,spineb与leaf1,leaf2和leaf3相连的端口的ip地址分别为ipb1,ipb2和ipb3。

leaf1与spinea和spineb相连的端口的mac地址分别为mac11和mac12,leaf2与spinea和spineb相连的端口的mac地址分别为mac21和mac22,以及leaf3与spinea和spineb相连的端口的mac地址分别为mac31和mac32。leaf1下挂的服务器1的ip地址为ip1,服务器2的ip地址为ip2,leaf2下挂的服务器3的ip地址为ip3,以及leaf3下挂的服务器的ip地址为ip4。

首先,定义设备角色和消息类型:

cd(congestiondevice)设备:拥塞检查设备,定期检查设备出端口队列,如果检查到拥塞,通过cn消息通知rd设备,cd部署在spine---leaf组网中的spine设备,或者vtep设备的下一跳设备。

rd(reactiondevice)设备:拥塞响应设备,收到cn消息,根据消息的内容对数据流进行负载分担。

cn(congestionnotify)消息:拥塞通知消息,cd设备向rd设备通知拥塞的消息。

br(bandwidthrequest)消息:带宽查询消息,rd设备向cd设备发送消息,查询cd设备的剩余带宽。

bn(bandwidthnotify)消息:带宽通知消息,cd设备向rd设备发送消息,通告本设备通向某目的的剩余可用带宽。

ce(congestioneliminate)消息:拥塞解除通知消息,cd设备向rd设备通知拥塞已经消除的消息。

rd-request消息:rd查询消息,cd设备发送此报文用于查询所有当前已存在的rd设备。

rd-response消息:rd查询应答消息,rd设备发送此报文用于向cd设备注册。

实际应用中,spinea会向leaf1,leaf2和leaf3发送rd-request消息(rd查询)

如图4所示的组网中,rd设备可以部署在leaf设备上,例如,leaf1上部署有rd1,leaf2上部署有rd2,leaf3上部署有rd3;cd设备可以部署在spine设备上,例如,spinea上部署有cd1,spineb上部署有cd2。

接着,spinea和spineb会分别向leaf1,leaf2和leaf3发送rd-request消息,消息携带有自身的与leaf1,leaf2和leaf3相连的端口的ip地址,如,spinea发送的rd-request消息携带有ipa1,ipa2和ipa3,spineb发送的rd-request消息消息携带有ipb1,ipb2和ipb3;leaf1,leaf2和leaf3会根据接收到的rd-request消息建立如下相同的spine表项:

{spinea;{ipa1;ipa2;ipa3}}

{spineb;{ipb1;ipb2;ipb3}}

leaf1,leaf2和leaf3在接收到spinea和spineb发送的rd-request消息后,会分别向spinea和spineb发送rd-response消息,消息携带有自身的与spinea和spineb相连的端口的mac地址,如,leaf1发送的rd-request消息携带有mac11和mac12,leaf2发送的rd-request消息携带有mac21和mac22,leaf3发送的rd-request消息携带有mac31和mac32,spinea和spineb会根据接收到的rd-request消息建立如下相同的leaf表项:

{leaf1;{mac11;mac12}}

{leaf2;{mac21;mac22}}

{leaf3;{mac31;mac32}}

假设leaf1下挂的服务器1需要将数据流(如,原始数据流)发送至leaf2下挂的服务器3,leaf1在接收到所属该原始数据流的第一数据报文(即原始目标数据报文)后,对该原始目标数据报文进行封装处理,得到第二数据报文(即封装后的目标数据报文),并通过spinea发送至leaf2,leaf2对接收到的第二数据报文进行解封装处理,得到第一数据报文,并根据第一数据报文的目的ip地址将该第一数据报文发送至服务器3。显然,spinea是leaf1将目标数据流发送至leaf2的下一跳设备。

spine1可以基于预设的监测规则监测自身的,转发该目标数据流的出端口的带宽使用率,当根据该出端口的带宽使用率确定该出端口发生拥塞时,根据该目标数据流的源mac地址(即leaf1与spine1相连的端口的mac地址),确定目标数据流来自于本地相连的leaf1,将解析得到的vni,该目标数据流的流标识(服务器1的ip地址和服务器3的ip地址)和当前目标数据流的速率记录到本地的拥塞流列表中,如;

{100;ip1;ip3;mbps}

spine1并向leaf1发送cn消息,cn消息的目的ip地址是目标数据流的外层源ip地址(即leaf1的公网ip地址),例如,cn消息可以包括如下内容:

{100;ip1;ip3;ip11,;mbps}

leaf1在接收到cn消息后,根据cn报文的源ip地址,确定是spine1发送的cn消息,则根据cn消息的内容,添加本地的拥塞流列表:

{ipa1;100;ip1;ip3;ip11,;mbps}

此时,leaf1可以向spine2发送rb消息,rb消息包括leaf2的公网ip地址,例如,可以包括如下内容:

{ip11}

spine2在接收到leaf1发送的rb报文后,根据rb消息携带的leaf2的公网ip地址,查找本地的arp表项,确定出与leaf2相连的出端口的剩余带宽,并向leaf1发送rn消息,rn消息包括确定出的剩余带宽,例如,可以包括如下内容:

{ip11,nbps}

leaf1在接收到spine2发送的rn消息后,比较剩余带宽与目标数据流的当前速率的大小关系,若n小于或等于m,则继续将spine1作为发送目标数据流的下一跳设备;若n大于m,则后续可以将spine2作为发送目标数据流的下一跳设备。具体的,可以通过更改路由策略的方式,将目标数据流对应的下一跳设备指定为spine2。

接着,leaf1删除本地的拥塞流列表中针对目标数据流建立的拥塞表项。例如,可以删除如下表项:

{ipa1;100;ip1;ip3;ip11,;mbps}

可选的,在针对目标数据流确定出新的下一跳设备之前,若spine1监测到转发该目标数据报文的出端口的拥塞解除了,即该出端口的带宽使用率不超过设定阈值了,spine1可以向各leaf设备发送拥塞解除通知消息,leaf1在接收到该拥塞解除通知消息时,即可删除本地的拥塞流列表中针对目标数据流建立的拥塞表项。

当然,若leaf1本地的拥塞流列表中包括多个需要由该出端口转发的数据流对应的拥塞表项,即可删除该多个拥塞表项。

参阅图5,图5所示为本发明实施例提供的应用于leaf设备的数据流路由装置的一种结构示意图,该装置方法应用于spine-leaf组网中的第一leaf设备,spine-leaf组网还包括至少一个第二leaf设备、第一spine设备以及至少一个第二spine设备,各spine设备分别与各leaf设备建立邻居关系,第一spine设备为第一leaf设备向一个第二leaf发送目标数据流的下一跳设备,装置包括:

报文接收模块501,用于接收第一spine发送的拥塞通知报文,其中,拥塞通知报文是第一spine设备在检测到转发目标数据流的出端口发生拥塞时发送的,拥塞通知报文包括第一数据流的流标识、外层目的ip地址以及速率;

带宽查询模块502,用于向各第二spine设备发送携带外层目的ip地址的带宽查询报文,以使得各第二spine设备确定与外层目的ip地址对应的出端口的剩余带宽,并将剩余带宽携带在带宽通知报文中发送给第一leaf设备;

路由确定模块503,用于接收各第二spine设备发送的带宽通知报文,并将剩余带宽大于目标数据流的速率的一个第二spine设备确定为发送目标数据流的下一跳设备。

在一种可选的实施例中,装置还包括第一拥塞流管理模块,用于在接受第一spine设备发送的拥塞通知报文之后,在向各第二spine设备发送携带外层目的ip地址的带宽查询报文之前,基于拥塞通知报文,在拥塞流列表中建立目标数据流对应的拥塞流表项,其中,该拥塞流表项包括第一spine设备与自身相连的端口的ip地址、流标识以及外层目的ip地址;

第一拥塞流管理模块,还用于将剩余带宽大于目标数据流的速率的一个第二spine设备确定为发送流标识对应的数据流的下一跳设备之后,在拥塞流列表中删除针对目标数据流建立的拥塞流表项。

在一种可选的实施例中,带宽查询模块502,具体用于查询拥塞流列表,获取包含外层目的ip地址的拥塞流表项,并将该拥塞流表项所包含的spine设备与自身相连的端口的ip地址对应的spine设备作为拥塞spine设备;

向除拥塞spine设备之外的其他第二spine设备发送带宽查询报文。

在一种可选的实施例中,路由确定模块503,还用于若不存在剩余带宽大于目标数据流的速率的第二spine设备,则将第一spine设备确定为发送目标数据流的下一跳设备;

第一拥塞流管理模块,还用于在接收到第一spine设备发送的拥塞解除通知报文时,在拥塞流列表中删除针对目标数据流建立的拥塞流表项,其中,拥塞解除通知报文携带有目标数据流的流标识。

在一种可选的实施例中,该装置还可以包括spine列表模块,用于在接收第一spine设备发送的拥塞通知报文之前,接收各spine设备发送的携带有其自身与各leaf设备相连的端口的ip地址的第一报文,并根据接收到的各第一报文,建立本地的spine列表;

针对接收到的各第一报文,分别向各spine设备发送携带有其自身与各spine设备相连的端口的mac地址的第二报文,以使得各spine设备根据接收到的各第二报文,建立本地的leaf列表。

参阅图6,图6所示为本发明实施例提供的应用于spine设备的数据流路由装置的一种结构示意图,装置应用于spine-leaf组网中的第一spine设备,spine-leaf组网还包括第一leaf设备、至少一个第二leaf设备以及至少一个第二spine设备,各spine设备分别与各leaf设备建立邻居关系,第一spine设备为第一leaf设备向一个第二leaf设备发送目标数据流的下一跳设备,装置包括:

拥塞检测模块601,用于若检测到转发目标数据流的出端口发生拥塞,则获取目标数据流的流标识、外层目的ip地址以及速率;

拥塞通知模块602,用于以目标数据流的外层源ip地址作为目的ip地址,生成携带有目标数据流的流标识、外层目的ip地址以及速率的拥塞通知报文;并将拥塞通知报文发送至第一leaf设备。

在一种可选的实施例中,装置还包括第二拥塞流管理模块,用于在生成携带有目标数据流的流标识、外层目的ip地址以及速率的拥塞通知报文之前,在出端口对应的拥塞流列表中建立目标数据流对应的拥塞流表项,该拥塞流表项包括目标数据流的流标识和速率;

拥塞解除通知模块,用于在检测到出端口拥塞解除后,向第一leaf设备发送携带有目标数据流对应的拥塞流表项的拥塞解除通知报文;

第二拥塞流管理模块,还用于删除出端口对应的拥塞流列表。

本发明实施例还提供了一种第一leaf设备,应用于spine-leaf组网,spine-leaf组网还包括至少一个第二leaf设备、第一spine设备以及至少一个第二spine,各spine设备分别与各leaf设备建立邻居关系,第一spine设备为第一leaf设备向一个第二leaf设备发送目标数据流的下一跳设备,如图7所示,包括:

第一存储器701,用于存放计算机程序;

第一处理器702,用于执行存储器701上所存放的程序时,实现如下步骤:

接收第一spine设备发送的拥塞通知报文,其中,拥塞通知报文是第一spine设备在检测到转发目标数据流的出端口发生拥塞时发送的,拥塞通知报文携带有目标数据流的流标识、外层目的ip地址以及速率;

向各第二spine设备发送携带外层目的ip地址的带宽查询报文,以使得各第二spine设备确定与外层目的ip地址对应的出端口的剩余带宽,并将剩余带宽携带在带宽通知报文中发送给第一leaf设备;

接收各第二spine设备发送的带宽通知报文,并将剩余带宽大于目标数据流的速率的一个第二spine设备确定为发送目标数据流的下一跳设备。

在一种可选的实施例中,在向第二spine发送带宽查询报文之前,方法还包括:

在接收第一spine设备发送的拥塞通知报文之后,在向各第二spine设备发送携带外层目的ip地址的带宽查询报文之前,方法还包括:

基于拥塞通知报文,在拥塞流列表中建立目标数据流对应的拥塞流表项,其中,拥塞流表项包括第一spine设备与自身相连的端口的ip地址、流标识以及外层目的ip地址;

在将剩余带宽大于目标数据流的速率的一个第二spine设备确定为发送流标识对应的数据流的下一跳设备之后,方法还包括:

在拥塞流列表中删除针对目标数据流建立的拥塞流表项。

在一种可选的实施例中,向各第二spine设备发送携带外层目的ip地址的带宽查询报文,包括:

查询拥塞流列表,获取包含外层目的ip地址的拥塞流表项,并将该拥塞流表项所包含的spine设备与自身相连的端口的ip地址对应的spine设备作为拥塞spine设备;

向除拥塞spine设备之外的其它第二spine设备发送带宽查询报文。

在一种可选的实施例中,方法还包括:

若不存在剩余带宽大于目标数据流的速率的第二spine设备,则将第一spine设备确定为发送目标数据流的下一跳设备;

在接收到第一spine设备发送的拥塞解除通知报文时,在拥塞流列表中删除针对目标数据流建立的拥塞流表项,其中,拥塞解除通知报文携带有目标数据流的流标识。

在一种可选的实施例中,在接收第一spine设备发送的拥塞通知报文之前,方法还包括:

接收各spine设备发送的携带有其自身与各leaf设备相连的端口的ip地址的第一报文,并根据接收到的各第一报文,建立本地的spine列表;

针对接收到的各第一报文,分别向各spine设备发送携带有其自身与各spine设备相连的端口的mac地址的第二报文,以使得各spine设备根据接收到的各第二报文,建立本地的leaf列表。

本发明实施例还提供了一种第一spine设备,应用于spine-leaf组网,spine-leaf组网还包括第一leaf设备、至少一个第二leaf设备以及至少一个第二spine设备,各spine设备分别与各leaf设备建立邻居关系,第一spine设备为第一leaf设备向一个第二leaf设备发送目标数据流的下一跳设备,如图8所示,包括:

第二存储器801,用于存放计算机程序;

第二处理器802,用于执行存储器801上所存放的程序时,实现如下步骤:

若检测到转发目标数据流的出端口发生拥塞,则获取目标数据流的流标识、外层目的ip地址以及速率;

以目标数据流的外层源ip地址作为目的ip地址,生成携带有目标数据流的流标识、外层目的ip地址以及速率的拥塞通知报文;

将拥塞通知报文发送至第一leaf设备。

在一种可选的实施例中,在向第一leaf发送拥塞通知报文之前,方法还包括:

在生成携带有目标数据流的流标识、外层目的ip地址以及速率的拥塞通知报文之前,方法还包括:

在出端口对应的拥塞流列表中建立目标数据流对应的拥塞流表项,拥塞流表项包括目标数据流的流标识和速率;

方法还包括:

在检测到出端口拥塞解除后,向第一leaf设备发送携带有目标数据流对应的拥塞流表项的拥塞解除通知报文,并删除出端口对应的拥塞流列表。

上述电子设备提到存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一数据流路由方法。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一拥塞通知方法。

在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一数据流路由方法。

在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一拥塞通知方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站服务器、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站服务器、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参阅即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、第一leaf设备、第一spine设备、计算机可读存储介质、计算机程序产品的实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参阅方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1