一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

大规模数据网络中心的转发路径规划方法与流程

2022-12-10 00:38:03 来源:中国专利 TAG:

大规模数据网络中心的转发路径规划方法


背景技术:

1.数据中心网络通常使用紧凑互连的网络拓扑来为内部数据交换提供高带宽。在这样的网络中,采用有效的负载平衡方案以便可以利用所有可用的带宽资源是不稳定的。为了利用所有可用带宽,需要在网络上路由数据流,而不是使单个路径过载。等成本多路径(ecmp)路径规划算法可以使用网络中源节点到目的节点的多个等成本路径。使用该算法的优点是可以将数据流更均匀地拆分到整个网络,从而避免了拥塞并增加了带宽消耗。
2.在现有的数据中心网络中,例如两层或三层clos网络中,多个服务器通过第一层交换机,例如叶交换机或接入交换机连接到网络。当数据流到达时,服务器将数据包转发到网络中的各个路径,到达它们各自的目的地。数据包转发可以基于“服务器版本”拓扑信息和与各种路径相关联的预先计算值来确定。当数据包到达下一跳叶交换机时,每个叶交换机执行动态路径规划,以基于“交换机版本”拓扑信息和路径规划算法来分发数据包。由于服务器未配置为执行动态路径规划,因此“服务器版本”拓扑信息可能不表示实时网络拓扑信息。当发生网络拥塞时,服务器无法确定网络拥塞的来源并及时响应以重新路由数据流。
附图说明
3.提供了用于大规模数据中心网络中的动态路径规划的方法和系统。本公开在经由交换机接入网络的计算节点(即服务器设备)上实现交换机(即,两层或三层clos网络的叶交换机或接入交换机)的动态路径规划能力。计算节点与一个或多个交换机通信,以通过各种协议(例如链路层发现协议(lldp))获得由交换机以及与交换机相关联的网络拓扑所使用的路径规划算法或路由算法有关的信息。计算节点还基于与交换机使用的路径规划算法或路由算法相关的信息,配置其中使用的路径规划算法或路由算法。交换机使用的路径规划算法或路由算法可以包括等成本多路径(ecmp)规划算法。计算节点进一步将与计算节点相关联的网络拓扑与与交换机相关联的网络拓扑同步。本公开使得计算节点能够在大规模数据中心网络的交换机之前对接收到的数据包进行动态路径规划,从而有效地避免了网络中的数据流冲突。进一步地,根据本公开的计算节点可以有效地检测网络拥塞,并通过重新路由数据流以绕过网络拥塞来及时响应。
4.详细说明参见附图。在图中,参考标号最左边的数字表示参考标号首次出现的图形。在不同的附图中使用相同的参考标号表示相似或相同的项目。
5.图1示出了根据本公开的实施例的可以使用转发路径规划系统的示例环境。
6.图2示出了根据本公开的实施例的大规模数据中心网络的示例网络架构。
7.图3示出了根据本公开的实施例的在大规模数据中心网络中发生的故障的示例。
8.图4示出了根据本公开的实施例的用于实现转发路径规划方法的计算节点的示例配置。
9.图5示出了根据本公开的实施例的示例转发路径规划。
10.图6示出了根据本公开的实施例的另一示例转发路径规划。
11.图7示出了根据本公开的实施例的示例等成本多路径(ecmp)规划。
12.图8示出了根据本公开的实施例的示例性转发路径规划算法。
13.图9示出了根据本公开的实施例的另一示例转发路径规划算法。
14.图10示出了根据本公开的实施例的另一示例转发路径规划算法。
15.图11示出了根据本公开的实施例的另一示例转发路径规划算法。
具体实施方式
16.本技术描述了多个和变化的实施例和实现。以下部分描述了一示例框架,该框架适用于实践各种实现。接下来,本技术描述用于实现分布式训练系统的示例系统、设备和过程。
17.图1示出了根据本公开的实施例的可以使用转发路径规划系统的示例环境。环境100可以包括数据中心网络102。在该示例中,数据中心网络102可以包括多个计算节点或服务器104-1、104-2、

、104-k(以下统称为计算节点104),其中k是大于1的正整数。在实施方式中,多个计算节点104可以经由通信网络106彼此通信数据。
18.计算节点104可以被实现为具有计算/处理和通信能力的各种计算设备中的任何一种,其可以包括但不限于服务器、台式计算机、笔记本或便携式计算机、手持设备、上网本、互联网设备、平板电脑、移动设备(例如,移动电话、个人数字助理、智能电话等)等或其组合。
19.通信网络106可以是无线或有线网络,或二者组合。网络106可以是彼此互连的单独网络并且用作单个大型网络(例如,因特网或内联网)的集合。这种单独网络的示例包括但不限于电话网络、有线网络、局域网(lan)、广域网(wan)和城域网(man)。此外,单独网络可以是无线或有线网络,或二者的组合。有线网络可以包括电载波连接(诸如通信电缆等)和/或光载波或连接(诸如光纤连接等)。无线网络可以包括,例如,wifi网络、其他射频网络(例如,zigbee等)等。在实施方式中,通信网络106可以包括用于提供计算节点104之间的连接的多个节点间互连或交换机108-1、108-2、

、108-l(以下统称为节点间交换机108)。其中l是大于1的正整数。
20.在实施方式中,环境100还可以包括多个客户端设备110-1、110-2、

、110-n(以下统称为客户端设备110),其中n是大于1的正整数。在实施方式中,客户端设备110的用户可以经由通信网络106彼此通信,或者访问在线资源和服务。这些在线资源和服务可以在计算节点104处实现。由客户端设备110的用户生成的数据流可以被分布到多个路由路径并且通过多条路径中的一条或多条路径被路由到目的地设备。在实现中,目的地设备可以包括另一客户端设备110或计算节点104。在实现方式中,多个路由路径中的每一个可以包括通过物理链路相互连接的一个或多个计算节点104和交换机108。
21.图2示出了根据本公开的实施例的大规模数据中心网络的示例网络架构。大规模数据中心网络200的网络架构可以提供其中可以使用转发路径规划系统的环境的详细视图。在实现中,大规模数据中心网络的网络架构是全网状拓扑结构中的三层clos网络架构。第一层对应于叶交换机206的层,也称为访问交换机或机架顶部(tor)交换机。计算节点208直接连接到叶交换机206,其中每个计算节点208连接到至少两个叶交换机206。在实现中,计算节点208可以包括连接到叶交换机206的一个或多个端口(例如,四个端口)的一个或多个网络接口控制器(例如,四个网络接口控制器)。在实现中,每个计算节点208中的网络接
口控制器的数量可以相同,也可以不同。第二层对应于连接到一个或多个叶交换机206的聚合交换机204(也称为脊交换机204)的层。在实现中,多个计算节点208、互连的叶交换机206和互连的聚合交换机204可以形成递送点(point of delivery,pod)单元,例如,pod-1和pod-2,如图所示。第三层对应于连接到一个或多个聚合交换机204的核心交换机202的层。核心交换机202位于云数据中心网络金字塔的顶部,并且可以包括到外部运营商网络的广域网(wan)连接。
22.在实现中,如果包括在不同计算节点208中的两个处理单元或进程在同一叶交换机206下连接,在两个处理单元或进程之间传输的数据包将通过相同的叶交换机206,而不通过任何聚合交换机204或核心交换机202。或者,如果在不同计算节点中的两个处理单元或进程在不同的叶交换机下连接,则在两个处理单元或进程之间传输的数据包将通过其中一个聚合交换机。在实现中,通过在数据包中设置源端口和目的端口的适当组合,可以使在两个处理单元或进程之间传输的数据包流过指定的聚合交换机。用于避免拥塞的路由管理可以旨在使从同一叶交换机到不同目的叶交换机的数据流通过不同的聚合交换机,和/或使从不同源叶交换机到同一目的叶交换机的数据流通过不同的聚合交换机,从而避免数据流之间的冲突,并使得聚合交换机没有网络拥塞。
23.在实施方式中,计算节点208中的处理单元或进程可以通过网络接口控制器(nic)向另一计算节点中的处理单元或进程发送数据,或从另一计算节点中的处理单元或进程接收数据。实现方式中,计算节点208中的处理单元或进程可以与用于将数据传输到其他计算节点中的处理单元或进程的单个网络接口控制器或多个网络接口控制器相关联。附加地或替代地,多个处理单元或过程可以与单个网络接口控制器相关联,并采用该用于将数据传输到其他计算节点中的处理单元或过程的网络接口控制器。在实现中,可以在计算节点208上实现用于数据包转发/路由的多个规则。所述多个规则可以包括但不限于:第一计算节点中的处理单元或处理选择相邻处理单元或进程的优先级、第一计算节点中的网络接口控制器发送或接收数据的条件,第一计算节点中的网络接口控制器将数据路由到第二计算节点中的网络接口控制器的条件或从第二计算节点中的网络接口控制器路由数据的条件等。
24.在实现中,路由管理可以将网络接口控制器(nic)标识符分配给连接到或链接到相同叶交换机的每个网络接口控制器。在一些示例中,处理单元或处理的网络接口控制器和下一个处理单元或进程的网络接口控制器位于相同的计算节点中或者直接连接到或链接到相同的叶交换机,路由标识符可以被确定为默认值或标识符。该默认路由标识符指示数据要么在计算节点内路由,要么通过叶交换机路由,而不通过通信网络中的任何聚合交换机。否则,路由标识符可以被确定为等于该处理单元或进程的nic标识符或其他预定义值。基于路由标识符和聚合标识符之间的映射关系,可以基于所确定的路由标识符来确定聚合标识符。在实现中,例如,可以使用基于探测的路由机制(例如,如前所述,在计算节点之间发送探测数据包)预先预定路由标识符和聚合标识符之间的映射关系。换句话说,在同一计算节点中包括的处理单元(或进程)之间或者同一叶交换机的网络接口控制器的数据流将不经过通信网络中的任何聚合交换机。另一方面,在不同的计算节点中包括的处理单元(或进程)之间以及网络接口控制器不同的叶交换机的数据流将根据预定的映射关系通过指定的聚合交换机,因此,可以对数据流进行路由控制和管理,并将数据流分配到不同的聚合交换机,以避免网络拥塞。
25.应当理解,如图2所示的三层clos网络仅仅是大规模数据中心网络的示例网络架构。也可以采用包括但不限于两层clos网络的其他网络架构来构建大规模数据中心网络。
26.图3示出了根据本公开的实施例的在大规模数据中心网络中发生的示例故障。在数据中心网络300的配置被交付之后,可能发生网络异常,包括但不限于链路故障(例如,故障312、316和320)、计算节点故障(例如,故障310),叶交换机故障(例如,故障318)、聚合交换机故障(例如,故障314)或核心交换机故障(例如,故障322),从而导致某些路由路径中的数据包丢失和拥塞。为了检测数据中心网络中的那些异常,可以引入诸如网络质量分析(nqa)追踪的检测技术。在实现中,每个递送点(pod)单元中的一个或多个计算节点可以实现nqa跟踪方案,以检测相同或不同pod单元中的另一个计算节点、相同或不同pod单元中的叶交换机、相同或不同pod单元中的聚合交换机,或核心交换机无法访问等。
27.一种示例检测方法是利用递送点(pod)单元中的一个计算节点作为检测源。作为示例而非限制,pod-1中的计算节点308-1可以被指派为检测源。计算节点308-1可以通过发送因特网报文控制协议(icmp)回送请求包,周期性地ping其它计算机节点、叶交换机、聚合交换机和核心交换机。计算节点308-1等待来自这些节点和交换机中的每一个的icmp回送应答。在预设时段或称为生存时间(ttl)时段之后,如果没有从计算节点或交换机接收到回送应答,则计算节点308-1确定计算节点或交换机是不可访问。在一个示例中,当在连接到相同叶交换机的大量计算节点中发生包丢失时,检测源(即,用于异常检测的指定计算节点)可以进一步确定叶交换机可能处于故障中。在另一个示例中,当包丢失仅发生在连接到相同叶交换机的零星计算节点中时,检测源可以进一步确定这些零星计算节点可能经历过载或叶交换机中的相应端口可能已满。在又一示例中,当在位于不同递送点(pod)单元中的大量计算节点中发生包丢失时,检测源可以进一步确定故障可能发生在位于其中的一个或多个相应聚合交换机和/或与其连接的一个或多个相应核心交换机中。在又一示例中,当包丢失仅发生在位于不同递送点(pod)单元中的零星计算节点中时,检测源可以进一步确定这些零星计算节点可能经历过载或聚合交换机和/或核心交换机中的相应端口可能已满。
28.另一个示例检测方法是不同位置的各种计算节点相互协作作为检测源,并在这些检测源之间部署不同的检测策略。每个检测源可以实现能够额外地检测与osi层4至层7相关联的异常的代理程序。检测源可以接受输入控制命令以动态配置检测策略。该方法可以建立tcp连接以进一步检测与传输层(即,osi层4)相关联的一个或多个参数,例如,传输延迟或传输速率。利用网络拓扑信息、传输延迟或传输速率以及数据包丢失率,该检测方法可以进一步了解异常的确切位置。在一个示例中,当由第一叶交换机路由到多个计算节点的数据包经历高丢包率,但是到由不同叶交换机路由的计算节点的数量的数据包在没有显著延迟的情况下被接收时,检测源可以确定计算节点的数量操作正常,但是第一叶交换机可能经历某些异常。在另一示例中,当到由第一叶交换机路由的第一数量的计算节点的数据包经历长延迟,但是到由相同叶交换机路由的第二数量的计算节点的数据包没有延迟时,所述检测源可以确定所述第一叶交换机正在操作,但是所述第一叶交换机中对应于所述第一数量的计算节点的端口可能是拥塞的。
29.应当理解,上面描述的网络故障检测方法仅用于说明目的。还可以实施包括但不限于随机早期检测(red)、加权随机早期检测(wred)、鲁棒随机早期检测(rred)、显式拥塞通知(ecn)、向后ecn(becn)的其他方法以检测网络拥塞。
30.图4示出了根据本公开的实施例的用于实现转发路径规划方法的计算节点的示例配置。在实现中,计算节点402的示例配置400可以包括但不限于一个或多个处理单元404、一个或多个网络接口406、输入/输出(i/o)接口408和存储器412。在实现中,计算节点402可以进一步包括一个或多个节点内互连或交换机410。
31.在实施方式中,处理单元404可以被配置为执行存储在存储器412中,和/或从输入/输出接口408和/或网络接口406接收的指令。在实施方式中,处理单元404可以被实现为一个或多个硬件处理器,包括例如微处理器、专用指令集处理器、物理处理单元(ppu)、中央处理单元(cpu)、图形处理单元、数字信号处理器、张量处理单元等。附加地或替代地,本文所述的功能可以至少部分地由一个或多个硬件逻辑组件来执行。例如但不限于,可以使用的示例性类型的硬件逻辑组件包括现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统(soc)、复杂可编程逻辑器件(cpld)等。
32.存储器412可以包括易失性存储器形式的机器可读介质,例如随机存取存储器(ram)和/或非易失性存储器,例如只读存储器(rom)或闪存ram。存储器412是机器可读介质的示例。
33.机器可读介质可以包括易失性或非易失性类型、可移动或不可移动介质,其可以使用任何方法或技术实现信息的存储。所述信息可以包括机器可读指令、数据结构、程序模块或其他数据。机器可读介质的示例包括但不限于相变存储器(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其它类型的随机存取存储器(ram)、只读存储器(rom)、电子可擦除可编程只读存储器(eeprom)、快速闪存或其他内部存储技术、光盘只读存储器(cd-rom、数字多功能光盘(dvd)或其他光学存储、盒式磁带、磁盘存储或其他磁存储设备、或可用于存储可由计算节点访问的信息的任何其他非传输介质。如本文所定义的,机器可读介质不包括任何瞬态介质,诸如调制数据信号和载波。
34.在实施方式中,网络接口406可以被配置为经由通信网络106将计算节点402连接到其他计算节点。在实现中,可以通过网络接口控制器(nic)建立网络接口406,该网络接口控制器可以时采用硬件和软件将计算节点402连接到通信网络106。在实现中,每种类型的nic可以使用不同类型的结构或连接器来连接到与通信网络106相关联的物理介质。所述结构或连接器类型的示例可以在ieee802规范中找到,并且可以包括例如以太网网(在802.3中定义)、令牌环(在802.5中定义)和无线网络(在802.11中定义)、infiniband等。
35.在实现中,节点内交换机410可以包括各种类型的互连或交换机,其可以包括但不限于高速串行计算机扩展总线(例如pcie等),串行多通道近距通信链路(例如nolan,它是有线通信协议串行多通道近距通信链路),具有多个端口的交换机芯片(例如nvswitch等),点对点处理器互连(如英特尔qpi/upi等)。等等。
36.在实施方式中,计算节点402还可以包括其他硬件组件和/或其他软件组件,例如执行存储在存储器412中的用于执行各种操作的指令的程序模块414,以及用于存储为路径规划、异常检测等接收的数据的程序数据416。在实现中,程序模块414可以包括拓扑感知模块418、路径规划模块420和异常检测模块422。
37.拓扑感知模块418可以被配置为维护与网络106相关联的拓扑数据。当网络架构被交付时,可以在网络106的每个元件上生成和实现拓扑数据。拓扑数据包括网络、计算节点、叶交换机、聚合交换机、核心交换机等的元件的布置,并指示这些元件之间的连接/链路。在
等成本多路径(ecmp)算法中,拓扑数据可以表示为无向图并存储为邻接表表。将数据包从源节点路由到目的地节点的所有路径可以被配置为具有相等的成本。因此,从源节点到目的地节点的数据流可以均匀地分布到所有路径。在实施中,可以将从源节点到目的地的一个或多个可用路径配置为预留带宽,并且可以将数据流仅转发到可用路径。拓扑感知模块418可以实时、周期性地或在预设时间段与大规模数据中心网络中的一个或多个交换机(例如,叶交换机306)通信,以获得与网络106相关联的拓扑数据。在实施中,与网络106相关联的拓扑数据可以存储在一个或多个单独的存储设备中。拓扑感知模块418可以与一个或多个单独的存储设备通信以获得实时拓扑数据。在实施中,与网络106相关联的拓扑数据可以响应于网络拥塞的通知而动态地更新到拓扑感知模块418。在实施中,计算节点与叶交换机之间的通信和拓扑数据交换可以通过使用包括但不限于链路层发现协议(lldp)、链路聚合控制协议(lacp)、通用远程过程调用(grpc)等的协议来实现。在实施中,计算节点与叶交换机之间的通信和拓扑数据交换可以通过远程软件控制来实现。
38.路径规划模块410可以被配置为确定路由路径以转发数据包,并将数据包分配到路由路径以平衡网络106中的数据流。在实施方式中,当数据包到达时,路径规划模块420可以从tcp/ip数据包的ip报头获得源地址、目的地址和协议,并从tcp数据包获得源端口和目的端口。源地址、目的地址、源端口、目的端口和协议可以形成所谓的五元组(或5元组)。五元组可以唯一地指示数据流,其中所有数据包具有完全相同的五元组。路径规划模块420可以确定从源节点到目的地节点的所有可能的路由路径。其中所有数据包具有完全相同的五元组的数据流可以一次使用所有可能的路由路径之一。在实施中,当期望选择不同的路径时,例如,当发生网络异常时,网络拓扑数据由于异常而改变。拓扑感知模块418可以更新存储在程序数据416中的网络拓扑数据以反射变化。在实施方式中,与计算节点402相关联的网络拓扑数据可以与程序数据416分开存储,并且可以响应于由于异常引起的拓扑数据变化而被更新。路径规划模块410可以基于更新的网络拓扑数据使用哈希算法重新计算,并且通过另一源端口来选择不同的路径。应当理解,唯一地指示上述数据流的五元组(或5元组)仅用于说明的目的。本公开不旨在限制。路径规划模块420可以构造(三元组或3元组),其包括源ip地址、目的地ip地址和唯一地标识icmp查询会话以指示数据流的icmp标识符。
39.在实施方式中,规划模块420可以确定从源节点到目的地节点的所有可能的路由路径。可以基于包括但不限于最短路径算法在内的各种路径查找算法来确定路由路径。最短路径算法的示例可以包括但不限于dijkstra算法、viterbi算法、floyd-warshall算法、bellman-ford算法等。路径规划模块420还可以对五元组进行哈希运算,得到对应的五元组哈希值,并根据五元组哈希值从所有可能的最短路由路径中确定路由路径。当哈希操作将五元组映射到唯一路径时,所有具有相同五元组的数据包都可以通过相同的路径路由。可以由路径规划模块420实现各种哈希算法,包括但不限于消息摘要(md、md2、md4、md5和md6)、ripemd(ripend、ripemd-128和ripemd-160)、whirlpool(whirlpool-0、whirlpool-t、和whirlpool)或安全哈希函数(sha-0、sha-1、sha-2和sha-3)。通过对五元组数据实施哈希操作,可以将不同的数据流均匀地分布到源节点和目的节点之间的所有可能的路由路径上,以避免网络拥塞。
40.在当前的路径规划方法中,计算节点分别基于与所有可能的路由路径对应的预先计算的哈希值转发数据包,交换机(即叶交换机)基于动态网络拓扑和哈希算法执行路径规
划。通常,与计算节点和叶交换机相关联的拓扑数据不同步,并且在计算节点和叶交换机上实现的哈希算法具有不同的配置。因此,由计算节点和交换机(即,叶交换机或聚合交换机)计算的五元组哈希值可以将不同的数据流引导到相同的路由路径,从而导致网络中可能的拥塞。在本实施方式中,计算节点402的路径规划模块420可以获得与在一个或多个叶交换机上实现的哈希算法相关联的信息,并且使用所获得的信息来配置在计算节点402上实现的哈希算法。所述信息可以包括被配置用于在所述一个或多个叶交换机上实现的哈希算法的一个或多个参数。计算节点402的路径规划模块420还可以获取存储的与一个或多个叶交换机相关联的网络拓扑数据,并根据获取的网络拓扑数据更新网络拓扑数据。在实施中,计算节点与叶交换机之间的通信和数据交换可以通过使用包括但不限于链路层发现协议(lldp)、链路聚合控制协议(lacp)、通用远程过程调用(grpc)等的协议来实现。由于拓扑数据和哈希算法配置在计算节点和叶交换机之间同步,因此可以减少将不同的五元组哈希值映射到相同路径的冲突,并且可以避免可能的流拥塞。此外,当网络异常发生时,由于计算节点从叶交换机和数据流的活动会话的角度保持更新的拓扑,计算节点可以有效地确定网络中涉及异常的元素并重新规划数据流的转发路径。
41.异常检测模块422可以被配置为检测在网络106中发生的异常。异常检测模块422可以实现以上关于图3描述的检测方法。因此,在这里不详细描述图3。
42.程序数据416可以被配置为存储拓扑信息424、配置信息426和路由信息428。所述拓扑信息可以包括所述网元以及所述网元的连接状态。可以根据计算节点402与叶交换机之间的路径规划和数据交换来动态地更新拓扑信息。配置信息426可以包括例如在计算节点402上实现的算法的版本和参数,例如路由算法、哈希算法。路由信息428可以包括源节点和目的地节点之间的所有可能的路由路径。路由信息428还可以包括五元组哈希值和对应的转发路径之间的映射。
43.图5示出了根据本公开的实施例的示例转发路径规划。示例转发路径规划500在各种计算节点和叶交换机中被示出,最终连接到单个聚合交换机。从计算节点506-1到计算节点506-2的数据包被分布到两个路由路径中的两个数据流。路径a包括四跳:路径a-1、路径a-2、路径a-3和路径a-4,并且经过计算节点506-1、叶交换机504-1、聚合交换机502、叶交换机504-2和计算节点506-2。路径b包括四跳:路径b-1、路径b-2、路径b-3和路径b-4,并且经过计算节点506-1、叶交换机504-1、聚合交换机502、叶交换机504-3和计算节点506-2。在数据流的传输中,计算节点506-1检测路径a中的异常,并且进一步确定路径a-3和路径a-4涉及异常。异常可能与叶交换机504-3和/或叶交换机504-3的端口相关联。与计算节点506-1相关联的网络拓扑数据可被更新以反映由异常引起的网络的动态变化。基于更新的网络拓扑数据,计算节点506-1基于更新的网络拓扑数据使用哈希算法可以重新计算,并通过经过另一个源端口选择不同的路径。计算节点506-1使用经过叶交换机504-4的不同路径(包括路径a-1、路径a-2、路径a-3'和路径a-4')来传输数据流。
44.图6示出了根据本公开的实施例的另一示例转发路径规划。示例转发路径规划600在最终连接到两个聚合交换机的各种计算节点和叶交换机之间被示出。从计算节点606-1到计算节点606-2的数据包被分布到两个路由路径中的两个数据流。路径a包括四跳:路径a-1、路径a-2、路径a-3和路径a-4,并且经过计算节点606-1、叶交换机604-3、聚合交换机602-2、叶交换机604-4和计算节点606-2。路径b包括四跳:路径b-1、路径b-2、路径b-3和路
径b-4,并且经过计算节点606-1、叶交换机604-1、聚合交换机602-1、叶交换机604-2和计算节点606-2。在数据流的传输中,计算节点606-1检测路径a中的异常,并且进一步确定叶交换机604-4涉及异常。可以更新与计算节点506相关联的网络拓扑数据以反映由异常引起的网络的动态变化。基于更新的网络拓扑数据,计算节点606-1可以基于更新的网络拓扑数据使用哈希算法重新计算,并通过经过另一个源端口选择不同的路径。计算节点606-1使用经过叶交换机604-2的不同路径(包括路径a-1、路径a-2、路径a-3'和路径a-4')来传输数据流。
45.图7示出了根据本公开的实施例的示例等成本多路径(ecmp)规划。ecmp负载均衡是指通过使用负载均衡算法来识别流对数据流进行均匀分布,并将数据流分布到不同的路由路径上。如ecmp规划700中所示,四个相等成本路径a、路径b、路径c和路径d可用于将数据包从计算节点706-1路由到计算节点706-2。通过在用于路由的五元组数据上使用哈希算法,所有四个路径被用于将数据包从计算节点706-1路由到计算节点706-2。在初始路径规划状态下,这有助于在网络上均匀地分配数据流并减少可能的拥塞。此外,当四个路径中的一个路径发生故障时,数据流可以在其他三个路径中分布。应当理解的是,图7中所示的五元组和ecmp负载平衡只是为了说明的目的。本公开不旨在限制。在实现中,可以采用包括源ip地址、目的地ip地址和唯一地标识icmp查询会话的icmp标识符的三元组来指示数据流。此外,一条或多条路径可以被设置为预留带宽,因此,数据流仅被分配到不包括预留路径的可用路径。
46.图8示出了根据本公开的实施例的示例性转发路径规划算法。图9示出了根据本公开的实施例的另一示例转发路径规划算法。图10示出了根据本公开的实施例的另一示例转发路径规划算法。图11示出了根据本公开的实施例的另一示例转发路径规划算法。图8-图11所描述的方法可以在图1的环境和/或图2的网络架构中实现。但是,本公开并不旨在限制。图8至图11中描述的方法可替代地在其他环境和/或网络体系结构中实现。
47.在机器可执行指令的一般上下文中描述了图8-11所述的方法。通常,机器可执行指令可以包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、过程、模块、功能等。此外,每个示例方法被示出为逻辑流程图中的框的集合,所述逻辑流程图表示可以以硬件、软件、固件或其组合实现的操作序列。描述该方法的顺序不旨在被解释为限制,并且可以以任何顺序组合任何数量的所描述的方法框以实现该方法或替代方法。另外,在不脱离本文所述主题的精神和范围的情况下,可以从所述方法中省略各个框。在软件的上下文中,所述框表示当由一个或多个处理器执行时执行所述操作的计算机指令。在硬件的上下文中,所述框中的一些或全部可以表示执行所述操作的专用集成电路(asic)或其他物理组件。
48.回到图8中描述的方法800。在框802处,第一计算节点(例如,计算节点104)可以获得与由至少第二计算节点实现的算法相关联的信息。
49.在实现中,第一计算节点可以实现与至少第二计算节点相同的算法。在所述第一计算节点上实现的算法可以与在所述第二计算节点上实现的算法不同地配置。该算法可以包括用于基于与数据流中的数据包相关联的五元组的路由路径规划的各种哈希算法。在实施方式中,所述至少一个第二计算节点可以是三层clos网络中的叶交换机,所述第一计算节点通过所述叶交换机连接到所述数据中心网络。
50.在框804处,第一计算节点(例如,计算节点104)可以获得与至少一个第二计算节点相关联存储的网络拓扑数据。
51.在实施方式中,第一计算节点可以经由各种网络协议(例如,链路层发现协议(lldp))获得与在框802处描述的至少第二计算节点所实现的算法相关联的信息以及与在框804处描述的至少一第二计算节点相关联的网络拓扑数据。所述网络拓扑数据可以以无向图表示,所述无向图示出了所述网元以及与其相关联的连接状态。
52.在框806处,第一计算节点(例如,计算节点104)可以从源设备接收待转发到目的地设备的第一数据包。
53.在实现中,源设备和目的地设备可以指图1的客户端设备110。在一个示例中,当用户操作客户端设备110与操作不同客户端设备的另一用户通信时,生成数据包。在另一示例中,当用户访问在线资源或使用在线服务时生成数据包。在又一示例中,计算节点104可以从云存储空间上传或下载数据,从而生成数据包流。
54.在框808处,第一计算节点(例如,计算节点104)可以根据与算法相关联的信息来确定与第一数据包相关联的一组值。
55.在实现中,与第一数据包相关联的一组值可以包括从第一数据包中提取的五元组。该组值可以包括源ip地址、目的ip地址、源端口号、目的端口号和用于通信的协议。可以使用由所述第一计算节点实现的哈希算法对所述一组值,即五元组进行哈希。在实现中,可以采用包括源ip地址、目的地ip地址和唯一地标识icmp查询会话的icmp标识符的三元组来指示数据流。
56.在框810处,第一计算节点(例如,计算节点104)可以根据与第一数据包和网络拓扑数据相关联的所述一组值来确定从源设备到目的地设备的转发路径。
57.在实现中,第一计算节点可以使用从与至少一个第二计算节点相关联的存储器获得的网络拓扑数据来更新与其相关联的网络拓扑数据。所述第一计算节点可以根据所述更新的网络拓扑数据确定所有最佳最短路由路径,并根据所述一组值、例如五元组哈希值从多个最佳最短路由路径中选择所述转发路径。
58.在框812处,第一计算节点(例如,计算节点104)可以通过所述转发路径将第一数据包发送到目的地设备。
59.回到图9中描述的方法900,在框902,第一计算节点(例如,计算节点104)可以确定与第一数据包相关联的五元组数据,五元组数据包括源ip地址、源端口号、目的地ip地址、目的地端口号、和协议。
60.在实现中,第一计算节点可以从数据包的ip报头提取源ip地址、目的ip地址和协议,并且进一步从tcp部分提取源端口号和目的端口号。该协议可以包括任何类型的ip协议,包括但不限于ipv4和ipv6。在其他实施方式中,第一计算节点可以提取源ip地址、目的ip地址和icmp标识符以生成三元组(或3元组)来指示数据流。
61.在框904处,第一计算节点(例如,计算节点104)可以使用与由至少一个第二计算节点实施的算法相关联的信息来更新由第一计算节点实施的哈希算法的配置。在实施中,与由至少一个第二计算节点实施的算法相关联的信息可以包括算法的版本、算法的一个或多个参数配置等。
62.在框906处,第一计算节点(例如,计算节点104)可以使用更新的哈希算法来计算
与五元组数据相对应的五元组哈希值作为与第一数据包相关联的一组值。在实施中,当所述第一计算节点生成三元组以识别数据流时,所述第一计算节点使用更新的哈希算法将对应于所述三元组数据的三元组哈希值计算为与所述第一数据包相关联的值的集合。
63.回到图10中描述的方法1000,在框1002处,第一计算节点(例如,计算节点104)可以根据网络拓扑数据确定从源设备到目的地设备的一条或多条路径。在实施方式中,从源设备到目的地设备的一条或多条路径可以包括一条或多条最短路径。第一计算节点可以实现各种最短路径算法,例如dijkstra算法、viterbi算法、floyd-warhast算法、bellman-ford算法。
64.在框1004处,第一计算节点(例如,计算节点104)可以相对于一条或多条路径对五元组哈希值执行模数运算。在实施方式中,模数运算可以生成分别对应于一条或多条路径的一个或多个不同的模值。具有所有相同的五元组的数据包可以形成数据流。根据数据包通过的源端口,从源ip地址定向到目的ip地址的数据包可以被分配到不同的数据流。数据流可以根据明显对应于所述一条或多条路径的所述一个或多个不同模值被分配到所述一条或多条路径。
65.在框1006,第一计算节点(例如,计算节点104)可以根据模数运算的结果确定来自一条或多条路径的转发路径。在实施方式中,所述第一计算节点可以选择映射到由所述五元组表示的数据流的一条路径作为所述转发路径。具有相同五元组的到达数据包可以使用相同的转发路径。在其他实施方式中,所述第一计算节点可以基于这些路径上的流量来将所述一条或多条路径中的一条路径指定为所述转发路径。
66.回到图11中描述的方法1100,在框1102处,第一计算节点(例如,计算节点104)可以从所述一条或多条路径确定至少一第一转发路径和一第二转发路径。第一计算节点可以实现等成本多路径(ecmp)算法以确定源设备和目的地设备之间的所有可能路径。在实施中,所述一条或多条路径可以基于相关联的一个或多个不同模值来排序。第一计算节点可以选择映射到由五元组表示的数据流的一条路径以转发数据流。可选地,所述第一计算节点可以指定一个以上的路径来转发所述数据流。在实施方式中,所述第一计算节点可以将从所述源设备到所述目的地设备的所述数据包分配到不同的数据流,以使所述数据流被传输到所述源设备和所述目的地设备之间的所有可能的路径。在其他实施方式中,所述第一计算节点可以将所述数据流分布到所有可能路径的集合。
67.在框1104处,第一计算节点(例如,计算节点104)可以从源设备接收多个要被转发到目的地设备的第二数据包。所述多个第二数据包可以具有相同或不同的五元组。具有相同的五元组的数据包可以一次通过所述第一转发路径和所述第二转发路径中的一条路径作为数据流来传输。具有不同五元组的数据包可能形成不同的数据流,这些数据流经过不同的转发路径。在实施方式中,当所述多个第二数据包中的一个具有与图8中所述的第一数据包相同的五元组时,通过根据图8所示的实施例所产生的相同的转发路径传输该第二数据包。
68.在框1106处,第一计算节点(例如,计算节点104)可以将多个第二数据包分配到第一转发路径和第二转发路径,所述第一转发路径和所述第二转发路径中的每一个携带所述多个第二数据包的一部分。在实施方式中,第一计算节点可以基于哈希计算将数据流均匀地分布到源设备和目的地设备之间的所有可能路径(即,第一转发路径和第二转发路径)。
在其他实施方式中,所述第一转发路径和所述第二转发路径所承载的数据流可以是不均匀的。
69.在框1108处,第一计算节点(例如,计算节点104)可以确定第一转发路径和第二转发路径之一中的异常。所述异常可以与计算节点、交换机、计算节点的端口、交换机节点的端口等相关联,从而导致网络拥塞。第一计算节点可以使用上文有关图3描述的检测方法来检测异常。在实施中,所述第一计算节点可以分别生成对应于一条或多条转发路径的一个或多个会话。当在所述一个或多个会话中的一个会话中发生会话超时时,所述第一计算节点可以检测到所述异常。
70.在框1110,第一计算节点(例如,计算节点104)可以确定从源设备到目的地设备的第三转发路径,以重新路由数据流,即多个第二数据包中涉及异常的部分。在实施方式中,所述第一计算节点可以基于所述更新的网络拓扑数据使用所述哈希算法重新计算,并且通过另一源端口来选择不同的路径。
71.尽管上述方法块被描述为以特定顺序执行,但在一些实现中,一些或全部方法框可以以其他顺序执行,或并行执行。
72.尽管已经以特定于结构特征和/或方法行为的语言描述了实现方式,但是应当理解,权利要求不一定限于所描述的特定特征或行为。相反,所述具体特征和动作被公开为实现所要求保护的主题的示例性形式。附加地或替代地,操作中的一些或全部可以由一个或多个asic、fpga或其他硬件来实现。示例条款
73.a、一种由第一计算节点实现的方法,所述方法包括:经由网络获得与由至少一个第二计算节点实施的算法相关联的信息;经由所述网络获得存储的与所述至少一个第二计算节点相关联的网络拓扑数据;在第一计算节点接收来自源设备的要转发给目的地设备的第一数据包;根据与所述第一数据包和所述网络拓扑数据相关联的信息,确定从所述源设备到所述目的地设备的转发路径;并且通过所述转发路径将所述第一数据包传输到所述目的地设备。
74.b、根据段落a所述的方法,其中与所述第一数据包相关联的所述信息包括一组值,并且在所述第一计算节点根据与所述算法相关联的所述信息确定与所述第一数据包相关联的一组值还包括:执行由所述第一计算节点实施的哈希算法;至少将与由所述至少一第二计算节点实施的算法相关联的信息应用于所述哈希算法;以及使用所述哈希算法计算与所述第一数据包相关联的所述一组值。
75.c、根据段落a所述的方法,其中与所述第一数据包相关联的所述信息包括一组值,并且在所述第一计算节点根据与所述算法相关联的所述信息确定与所述第一数据包相关联的一组值还包括:确定与所述第一数据包相关联的五元组数据,所述五元组数据包括与所述源设备相关联的源ip地址、与所述源设备相关联的源端口号、与所述目的地设备相关联的目的地ip地址、与所述目的地设备相关联的目的地端口号、以及用于在所述网络中进行通信的协议;使用与由所述至少一个第二计算节点实施的算法相关联的信息来更新由所述第一计算节点实施的哈希算法;并且使用更新的哈希算法计算与所述五元组数据相对应的五元组哈希值作为与所述第一数据包相关联的所述一组值。
76.d、根据段落c所述的方法,其中,根据与所述第一数据包和所述网络拓扑数据相关
联的信息,确定从所述源设备到所述目的地设备的转发路径还包括:根据所述网络拓扑数据,确定从所述源设备到所述目的地设备的一条或多条路径;并根据所述五元组哈希值从所述一条或多条路径中确定所述转发路径。
77.e、根据段落d所述的方法,其中,根据与所述第一数据包和所述网络拓扑数据相关联的信息,确定从所述源设备到所述目的地设备的转发路径还包括:针对所述一条或多条路径对所述五元组哈希值执行模数运算;并且根据所述模数运算的结果从所述一条或多条路径中确定所述转发路径。
78.f、如段落a所述的方法,其中从所述源设备到所述目的地设备的所述转发路径至少包括第一转发路径和第二转发路径,并且所述方法还包括:从所述源设备接收要转发到所述目的地设备的多个第二数据包;将所述多个第二数据包分配到所述第一转发路径和所述第二转发路径,所述第一转发路径和所述第二转发路径中的每一个至少承载所述多个第二数据包的一部分;检测在所述第一转发路径和所述第二转发路径中的一个中发生的异常;并且确定从所述源设备到所述目的地设备的第三转发路径,重新路由由所述第一转发路径和所述第二转发路径中的与所述异常相关的一个承载的所述多个第二数据包的所述部分。
79.g、根据段落a所述的方法,其中,根据与所述第一数据包和所述网络拓扑数据相关联的所述一组值来确定从所述源设备到所述目的地设备的转发路径基于等成本多路径(ecmp)规划算法。
80.h、一个或多个机器可读介质,存储有机器可读指令,所述机器可读指令在由第一计算节点执行时使第一计算节点执行包括以下步骤的动作:经由网络获得与由至少一个第二计算节点实施的算法相关联的信息;经由所述网络获得存储的与所述至少一个第二计算节点相关联的网络拓扑数据;在第一计算节点接收来自源设备的要转发给目的地设备的第一数据包;根据与所述第一数据包和所述网络拓扑数据相关联的信息,确定从所述源设备到所述目的地设备的转发路径;并且通过所述转发路径将所述第一数据包传输到所述目的地设备。
81.i、如段落h所述的一个或多个机器可读介质,其中与所述第一数据包相关联的所述信息包括一组值,并且所述动作还包括:执行由所述第一计算节点实施的哈希算法;至少将与由所述至少一个第二计算节点实施的算法相关联的信息应用于所述哈希算法;以及使用所述哈希算法计算与所述第一数据包相关联的一组值。
82.j、如段落h所述的一个或多个机器可读介质,其中与所述第一数据包相关联的所述信息包括一组值,并且所述动作还包括:确定与所述第一数据包相关联的五元组数据,所述五元组数据包括与所述源设备相关联的源ip地址、与所述源设备相关联的源端口号、与所述目的地设备相关联的目的地ip地址、与所述目的地设备相关联的目的地端口号、以及用于在所述网络中进行通信的协议;使用与由所述至少一个第二计算节点实现的算法相关联的信息来更新由所述第一计算节点实施的哈希算法;并且使用更新的哈希算法计算与所述五元组数据相对应的五元组哈希值作为与所述第一数据包相关联的所述一组值。
83.k、如段落j所述的一个或多个机器可读介质,所述动作还包括:根据所述网络拓扑数据,确定从所述源设备到所述目的地设备的一条或多条路径;并根据所述五元组哈希值从所述一条或多条路径中确定所述转发路径。
84.l、如段落k所述的一种或多种机器可读介质,所述动作还包括:针对所述一条或多条路径对所述五元组哈希值执行模数运算;并且根据所述模数运算的结果从所述一条或多条路径中确定所述转发路径。
85.m、如段落h所述的一个或多个机器可读介质,所述动作还包括:从所述源设备接收要转发到所述目的地设备的多个第二数据包;将所述多个第二数据包分配到所述第一转发路径和所述第二转发路径,所述第一转发路径和所述第二转发路径中的每一个至少承载所述多个第二数据包的一部分;检测在所述第一转发路径和所述第二转发路径中的一个中发生的异常;并且确定从所述源设备到所述目的地设备的第三转发路径,以重新路由由所述第一转发路径和所述第二转发路径中的与所述异常相关的一个承载的所述多个第二数据包的所述部分。
86.n、如段落h所述的一个或多个机器可读介质,其中,根据与所述第一数据包和所述网络拓扑数据相关联的所述一组值来确定从所述源设备到所述目的地设备的转发路径基于等成本多路径(ecmp)规划算法。
87.o、第一计算节点,包括:一个或多个处理单元;以及存储机器可执行指令的存储器,所述机器可执行指令在由一个或多个处理单元执行时使所述一个或多个处理单元执行包括以下各项的动作:经由网络获得与由至少一个第二计算节点实施的算法相关联的信息;经由所述网络获得存储的与所述至少一个第二计算节点相关联的网络拓扑数据;在第一计算节点接收来自源设备的要转发给目的地设备的第一数据包;根据与所述第一数据包和所述网络拓扑数据相关联的信息,确定从所述源设备到所述目的地设备的转发路径;并且通过所述转发路径将所述第一数据包传输到所述目的地设备。
88.p、如段落o所述的第一计算节点,其中,与所述第一数据包相关联的所述信息包括一组值,并且所述动作还包括:确定与所述第一数据包相关联的五元组数据,所述五元组数据包括与所述源设备相关联的源ip地址、与所述源设备相关联的源端口号、与所述目的地设备相关联的目的地ip地址、与所述目的地设备相关联的目的地端口号、以及用于在所述网络中进行通信的协议;使用与由所述至少一个第二计算节点实现的算法相关联的信息来更新由所述第一计算节点实施的哈希算法;并且使用更新的哈希算法计算与所述五元组数据相对应的五元组哈希值作为与所述第一数据包相关联的所述一组值。
89.q、如段落p所述的第一计算节点,其中与所述第一数据包相关联的所述信息包括一组值,并且所述动作还包括:根据所述网络拓扑数据,确定从所述源设备到所述目的地设备的一条或多条路径;并根据所述五元组哈希值从所述一条或多条路径中确定所述转发路径。
90.r、如段落q所述的第一计算节点,所述动作还包括:针对所述一条或多条路径对所述五元组哈希值执行模数运算;并且根据所述模数运算的结果从所述一条或多条路径中确定所述转发路径。
91.s、如段落o所述的第一计算节点,所述动作还包括:从所述源设备接收要转发到所述目的地设备的多个第二数据包;将所述多个第二数据包分配到所述第一转发路径和所述第二转发路径,所述第一转发路径和所述第二转发路径中的每一个至少承载所述多个第二数据包的一部分;检测在所述第一转发路径和所述第二转发路径中的一个中发生的异常;并且确定从所述源设备到所述目的地设备的第三转发路径,以重新路由由所述第一转发路
径和所述第二转发路径中的与所述异常相关的一个承载的所述多个第二数据包的所述部分。
92.t、如段落o所述的第一计算节点,其中,根据与所述第一数据包和所述网络拓扑数据相关联的所述一组值来确定从所述源设备到所述目的地设备的转发路径基于等成本多路径(ecmp)规划算法。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献