CN109802879B - 一种数据流路由方法及装置 - Google Patents

一种数据流路由方法及装置 Download PDF

Info

Publication number
CN109802879B
CN109802879B CN201910099050.2A CN201910099050A CN109802879B CN 109802879 B CN109802879 B CN 109802879B CN 201910099050 A CN201910099050 A CN 201910099050A CN 109802879 B CN109802879 B CN 109802879B
Authority
CN
China
Prior art keywords
spine
congestion
leaf
target data
flow
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910099050.2A
Other languages
English (en)
Other versions
CN109802879A (zh
Inventor
蒋茂勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou H3C Technologies Co Ltd
Original Assignee
Hangzhou H3C Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN201910099050.2A priority Critical patent/CN109802879B/zh
Publication of CN109802879A publication Critical patent/CN109802879A/zh
Application granted granted Critical
Publication of CN109802879B publication Critical patent/CN109802879B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例提供了一种数据流路由方法及装置。其中,所述方法包括:接收第一Spine设备发送的拥塞通知报文,其中,拥塞通知报文是第一Spine设备在检测到转发目标数据流的出端口发生拥塞时发送的,拥塞通知报文携带有目标数据流的流标识、外层目的IP地址以及速率;向各第二Spine设备发送携带外层目的IP地址的带宽查询报文,以使得各第二Spine设备确定与外层目的IP地址对应的出端口的剩余带宽,并将剩余带宽携带在带宽通知报文中发送给第一Leaf设备;接收各第二Spine设备发送的带宽通知报文,并将剩余带宽大于目标数据流的速率的一个第二Spine设备确定为发送目标数据流的下一跳设备。可以实现降低数据流因拥塞导致数据流丢包的可能性。

Description

一种数据流路由方法及装置
技术领域
本发明涉及拥塞通告与负载均衡技术领域,特别是涉及一种数据流路由方法及装置。
背景技术
VXLAN(Virtual eXtensible Local Area Network,可扩展虚拟局域网络)可以基于已有的服务提供商或企业IP(Internet Protocol,网络协议)网络,为分散的物理服务器提供二层互联,并能够为不同的租户提供业务隔离。VXLAN技术将已有的三层物理网络作为Underlay网络,在其上构建出虚拟的二层网络,即Overlay网络。Overlay通过封装技术,在租户服务器之间建立VXLAN隧道。利用Underlay网络提供的三层转发路径,实现租户二层报文跨越三层网络在不同服务器间传递。
Spine-Leaf(脊叶)组网为一种常见的应用VXLAN技术的组网方案,该组网结构可以如图1所示,包括多个叶节点(如,Leaf 1,Leaf 2和Leaf 3)和多个上脊节点(如,Spine 1和Spine 2),各Leaf设备下下挂有一个或多个服务器,Leaf设备为VXLAN组网中的VTEP(Vxlan Tunnel End Point,VXLAN隧道终端)设备,Spine设备为一个Leaf设备向另一个Leaf设备发送数据流时的下一跳设备。假设Leaf 1向Leaf 2发送数据流时的下一跳设备为Spine 1,相关技术中,如果Spine 1与Leaf 2之间的链路发生故障,则Leaf 1可以将除Spine 1以外的其他任一Spine设备(例如Spine 2),作为向Leaf 2发送数据流时的下一跳设备。
但是,如果Spine 1与Leaf 2之间的链路只是发生拥塞,而没有发生故障,则Leaf1仍然将Spine 1作为向Leaf 2发送数据流时的下一跳设备,可能导致该数据流在由Spine1向Leaf 2转发的过程中因链路拥塞发生丢包。
发明内容
本发明实施例的目的在于提供一种数据流路由方法,以实现在数据流的传输路径发生拥塞后,能够自动为数据流重新规划传输路径,以避免使用发生拥塞的路径传输数据流,降低数据流因拥塞导致数据流丢包的可能性。具体技术方案如下:
在本发明实施例的第一方面,提供了一种数据流路由方法,所述方法应用于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组网中,假设Leaf 1(以下简称为第一Leaf设备)下挂的服务器1需要将目标数据流发送至Leaf 2(以下简称为第二Leaf设备)下挂的服务器2,那么,就需要通过Spine 1或Spine 2(以下简称为第一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设备包括Leaf 1,Leaf 2和Leaf 3,Spine设备包括Spine 1和Spine 2,Spine 1与Leaf 1,Leaf 2和Leaf 3相连的端口是分别是端口1(IP地址为IP a),端口2(IP地址为IP b)和端口3(IP地址为IP c),那么,Spine 1就会定期向Leaf 1,Leaf 2和Leaf 3发送携带有IP a,IP b和IP c的第一报文,同理,Spine 2也会定期向Leaf 1,Leaf 2和Leaf 3发送第一报文,那么,Leaf 1,Leaf 2和Leaf 3就可以根据Spine设备发送的第一报文建立包含有各Spine设备的端口的IP地址的Spine设备列表;当然,Leaf 1,Leaf 2和Leaf 3在接收到任一第一报文后,会向发送该任一第一报文的发送端(即各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组网中包括Spine 1,Spine 2和Spine 3,第一Leaf设备本地维护的拥塞流列表中Spine 2与第二Leaf设备之间的链路拥塞,那么,当第一Leaf设备接收到Spine 1发送的拥塞通知报文,确定Spine 1与第二Leaf设备之间的链路拥塞时,即可根据本地维护的拥塞流列表确定出,Spine 1和Spine 2与第二Leaf设备之间的链路均拥塞,此时,只需向Spine 3发送带宽查询报文即可。无需再向Spine 2发送带宽查询报文。
S203,接收各第二Spine设备发送的带宽通知报文,并将剩余带宽大于上述目标数据流的速率的一个第二Spine设备确定为发送上述目标数据流的下一跳设备。
本发明实施例中,第一Leaf设备可以在接收到各第二Spine设备发送的带宽通知报文后,基于各带宽通知报文携带的剩余带宽与该目标数据流的速率进行比较,分别判断各第二Spine设备对应的剩余带宽是否大于该目标数据流的速率。
若存在剩余带宽大于该目标数据流的速率的第二Spine设备,则可以将剩余带宽大于该目标数据流的速率的一个第二Spine设备(如,Spine 2)作为后续发送该目标数据流的下一跳设备。
具体的,可以下发对应的路由策略,例如,路由策略为:将VNI=100,原始数据报文的源IP地址为服务器1的IP地址,目的IP地址为服务器2的IP地址所属的数据流(即目标数据流)对应的下一跳设备指定为上述一个第二Spine设备(如,Spine 2)。
进一步的,本发明实施例中,第一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组网的组网结构可以包括:Leaf 1,Leaf 2和Leaf 3;Spine A和Spine B;以及Leaf 1下挂的服务器1和服务器2,Leaf 2下挂的服务器3和Leaf 3下挂的服务器4。
其中,Spine A与Leaf 1,Leaf 2和Leaf 3相连的端口的IP地址分别为IP A1,IPA2和IP A3,Spine B与Leaf 1,Leaf 2和Leaf 3相连的端口的IP地址分别为IP B1,IP B2和IP B3。
Leaf 1与Spine A和Spine B相连的端口的MAC地址分别为MAC 11和MAC 12,Leaf2与Spine A和Spine B相连的端口的MAC地址分别为MAC 21和MAC 22,以及Leaf 3与SpineA和Spine B相连的端口的MAC地址分别为MAC 31和MAC 32。Leaf 1下挂的服务器1的IP地址为IP 1,服务器2的IP地址为IP 2,Leaf 2下挂的服务器3的IP地址为IP 3,以及Leaf 3下挂的服务器的IP地址为IP 4。
首先,定义设备角色和消息类型:
CD(Congestion Device)设备:拥塞检查设备,定期检查设备出端口队列,如果检查到拥塞,通过CN消息通知RD设备,CD部署在Spine---Leaf组网中的Spine设备,或者VTEP设备的下一跳设备。
RD(Reaction Device)设备:拥塞响应设备,收到CN消息,根据消息的内容对数据流进行负载分担。
CN(Congestion Notify)消息:拥塞通知消息,CD设备向RD设备通知拥塞的消息。
BR(Bandwidth Request)消息:带宽查询消息,RD设备向CD设备发送消息,查询CD设备的剩余带宽。
BN(Bandwidth Notify)消息:带宽通知消息,CD设备向RD设备发送消息,通告本设备通向某目的的剩余可用带宽。
CE(Congestion Eliminate)消息:拥塞解除通知消息,CD设备向RD设备通知拥塞已经消除的消息。
RD-request消息:RD查询消息,CD设备发送此报文用于查询所有当前已存在的RD设备。
RD-response消息:RD查询应答消息,RD设备发送此报文用于向CD设备注册。
实际应用中,Spine A会向Leaf 1,Leaf 2和Leaf 3发送RD-request消息(RD查询)
如图4所示的组网中,RD设备可以部署在Leaf设备上,例如,Leaf 1上部署有RD 1,Leaf 2上部署有RD 2,Leaf 3上部署有RD 3;CD设备可以部署在Spine设备上,例如,SpineA上部署有CD 1,Spine B上部署有CD 2。
接着,Spine A和Spine B会分别向Leaf 1,Leaf 2和Leaf 3发送RD-request消息,消息携带有自身的与Leaf 1,Leaf 2和Leaf 3相连的端口的IP地址,如,Spine A发送的RD-request消息携带有IP A1,IP A2和IP A3,Spine B发送的RD-request消息消息携带有IPB1,IP B2和IP B3;Leaf 1,Leaf 2和Leaf 3会根据接收到的RD-request消息建立如下相同的Spine表项:
{Spine A;{IP A1;IP A2;IP A3}}
{Spine B;{IP B1;IP B2;IP B3}}
Leaf 1,Leaf 2和Leaf 3在接收到Spine A和Spine B发送的RD-request消息后,会分别向Spine A和Spine B发送RD-response消息,消息携带有自身的与Spine A和SpineB相连的端口的MAC地址,如,Leaf 1发送的RD-request消息携带有MAC 11和MAC 12,Leaf 2发送的RD-request消息携带有MAC 21和MAC 22,Leaf 3发送的RD-request消息携带有MAC31和MAC 32,Spine A和Spine B会根据接收到的RD-request消息建立如下相同的Leaf表项:
{Leaf 1;{MAC 11;MAC 12}}
{Leaf 2;{MAC 21;MAC 22}}
{Leaf 3;{MAC 31;MAC 32}}
假设Leaf 1下挂的服务器1需要将数据流(如,原始数据流)发送至Leaf 2下挂的服务器3,Leaf 1在接收到所属该原始数据流的第一数据报文(即原始目标数据报文)后,对该原始目标数据报文进行封装处理,得到第二数据报文(即封装后的目标数据报文),并通过Spine A发送至Leaf 2,Leaf 2对接收到的第二数据报文进行解封装处理,得到第一数据报文,并根据第一数据报文的目的IP地址将该第一数据报文发送至服务器3。显然,Spine A是Leaf 1将目标数据流发送至Leaf 2的下一跳设备。
Spine 1可以基于预设的监测规则监测自身的,转发该目标数据流的出端口的带宽使用率,当根据该出端口的带宽使用率确定该出端口发生拥塞时,根据该目标数据流的源MAC地址(即Leaf 1与Spine 1相连的端口的MAC地址),确定目标数据流来自于本地相连的Leaf 1,将解析得到的VNI,该目标数据流的流标识(服务器1的IP地址和服务器3的IP地址)和当前目标数据流的速率记录到本地的拥塞流列表中,如;
{100;IP 1;IP 3;M bps}
Spine 1并向Leaf 1发送CN消息,CN消息的目的IP地址是目标数据流的外层源IP地址(即Leaf 1的公网IP地址),例如,CN消息可以包括如下内容:
{100;IP 1;IP 3;IP 11,;M bps}
Leaf 1在接收到CN消息后,根据CN报文的源IP地址,确定是Spine 1发送的CN消息,则根据CN消息的内容,添加本地的拥塞流列表:
{IP A1;100;IP 1;IP 3;IP 11,;M bps}
此时,Leaf 1可以向Spine 2发送RB消息,RB消息包括Leaf 2的公网IP地址,例如,可以包括如下内容:
{IP 11}
Spine 2在接收到Leaf 1发送的RB报文后,根据RB消息携带的Leaf 2的公网IP地址,查找本地的ARP表项,确定出与Leaf 2相连的出端口的剩余带宽,并向Leaf 1发送RN消息,RN消息包括确定出的剩余带宽,例如,可以包括如下内容:
{IP 11,N bps}
Leaf 1在接收到Spine 2发送的RN消息后,比较剩余带宽与目标数据流的当前速率的大小关系,若N小于或等于M,则继续将Spine 1作为发送目标数据流的下一跳设备;若N大于M,则后续可以将Spine 2作为发送目标数据流的下一跳设备。具体的,可以通过更改路由策略的方式,将目标数据流对应的下一跳设备指定为Spine 2。
接着,Leaf 1删除本地的拥塞流列表中针对目标数据流建立的拥塞表项。例如,可以删除如下表项:
{IP A1;100;IP 1;IP 3;IP 11,;M bps}
可选的,在针对目标数据流确定出新的下一跳设备之前,若Spine 1监测到转发该目标数据报文的出端口的拥塞解除了,即该出端口的带宽使用率不超过设定阈值了,Spine1可以向各Leaf设备发送拥塞解除通知消息,Leaf 1在接收到该拥塞解除通知消息时,即可删除本地的拥塞流列表中针对目标数据流建立的拥塞表项。
当然,若Leaf 1本地的拥塞流列表中包括多个需要由该出端口转发的数据流对应的拥塞表项,即可删除该多个拥塞表项。
参阅图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设备发送携带有目标数据流对应的拥塞流表项的拥塞解除通知报文,并删除出端口对应的拥塞流列表。
上述电子设备提到存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一数据流路由方法。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一拥塞通知方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一数据流路由方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一拥塞通知方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站服务器、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站服务器、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参阅即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、第一Leaf设备、第一Spine设备、计算机可读存储介质、计算机程序产品的实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参阅方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (14)

1.一种数据流路由方法,其特征在于,所述方法应用于Spine-Leaf组网中的第一Leaf设备,所述Spine-Leaf组网还包括至少一个第二Leaf设备、第一Spine以及至少一个第二Spine设备,各Spine设备分别与各Leaf设备建立邻居关系,所述第一Spine设备为所述第一Leaf设备向一个第二Leaf设备发送目标数据流的下一跳设备,所述方法包括:
接收所述第一Spine设备发送的拥塞通知报文,其中,所述拥塞通知报文是所述第一Spine设备在检测到转发所述目标数据流的出端口发生拥塞时发送的,所述拥塞通知报文携带有所述目标数据流的流标识、外层目的IP地址以及速率;
向各第二Spine设备发送携带所述外层目的IP地址的带宽查询报文,以使得各第二Spine设备确定与所述外层目的IP地址对应的出端口的剩余带宽,并将剩余带宽携带在带宽通知报文中发送给所述第一Leaf设备;
接收各第二Spine设备发送的带宽通知报文,并将剩余带宽大于所述目标数据流的速率的一个第二Spine设备确定为发送所述目标数据流的下一跳设备。
2.根据权利要求1所述的方法,其特征在于,在所述接收所述第一Spine设备发送的拥塞通知报文之后,在所述向各第二Spine设备发送携带所述外层目的IP地址的带宽查询报文之前,所述方法还包括:
基于所述拥塞通知报文,在拥塞流列表中建立所述目标数据流对应的拥塞流表项,其中,所述拥塞流表项包括所述第一Spine设备与所述第一Leaf设备相连的端口的IP地址、所述流标识以及所述外层目的IP地址;
在所述将剩余带宽大于所述目标数据流的速率的一个第二Spine设备确定为发送所述目标数据流的下一跳设备之后,所述方法还包括:
在所述拥塞流列表中删除针对所述目标数据流建立的拥塞流表项。
3.根据权利要求2所述的方法,其特征在于,所述向各第二Spine设备发送携带所述外层目的IP地址的带宽查询报文,包括:
查询所述拥塞流列表,获取包含所述外层目的IP地址的拥塞流表项,并将该拥塞流表项所包含的Spine设备与所述第一Leaf设备相连的端口的IP地址对应的Spine设备作为拥塞Spine设备;
向除所述拥塞Spine设备之外的其它第二Spine设备发送带宽查询报文。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若不存在剩余带宽大于所述目标数据流的速率的第二Spine设备,则将所述第一Spine设备确定为发送所述目标数据流的下一跳设备;
在接收到所述第一Spine设备发送的拥塞解除通知报文时,在所述拥塞流列表中删除针对所述目标数据流建立的拥塞流表项,其中,所述拥塞解除通知报文携带有所述目标数据流的流标识。
5.根据权利要求1所述的方法,其特征在于,在所述接收第一Spine设备发送的拥塞通知报文之前,所述方法还包括:
接收各Spine设备发送的携带有其自身与各Leaf设备相连的端口的IP地址的第一报文,并根据接收到的各第一报文,建立本地的Spine列表;
针对接收到的各第一报文,分别向各Spine设备发送携带有其自身与各Spine设备相连的端口的MAC地址的第二报文,以使得各Spine设备根据接收到的各第二报文,建立本地的Leaf列表。
6.一种数据流路由方法,其特征在于,所述方法应用于Spine-Leaf组网中的第一Spine设备,所述Spine-Leaf组网还包括第一Leaf设备、至少一个第二Leaf设备以及至少一个第二Spine设备,各Spine设备分别与各Leaf设备建立邻居关系,所述第一Spine设备为所述第一Leaf设备向一个第二Leaf设备发送目标数据流的下一跳设备,所述方法包括:
若检测到转发所述目标数据流的出端口发生拥塞,则获取所述目标数据流的流标识、外层目的IP地址以及速率;
以所述目标数据流的外层源IP地址作为目的IP地址,生成携带有所述目标数据流的流标识、外层目的IP地址以及速率的拥塞通知报文;
将所述拥塞通知报文发送至所述第一Leaf设备。
7.根据权利要求6所述的方法,其特征在于,在所述生成携带有所述目标数据流的流标识、外层目的IP地址以及速率的拥塞通知报文之前,所述方法还包括:
在所述出端口对应的拥塞流列表中建立所述目标数据流对应的拥塞流表项,所述拥塞流表项包括所述目标数据流的流标识和速率;
所述方法还包括:
在检测到所述出端口拥塞解除后,向所述第一Leaf设备发送携带有所述目标数据流对应的拥塞流表项的拥塞解除通知报文,并删除所述出端口对应的拥塞流列表。
8.一种数据流路由装置,其特征在于,所述装置应用于Spine-Leaf组网中的第一Leaf设备,所述Spine-Leaf组网还包括至少一个第二Leaf设备、第一Spine设备以及至少一个第二Spine设备,各Spine设备分别与各Leaf设备建立邻居关系,所述第一Spine设备为所述第一Leaf设备向一个第二Leaf发送目标数据流的下一跳设备,所述装置包括:
报文接收模块,用于接收所述第一Spine设备发送的拥塞通知报文,其中,所述拥塞通知报文是所述第一Spine设备在检测到转发所述目标数据流的出端口发生拥塞时发送的,所述拥塞通知报文携带有所述目标数据流的流标识、外层目的IP地址以及速率;
带宽查询模块,用于向各第二Spine设备发送携带所述外层目的IP地址的带宽查询报文,以使得各第二Spine设备确定与所述外层目的IP地址对应的出端口的剩余带宽,并将剩余带宽携带在带宽通知报文中发送给所述第一Leaf设备;
路由确定模块,用于接收各第二Spine设备发送的带宽通知报文,并将剩余带宽大于所述目标数据流的速率的一个第二Spine设备确定为发送所述目标数据流的下一跳设备。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括第一拥塞流管理模块,用于在所述接收所述第一Spine设备发送的拥塞通知报文之后,在所述向各第二Spine设备发送携带所述外层目的IP地址的带宽查询报文之前,基于所述拥塞通知报文,在拥塞流列表中建立所述目标数据流对应的拥塞流表项,其中,所述拥塞流表项包括所述第一Spine设备与所述第一Leaf设备相连的端口的IP地址、所述流标识以及所述外层目的IP地址;
所述第一拥塞流管理模块,还用于在所述将剩余带宽大于所述目标数据流的速率的一个第二Spine设备确定为发送所述目标数据流的下一跳设备之后,在所述拥塞流列表中删除针对所述目标数据流建立的拥塞流表项。
10.根据权利要求9所述的装置,其特征在于,所述带宽查询模块,具体用于查询所述拥塞流列表,获取包含所述外层目的IP地址的拥塞流表项,并将该拥塞流表项所包含的Spine设备与所述第一Leaf设备相连的端口的IP地址对应的Spine设备作为拥塞Spine设备;
向除所述拥塞Spine设备之外的其他第二Spine设备发送带宽查询报文。
11.根据权利要求9所述的装置,其特征在于,所述路由确定模块,还用于若不存在剩余带宽大于所述目标数据流的速率的第二Spine设备,则将所述第一Spine设备确定为发送所述目标数据流的下一跳设备;
所述第一拥塞流管理模块,还用于在接收到所述第一Spine设备发送的拥塞解除通知报文时,在所述拥塞流列表中删除针对所述目标数据流建立的拥塞流表项,其中,所述拥塞解除通知报文携带有所述目标数据流的流标识。
12.根据权利要求8所述的装置,其特征在于,所述装置还包括Spine列表模块,用于在所述接收第一Spine设备发送的拥塞通知报文之前,接收各Spine设备发送的携带有其自身与各Leaf设备相连的端口的IP地址的第一报文,并根据接收到的各第一报文,建立本地的Spine列表;
针对接收到的各第一报文,分别向各Spine设备发送携带有其自身与各Spine设备相连的端口的MAC地址的第二报文,以使得各Spine设备根据接收到的各第二报文,建立本地的Leaf列表。
13.一种数据流路由装置,其特征在于,所述装置应用于Spine-Leaf组网中的第一Spine设备,所述Spine-Leaf组网还包括第一Leaf设备、至少一个第二Leaf设备以及至少一个第二Spine设备,各Spine设备分别与各Leaf设备建立邻居关系,所述第一Spine设备为所述第一Leaf设备向一个第二Leaf设备发送目标数据流的下一跳设备,所述装置包括:
拥塞检测模块,用于若检测到转发所述目标数据流的出端口发生拥塞,则获取所述目标数据流的流标识、外层目的IP地址以及速率;
拥塞通知模块,用于以所述目标数据流的外层源IP地址作为目的IP地址,生成携带有所述目标数据流的流标识、外层目的IP地址以及速率的拥塞通知报文;并将所述拥塞通知报文发送至所述第一Leaf设备。
14.根据权利要求13所述的装置,其特征在于,所述装置还包括第二拥塞流管理模块,用于在所述生成携带有所述目标数据流的流标识、外层目的IP地址以及速率的拥塞通知报文之前,在所述出端口对应的的拥塞流列表中建立所述目标数据流对应的拥塞流表项,所述拥塞流表项包括所述目标数据流的流标识和速率;
拥塞解除通知模块,还用于在检测到所述出端口拥塞解除后,向所述第一Leaf设备发送携带有所述目标数据流对应的拥塞流表项的拥塞解除通知报文;
所述第二拥塞流管理模块,还用于删除所述出端口对应的拥塞流列表。
CN201910099050.2A 2019-01-31 2019-01-31 一种数据流路由方法及装置 Active CN109802879B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910099050.2A CN109802879B (zh) 2019-01-31 2019-01-31 一种数据流路由方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910099050.2A CN109802879B (zh) 2019-01-31 2019-01-31 一种数据流路由方法及装置

Publications (2)

Publication Number Publication Date
CN109802879A CN109802879A (zh) 2019-05-24
CN109802879B true CN109802879B (zh) 2021-05-28

Family

ID=66560758

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910099050.2A Active CN109802879B (zh) 2019-01-31 2019-01-31 一种数据流路由方法及装置

Country Status (1)

Country Link
CN (1) CN109802879B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112511325B (zh) 2019-09-16 2022-03-11 华为技术有限公司 网络拥塞控制方法、节点、***及存储介质
CN111865716B (zh) * 2020-06-30 2023-07-18 新华三信息技术有限公司 一种端口拥塞检测方法、装置、设备及机器可读存储介质
CN112787925B (zh) * 2020-10-12 2022-07-19 中兴通讯股份有限公司 拥塞信息收集方法、确定最优路径方法、网络交换机

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105099938A (zh) * 2014-05-13 2015-11-25 华为技术有限公司 网络中拥塞窗口的确定方法和装置
CN106911584A (zh) * 2015-12-23 2017-06-30 华为技术有限公司 一种基于叶-脊拓扑结构的流量负载分担方法、装置及***
CN106998302A (zh) * 2016-01-26 2017-08-01 华为技术有限公司 一种业务流量的分配方法及装置
CN107547418A (zh) * 2016-06-29 2018-01-05 华为技术有限公司 一种拥塞控制方法和装置
CN108123878A (zh) * 2016-11-30 2018-06-05 华为技术有限公司 一种路由方法、装置及数据转发设备
CN108206781A (zh) * 2016-12-16 2018-06-26 华为技术有限公司 选择转发路径的方法和设备
CN108234320A (zh) * 2016-12-14 2018-06-29 华为技术有限公司 报文传输方法及交换机

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9325619B2 (en) * 2011-11-15 2016-04-26 Oracle International Corporation System and method for using virtual lanes to alleviate congestion in a fat-tree topology

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105099938A (zh) * 2014-05-13 2015-11-25 华为技术有限公司 网络中拥塞窗口的确定方法和装置
CN106911584A (zh) * 2015-12-23 2017-06-30 华为技术有限公司 一种基于叶-脊拓扑结构的流量负载分担方法、装置及***
CN106998302A (zh) * 2016-01-26 2017-08-01 华为技术有限公司 一种业务流量的分配方法及装置
CN107547418A (zh) * 2016-06-29 2018-01-05 华为技术有限公司 一种拥塞控制方法和装置
CN108123878A (zh) * 2016-11-30 2018-06-05 华为技术有限公司 一种路由方法、装置及数据转发设备
CN108234320A (zh) * 2016-12-14 2018-06-29 华为技术有限公司 报文传输方法及交换机
CN108206781A (zh) * 2016-12-16 2018-06-26 华为技术有限公司 选择转发路径的方法和设备

Also Published As

Publication number Publication date
CN109802879A (zh) 2019-05-24

Similar Documents

Publication Publication Date Title
US10191758B2 (en) Directing data traffic between intra-server virtual machines
US10534601B1 (en) In-service software upgrade of virtual router with reduced packet loss
CN109802879B (zh) 一种数据流路由方法及装置
US20170331641A1 (en) Deployment Of Virtual Extensible Local Area Network
CN109218200B (zh) 一种报文处理方法及装置
CN107547243B (zh) 一种报文转发方法及装置
CN102291455B (zh) 分布式集群处理***及其报文处理方法
WO2019196653A1 (zh) 转发报文方法和装置
US9743367B2 (en) Link layer discovery protocol (LLDP) on multiple nodes of a distributed fabric
JP5826320B2 (ja) ネットワーク・ロケーション・サービス
WO2021109726A1 (zh) 一种带宽限制方法、装置及***
CN114978978A (zh) 一种算力资源调度方法、装置、电子设备及介质
US20190215191A1 (en) Deployment Of Virtual Extensible Local Area Network
CN109691031B (zh) 业务报文传输方法及节点设备
WO2019223534A1 (zh) 一种转发表项的监测方法及装置
WO2021139304A1 (zh) 一种多云互联的方法及设备
JP5678678B2 (ja) プロバイダ網及びプロバイダエッジ装置
CN109120449B (zh) 一种链路故障的检测方法及装置
CN109831378B (zh) 一种报文超时回应方法及装置
WO2022089212A1 (zh) 故障处理方法和装置
US8665752B2 (en) Network modeling, service provisioning, and service management
WO2020220987A1 (zh) 数据包传输、管理方法、装置及数据转发设备、存储介质
US20170012869A1 (en) Forwarding table management in computer networks
CN113852572B (zh) 一种报文处理方法及装置
US11658897B2 (en) Loop prevention system

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant