CN117376259A - 负载均衡的方法、装置、设备、系统及存储介质 - Google Patents

负载均衡的方法、装置、设备、系统及存储介质 Download PDF

Info

Publication number
CN117376259A
CN117376259A CN202210940147.3A CN202210940147A CN117376259A CN 117376259 A CN117376259 A CN 117376259A CN 202210940147 A CN202210940147 A CN 202210940147A CN 117376259 A CN117376259 A CN 117376259A
Authority
CN
China
Prior art keywords
interface
output interface
data stream
interfaces
group
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.)
Pending
Application number
CN202210940147.3A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN117376259A publication Critical patent/CN117376259A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请公开了一种负载均衡的方法、装置、设备、系统及存储介质,涉及通信技术领域。第一网络节点获取第一出接口组的统计信息和第一入接口组的统计信息;当第一入接口组中的第一入接口为拥塞接口的情况下,确定待切换的第一数据流以及第一出接口组中满足第一切换条件的第二出接口,将第一数据流的出接口由第一出接口切换到第二出接口。其中,第一切换条件为第二出接口和与第二出接口对应的第二入接口在第一数据流切换后均不是拥塞接口,拥塞接口为发生拥塞的接口。该方法在第一网络节点上的多个出接口之间负载均衡的基础上,保证了第二网络节点上的多个入接口之间的负载也均衡。

Description

负载均衡的方法、装置、设备、系统及存储介质
本申请要求于2022年07月01日提交的申请号为202210773362.9、发明名称为“一种装箱机制的负载分担方法、设备及系统”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及通信技术领域,特别涉及负载均衡的方法、装置、设备、系统及存储介质。
背景技术
在数据中心的通信网络中,任一网络节点需要选择中间节点来将数据流转发至另一网络节点。其中,中间节点的数量为多个,网络节点上配置有多个接口,多个接口分别连接多个中间节点中的一个中间节点。
通常,源节点会将待发送的多条数据流均衡的分配到本地的多个出接口,以实现该多个出接口之间的负载均衡。但是,当向同一目的节点发送数据流的源节点为多个时,该多个源节点选择的出接口可能连接同一个中间节点,使得与该同一个中间节点连接的目的节点上的入接口拥塞,但其实该目的节点上的其他入接口并不拥塞,因而该目的节点上的多个入接口之间的负载不均衡。
因此,如何保证源节点上的多个出接口和目的节点上的多个入接口上的负载同时均衡是亟待解决的问题。
发明内容
本申请提供了一种负载均衡的方法、装置、设备、系统及存储介质,用于同时均衡传输数据流的源节点上的多个出接口和目的节点之间的多个入接口之间的负载。
第一方面,提供了一种负载均衡的方法,以第一网络节点执行该方法为例,第一网络节点获取第一出接口组的统计信息和第一入接口组的统计信息;当第一入接口组中的第一入接口为拥塞接口的情况下,确定待切换的第一数据流以及第一出接口组中满足第一切换条件的第二出接口,将第一数据流的出接口由第一出接口切换到第二出接口。
其中,第一出接口组包括该第一网络节点上连接多个中间节点的多个出接口,第一出接口组的统计信息包括该第一出接口组中的每个出接口的负载,第一入接口组包括第二网络节点上连接多个中间节点的多个入接口,第一入接口组的统计信息包括该第一入接口组中的每个入接口的负载,该第一入接口组中的多个入接口与第一出接口组中的多个出接口一一对应;第一数据流通过该第一出接口组中的第一出接口传输至第二网络节点,第一切换条件为第二出接口和与第二出接口对应的第二入接口在第一数据流切换后均不是拥塞接口。拥塞接口为发生拥塞的接口。其中,发生拥塞的接口可以指的是负载超过负载阈值的接口。
该方法中,第一网络节点为传输第一数据流的源节点,第二网络节点为传输第一数据流的目的节点,通过第一出接口组的统计信息和第一入接口组的统计信息对第一网络节点传输的数据流的出接口进行切换,使得在第一网络节点上的多个出接口之间负载均衡的基础上,保证了第二网络节点上的多个入接口之间的负载也均衡。由此,第一网络节点通过该方法能够保持本地的多个出接口与网络中的任一网络节点上的多个入接口之间的负载均衡,进而网络能够达到全局的负载均衡。
此外,由于该方法通过获取第一出接口组的统计信息和第一入接口组的统计信息,就能够实现第一网络节点上的多个出接口和第二网络节点上的多个入接口之间的负载均衡,使得负载均衡的均衡速度更快。
在一种可能的实施方式中,获取第一出接口组的统计信息的方式为:对第一网络节点上的多个出接口发送的数据流进行流量统计,根据统计结果获取第一出接口组的统计信息;获取第一入接口组的统计信息的方式为:根据多个中间节点中的每一中间节点与第二网络节点连接的中间出接口的负载,得到第一入接口组的统计信息。
通过获取多个中间节点中的每一中间节点与第二网络节点连接的中间出接口的负载,间接得到第一入接口组的统计信息,相比于直接获取第一入接口组的多个入接口的负载,该方法更简单,获取的第一入接口组的统计信息更准确。
在一种可能的实施方式中,接收多个中间节点发送的多个第二出接口组的统计信息,其中,对于多个第二出接口组的统计信息,一个第二出接口组包括一个中间节点上连接多个网络节点的多个中间出接口,任一第二出接口组的统计信息包括任一第二出接口组中的每个中间出接口的负载;则可以根据该多个第二出接口组的统计信息,获取多个中间节点中的每一中间节点与第二网络节点连接的中间出接口的负载。
由于一个第二出接口组的统计信息包括一个中间节点上的多个中间出接口的负载,使得通过一次获取多个第二出接口组的统计信息能够获取到所有中间出接口的负载,进而能够根据该多个第二出接口组的统计信息对应获取到多个网络节点分别对应的入接口组的统计信息。
在一种可能的实施方式中,首先获取第一出接口待传输至第二网络节点的至少一条数据流分别对应的负载,然后将该至少一条数据流中负载大于或等于差值负载的数据流确定为待切换的第一数据流,其中,差值负载为第一入接口对应的负载与负载阈值之间的差。由此,通过该至少一条数据流和负载差值能够准确的确定负载均衡需要调整的第一数据流,实现了负载均衡的定量调整,提高了调整的灵活性和准确性。
在一种可能的实施方式中,根据去向为第二网络节点的下一跳流表获取第一出接口发送的至少一条数据流分别对应的负载。其中,下一跳流表包括多个项目,每个项目配置有对应的出接口,与任一项目匹配的数据流由任一项目对应的出接口转发,下一跳流表还记录有每个项目匹配的数据流,多个项目的数量大于多个出接口的数量。由于下一跳流表是第一网络节点用来转发数据流的,且多个项目的数量大于多个出接口的数量,使得一个出接口转发的数据流的数量可能为多条,进而获取的至少一条数据流的粒度更细,使负载均衡的定量调整更加便捷。
在一种可能的实施方式中,当第一出接口组中不存在满足第一切换条件的第二出接口时,确定第一入接口组中在该第一数据流切换后不是拥塞接口的第三入接口;根据第三入接口对应的第三出接口发送的数据流确定第三网络节点,获取第二入接口组的统计信息,第二入接口组包括第三网络节点上连接多个中间节点的多个入接口,第二入接口组的统计信息包括第二入接口组中的每个入接口的负载,第一出接口组中的多个出接口和第二入接口组中的多个入接口一一对应;
然后,根据第一出接口组的统计信息和第二入接口组的统计信息,确定待切换的第二数据流和以及第一出接口组中满足第二切换条件的第四出接口,第二数据流通过第三出接口传输至第三网络节点,第二切换条件为第四出接口和与该第四出接口对应的第四入接口在第二数据流切换后均不是拥塞接口;将第二数据流的出接口由第三出接口切换到第四出接口,将第一数据流的出接口由第一出接口切换到第三出接口。
由此,使得在第一出接口组中不存在满足第一切换条件的第二出接口时,能够通过第二数据流的出接口切换为第一数据流腾出满足第一切换条件的出接口,使得该方法能够有效的协调多条数据流之间的出接口切换,进而使得负载均衡的均衡方式更多样,提高切换的可靠性,确保数据流的传输效率。
在一种可能的实施方式中,第一网络节点还会接收多个中间节点中的第一中间节点发送的第一中间出接口的拥塞消息,该第一中间出接口为第一中间节点与第四网络节点连接的中间出接口,多个出接口与多个中间节点一一对应;基于该拥塞消息确定待切换的第三数据流以及第一出接口组中满足第三切换条件的第五出接口,第三数据流通过第一中间节点对应的第六出接口传输,第三切换条件为第五出接口和与第五出接口对应的第二中间节点连接该第四网络节点的中间出接口在该第三数据流切换后均不是拥塞接口;将第三数据流的出接口由第六出接口切换到第五出接口。
由于在第一中间节点的第一中间出接口拥塞时,能够接收到第一中间节点发送的拥塞消息,使得能够根据该拥塞消息及时的对导致该拥塞的数据流进行调整,保证了网络持续的负载均衡,提高数据流的传输效率。
在一种可能的实施方式中,在接收到第一中间节点发送的第一中间出接口的拥塞消息后,当第一出接口组中不存在满足第三切换条件的第五出接口时,确定多个中间节点中的连接该第四网络节点的中间出接口在该第三数据流切换后不是拥塞接口的第三中间节点;根据第三中间节点对应的第七出接口发送的数据流确定第五网络节点,根据该第五网络节点确定待切换的第四数据流以及第一出接口组中满足第四切换条件的第八出接口,第四数据流通过第七出接口传输,第四切换条件为第八出接口和与第八出接口对应的第四中间节点连接该第五网络节点的中间出接口在该第四数据流切换后均不是拥塞接口;将第四数据流的出接口由第七出接口切换到第八出接口,将第三数据流的出接口由第六出接口切换到第七出接口。
同样的,在第一出接口组中不存在满足第三切换条件的第五出接口时,能够通过第四数据流的出接口切换为第三数据流腾出满足第三切换条件的出接口,使得该方法能够有效的协调多条数据流之间的出接口切换,进而使得负载均衡的均衡方式更多样,提高切换的可靠性,确保数据流的传输效率。
在一种可能的实施方式中,将第一数据流的出接口由第一出接口切换到第二出接口包括的多个端口中的轻载端口,由该轻载端口发送该第一数据流,其中,轻载端口为多个端口中负载最小的端口。在出接口包括多个端口的情况下,既能够使得接口之间的负载均衡,还能使得接口中的多个端口之间的负载均衡。
第二方面,提供了一种负载均衡方法,以第一中间节点执行该方法为例,第一中间节点获取第二出接口组的统计信息,并向多个网络节点发送该第二出接口组的统计信息。其中,第二出接口组包括第一中间节点上连接多个网络节点的多个中间出接口,第二出接口组的统计信息包括第二出接口组中的每个中间出接口的负载。
第二出接口组的统计信息用于多个网络节点中的第一网络节点获取第一入接口组的统计信息,第一入接口组包括第二网络节点上连接多个中间节点的多个入接口,第一入接口组的统计信息包括第一入接口组中的每个入接口的负载,多个入接口与第一网络节点上连接多个中间节点的多个出接口一一对应;
第一入接口组的统计信息用于第一网络节点将第一数据流的出接口由第一出接口组中的第一出接口切换到第一出接口组中的第二出接口,第一出接口对应的第一入接口为拥塞接口,第一数据流通过该第一出接口组中的第一出接口传输至第二网络节点,第二出接口满足第一切换条件,第一切换条件为第二出接口和与第二出接口对应的第二入接口在第一数据流切换后均不是拥塞接口。
该方法通过向多个网络节点发送第二出接口组的统计信息,使得第一网络节点能够获取到第一入接口组的统计信息,进而能够对第一网络节点传输的数据流的出接口进行切换,使得在第一网络节点上的多个出接口之间负载均衡的基础上,保证了第二网络节点上的多个入接口之间的负载也均衡。
在一种可能的实施方式中,当第二出接口组中的第一中间出接口拥塞且该第一中间出接口传输的数据流来自于第一网络节点时,向第一网络节点发送第一中间出接口的拥塞消息。该拥塞消息用于第一网络节点将第三数据流的出接口由第六出接口切换到第五出接口,第三数据流通过第六出接口传输,第六出接口为第一网络节点连接第一中间节点的出接口,第五出接口为第一网络节点上满足第三切换条件的出接口,第三切换条件为第五出接口和与第五出接口对应的第二中间节点连接该第四网络节点的中间出接口在该第三数据流切换后均不是拥塞接口。
由于在第一中间节点的第一中间出接口拥塞且该第一中间出接口传输的数据流来自于第一网络节点时,能够及时向第一网络节点发送拥塞消息,使得第一网络节点能够根据该拥塞消息及时的导致拥塞的数据流进行调整,保证了网络持续的负载均衡。
第三方面,提供了一种负载均衡的装置,应用于第一网络节点,该装置包括:
第一获取模块,用于获取第一出接口组的统计信息和第一入接口组的统计信息,第一出接口组包括第一网络节点上连接多个中间节点的多个出接口,第一出接口组的统计信息包括第一出接口组中的每个出接口的负载,第一入接口组包括第二网络节点上连接多个中间节点的多个入接口,第一入接口组的统计信息包括第一入接口组中的每个入接口的负载,第一入接口组中的多个入接口与第一出接口组中的多个出接口一一对应;
第一确定模块,用于当第一入接口组中的第一入接口为拥塞接口的情况下,确定待切换的第一数据流以及第一出接口组中满足第一切换条件的第二出接口,第一数据流通过该第一出接口组中的第一出接口传输至第二网络节点,第一切换条件为第二出接口和与第二出接口对应的第二入接口在第一数据流切换后均不是拥塞接口;
第一切换模块,用于将第一数据流的出接口由第一出接口切换到第二出接口。
在一种可能的实施方式中,第一获取模块,用于对第一网络节点上的多个出接口发送的数据流进行流量统计,根据统计结果获取第一出接口组的统计信息;根据多个中间节点中的每一中间节点与第二网络节点连接的中间出接口的负载,得到第一入接口组的统计信息。
在一种可能的实施方式中,第一获取模块,还用于接收多个中间节点发送的多个第二出接口组的统计信息,一个第二出接口组包括一个中间节点上连接多个网络节点的多个中间出接口,任一第二出接口组的统计信息包括任一第二出接口组中的每个中间出接口的负载;根据多个第二出接口组的统计信息,获取多个中间节点中的每一中间节点与第二网络节点连接的中间出接口的负载。
在一种可能的实施方式中,第一确定模块,用于获取第一出接口待传输至第二网络节点的至少一条数据流分别对应的负载,将至少一条数据流中负载大于或等于差值负载的数据流确定为待切换的第一数据流,差值负载为第一入接口对应的负载与负载阈值之间的差。
在一种可能的实施方式中,第一确定模块,用于根据去向为第二网络节点的下一跳流表获取第一出接口发送的至少一条数据流分别对应的负载,下一跳流表包括多个项目,每个项目配置有对应的出接口,与任一项目匹配的数据流由任一项目对应的出接口转发,下一跳流表还记录有每个项目匹配的数据流,多个项目的数量大于多个出接口的数量。
在一种可能的实施方式中,第一确定模块,还用于当第一出接口组中不存在满足第一切换条件的第二出接口时,确定第一入接口组中在该第一数据流切换后不是拥塞接口的第三入接口;
第一获取模块,还用于根据第三入接口对应的第三出接口发送的数据流确定第三网络节点,获取第二入接口组的统计信息,第二入接口组包括第三网络节点上连接多个中间节点的多个入接口,第二入接口组的统计信息包括第二入接口组中的每个入接口的负载,第一出接口组中的多个出接口和第二入接口组中的多个入接口一一对应;
该装置还包括:第二确定模块,用于根据第一出接口组的统计信息和第二入接口组的统计信息确定待切换的第二数据流和以及第一出接口组中满足第二切换条件的第四出接口,第二数据流通过第三出接口传输至第三网络节点,第二切换条件为第四出接口和与该第四出接口对应的第四入接口在第二数据流切换后均不是拥塞接口;
第二切换模块,用于将第二数据流的出接口由第三出接口切换到第四出接口,将第一数据流的出接口由第一出接口切换到第三出接口。
在一种可能的实施方式中,该装置还包括:
接收模块,用于接收多个中间节点中的第一中间节点发送的第一中间出接口的拥塞消息,第一中间出接口为第一中间节点与第四网络节点连接的中间出接口,多个出接口与多个中间节点一一对应;
第三确定模块,用于基于拥塞消息确定待切换的第三数据流以及第一出接口组中满足第三切换条件的第五出接口,第三数据流通过第一中间节点对应的第六出接口传输,第三切换条件为第五出接口和与第五出接口对应的第二中间节点连接该第四网络节点的中间出接口在该第三数据流切换后均不是拥塞接口;
第三切换模块,将第三数据流的出接口由第六出接口切换到第五出接口。
在一种可能的实施方式中,第三确定模块,还用于当第一出接口组中不存在满足第三切换条件的第五出接口时,确定多个中间节点中的连接该第四网络节点的中间出接口在该第三数据流切换后不是拥塞接口的第三中间节点;
第三确定模块,还用于根据第三中间节点对应的第七出接口发送的数据流确定第五网络节点,基于该第五网络节点确定待切换的第四数据流以及第一出接口组中满足第四切换条件的第八出接口,第四数据流通过第七出接口传输,第四切换条件为第八出接口和与第八出接口对应的第四中间节点连接该第五网络节点的中间出接口在该第四数据流切换后均不是拥塞接口;
该装置还包括:第四切换模块,用于将第四数据流的出接口由第七出接口切换到第八出接口,将第三数据流的出接口由第六出接口切换到第七出接口。
在一种可能的实施方式中,第二出接口包括多个端口,该装置还包括:
发送模块,用于通过多个端口中的轻载端口发送第一数据流,轻载端口为多个端口中负载最小的端口。
第四方面,提供了一种负载均衡的装置,应用于第一中间节点,该装置包括:
获取模块,用于获取第二出接口组的统计信息,第二出接口组包括中间节点上连接多个网络节点的多个中间出接口,第二出接口组的统计信息包括第二出接口组中的每个中间出接口的负载;
发送模块,用于向多个网络节点发送第二出接口组的统计信息,第二出接口组的统计信息用于多个网络节点中的第一网络节点获取第一入接口组的统计信息,第一入接口组包括第二网络节点上连接多个中间节点的多个入接口,第一入接口组的统计信息包括第一入接口组中的每个入接口的负载,多个入接口与第一网络节点上连接多个中间节点的多个出接口一一对应;
第一入接口组的统计信息用于第一网络节点将第一数据流的出接口由第一出接口组中的第一出接口切换到第一出接口组中的第二出接口,第一出接口对应的第一入接口为拥塞接口,第一数据流通过第一出接口传输至第二网络节点,第二出接口满足第一切换条件,第一切换条件为第二出接口和与第二出接口对应的第二入接口在第一数据流切换后均不是拥塞接口。
在一种可能的实施方式中,发送模块,还用于基于第二出接口组中的第一中间出接口拥塞且第一中间出接口传输的数据流来自于第一网络节点,向第一网络节点发送第一中间出接口的拥塞消息;
拥塞消息用于第一网络节点将第三数据流的出接口由第六出接口切换到第五出接口,第三数据流通过第六出接口传输,第六出接口为第一网络节点连接第一中间节点的出接口,第五出接口为第一网络节点上满足第三切换条件的出接口,第三切换条件为第五出接口和与第五出接口对应的第二中间节点连接该第四网络节点的中间出接口在该第三数据流切换后均不是拥塞接口。
其中,上述第一方面至第四方面中的任一所述的拥塞接口为发生拥塞的接口。
第五方面,提供了一种网络设备,该网络设备包括:处理器,所述处理器与存储器耦合,所述存储器中存储有至少一条程序指令或代码,所述至少一条程序指令或代码由所述处理器加载并执行,以使所述网络设备实现如上第一方面或第二方面任一所述的负载均衡的方法。
可选地,所述处理器为一个或多个,所述存储器为一个或多个。
可选地,所述存储器可以与所述处理器集成在一起,或者所述存储器与处理器分离设置。
在具体实现过程中,存储器可以为非瞬时性(non-transitory)存储器,例如只读存储器(read only memory,ROM),其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本申请对存储器的类型以及存储器与处理器的设置方式不做限定。
第六方面,提供了一种通信装置,该装置包括:收发器、存储器和处理器。其中,该收发器、该存储器和该处理器通过内部连接通路互相通信,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,以控制收发器接收信号,并控制收发器发送信号,并且当该处理器执行该存储器存储的指令时,使得该通信装置执行第一方面或第一方面的任一种可能的实施方式中的方法,或者执行第二方面或第二方面的任一种可能的实施方式中的方法。
第七方面,提供了一种负载均衡的系统,所述负载均衡的系统包括多个网络节点和多个中间节点;
所述多个网络节点中的任一网络节点用于执行所述第一方面或第一方面的任一种可能的实现方式所述的方法,所述多个中间节点中的任一中间节点用于执行所述第二方面或第二方面的任一种可能的实现方式所述的方法。
第八方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行,以使计算机实现上述第一方面或第一方面的任一种可能的实施方式中的方法,或者实现上述第二方面或第二方面的任一种可能的实施方式中的方法。
第九方面,提供了一种计算机程序(产品),所述计算机程序(产品)包括:计算机程序代码,当所述计算机程序代码被计算机运行时,使得所述计算机执行上述各方面中的方法。
第十方面,提供了一种芯片,包括处理器,用于从存储器中调用并运行所述存储器中存储的指令,使得安装有所述芯片的通信设备执行上述各方面中的方法。
第十一方面,提供另一种芯片,包括:输入接口、输出接口、处理器和存储器,所述输入接口、输出接口、所述处理器以及所述存储器之间通过内部连接通路相连,所述处理器用于执行所述存储器中的代码,当所述代码被执行时,所述处理器用于执行上述各方面中的方法。
应当理解的是,本申请的第三方面至第十一方面技术方案及对应的可能的实施方式所取得的有益效果可以参见上述对第一方面至第二方面及其对应的可能的实施方式的技术效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种负载均衡的方法的实施环境示意图;
图2为本申请实施例提供的一种数据流传输的示意图;
图3为本申请实施例提供的一种负载均衡的方法的流程图;
图4为本申请实施例提供的一种nhp组的对比示意图;
图5为本申请实施例提供的另一种nhp组的示意图;
图6为本申请实施例提供的一种装箱过程的示意图;
图7为本申请实施例提供的另一种负载均衡的方法的流程图;
图8为本申请实施例提供的另一种装箱过程的示意图;
图9为本申请实施例提供的一种流量调整过程的示意图;
图10为本申请实施例提供的另一种流量调整过程的示意图;
图11为本申请实施例提供的一种负载均衡方法的交互示意图;
图12为本申请实施例提供的一种负载均衡的装置的结构示意图;
图13为本申请实施例提供的另一种负载均衡的装置的结构示意图;
图14是本申请实施例提供的一种网络设备的结构示意图;
图15是本申请实施例提供的一种网络设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例进行详细解释说明之前,先对本申请实施例的应用场景进行解释说明。
在通信网络中,诸如交换机、路由器等网络节点或中间节点通常配置有多个接口,例如,每个网络节点分别通过多个接口与多个中间节点相连接,也即每个中间节点分别通过多个接口与多个网络节点相连接。其中,每个网络节点通过任一接口能够将数据流转发至对应的中间节点,进而由该中间节点通过连接另一网络节点的接口转发该数据流至另一网络节点,以实现在两个网络节点之间传输数据流。
在本申请实施例中,将发送数据流的网络节点称为源节点,接收数据流的网络节点称为目的节点,发送数据流的接口称为出接口,接收数据流的接口称为入接口。其中,可以将同一时间经过同一网络中具有某种共同特征或属性的数据抽象为一条流,称为数据流。例如,将包括相同五元组的所有报文视为一条数据流,五元组包括源互联网协议(Internet Protocol,IP)地址、目的IP地址、源端口、目的端口和传输层协议。
源节点在向中间节点转发数据流时,需要从第一出接口组中选择一个当前时间负载最轻的出接口发送该数据流,以实现多个出接口之间的负载均衡,保证多个出接口上的负载均衡,即保证由多个出接口到连接的中间节点之间的路径不会出现流量拥塞,从而避免网络拥塞。但是,由于中间节点属于公共的网络节点,任一源节点均可向中间节点发送数据流,使得公共的中间节点上的负载具有不确定性。因此,源节点在保证本地的多个出接口之间负载均衡的基础上,难以保证本地的多个出接口与目的节点上的多个入接口之间的负载同时均衡,也即难以保证网络的全局负载均衡。
例如,当向同一目的节点发送数据流的源节点为多个时,该多个源节点选择的出接口可能连接同一个中间节点,使得该目的节点上连接该同一个中间节点的入接口接收该多条数据流的入接口拥塞,但其实该目的节点上的其他入接口并不拥塞,进而导致该目的节点上的多个入接口之间的负载不均衡。
可以理解,保证源节点上的多个出接口和目的节点上的多个入接口上的负载同时均衡是个排列组合的问题,当网络规模较大时,排列组合的可能情况非常多,若要达到同时均衡需要尝试非常多的次数。并且,由于数据流的负载大小不同,调整多少数据流才能达到平衡也需要多次尝试。因此,如何能够快速调整以达到全局负载均衡是问题的关键。
相关技术中,对于源节点到目的节点的多条路径上,通过传输的数据流携带沿途的中间节点的负载信息,使得目的节点在接收到数据流后,能够根据数据流携带的沿途的中间节点的负载信息生成对应的负载信息表。然后,目的节点向该源节点发送回程的数据流,使用该回程的数据流携带该负载信息表,使得源节点能够根据该负载信息表中各路径的负载情况进行负载均衡的调整。例如,当源节点接收到新的数据流时,选择该负载信息表中负载较轻的路径来转发该新的数据流。
但是,上述相关技术中的负载均衡方法,根据源节点和目的节点之间的路径负载情况直接向负载较轻的路径调整数据流,属于贪婪算法,导致需要多次调整才能使得源节点的多个出接口和目的节点的多个入接口之间的负载同时均衡。
可选地,本申请实施例提供的负载均衡方法可应用于任意存在上述技术问题的场景,例如,人工智能(artificial intelligence,AI)计算场景,或者高度并行计算基准测试(high performance Linpack,HPL)场景。其中,本申请实施例中的通信网络可以为数据中心网络(data center network,DCN)、城域网络、广域网络或园区网络等。
下面以数据中心的两层组网架构为例,对本申请实施例提供的负载均衡方法的实施环境进行介绍。参见图1,图1为本申请实施例提供的一种负载均衡的方法的实施环境示意图。如图1所示,该实施环境包括:服务器(server)101,架顶(top of rack,ToR)交换机102以及脊(spine)交换机103。示例性地,图1所示的ToR交换机102为本申请实施例中的网络节点,例如,源节点或者目的节点,图1所示的ToR交换机102为本申请实施例中的中间节点。
其中,该实施环境包括3个ToR交换机102、每个ToR交换机102连接有1个服务器101,且每个ToR交换机102分别与3个spine交换机103连接。可选地,服务器101和ToR交换机102之间通过有线或无线方式连接以进行通信,ToR交换机102和spine交换机103之间也通过有线或无线方式连接以进行通信。
在本申请实施例中,每个ToR交换机102配置有3个接口用于与3个spine交换机103连接,同样的,每个spine交换机103配置有3个接口用于与3个ToR交换机102连接。从图1中可以看出,ToR交换机102的上行3个出接口与连接的3个spine交换机103一一对应,3个spine交换机的下行3个出接口与3个ToR交换机102一一对应,则任一ToR交换机102的上行3个出接口与另一ToR交换机102上的3个入接口一一对应。
可以理解,本申请实施例中的接口为逻辑接口,指的是每一ToR交换机102与每一spine交换机103之间相连的一个接口,在实际网络部署中,该一个接口可以包括多个端口,每个端口对应一个物理接口。可选地,服务器101、ToR交换机102以及spine交换机103的数量可以为任意数量,图1中示出的仅为一种示例。
在进行AI计算或者HPL时,ToR交换机102负责将本地服务器101产生的数据流通过spine交换机103转发给其他ToR交换机102连接的远端服务器101。在该过程中,当数据中心中出现较少的大流时,难以基于接收端的ToR交换机102的入接口进行负载均衡的调整,导致接收端的ToR交换机102的入接口出现流量拥塞。其中,大流是指在一定时长内传输的数据流的报文量(个数或字节数)达到一定阈值的若干个数据流。
示例性地,参见图2,图2为本申请实施例提供的一种数据流传输的示意图。如图2所示,当ToR1交换机102通过spine1交换机103向ToR3交换机102发送数据流1时,ToR2交换机102也可能通过该spine1交换机103向ToR3交换机102发送数据流2,导致该spine1交换机103向该ToR3交换机102发送数据流1和数据流2时,ToR3交换机102与spine1交换机103连接的入接口拥塞。
基于此,本申请实施例提供了一种负载均衡的方法,该方法能够快速且定量的对全局的数据流量进行调整,以实现源节点上的多个出接口和目的节点上的多个入接口上的负载同时均衡。
图3是本申请实施例提供的一种负载均衡的方法的流程图。该方法可以应用于第一网络节点,第一网络节点与第二网络节点之间通过多个中间节点连接,该第一网络节点和第二网络节点可以是图1或图2所示的任一ToR交换机102,该多个中间节点可以是图1或图2所示多个spine交换机。参见图3,该方法包括但不限于如下步骤301-步骤303。
步骤301,获取第一出接口组的统计信息和第一入接口组的统计信息,第一出接口组包括第一网络节点上连接多个中间节点的多个出接口,第一出接口组的统计信息包括该第一出接口组中的每个出接口的负载,第一入接口组包括第二网络节点上连接该多个中间节点的多个入接口,第一入接口组的统计信息包括该第一入接口组中的每个入接口的负载,第一入接口组中的多个入接口与第一出接口组中的多个出接口一一对应。
其中,第一入接口组中的多个入接口与第一出接口组中的多个出接口一一对应,指的是该多个出接口中的任一出接口发送的数据流是由该多个入接口中的与该任一出接对应的入接口接收的。本申请实施例中的出接口和入接口均为逻辑接口,将第一网络节点连接同一中间节点的实际的至少一个接口作为本申请实施例中的一个出接口,将第二网络节点连接同一中间节点的实际的至少一个接口作为本申请实施例中的一个入接口。
在本申请实施例中,通信网络中的网络节点能够对本地的出接口发送的数据流进行流量统计,以根据统计结果得到该网络节点上的第一出接口组中每个出接口的负载。可选地,获取第一出接口组的统计信息,包括:第一网络节点对第一网络节点上的多个出接口发送的数据流进行流量统计,根据统计结果获取第一出接口组的统计信息。多个中间节点中的每个中间节点对各自中间节点上的多个出接口发送的数据流进行流量统计,根据统计结果获取各自的第二出接口组的统计信息。
对于第一网络节点获取该多个出接口的负载的方式本申请实施例不做限定,通常按照采集周期来采集每个采集周期内任一出接口发送的数据流的大小,将该数据流的大小作为该任一出接口的负载。可选地,可以直接将采集得到的当前时间的任一出接口的负载作为该任一出接口的负载,也可以采用滑动平均的方式来确定负载,滑动平均负载是通过当前时间之前最近的几个采样周期采集的负载的平均负载确定的。示例性地,每个采样周期为16μs,在数据流通过某个出接口时,每间隔16μs统计一次这16μs内通过该出接口的数据流的大小,得到该出接口在每个采样周期的负载。在得到当前采样周期采集的负载时,便可结合前面n(n为正整数)个采样周期采集的负载,确定该出接口的滑动平均负载即为本申请实施例中的负载。
由此,第一网络节点通过对本地出接口的流量统计获取得到了第一出接口的统计信息。但是对于第一入接口的统计信息,由于第一网络节点无法直接对其他网络节点上的入接口的流量进行统计,则需要借助连接的其他网络节点来获取。
在一种可能的实施方式中,获取第一入接口组的统计信息,包括:根据多个中间节点中的每一中间节点与第二网络节点连接的中间出接口的负载,得到第一入接口组的统计信息。可以理解,由于每一中间出接口发送的数据流是发往该中间出接口连接的网络节点的入接口的,而网络节点上的该入接口仅连接了该中间出接口,则该中间节点上的中间出接口的负载即为该中间节点通过该中间出接口连接的网络节点上的入接口的负载,即将每一中间节点与第二网络节点连接的中间出接口的负载作为第二网络节点连接每一中间节点的入接口的负载。
在本申请实施例中,通信网络中的中间节点也能够对中间节点本地的出接口发送的数据流进行流量统计,以根据统计结果得到该中间节点上的第一出接口组中每个出接口的负载。可选地,多个中间节点中的每个中间节点对各自中间节点上的多个出接口发送的数据流进行流量统计,根据统计结果获取各自的第二出接口组的统计信息。其中,一个第二出接口组包括一个中间节点上连接该多个网络节点的多个中间出接口,任一第二出接口组的统计信息包括任一第二出接口组中的每个中间出接口的负载。
可选地,获取多个中间节点中的每一中间节点与第二网络节点连接的中间出接口的负载的方式本申请实施例不做限定,可以通过直接获取上述每一中间节点统计得到的与第二网络节点连接的中间出接口的负载,或者,可以先获取每一中间节点统计得到的第二出接口组的统计信息,然后再从多个第二出接口组的统计信息中选出每一中间节点与第二网络节点连接的中间出接口的负载。
在一种可能的实施方式中,中间节点会定时向所有网络节点广播中间节点上的第二出接口组的统计信息,或者,响应于接收到第一网络节点发送的获取指令,向该第一网络节点发送第二出接口组的统计信息。由此,第一网络节点能够获取到多个中间节点分别对应的第二出接口组的统计信息,从多个中间节点分别对应的第二出接口组的统计信息中能够获取到每个中间节点发送给第二网络节点的数据流对应的负载,进而根据每个中间节点发送给第二网络节点的数据流对应的负载获取第二网络节点的第二入接口组的统计信息。
示例性地,以图2为例,第一网络节点为ToR1交换机,第二网络节点为ToR2交换机。spine1交换机对应的第二出接口组的统计信息包括:spine1交换机上的中间出接口1向ToR1交换机发送的数据流对应的负载、spine1交换机上的中间出接口2向ToR2交换机发送的数据流对应的负载、spine1交换机上的中间出接口3向ToR3交换机发送的数据流对应的负载。同样,spine2交换机对应的第二出接口组的统计信息包括:spine2交换机上的中间出接口1向ToR1交换机发送的数据流对应的负载、spine2交换机上的中间出接口2向ToR2交换机发送的数据流对应的负载、spine2交换机上的中间出接口3向ToR3交换机发送的数据流对应的负载。spine3交换机对应的第二出接口组的统计信息包括:spine3交换机上的中间出接口1向ToR1交换机发送的数据流对应的负载、spine3交换机上的中间出接口2向ToR2交换机发送的数据流对应的负载、spine3交换机上的中间出接口3向ToR3交换机发送的数据流对应的负载。
ToR1交换机通过根据上述spine1交换机、spine2交换机和spine3交换机发送的3个第二出接口组的统计信息,能够得到ToR2交换机对应的第一入接口组的统计信息。第一入接口组的统计信息包括:连接spine1交换机的入接口1接收的数据流对应的负载、连接spine2交换机的入接口2接收的数据流对应的负载、连接spine3交换机的入接口3接收的数据流对应的负载。其中,连接spine1交换机的入接口1接收的数据流对应的负载即为spine1交换机上的中间出接口2向ToR2交换机发送的数据流对应的负载,连接spine2交换机的入接口2接收的数据流对应的负载即为spine2交换机上的中间出接口2向ToR2交换机发送的数据流对应的负载,连接spine3交换机的入接口3接收的数据流对应的负载即为spine3交换机上的中间出接口2向ToR2交换机发送的数据流对应的负载。
步骤302,当第一入接口组中的第一入接口为拥塞接口的情况下,确定待切换的第一数据流以及第一出接口组中满足第一切换条件的第二出接口,第一数据流通过该第一出接口组中的第一出接口传输至第二网络节点,第一切换条件为第二出接口和与第二出接口对应的第二入接口在第一数据流切换后均不是拥塞接口。
其中,拥塞接口为发生拥塞的接口,发生拥塞的接口可以指的是负载超过负载阈值的接口。在获取到第一出接口组的统计信息和第一入接口组的统计信息之后,根据第一出接口组的统计信息和第一入接口组的统计信息中每个出接口和对应的入接口的负载,能够直观的获取到源节点的所有出接口与目的节点的所有入接口之间的负载是否均衡的情况。若源节点的所有出接口与目的节点的所有入接口之间的负载均未超过接口的负载阈值,则表示源节点的所有出接口与目的节点的所有入接口的负载是均衡的,如果每个源节点的出接口和目的节点的入接口的负载都是均衡的,则目前的全网流量是均衡的,若发现源节点的某一入接口的负载超过接口的负载阈值时,则表示目前的全网流量是不均衡的,需要对发送的数据流进行调整,以使源节点的所有出接口与目的节点的所有入接口之间的负载均不超过接口的负载阈值。
可以理解,负载阈值为接口在一定时间内能够传输数据流的最大值,当接口的负载超过该负载阈值时则会出现接口的流量拥塞。可选地,不同接口的负载阈值可以相同也可以不同,本申请实施例以源节点的所有出接口和目的节点的所有入接口的负载阈值相同为例进行说明。其中,负载阈值可以根据应用场景灵活调整,例如,负载阈值可以设置为接口带宽利用率最高的情况的负载,或者,负载阈值可以为历史时长内的最大平均负载。
在一种可能的实施方式中,当第一入接口组中的第一入接口的当前负载超过负载阈值时,则确定第二网络节点上的第一入接口拥塞,且去往该第二网络节点上的第一入接口的数据流来自于该第一网络节点,即与第一入接口对应的第一出接口的当前负载不为空。在该情况下,切换导致该第一入接口拥塞的数据流的路径即可,并且保证切换后不会导致其他入接口的拥塞。其中,第一出接口的负载不为空可以是指第一出接口当前存在传输的数据流。
可选地,当第一入接口组中的第一入接口为拥塞接口的情况下,则确定待切换的第一数据流以及第一出接口组中满足第一切换条件的第二出接口,该第一数据流通过该第一出接口组中的第一出接口传输至第二网络节点,第一切换条件为第二出接口和与第二出接口对应的第二入接口在第一数据流切换后均不是拥塞接口。可以理解,第二出接口和与第二出接口对应的第二入接口在第一数据流切换后均不是拥塞接口可以包括:第二出接口的当前负载和第二出接口对应的第二入接口的当前负载分别与第一数据流对应的负载之和均小于等于负载阈值。
在一种可能的实施方式中,第一网络节点确定待切换的第一数据流,包括:获取第一出接口待传输至第二网络节点的至少一条数据流分别对应的负载,将至少一条数据流中负载大于或等于差值负载的数据流确定为待切换的第一数据流,差值负载为第一入接口对应的负载与负载阈值之间的差。
可选地,本申请实施例中第一网络节点转发的数据流为大流,大流对应的负载较大,且大流往往会持续长时间发送。为了实现大流传输的负载均衡,通常第一网络节点在发送数据流时会将一条大流细分为多条聚合流,每条聚合流可以从不同的出接口转发,由此,在对数据流进行调整时,可以基于每条聚合流进行调整。在该情况下,本申请实施例中涉及的待切换的第一数据流、第二数据流、第三数据流或第四数据流均为聚合流。
通过获取同一出接口发送的不同条聚合流分别对应的负载,以及为实现负载均衡需要调整的负载,能够准确确定需要调整多少负载能够达到负载均衡,即能够确定需要调整的数据流具体为哪条聚合流,实现了更细粒度且定量的流量调整。其中,为实现负载均衡需要调整的负载也可称为差值负载,流量调整即为对数据流的出接口的切换。
可选地,获取第一出接口待传输至第二网络节点的至少一条数据流分别对应的负载的方式可以为,根据去向为第二网络节点的下一跳流表获取第一出接口发送的至少一条数据流分别对应的负载。其中,下一跳流表包括多个项目(item),每个项目配置有对应的出接口,与任一项目匹配的数据流由任一项目对应的出接口转发。由此,下一跳流表还记录有每个项目匹配的数据流,多个项目的数量大于多个出接口的数量。
由于下一跳流表中的多个项目的数量大于多个出接口的数量,因此,同一出接口会被配置到多个项目,进而匹配该多个项目的数据流均由该同一出接口转发,实现了将该同一出接口的数据流划分为多条数据流的效果。其中,在去向为第二网络节点的下一跳流表中的数据流均是发往第二网络节点的,则在该下一跳流表中找到配置有第一出接口的多个项目对应的数据流即为本申请实施例中的至少一条数据流。
在本申请实施例中,任一网络节点或中间节点在转发数据流时,会维护本地对应的下一跳(next hop,nhp)组,或者,nhp组也可称为nhp流表。可选地,nhp组用于确定转发数据流的出接口以及记录每个出接口上的负载情况。可选地,nhp组设置有多个nhp项目(item),每个nhp item包括对应的编号,例如,编号为0、1、2...,然后为每个nhp item配置对应的出接口。也即,nhp组中包括多个nhp item与port id的对应关系,每个对应关系用于指示当任一数据流匹配到任一nhp item时,通过该任一nhp item对应的port id出接口转发该任一数据流。
示例性地,以第一网络节点连接8个中间节点的8个出接口为例,该8个出接口对应的接口号(port identity,port id)分别为8、9、10、11、12、13、14和15。参见图4,图4为本申请实施例提供的一种nhp组的对比示意图。如图4所示,nhp组中每一行包括一对nhp item与port id,例如,图4左侧的nhp组中的第一行指的是将匹配到nhp item 0的数据流由portid 8出接口转发。
在一种可能的实施方式中,对于将数据流匹配到对应的nhp item的方法不做限定,可以采用哈希算法进行匹配。示例性地,提取数据流包括的五元组信息,对该五元组信息拼接得到的字符串进行哈希运算,得到对应的哈希值,然后将该哈希值对nhp item的数量进行取模运算,根据取模运算结果匹配到对应的nhp item值。
如图4所示,图4中左侧为相关技术中的nhp组,该相关技术中的nhp组包括8个nhpitem,即nhp item的数量与出接口的数量相同;图4中右侧为本申请实施例提供的nhp组,本申请实施例对相关技术中的nhp组进行了nhp item数量的倍增,其中倍增指的是按照出接口数量成倍的增加。例如,图4中将nhp item数量倍增了4倍,形成了图4右侧所示的包括32个nhp item的nhp组。
通过倍增的方式,能够将一个出接口对应的总的数据流细分为多个子数据流。示例性地,参见图5,图5所示的nhp组还包括每个nhp item对应的数据流的负载。例如,nhpitem 0对应的port id 8出接口转发的数据流的负载为124572字节(byte),nhp item 24对应的port id 8出接口转发的数据流的负载为124572byte。本申请实施例中出现的负载的单位均为byte,接下来的描述对于负载的单位进行省略。
可以理解,同一条数据流会持续发送一段时间,当属于该同一数据流的数据流1匹配到任一nhp item时,nhp组会记录匹配该任一nhp item的数据流,以及该数据流对应的负载,基于nhp组中的记录数据,既可以用来计算对应的出接口的负载,还可以用来确定待切换的第一数据流。可选地,待切换的第一数据流即为下一个匹配到该任一nhp item的数据流2,数据流2与数据流1属于同一条数据流,该数据流2对应的负载与数据流1对应的负载相同。
例如,以图5所示的nhp组为例,根据nhp item0和nhp item24对应的负载能够计算得到port id8出接口的负载为249144。port id8出接口传输的至少一条数据流即为nhpitem0和nhp item24的负载分别对应的数据流,若负载差值为124572,待切换的第一数据流可以为匹配到nhp item0的数据流或者匹配到nhp item24的数据流,则修改nhp item0或nhp item2配置的port id出接口即可。当下一个匹配到nhp item0或者匹配到nhp item24数据流到达时,即可通过切换后的出接口转发,由于下一个匹配到nhp item0或者匹配到nhp item24数据流对应的负载与nhp组中记录的负载相同,因此,通过一次的流量调整能够保持一定时间内的全局负载均衡。
由此,通过上述过程能够获取到待切换的第一数据流,在确定得到待切换的第一数据流之后,可将第一出接口组的统计信息和第一入接口组的统计信息中的第一出接口和第一入接口的负载均减去该第一数据流对应的负载,得到切换后的第一出接口和第一入接口的负载。接下来,就要确定将第一数据流的出接口切换到哪个出接口,使得第一数据流切换后能够保证第一出接口、第一入接口、第二出接口和第二入接口的负载均小于负载阈值,即确定满足第一切换条件的第二出接口。
在本申请实施例中,由于第一出接口组的统计信息和第一入接口组的统计信息中包括每个出接口与每个入接口的负载,在确定待切换的第一数据流对应的负载后,包括如下两种情况。
情况一,第一出接口组中存在满足第一切换条件的第二出接口。
在该情况一下,通过第一出接口组的统计信息和第一入接口组的统计信息能够查找到该第二出接口,该第二出接口的负载与第一数据流对应的负载之和小于负载阈值,且该第二出接口对应的第二入接口的负载与第一数据流对应的负载之和也小于负载阈值。由此,执行步骤303。
步骤303,将第一数据流的出接口由第一出接口切换到第二出接口。
在确定第二出接口后,即可将第一数据流的出接口由第一出接口切换到第二出接口,由此,完成了一次负载均衡的流量调整。在一种可能的实施方式中,将第一数据流的出接口由第一出接口切换到第二出接口,包括:在去向为第二网络节点的nhp组中,为第一数据流匹配的nhp item配置对应的第二出接口。
可选地,在将第一数据流的出接口由第一出接口切换到第二出接口之后,可将第一出接口组的统计信息和第一入接口组的统计信息中的第二出接口和第二入接口的负载均加上该第一数据流对应的负载,得到切换后的第二出接口和第二入接口的负载。
在本申请实施例中,根据切换后的第一出接口和第一入接口的负载以及切换后的第二出接口和第二入接口的负载,能够对第一出接口组的统计信息和第一入接口组的统计信息进行更新,得到更新后的第一出接口组的统计信息和第一入接口组的统计信息。进一步地,体现在更新后的第一出接口组的统计信息和第一入接口组的统计信息上,第一出接口、第一入接口、第二出接口和第二入接口的负载均小于负载阈值。此时,若其他入接口还拥塞,可以在更新后的第一出接口组的统计信息和第一入接口组的统计信息上继续进行上述流量调整过程,直至体现在更新后的第一出接口组的统计信息和第一入接口组的统计信息中的所有出接口和入接口的负载均小于负载阈值,即实现了多个出接口和多个入接口之间的负载同时均衡。
可选地,本申请实施例中的每个接口均包括多个端口,每个端口包括各自的负载和负载阈值,即多个端口的负载之和为对应接口的负载,多个端口的负载阈值之和为对应接口的负载阈值。在该情况下,各个接口的数据流需要进一步的负载分担到各个端口,保证各个端口之间的负载均衡。示例性地,第二出接口包括多个端口,那么将第一数据流的出接口由第一出接口切换到第二出接口之后,还包括:通过多个端口中的轻载端口发送第一数据流,轻载端口为多个端口中负载最小的端口。
在一种可能的实施方式中,上述过程可以理解为,将第一网络节点上的多个出接口和第二网络节点上的多个入接口作为两组箱子,将每个接口对应的数据流作为货物,从而利用装箱算法对两个箱子中的货物进行调整,使得两组箱子中的货物均匀放置,以实现接口之间的负载均衡。
示例性地,参见图6,图6为本申请实施例提供的一种装箱过程的示意图。如图6所示,第一网络节点为节点128,该节点128作为数据流的发送端称为源(source,S)ToR128,SToR128上的出接口统计即为S箱(box),Sbox对应本申请实施例中的第一出接口的统计信息。第二网络节点为节点104,该节点104作为数据流的接收端称为目的(destination,D)ToR,DToR104上的入接口统计即为Dbox,Dbox对应本申请实施例中的第一入接口的统计信息。其中,SToR128上的出接口与DToR104上的入接口一一对应,例如,SToR128上的porid8出接口发送的数据流由DToR104上的porid8入接口接收。
示例性地,每个接口的负载阈值为223356,从图6中第一行所示的Sbox和Dbox可以看出,DToR104上的porid8入接口拥塞,负载差值为223356,且该DToR104上的porid8入接口对应的SToR128上的porid8出接口的负载为223356。进一步地,通过SToR128上的去向DToR104的nhp组可以看出,SToR128上匹配nhp item0的数据流会通过porid8出接口向DToR104发送的负载为223356的数据流,即DToR104上的porid8入接口上的拥塞流量来自于该SToR128。因此,若取消该SToR128上的porid8出接口处的数据流的发送,则DToR104上的porid8入接口就会减少该223356数量的负载,则解决了DToR104上的porid8入接口的拥塞。可以理解,porid8入接口对应的本申请实施例中的第一入接口,porid8出接口对应的本申请实施例中的第一出接口。
因此,先将图6中第一行所示的Sbox中的porid8出接口和Dbox中的porid8入接口上的负载均减去223356,得到图6中第二行所示的Sbox和Dbox,且暂时将去向DToR104的nhp组中nhp item0对应的porid8出接口修改为porid0出接口。然后,继续从图6中第二行所示的Sbox和Dbox中寻找满足第一切换条件的第二出接口,以将原来nhp item0对应的porid8出接口的流量迁移到该第二出接口。可以看出,porid8接口处存在空位,即SToR128上的porid9出接口和DToR104上的porid9入接口的负载分别与负载差值的和均等于负载阈值,则将nhp item0对应的porid0出接口修改为porid9出接口,使得匹配到nhp item0的数据流的出接口由porid8出接口切换到了porid9出接口,进而由porid9入接口接收该数据流。通过上述切换过程,将图6中第二行所示的Sbox中的porid9出接口和Dbox中的porid9入接口上的负载均加上223356,得到图6中第三行所示的Sbox和Dbox。可以看出,图6中第三行所示的Sbox和Dbox达到了负载均衡,不存在拥塞的出接口或入接口。
情况二,第一出接口组中不存在满足第一切换条件的第二出接口。
在该情况二下,第一出接口组中不存在满足第一切换条件的第二出接口,因此,需要与其他出接口转发的数据流进行协调,以通过其他数据流的路径切换为该第一数据流腾出可切换的出接口。参见图7,本申请实施例提供的负载均衡方法在步骤301之后,执行步骤304-步骤307。
步骤304,当第一入接口组中的第一入接口为拥塞接口的情况下,且当第一出接口组中不存在满足第一切换条件的第二出接口时,确定第一入接口组中在该第一数据流切换后不是拥塞接口的第三入接口。
在本申请实施例中,若第二网络节点上存在第三入接口,则通过第一入接口组的统计信息能够快速的找到该第三入接口。可以理解,该第三入接口的当前负载与第一数据流对应的负载之和小于等于负载阈值,也即在该第一数据流切换后第三入接口也不是拥塞接口。
可选地,当存在多个第三入接口时,则在该多个第三入接口中选择一个作为步骤304中的第三入接口,对于选择方式本申请实施例不进行限定,例如,随机选择。若第二网络节点上不存在第三入接口,则表示第二网络节点上的所有入接口均满载没有可调的入接口,此时第一网络节点可以选择推迟发送第一数据流的时间,暂时避开网络接口拥塞。
步骤305,根据第三入接口对应的第三出接口发送的数据流确定第三网络节点,获取第二入接口组的统计信息,第二入接口组包括第三网络节点上的多个入接口,第二入接口组的统计信息包括第二入接口组中的每个入接口的负载,第一出接口组中的多个出接口和第二入接口组中的多个入接口一一对应。
可选地,在确定可调的第三入接口后,由于通过第一出接口组的统计信息可知,第三入接口对应的第三出接口已经被其他数据流占用,导致无法将第一数据流切换至该第三出接口。在该情况下,需要确定该第三出接口发送的数据流是发送到哪个目的网络节点的,例如,可以通过上述nhp流表确定,可以理解,去向不同网络节点的数据流对应包括不同的nhp流表,在该去向不同网络节点的多个nhp流表中找到第三出接口对应有数据流的nhp流表,该nhp流表对应的去向的网络节点即为第三网络节点。
在确定得到第三入接口对应的第三出接口发送的数据流是去向第三网络节点的之后,首先获取该第三网络节点上的多个入接口对应的第二入接口组的统计信息。在本申请实施例中,采用上述获取第一入接口组的统计信息的方式,同样能够获取到该第二入接口组的统计信息,此处不再赘述。示例性地,以图2为例,该第三网络节点对应图2所示的ToR3交换机,根据上述spine1交换机、spine2交换机和spine3交换机发送的3个第二出接口组的统计信息,能够得到ToR3交换机对应的第二入接口组的统计信息。
步骤306,根据第一出接口组的统计信息和第二入接口组的统计信息确定待切换的第二数据流和以及第一出接口组中满足第二切换条件的第四出接口,第二数据流通过第三出接口传输至第三网络节点,第二切换条件为第四出接口和与该第四出接口对应的第四入接口在第二数据流切换后均不是拥塞接口。
其中,对于满足第二切换条件的第四出接口来说,第四出接口的当前负载和第三入接口的当前负载分别与第二数据流对应的负载之和均小于等于负载阈值。该步骤306的内容可参见步骤302的内容,其流量调整的切换原理相同,此处不再赘述。
步骤307,将第二数据流的出接口由第三出接口切换到第四出接口,将第一数据流的出接口由第一出接口切换到第三出接口。
由此,在确定了第二数据流可调的第四出接口之后,即可将第二数据流的出接口由第三出接口切换到第四出接口,腾出了第三出接口的负载空余,进而实现了将第一数据流的出接口由第一出接口切换到第三出接口,使得第一数据流能够由第三出接口对应的第三入接口接收,解决了第一数据流导致的拥塞现象。
参见步骤304中的内容,通过上述第二数据流和第一数据流的切换,可以更新第一出接口组的统计信息和第一入接口组的统计信息。同样的,若还存在其他拥塞的入接口,可以在更新后的第一出接口组的统计信息和第一入接口组的统计信息上继续进行上述流量调整过程,直至体现在更新后的第一出接口组的统计信息和第一入接口组的统计信息中的所有出接口和入接口的负载均小于负载阈值,即实现了多个出接口和多个入接口之间的负载同时均衡。
基于上述步骤304-步骤307的内容,在图6所示的装箱算法的基础上,若SToR128没有找到满足第一切换条件的第二出接口,可以参见图8所示的另一种装箱过程。在图8中第二行所示的Sbox和Dbox中,不存在满足第一切换条件的第二出接口,但是SToR128发现DToR104上的porid9入接口存在空位,并且通过去向DToR108的nhp组发现SToR128上对应的porid9出接口的数据流去向DToR108。可以理解,由于SToR向多个DToR发送数据流,每个DToR都对应一个Dbox,为方便描述,将DToR104上的入接口统计称为Dbox1,DToR108上的入接口统计称为Dbox2。
在发现SToR128上对应的porid9出接口的数据流去向DToR108后,即可获取DToR108对应的Dbox2,Dbox2对应本申请实施例中的第二入接口的统计信息,得到图8中第三行所示的Sbox和Dbox2。从图8中第三行所示的Sbox和Dbox2中寻找满足第二切换条件的第三出接口,以将原来去向DToR108的nhp组中nhp item1对应的porid9出接口的流量迁移到该第三出接口。可以看出,porid10接口处存在空位,即SToR128上的porid10出接口和DToR108上的porid10入接口的负载分别与负载差值的和均等于负载阈值,则将nhp item1对应的porid9出接口修改为porid10出接口,使得匹配到nhp item1的发往DToR108的数据流的出接口由porid9出接口切换到了porid10出接口,进而由DToR108上的的porid10入接口接收该数据流。通过上述切换过程,将图8中第三行所示的Sbox中的porid9出接口和Dbox中的porid9入接口上的负载均减去223356,将图8中第三行所示的Sbox中的porid10出接口和Dbox中的porid10入接口上的负载均加上223356,得到图8中第四行所示的Sbox和Dbox2。
通过上述切换,使得SToR128上的porid9出接口变成了空位,因此,SToR128上的porid9出接口满足了第一切换条件,即满足了SToR128上的porid9出接口和DToR104上的porid9入接口的负载分别与负载差值的和均等于负载阈值。则SToR128将原来去向DToR104的nhp组中nhp item0对应的porid0出接口修改为porid9出接口,使得匹配到nhp item0的发往DToR104的数据流的出接口由porid8出接口切换到了porid9出接口,进而由porid9入接口接收该数据流。最后,将图8中第二行所示的Sbox中的porid9出接口和Dbox1中的porid9入接口上的负载均加上223356,得到图8中第五行所示的Sbox和Dbox1。
可以看出,图8中第三行所示的Sbox和Dbox2以及第五行所示的Sbox和Dbox1均达到了负载均衡,不存在拥塞的出接口或入接口。因此,当全网的网络节点均完成了各自节点上的流量调整之后,即可达到全局的负载均衡。
上述示例仅介绍了两种情况下进行一次流量调整的过程,可以理解,采用相同的流量调整方式可以对全局流量进行多次调整,直至全局负载均衡,实现源节点上的多个出接口与目的节点上的多个入接口的负载同时均衡。在达到上述全局负载均衡之后,当通信网络中出现新的数据流或者数据流的大小发生变化时,可能会发生局部拥塞,打乱目前的全局负载均衡。对此,本申请实施例还提供了局部调整的负载均衡方法。接下来,对局部调整的负载均衡方法进行介绍。
在本申请实施例中,中间节点作为转发各个网络节点之间的数据流的公共节点,能够在向下行出接口转发数据流拥塞时主动向该数据流的源节点发送该数据流的拥塞消息,以使得源节点在接收到拥塞消息后能够及时的调整该数据流的转发路径,以解决局部的网络拥塞情况。
在一种可能的实施方式中,第一网络节点接收多个中间节点中的第一中间节点发送的第一中间出接口的拥塞消息,第一中间出接口为第一中间节点与第四网络节点连接的中间出接口,多个出接口与多个中间节点一一对应。示例性地,以图2为例,第一中间节点为图2所示的spine1交换机,当ToR1交换机通过spine1交换机向ToR2交换机发送数据流时,当spine1交换机感知到spine1交换机连接ToR2交换机的中间出接口拥塞,则会向ToR1交换机发送拥塞消息。其中,拥塞消息可以包括数据流的标识、中间出接口的标识或拥塞负载等信息。
可选地,第一网络节点接收到第一中间节点发送的第一中间出接口的拥塞消息之后,根据该拥塞消息以及第一网络节点发往该第四网络节点的数据流,能够确定待切换的第三数据流,若第一网络节点与第一中间节点连接的出接口为第六出接口,则第三数据流通过该第六出接口传输。例如,通过查找本地去向第四网络节点的nhp流表获取得到第六出接口对应的第三数据流。由此,第一网络节点接口结合本地出接口的负载情况和各个中间节点连接该第四网络节点的中间出接口的负载情况,为第三数据流选择可调的出接口,以实现局部的流量调整。
基于上述全局调整的负载均衡方法,该局部调整的负载均衡方法也存在与情况一和情况二相对应的情况三和情况四。
情况三,第一出接口组中存在满足第三切换条件的第五出接口。
在该情况三下,通过本地实时统计的多个出接口的负载以及实时接收的每个中间节点下发的每个中间出接口的负载,能够确定出第一出接口组中满足第三切换条件的第五出接口。其中,第三切换条件为第五出接口和与第五出接口对应的第二中间节点连接该第四网络节点的中间出接口在该第三数据流切换后均不是拥塞接口。可选地,满足第三切换条件的第五出接口的负载和第五出接口对应的第二中间节点连接该第四网络节点的中间出接口的负载,分别与第三数据流对应的负载之和均小于等于负载阈值。使得切换后的第三数据流不会导致其他接口拥塞。
由此,在确定得到第五出接口之后,即可将该第三数据流的出接口由第六出接口切换到第五出接口,使得第三数据流通过该第五出接口连接的第二中间节点转发,解决了第一中间节点上的第一中间出接口的拥塞,并且,切换后的第五出接口和第二中间节点连接第四网络节点的中间出接口均不会拥塞。
示例性地,以每个接口包括3个端口为例对局部调整的负载均衡方法进行说明。参见图9,图9为本申请实施例提供的一种流量调整过程的示意图。如图9所示,图9中的网络系统包括N(N为正整数)个spine交换机和M(M为正整数)个leaf交换机,每个接口包括3个端口,叶(leaf)1交换机对应第一网络节点,leaf3交换机对应第二网络节点。其中,leaf1交换机将数据流A从本地a号端口发出,数据流A经过spine1交换机的下行c号端口转发到leaf 3交换机。当spine1交换机的下行c号端口发生拥塞,spine1交换机通过查找其他端口的负载确定spine1交换机到leaf 3交换机的轻载端口,若确定得到轻载端口后,将数据流A的出接口由下行c号端口切换到轻载端口发送至leaf 3交换机。可选地,若spine1交换机未能确定得到轻载端口,则spine1交换机发送该数据流A对应的下行c号端口的拥塞消息发送至leaf1交换机。
leaf1交换机接收到该数据流A对应的下行c号端口的拥塞消息后,通过查找多个spine交换机分别连接该leaf3交换机的所有端口的负载以及本地的所有端口的负载,确定得到spine2交换机的下行d号端口为轻载端口且本地连接spine2交换机的b号端口也为轻载端口。则leaf1交换机直接将数据流A的出接口由a号端口切换到b号端口发出,进而数据流A经过spine2交换机的轻载的下行d号端口转发到leaf3交换机,实现了数据流A的换路。
可以理解,轻载端口对应的路径即为轻载路径,例如,下行d号端口为轻载端口,则spine2交换机中的下行d号端口与leaf3交换机之间的路径为轻载路径。
情况四,第一出接口组中不存在满足第三切换条件的第五出接口。
在该情况四下,由于第一出接口组中不存在满足第三切换条件的第五出接口,参见上述情况二中的内容,首先确定多个中间节点中连接该第四网络节点的中间出接口在该第三数据流切换后不是拥塞接口的第三中间节点。同样的,通过实时接收的每个中间节点下发的每个中间出接口的负载,能够确定得到第三中间节点。可选地,第三中间节点连接该第四网络节点的中间出接口的负载与第三数据流对应的负载之和小于等于负载阈值。
然后,根据第三中间节点对应的第七出接口发送的数据流确定第五网络节点,确定待切换的第四数据流以及第一出接口组中满足第四切换条件的第八出接口,第四数据流通过第七出接口传输,第四切换条件为第八出接口和与第八出接口对应的第四中间节点连接该第五网络节点的中间出接口在该第四数据流切换后均不是拥塞接口。可选地,第八出接口的当前负载和第八出接口对应的第四中间节点连接第五网络节点的中间出接口的当前负载,分别与第四数据流对应的负载之和均小于等于负载阈值。
可以理解,第三中间节点对应的第七出接口即为第一网络节点与第三中间节点连接的出接口,将第七出接口传输的第四数据流切换到其他路径,则可将第七出接口的位置空出。对于确定待切换的第四数据流以及第一出接口组中满足第四切换条件的第八出接口,与上述确定待切换的第三数据流以及第一出接口组中满足第三切换条件的第五出接口的过程原理相同,此处不再赘述。
最终,将第四数据流的出接口由第七出接口切换到第八出接口,将第三数据流的出接口由第六出接口切换到第七出接口。由此,在确定了第四数据流可调的第八出接口之后,即可将第四数据流的出接口由第七出接口切换到第八出接口,腾出了第七出接口的负载空余,进而实现了将第三数据流的出接口由第六出接口切换到第七出接口,使得第四数据流能够由第三中间节点连接第四网络节点的中间出接口转发,解决了第三数据流导致的拥塞现象。
基于上述情况四中的内容,在图9所示的流量调整过程的基础上,若spine1交换机在确定得到spine2交换机的下行d号端口为轻载端口之后,发现本地连接spine2交换机的所有端口中无轻载端口,在该情况下可参见图10所示的另一种流量调整过程。
如图10所示,leaf1交换机接收到该数据流A对应的下行c号端口的拥塞消息后,通过查找多个spine交换机分别连接该leaf3交换机的所有端口的负载以及本地的所有端口的负载,确定得到spine2交换机的下行d号端口为轻载端口,但是本地连接spine2交换机的b号端口不为轻载端口。则leaf1交换机可以先将数据流A从a号端口卸下,然后进一步确定得到目前b号端口传输的数据流B经过spine2交换机转发至leaf2交换机,并且spine1交换机存在连接该leaf2交换机的下行e号端口为轻载端口,则可以将数据流B的出接口由b号端口切换到a号端口发出,使得数据流B经过spine1交换机的轻载的下行e号端口转发到leaf2交换机。
由此,通过上述数据流B的路径切换,leaf1交换机上的本地b号端口变为了轻载端口。上述数据流B的路径切换可称为交换(swap)。进而,再将数据流A由b号端口发出,使得数据流A经过spine2交换机的轻载的下行d号端口转发到leaf3交换机。
本申请实施例提供的负载均衡方法,通过获取第一出接口组的统计信息和第一入接口组的统计信息,然后根据第一出接口组的统计信息和第一入接口组的统计信息中包括的所有出接口和对应的所有入接口的负载情况来切换数据流的出接口,达到第一出接口组中的多个出接口和第一入接口组中的多个入接口之间的负载同时均衡的效果。由于通过一次第一出接口组的统计信息和第一入接口组的统计信息的获取,就能够实现多个出接口和多个入接口之间的负载均衡,因此,负载均衡的均衡速度更快。在数据流调整后通过对第一出接口组的统计信息和第一入接口组的统计信息的更新,使得每次数据流的调整变化均能体现在统计信息中,使得负载均衡的过程更直观。
此外,在通过第一出接口组的统计信息和第一入接口组的统计信息达到全局的负载均衡之后,还能在后续流量变化引起网络的局部拥塞时,中间节点将拥塞消息通告给源节点,源节点根据本地出接口和中间节点的中间出接口的负载情况,尝试切换路径或通过swap操作让另一条数据流与导致拥塞的数据流交换路径,实现了局部调整的负载均衡,以保持网络的全局负载均衡。
参见图11,图11为本申请实施例提供的一种负载均衡方法的交互示意图。如图11所示,该负载均衡方法包括如下几个步骤。
步骤1101,中间节点向网络节点发送第二出接口组的统计信息。
在本申请实施例中,中间节点可以为图1或2所示的任一spine交换机,网络节点可以为图1或2所示的任一ToR交换机;或者,中间节点可以为图9或10所示的任一spine交换机,网络节点可以为图9或10所示的任一leaf交换机。
该步骤1101的实施方式可参见步骤301中有关第二出接口组的统计信息的内容,此处不再赘述。
步骤1102,网络节点根据该第二出接口组的统计信息获取第一入接口组的统计信息,根据第一出接口组的统计信息和第一入接口组的统计信息进行数据流的出接口切换,以使第一出接口组中的多个出接口和第一入接口组中的多个入接口之间的负载均衡。
该步骤1102的实施方式可参见步骤301-步骤303中有关获取第一入接口组的统计信息的相关内容和有关全局调整的负载均衡的相关内容,或者,参见步骤301中有关获取第一入接口组的统计信息的相关内容和步骤304-步骤307中有关全局调整的负载均衡的相关内容,此处不再赘述。
步骤1103,中间节点向网络节点发送第一中间出接口的拥塞消息。
该步骤1103的实施方式可参见步骤307之后的有关拥塞消息的内容,此处不再赘述。
步骤1104,网络节点根据该拥塞消息进行数据流的出接口切换,以解决第一中间出接口的拥塞。
该步骤1104的实施方式可参见步骤307之后的有关局部调整的负载均衡的相关内容,此处不再赘述。
以上介绍了本申请实施例的负载均衡的方法,与上述方法对应,本申请实施例还提供了负载均衡的装置。图12是本申请实施例提供的一种负载均衡的装置的结构示意图,该装置应用于第一网络节点,该第一网络节点为上述图3或7所示的第一网络节点。基于图12所示的如下多个模块,该图12所示的负载均衡的装置能够执行第一网络节点所执行的全部或部分操作。应理解到,该装置可以包括比所示模块更多的附加模块或者省略其中所示的一部分模块,本申请实施例对此并不进行限制。如图12所示,该装置包括:
第一获取模块1201,用于获取第一出接口组的统计信息和第一入接口组的统计信息,第一出接口组包括第一网络节点上连接多个中间节点的多个出接口,第一出接口组的统计信息包括第一出接口组中的每个出接口的负载,第一入接口组包括第二网络节点上连接多个中间节点的多个入接口,第一入接口组的统计信息包括第一入接口组中的每个入接口的负载,第一入接口组中的多个入接口与第一出接口组中的多个出接口一一对应;
第一确定模块1202,用于当第一入接口组中的第一入接口为拥塞接口的情况下,确定待切换的第一数据流以及第一出接口组中满足第一切换条件的第二出接口,第一数据流通过该第一出接口组中的第一出接口传输至第二网络节点,第一切换条件为第二出接口和与第二出接口对应的第二入接口在第一数据流切换后均不是拥塞接口;
第一切换模块1203,用于将第一数据流的出接口由第一出接口切换到第二出接口。
在一种可能的实施方式中,第一获取模块1201,用于对第一网络节点上的多个出接口发送的数据流进行流量统计,根据统计结果获取第一出接口组的统计信息;根据多个中间节点中的每一中间节点与第二网络节点连接的中间出接口的负载,得到第一入接口组的统计信息。
在一种可能的实施方式中,第一获取模块1201,还用于接收多个中间节点发送的多个第二出接口组的统计信息,一个第二出接口组包括一个中间节点上连接多个网络节点的多个中间出接口,任一第二出接口组的统计信息包括任一第二出接口组中的每个中间出接口的负载;根据多个第二出接口组的统计信息,获取多个中间节点中的每一中间节点与第二网络节点连接的中间出接口的负载。
在一种可能的实施方式中,第一确定模块1202,用于获取第一出接口待传输至第二网络节点的至少一条数据流分别对应的负载,将至少一条数据流中负载大于或等于差值负载的数据流确定为待切换的第一数据流,差值负载为第一入接口对应的负载与负载阈值之间的差。
在一种可能的实施方式中,第一确定模块1202,用于根据去向为第二网络节点的下一跳流表获取第一出接口发送的至少一条数据流分别对应的负载,下一跳流表包括多个项目,每个项目配置有对应的出接口,与任一项目匹配的数据流由任一项目对应的出接口转发,下一跳流表还记录有每个项目匹配的数据流,多个项目的数量大于多个出接口的数量。
在一种可能的实施方式中,第一确定模块1202,还用于当第一出接口组中不存在满足第一切换条件的第二出接口时,确定第一入接口组中在该第一数据流切换后不是拥塞接口的第三入接口;
第一获取模块1201,还用于根据第三入接口对应的第三出接口发送的数据流确定第三网络节点,获取第二入接口组的统计信息,第二入接口组包括第三网络节点上连接多个中间节点的多个入接口,第二入接口组的统计信息包括第二入接口组中的每个入接口的负载,第一出接口组中的多个出接口和第二入接口组中的多个入接口一一对应;
该装置还包括:第二确定模块,用于根据第一出接口组的统计信息和第二入接口组的统计信息确定待切换的第二数据流和以及第一出接口组中满足第二切换条件的第四出接口,第二数据流通过第三出接口传输至第三网络节点,第二切换条件为第四出接口和与该第四出接口对应的第四入接口在第二数据流切换后均不是拥塞接口;
第二切换模块,用于将第二数据流的出接口由第三出接口切换到第四出接口,将第一数据流的出接口由第一出接口切换到第三出接口。
在一种可能的实施方式中,该装置还包括:
接收模块,用于接收多个中间节点中的第一中间节点发送的第一中间出接口的拥塞消息,第一中间出接口为第一中间节点与第四网络节点连接的中间出接口,多个出接口与多个中间节点一一对应;
第三确定模块,用于基于拥塞消息确定待切换的第三数据流以及第一出接口组中满足第三切换条件的第五出接口,第三数据流通过第一中间节点对应的第六出接口传输,第三切换条件为第五出接口和与第五出接口对应的第二中间节点连接该第四网络节点的中间出接口在该第三数据流切换后均不是拥塞接口;
第三切换模块,将第三数据流的出接口由第六出接口切换到第五出接口。
在一种可能的实施方式中,第三确定模块,还用于当第一出接口组中不存在满足第三切换条件的第五出接口时,确定多个中间节点中的连接该第四网络节点的中间出接口在该第三数据流切换后不是拥塞接口的第三中间节点;
第三确定模块,还用于根据第三中间节点对应的第七出接口发送的数据流确定第五网络节点,基于该第五网络节点确定待切换的第四数据流以及第一出接口组中满足第四切换条件的第八出接口,第四数据流通过第七出接口传输,第四切换条件为第八出接口和与第八出接口对应的第四中间节点连接该第五网络节点的中间出接口在该第四数据流切换后均不是拥塞接口;
该装置还包括:第四切换模块,用于将第四数据流的出接口由第七出接口切换到第八出接口,将第三数据流的出接口由第六出接口切换到第七出接口。
在一种可能的实施方式中,第二出接口包括多个端口,该装置还包括:
发送模块,用于通过多个端口中的轻载端口发送第一数据流,轻载端口为多个端口中负载最小的端口。
该装置中,第一网络节点为传输第一数据流的源节点,第二网络节点为传输第一数据流的目的节点,通过第一出接口组的统计信息和第一入接口组的统计信息对第一网络节点传输的数据流的出接口进行切换,使得在第一网络节点上的多个出接口之间负载均衡的基础上,保证了第二网络节点上的多个入接口之间的负载也均衡。由此,第一网络节点通过该方法能够保持本地的多个出接口与网络中的任一网络节点上的多个入接口之间的负载均衡,进而网络能够达到全局的负载均衡。
此外,由于该装置通过获取第一出接口组的统计信息和第一入接口组的统计信息,就能够实现第一网络节点上的多个出接口和第二网络节点上的多个入接口之间的负载均衡,使得负载均衡的均衡速度更快。
图13是本申请实施例提供的一种负载均衡的装置的结构示意图,该装置应用于第一网络节点,该第一网络节点为上述图3或7所示的任一中间节点。基于图12所示的如下多个模块,该图13所示的负载均衡的装置能够执行任一中间节点所执行的全部或部分操作。应理解到,该装置可以包括比所示模块更多的附加模块或者省略其中所示的一部分模块,本申请实施例对此并不进行限制。如图13所示,该装置包括:
获取模块1301,用于获取第二出接口组的统计信息,第二出接口组包括中间节点上连接多个网络节点的多个中间出接口,第二出接口组的统计信息包括第二出接口组中的每个中间出接口的负载;
发送模块1302,用于向多个网络节点发送第二出接口组的统计信息,第二出接口组的统计信息用于多个网络节点中的第一网络节点获取第一入接口组的统计信息,第一入接口组包括第二网络节点上连接多个中间节点的多个入接口,第一入接口组的统计信息包括第一入接口组中的每个入接口的负载,多个入接口与第一网络节点上连接多个中间节点的多个出接口一一对应;
第一入接口组的统计信息用于第一网络节点将第一数据流的出接口由第一出接口组中的第一出接口切换到第一出接口组中的第二出接口,第一出接口对应的第一入接口为拥塞接口,第一数据流通过第一出接口传输至第二网络节点,第二出接口满足第一切换条件,第一切换条件为第二出接口和与第二出接口对应的第二入接口在第一数据流切换后均不是拥塞接口。
在一种可能的实施方式中,发送模块1302,还用于基于第二出接口组中的第一中间出接口拥塞且第一中间出接口传输的数据流来自于第一网络节点,向第一网络节点发送第一中间出接口的拥塞消息;
拥塞消息用于第一网络节点将第三数据流的出接口由第六出接口切换到第五出接口,第三数据流通过第六出接口传输,第六出接口为第一网络节点连接第一中间节点的出接口,第五出接口为第一网络节点上满足第三切换条件的出接口,第三切换条件为第五出接口和与第五出接口对应的第二中间节点连接该第四网络节点的中间出接口在该第三数据流切换后均不是拥塞接口。
该装置通过向多个网络节点发送第二出接口组的统计信息,使得第一网络节点能够获取到第一入接口组的统计信息,进而能够对第一网络节点传输的数据流的出接口进行切换,使得在第一网络节点上的多个出接口之间负载均衡的基础上,保证了第二网络节点上的多个入接口之间的负载也均衡。
应理解的是,上述图12和13提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
参见图14,图14示出了本申请一个示例性实施例提供的网络设备2000的结构示意图。图14所示的网络设备2000用于执行上述图3或7所示的负载均衡的方法所涉及的操作。该网络设备2000例如是交换机、路由器等,该网络设备2000可以由一般性的总线体系结构来实现。
如图14所示,网络设备2000包括至少一个处理器2001、存储器2003以及至少一个通信接口2004。
处理器2001例如是通用中央处理器(central processing unit,CPU)、数字信号处理器(digital signal processor,DSP)、网络处理器(network processer,NP)、图形处理器(Graphics Processing Unit,GPU)、神经网络处理器(neural-network processingunits,NPU)、数据处理单元(Data Processing Unit,DPU)、微处理器或者一个或多个用于实现本申请方案的集成电路。例如,处理器2001包括专用集成电路(application-specificintegrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。PLD例如是复杂可编程逻辑器件(complex programmable logic device,CPLD)、现场可编程逻辑门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合。其可以实现或执行结合本发明实施例公开内容所描述的各种逻辑方框、模块和电路。处理器也可以是实现计算功能的组合,例如包括一个或多个微处理器组合,DSP和微处理器的组合等等。
可选的,网络设备2000还包括总线。总线用于在网络设备2000的各组件之间传送信息。总线可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图14中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
存储器2003例如是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,又如是随机存取存储器(random access memory,RAM)或者可存储信息和指令的其它类型的动态存储设备,又如是电可擦可编程只读存储器(electrically erasable programmable read-only Memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器2003例如是独立存在,并通过总线与处理器2001相连接。存储器2003也可以和处理器2001集成在一起。
通信接口2004使用任何收发器一类的装置,用于与其它设备或通信网络通信,通信网络可以为以太网、无线接入网(radio access network,RAN)或无线局域网(wirelesslocal area networks,WLAN)等。通信接口2004可以包括有线通信接口,还可以包括无线通信接口。具体的,通信接口2004可以为以太(Ethernet)接口、快速以太(Fast Ethernet,FE)接口、千兆以太(Gigabit Ethernet,GE)接口,异步传输模式(Asynchronous TransferMode,ATM)接口,无线局域网(wireless local area networks,WLAN)接口,蜂窝网络通信接口或其组合。以太网接口可以是光接口,电接口或其组合。在本申请实施例中,通信接口2004可以用于网络设备2000与其他设备进行通信。
在具体实现中,作为一种实施例,处理器2001可以包括一个或多个CPU,如图14中所示的CPU0和CPU1。这些处理器中的每一个可以是一个单核(single-core CPU)处理器,也可以是一个多核(multi-core CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,网络设备2000可以包括多个处理器,如图14中所示的处理器2001和处理器2005。这些处理器中的每一个可以是一个单核处理器(single-core CPU),也可以是一个多核处理器(multi-core CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,网络设备2000还可以包括输出设备和输入设备。输出设备和处理器2001通信,可以以多种方式来显示信息。例如,输出设备可以是液晶显示器(liquid crystal display,LCD)、发光二级管(light emitting diode,LED)显示设备、阴极射线管(cathode ray tube,CRT)显示设备或投影仪(projector)等。输入设备和处理器2001通信,可以以多种方式接收用户的输入。例如,输入设备可以是鼠标、键盘、触摸屏设备或传感设备等。
在一些实施例中,存储器2003用于存储执行本申请方案的程序代码2010,处理器2001可以执行存储器2003中存储的程序代码2010。也即是,网络设备2000可以通过处理器2001以及存储器2003中的程序代码2010,来实现方法实施例提供的负载均衡的方法。程序代码2010中可以包括一个或多个软件模块。可选地,处理器2001自身也可以存储执行本申请方案的程序代码或指令。
在具体实施例中,本申请实施例的网络设备2000可对应于上述各个方法实施例中的第一网络节点,网络设备2000中的处理器2001读取存储器2003中的指令,使图14所示的网络设备2000能够执行第一网络节点所执行的全部或部分操作。
示例性地,处理器2001用于通过通信接口获取第一出接口组的统计信息和第一入接口组的统计信息,第一出接口组包括第一网络节点上连接多个中间节点的多个出接口,第一出接口组的统计信息包括第一出接口组中的每个出接口的负载,第一入接口组包括第二网络节点上连接多个中间节点的多个入接口,第一入接口组的统计信息包括第一入接口组中的每个入接口的负载,第一入接口组中的多个入接口与第一出接口组中的多个出接口一一对应;当第一入接口组中的第一入接口为拥塞接口的情况下,确定待切换的第一数据流以及第一出接口组中满足第一切换条件的第二出接口,第一数据流通过该第一出接口组中的第一出接口传输至第二网络节点,第一切换条件为第二出接口和与第二出接口对应的第二入接口在第一数据流切换后均不是拥塞接口;将第一数据流由第一出接口的出接口切换到第二出接口。
其他可选的实施方式,为了简洁,在此不再赘述。
又例如,本申请实施例的网络设备2000可对应于上述各个方法实施例中的第一中间节点,网络设备2000中的处理器2001读取存储器2003中的指令,使图14所示的网络设备2000能够执行第一中间节点所执行的全部或部分操作。
示例性地,处理器2001用于通过通信接口获取第二出接口组的统计信息,第二出接口组包括中间节点上连接多个网络节点的多个中间出接口,第二出接口组的统计信息包括第二出接口组中的每个中间出接口的负载;向多个网络节点发送第二出接口组的统计信息,第二出接口组的统计信息用于多个网络节点中的第一网络节点获取第一入接口组的统计信息,第一入接口组包括第二网络节点上连接多个中间节点的多个入接口,第一入接口组的统计信息包括第一入接口组中的每个入接口的负载,多个入接口与第一网络节点上连接多个中间节点的多个出接口一一对应。
其他可选的实施方式,为了简洁,在此不再赘述。
网络设备2000还可以对应于上述图12或13所示的负载均衡的装置,负载均衡的装置中的每个功能模块采用网络设备2000的软件实现。换句话说,负载均衡的装置包括的功能模块为网络设备2000的处理器2001读取存储器2003中存储的程序代码2010后生成的。
其中,图3或7所示的负载均衡的方法的各步骤通过网络设备2000的处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤,为避免重复,这里不再详细描述。
参见图15,图15示出了本申请另一个示例性实施例提供的网络设备2100的结构示意图,图15所示的网络设备2100用于执行上述图3或7所示的负载均衡的方法所涉及的全部或部分操作。该网络设备2100例如是交换机、路由器等,该网络设备2100可以由一般性的总线体系结构来实现。
如图15所示,网络设备2100包括:主控板2110和接口板2130。
主控板也称为主处理单元(main processing unit,MPU)或路由处理卡(routeprocessor card),主控板2110用于对网络设备2100中各个组件的控制和管理,包括路由计算、设备管理、设备维护、协议处理功能。主控板2110包括:中央处理器2111和存储器2112。
接口板2130也称为线路接口单元(line processing unit,LPU)、线卡(linecard)或业务板。接口板2130用于提供各种业务接口并实现数据包的转发。业务接口包括而不限于以太网接口、POS(Packet over SONET/SDH)接口等,以太网接口例如是灵活以太网业务接口(Flexible Ethernet Clients,FlexE Clients)。接口板2130包括:中央处理器2131网络处理器2132、转发表项存储器2134和物理接口卡(physical interface card,PIC)2133。
接口板2130上的中央处理器2131用于对接口板2130进行控制管理并与主控板2110上的中央处理器2111进行通信。
网络处理器2132用于实现报文的转发处理。网络处理器2132的形态可以是转发芯片。转发芯片可以是网络处理器(network processor,NP)。在一些实施例中,转发芯片可以通过专用集成电路(application-specific integrated circuit,ASIC)或现场可编程门阵列(field programmable gate array,FPGA)实现。具体而言,网络处理器2132用于基于转发表项存储器2134保存的转发表转发接收到的报文,如果报文的目的地址为网络设备2100的地址,则将该报文上送至CPU(如中央处理器2131)处理;如果报文的目的地址不是网络设备2100的地址,则根据该目的地址从转发表中查找到该目的地址对应的下一跳和出接口,将该报文转发到该目的地址对应的出接口。其中,上行报文的处理可以包括:报文入接口的处理,转发表查找;下行报文的处理可以包括:转发表查找等等。在一些实施例中,中央处理器也可执行转发芯片的功能,比如基于通用CPU实现软件转发,从而接口板中不需要转发芯片。
物理接口卡2133用于实现物理层的对接功能,原始的流量由此进入接口板2130,以及处理后的报文从该物理接口卡2133发出。物理接口卡2133也称为子卡,可安装在接口板2130上,负责将光电信号转换为报文并对报文进行合法性检查后转发给网络处理器2132处理。在一些实施例中,中央处理器2131也可执行网络处理器2132的功能,比如基于通用CPU实现软件转发,从而物理接口卡2133中不需要网络处理器2132。
可选地,网络设备2100包括多个接口板,例如网络设备2100还包括接口板2140,接口板2140包括:中央处理器2141、网络处理器2142、转发表项存储器2144和物理接口卡2143。接口板2140中各部件的功能和实现方式与接口板2130相同或相似,在此不再赘述。
可选地,网络设备2100还包括交换网板2120。交换网板2120也可以称为交换网板单元(switch fabric unit,SFU)。在网络设备2100有多个接口板的情况下,交换网板2120用于完成各接口板之间的数据交换。例如,接口板2130和接口板2140之间可以通过交换网板2120通信。
主控板2110和接口板耦合。例如。主控板2110、接口板2130和接口板2140,以及交换网板2120之间通过系统总线与系统背板相连实现互通。在一种可能的实现方式中,主控板2110和接口板2130及接口板2140之间建立进程间通信协议(inter-processcommunication,IPC)通道,主控板2110和接口板2130及接口板2140之间通过IPC通道进行通信。
在逻辑上,网络设备2100包括控制面和转发面,控制面包括主控板2110和中央处理器2111,转发面包括执行转发的各个组件,比如转发表项存储器2134、物理接口卡2133和网络处理器2132。控制面执行路由器、生成转发表、处理信令和协议报文、配置与维护网络设备的状态等功能,控制面将生成的转发表下发给转发面,在转发面,网络处理器2132基于控制面下发的转发表对物理接口卡2133收到的报文查表转发。控制面下发的转发表可以保存在转发表项存储器2134中。在有些实施例中,控制面和转发面可以完全分离,不在同一网络设备上。
值得说明的是,主控板可能有一块或多块,有多块的时候可以包括主用主控板和备用主控板。接口板可能有一块或多块,网络设备的数据处理能力越强,提供的接口板越多。接口板上的物理接口卡也可以有一块或多块。交换网板可能没有,也可能有一块或多块,有多块的时候可以共同实现负荷分担冗余备份。在集中式转发架构下,网络设备可以不需要交换网板,接口板承担整个系统的业务数据的处理功能。在分布式转发架构下,网络设备可以有至少一块交换网板,通过交换网板实现多块接口板之间的数据交换,提供大容量的数据交换和处理能力。所以,分布式架构的网络设备的数据接入和处理能力要大于集中式架构的网络设备。可选地,网络设备的形态也可以是只有一块板卡,即没有交换网板,接口板和主控板的功能集成在该一块板卡上,此时接口板上的中央处理器和主控板上的中央处理器在该一块板卡上可以合并为一个中央处理器,执行两者叠加后的功能,这种形态网络设备的数据交换和处理能力较低(例如,低端交换机或路由器等网络设备)。具体采用哪种架构,取决于具体的组网部署场景,此处不做任何限定。
在具体实施例中,网络设备2100对应于上述图12所示的应用于第一网络节点的负载均衡的装置。在一些实施例中,图12所示的负载均衡的装置中的第一获取模块1201相当于网络设备2100中的物理接口卡2133,第一确定模块1202和第一切换模块1203相当于网络设备2100中的中央处理器2111或网络处理器2132。
在一些实施例中,网络设备2100还对应于上述图13所示的应用于第一中间节点的负载均衡的装置。在一些实施例中,图13所示的负载均衡的装置中的获取模块1301相当于网络设备2100中的物理接口卡2133,发送模块1302相当于网络设备2100中的物理接口卡2133。
基于上述图14及图15所示的网络设备,本申请实施例还提供了一种负载均衡的系统,该处理系统包括:多个网络节点和多个中间节点。可选地,多个网络节点中的任一网络节点用于执行上述第一网络节点所执行的任一方法,多个中间节点中的任一中间节点用于执行上述第一中间节点所执行的任一方法。例如,多个网络节点中的任一网络节点为图14所示的网络设备2000或图15所示的网络设备2100,多个中间节点中的任一中间节点为图14所示的网络设备2000或图15所示的网络设备2100。
多个网络节点中的任一网络节点及多个中间节点中的任一中间节点所执行的负载均衡的方法可参见上述图3或7所示实施例的相关描述,此处不再加以赘述。
本申请实施例还提供了一种通信装置,该装置包括:收发器、存储器和处理器。其中,该收发器、该存储器和该处理器通过内部连接通路互相通信,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,以控制收发器接收信号,并控制收发器发送信号,并且当该处理器执行该存储器存储的指令时,使得该处理器执行第一网络节点所需执行的方法。
本申请实施例还提供了一种通信装置,该装置包括:收发器、存储器和处理器。其中,该收发器、该存储器和该处理器通过内部连接通路互相通信,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,以控制收发器接收信号,并控制收发器发送信号,并且当该处理器执行该存储器存储的指令时,使得该处理器执行第一中间节点所需执行的方法。
应理解的是,上述处理器可以是CPU,还可以是其他通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(application specific integratedcircuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。值得说明的是,处理器可以是支持进阶精简指令集机器(advanced RISC machines,ARM)架构的处理器。
进一步地,在一种可选的实施例中,上述存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。
该存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用。例如,静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic random access memory,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data dateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(directrambus RAM,DR RAM)。
本申请实施例还提供了一种计算机可读存储介质,存储介质中存储有至少一条指令,指令由处理器加载并执行,以使计算机实现如上任一的负载均衡的方法。
本申请实施例还提供了一种计算机程序(产品),当计算机程序被计算机执行时,可以使得处理器或计算机执行上述方法实施例中对应的各个步骤和/或流程。
本申请实施例还提供了一种芯片,包括处理器,用于从存储器中调用并运行存储器中存储的指令,使得安装有芯片的通信设备执行如上任一的负载均衡的方法。
本申请实施例还提供另一种芯片,包括:输入接口、输出接口、处理器和存储器,输入接口、输出接口、处理器以及存储器之间通过内部连接通路相连,处理器用于执行存储器中的代码,当代码被执行时,处理器用于执行如上任一的负载均衡的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如,固态硬盘(solid state disk))等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和模块,能够以软件、硬件、固件或者其任意组合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机程序指令。作为示例,本申请实施例的方法可以在机器可执行指令的上下文中被描述,机器可执行指令诸如包括在目标的真实或者虚拟处理器上的器件中执行的程序模块中。一般而言,程序模块包括例程、程序、库、对象、类、组件、数据结构等,其执行特定的任务或者实现特定的抽象数据结构。在各实施例中,程序模块的功能可以在所描述的程序模块之间合并或者分割。用于程序模块的机器可执行指令可以在本地或者分布式设备内执行。在分布式设备中,程序模块可以位于本地和远程存储介质二者中。
用于实现本申请实施例的方法的计算机程序代码可以用一种或多种编程语言编写。这些计算机程序代码可以提供给通用计算机、专用计算机或其他可编程的数据处理装置的处理器,使得程序代码在被计算机或其他可编程的数据处理装置执行的时候,引起在流程图和/或框图中规定的功能/操作被实施。程序代码可以完全在计算机上、部分在计算机上、作为独立的软件包、部分在计算机上且部分在远程计算机上或完全在远程计算机或服务器上执行。
在本申请实施例的上下文中,计算机程序代码或者相关数据可以由任意适当载体承载,以使得设备、装置或者处理器能够执行上文描述的各种处理和操作。载体的示例包括信号、计算机可读介质等等。
信号的示例可以包括电、光、无线电、声音或其它形式的传播信号,诸如载波、红外信号等。
机器可读介质可以是包含或存储用于或有关于指令执行系统、装置或设备的程序的任何有形介质。机器可读介质可以是机器可读信号介质或机器可读存储介质。机器可读介质可以包括但不限于电子的、磁的、光学的、电磁的、红外的或半导体系统、装置或设备,或其任意合适的组合。机器可读存储介质的更详细示例包括带有一根或多根导线的电气连接、便携式计算机磁盘、硬盘、随机存储存取器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光存储设备、磁存储设备,或其任意合适的组合。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、设备和模块的具体工作过程,可以参见前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、设备或模块的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
该作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以是两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
该集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例中方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。还应理解,尽管以下描述使用术语第一、第二等来描述各种元素,但这些元素不应受术语的限制。这些术语只是用于将一元素与另一元素区别分开。例如,在不脱离各种所述示例的范围的情况下,第一图像可以被称为第二图像,并且类似地,第二图像可以被称为第一图像。第一图像和第二图像都可以是图像,并且在某些情况下,可以是单独且不同的图像。
还应理解,在本申请的各个实施例中,各个过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本申请中术语“至少一个”的含义是指一个或多个,本申请中术语“多个”的含义是指两个或两个以上,例如,多个第二报文是指两个或两个以上的第二报文。本文中术语“系统”和“网络”经常可互换使用。
应理解,在本文中对各种所述示例的描述中所使用的术语只是为了描述特定示例,而并非旨在进行限制。如在对各种所述示例的描述和所附权利要求书中所使用的那样,单数形式“一个(“a”,“an”)”和“该”旨在也包括复数形式,除非上下文另外明确地指示。
还应理解,本文中所使用的术语“和/或”是指并且涵盖相关联的所列出的项目中的一个或多个项目的任何和全部可能的组合。术语“和/或”,是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本申请中的字符“/”,一般表示前后关联对象是一种“或”的关系。
还应理解,术语“包括”(也称“includes”、“including”、“comprises”和/或“comprising”)当在本说明书中使用时指定存在所陈述的特征、整数、步骤、操作、元素、和/或部件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元素、部件、和/或其分组。
还应理解,术语“若”和“如果”可被解释为意指“当...时”(“when”或“upon”)或“响应于确定”或“响应于检测到”。类似地,根据上下文,短语“若确定...”或“若检测到[所陈述的条件或事件]”可被解释为意指“在确定...时”或“响应于确定...”或“在检测到[所陈述的条件或事件]时”或“响应于检测到[所陈述的条件或事件]”。
应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
还应理解,说明书通篇中提到的“一个实施例”、“一实施例”、“一种可能的实现方式”意味着与实施例或实现方式有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”、“一种可能的实现方式”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
以上描述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (17)

1.一种负载均衡的方法,其特征在于,所述方法应用于第一网络节点,所述方法包括:
获取第一出接口组的统计信息和第一入接口组的统计信息,所述第一出接口组包括所述第一网络节点上连接多个中间节点的多个出接口,所述第一出接口组的统计信息包括所述第一出接口组中的每个出接口的负载,所述第一入接口组包括第二网络节点上连接所述多个中间节点的多个入接口,所述第一入接口组的统计信息包括所述第一入接口组中的每个入接口的负载,所述第一入接口组中的多个入接口与所述第一出接口组中的多个出接口一一对应;
当所述第一入接口组中的第一入接口为拥塞接口的情况下,确定待切换的第一数据流以及所述第一出接口组中满足第一切换条件的第二出接口,所述第一数据流通过所述第一出接口组中的第一出接口传输至所述第二网络节点,所述第一切换条件为所述第二出接口和与所述第二出接口对应的第二入接口在所述第一数据流切换后均不是拥塞接口,所述拥塞接口为发生拥塞的接口;
将所述第一数据流的出接口由所述第一出接口切换到所述第二出接口。
2.根据权利要求1所述的方法,其特征在于,所述获取第一出接口组的统计信息和第一入接口组的统计信息,包括:
对所述第一网络节点上的多个出接口发送的数据流进行流量统计,根据统计结果获取所述第一出接口组的统计信息;
根据所述多个中间节点中的每一中间节点与所述第二网络节点连接的中间出接口的负载,得到所述第一入接口组的统计信息。
3.根据权利要求2所述的方法,其特征在于,所述根据所述多个中间节点中的每一中间节点与所述第二网络节点连接的中间出接口的负载,得到所述第一入接口组的统计信息之前,还包括:
接收所述多个中间节点发送的多个第二出接口组的统计信息,一个第二出接口组包括一个中间节点上连接多个网络节点的多个中间出接口,任一第二出接口组的统计信息包括所述任一第二出接口组中的每个中间出接口的负载;
根据所述多个第二出接口组的统计信息,获取所述多个中间节点中的每一中间节点与所述第二网络节点连接的中间出接口的负载。
4.根据权利要求1-3任一所述的方法,其特征在于,所述确定待切换的第一数据流,包括:
获取所述第一出接口待传输至所述第二网络节点的至少一条数据流分别对应的负载,将所述至少一条数据流中负载大于或等于差值负载的数据流确定为所述待切换的第一数据流,所述差值负载为所述第一入接口对应的当前负载与负载阈值之间的差。
5.根据权利要求4所述的方法,其特征在于,所述获取所述第一出接口待传输至所述第二网络节点的至少一条数据流分别对应的负载,包括:
根据去向为所述第二网络节点的下一跳流表获取所述第一出接口发送的至少一条数据流分别对应的负载,所述下一跳流表包括多个项目,每个项目配置有对应的出接口,与任一项目匹配的数据流由所述任一项目对应的出接口转发,所述下一跳流表还记录有每个项目匹配的数据流,所述多个项目的数量大于所述多个出接口的数量。
6.根据权利要求1-5任一所述的方法,其特征在于,所述方法还包括:
当所述第一出接口组中不存在满足所述第一切换条件的第二出接口时,确定所述第一入接口组中在所述第一数据流切换后不是拥塞接口的第三入接口;
根据所述第三入接口对应的第三出接口发送的数据流确定第三网络节点,获取第二入接口组的统计信息,所述第二入接口组包括所述第三网络节点上连接所述多个中间节点的多个入接口,所述第二入接口组的统计信息包括所述第二入接口组中的每个入接口的负载,所述第一出接口组中的多个出接口和所述第二入接口组中的多个入接口一一对应;
根据所述第一出接口组的统计信息和所述第二入接口组的统计信息,确定待切换的第二数据流以及所述第一出接口组中满足第二切换条件的第四出接口,所述第二数据流通过所述第三出接口传输至所述第三网络节点,所述第二切换条件为所述第四出接口和与所述第四出接口对应的第四入接口在所述第二数据流切换后均不是拥塞接口;
将所述第二数据流的出接口由所述第三出接口切换到所述第四出接口,将所述第一数据流的出接口由所述第一出接口切换到所述第三出接口。
7.根据权利要求1-6任一所述的方法,其特征在于,所述方法还包括:
接收所述多个中间节点中的第一中间节点发送的第一中间出接口的拥塞消息,所述第一中间出接口为所述第一中间节点与第四网络节点连接的中间出接口,所述多个出接口与所述多个中间节点一一对应;
基于所述拥塞消息确定待切换的第三数据流以及所述第一出接口组中满足第三切换条件的第五出接口,所述第三数据流通过所述第一中间节点对应的第六出接口传输,所述第三切换条件为所述第五出接口和与所述第五出接口对应的第二中间节点连接所述第四网络节点的中间出接口在所述第三数据流切换后均不是拥塞接口;
将所述第三数据流的出接口由所述第六出接口切换到所述第五出接口。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
当所述第一出接口组中不存在满足所述第三切换条件的第五出接口时,确定所述多个中间节点中的连接所述第四网络节点的中间出接口在所述第三数据流切换后不是拥塞接口的第三中间节点;
根据所述第三中间节点对应的第七出接口发送的数据流确定第五网络节点,基于所述第五网络节点确定待切换的第四数据流以及所述第一出接口组中满足第四切换条件的第八出接口,所述第四数据流通过所述第七出接口传输,所述第四切换条件为所述第八出接口和与所述第八出接口对应的第四中间节点连接所述第五网络节点的中间出接口在所述第四数据流切换后均不是拥塞接口;
将所述第四数据流的出接口由所述第七出接口切换到所述第八出接口,将所述第三数据流的出接口由所述第六出接口切换到所述第七出接口。
9.根据权利要求1-8任一所述的方法,其特征在于,所述第二出接口包括多个端口,所述将所述第一数据流的出接口由所述第一出接口切换到所述第二出接口之后,还包括:
通过所述多个端口中的轻载端口发送所述第一数据流,所述轻载端口为多个端口中负载最小的端口。
10.一种负载均衡的方法,其特征在于,所述方法应用于第一中间节点,所述方法包括:
获取第二出接口组的统计信息,所述第二出接口组包括所述第一中间节点上连接多个网络节点的多个中间出接口,所述第二出接口组的统计信息包括所述第二出接口组中的每个中间出接口的负载;
向所述多个网络节点发送所述第二出接口组的统计信息,所述第二出接口组的统计信息用于所述多个网络节点中的第一网络节点获取第一入接口组的统计信息,所述第一入接口组包括第二网络节点上连接多个中间节点的多个入接口,所述第一入接口组的统计信息包括所述第一入接口组中的每个入接口的负载,所述多个入接口与所述第一网络节点上连接所述多个中间节点的多个出接口一一对应;
所述第一入接口组的统计信息用于所述第一网络节点将第一数据流的出接口由第一出接口组中的第一出接口切换到所述第一出接口组中的第二出接口,所述第一出接口对应的第一入接口为拥塞接口,所述第一数据流通过所述第一出接口传输至所述第二网络节点,所述第二出接口满足第一切换条件,所述第一切换条件为所述第二出接口和与所述第二出接口对应的第二入接口在所述第一数据流切换后均不是拥塞接口。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
基于所述第二出接口组中的第一中间出接口拥塞且所述第一中间出接口传输的数据流来自于所述第一网络节点,向所述第一网络节点发送所述第一中间出接口的拥塞消息;
所述拥塞消息用于所述第一网络节点将第三数据流的出接口由第六出接口切换到第五出接口,所述第三数据流通过所述第六出接口传输,所述第六出接口为所述第一网络节点连接所述第一中间节点的出接口,所述第五出接口为所述第一网络节点上满足第三切换条件的出接口,所述第三切换条件为所述第五出接口和与所述第五出接口对应的第二中间节点连接所述第四网络节点的中间出接口在所述第三数据流切换后均不是拥塞接口。
12.一种负载均衡的装置,其特征在于,所述装置应用于第一网络节点,所述装置包括:
第一获取模块,用于获取第一出接口组的统计信息和第一入接口组的统计信息,所述第一出接口组包括所述第一网络节点上连接多个中间节点的多个出接口,所述第一出接口组的统计信息包括所述第一出接口组中的每个出接口的负载,所述第一入接口组包括第二网络节点上连接所述多个中间节点的多个入接口,所述第一入接口组的统计信息包括所述第一入接口组中的每个入接口的负载,所述第一入接口组中的多个入接口与所述第一出接口组中的多个出接口一一对应;
第一确定模块,用于当所述第一入接口组中的第一入接口为拥塞接口的情况下,确定待切换的第一数据流以及所述第一出接口组中满足第一切换条件的第二出接口,所述第一数据流通过所述第一出接口组中的第一出接口传输至所述第二网络节点,所述第一切换条件为所述第二出接口和与所述第二出接口对应的第二入接口在所述第一数据流切换后均不是拥塞接口;
第一切换模块,用于将所述第一数据流的出接口由所述第一出接口切换到所述第二出接口。
13.一种负载均衡的装置,其特征在于,所述装置应用于第一中间节点,所述装置包括:
获取模块,用于获取第二出接口组的统计信息,所述第二出接口组包括所述中间节点上连接多个网络节点的多个中间出接口,所述第二出接口组的统计信息包括所述第二出接口组中的每个中间出接口的负载;
发送模块,用于向所述多个网络节点发送所述第二出接口组的统计信息,所述第二出接口组的统计信息用于所述多个网络节点中的第一网络节点获取第一入接口组的统计信息,所述第一入接口组包括第二网络节点上连接多个中间节点的多个入接口,所述第一入接口组的统计信息包括所述第一入接口组中的每个入接口的负载,所述多个入接口与所述第一网络节点上连接所述多个中间节点的多个出接口一一对应;
所述第一入接口组的统计信息用于所述第一网络节点将第一数据流的出接口由第一出接口组中的第一出接口切换到所述第一出接口组中的第二出接口,所述第一出接口对应的第一入接口为拥塞接口,所述第一数据流通过所述第一出接口传输至所述第二网络节点,所述第二出接口满足第一切换条件,所述第一切换条件为所述第二出接口和与所述第二出接口对应的第二入接口在所述第一数据流切换后均不是拥塞接口,所述拥塞接口为发生拥塞的接口。
14.一种负载均衡的系统,其特征在于,所述负载均衡的系统包括多个网络节点和多个中间节点;
所述多个网络节点中的任一网络节点用于执行权利要求1-9任一所述的方法,所述多个中间节点中的任一中间节点用于执行权利要求10或11任一所述的方法。
15.一种网络设备,其特征在于,所述网络设备包括:处理器,所述处理器与存储器耦合,所述存储器中存储有至少一条程序指令或代码,所述至少一条程序指令或代码由所述处理器加载并执行,以使所述网络设备实现权利要求1-9中任一所述的负载均衡的方法,或者,以使所述网络设备实现权利要求10或11中任一所述的负载均衡的方法。
16.一种计算机可读存储介质,其特征在于,所述计算机存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行,以使计算机实现权利要求1-9中任一所述的负载均衡的方法,或者,以使计算机实现权利要求10或11中任一所述的负载均衡的方法。
17.一种计算机程序产品,其特征在于,所述计算机程序产品包括:计算机程序代码,所述计算机程序代码由计算机加载并执行,以使所述计算机实现权利要求1-9中任一所述的负载均衡的方法,或者,以使所述计算机实现权利要求10或11中任一所述的负载均衡的方法。
CN202210940147.3A 2022-07-01 2022-08-05 负载均衡的方法、装置、设备、系统及存储介质 Pending CN117376259A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2022107733629 2022-07-01
CN202210773362 2022-07-01

Publications (1)

Publication Number Publication Date
CN117376259A true CN117376259A (zh) 2024-01-09

Family

ID=89399019

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210940147.3A Pending CN117376259A (zh) 2022-07-01 2022-08-05 负载均衡的方法、装置、设备、系统及存储介质

Country Status (1)

Country Link
CN (1) CN117376259A (zh)

Similar Documents

Publication Publication Date Title
US7626990B2 (en) Packet counters and packet adders for traffic profiling in a multiprocessor router
US20140286349A1 (en) Communication device and packet scheduling method
EP1501247A1 (en) Software configurable cluster-based router using stock personal computers as cluster nodes
JP2022532731A (ja) スライスベースネットワークにおける輻輳回避
KR101841026B1 (ko) 최적 경로 설정을 위한 서비스 기능 체이닝 네트워크 시스템
Lin et al. Hierarchical CORD for NFV datacenters: Resource allocation with cost-latency tradeoff
CN115622952A (zh) 资源调度方法、装置、设备及计算机可读存储介质
CN114553699A (zh) 报文传输方法、装置、设备及计算机可读存储介质
US20240267324A1 (en) Packet forwarding method and apparatus
WO2022057431A1 (zh) 网络仿真方法、装置、设备及计算机可读存储介质
CN116566907A (zh) 一种网络拥塞控制方法及相关装置
CN112751768A (zh) 业务报文转发方法、装置及计算机存储介质
US20230069626A1 (en) Traffic monitoring method, related device, and system
CN117376259A (zh) 负载均衡的方法、装置、设备、系统及存储介质
CN116962161A (zh) 路径检测方法、装置、系统及计算机可读存储介质
CN116828024A (zh) 业务连接的标识方法、装置、系统及存储介质
WO2022042403A1 (zh) 生成路由信息、发送位置信息及转发报文的方法及设备
CN113572685B (zh) 一种信息上报方法、信息处理方法、装置及设备
CN116346716A (zh) 报文处理方法及装置、通信系统
Acı et al. A hybrid congestion control algorithm for broadcast-based architectures with multiple input queues
Jin et al. Sandwich Tree: A new datacenter network based on passive optical devices
WO2024113830A1 (zh) 数据传输方法、装置、设备、系统及存储介质
WO2022007653A1 (zh) 一种端到端路径发现和使用方法及装置
WO2022000234A1 (zh) 一种通信方法及相关设备
EP4277226A1 (en) Packet transmission method, transmission control method, apparatus, and system

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication