笛卡尔拓扑中基于转弯的无死锁路由的制作方法

文档序号:29944523发布日期:2022-05-07 15:40阅读:90来源:国知局
笛卡尔拓扑中基于转弯的无死锁路由的制作方法

1.这里描述的实施方式总体上涉及数据通信,并且特别涉及用于在具有笛卡尔拓扑的网络中进行无死锁路由的方法和系统。


背景技术:

2.通信网络通常包括多个网络元件,例如彼此互连的交换机或路由器。网络元件通常在将分组发送到选定的下一跳网络元件之前缓冲传入的分组,并采用流量控制措施来防止前一跳网络元件导致缓冲区溢出。当具有循环依赖的多个网络元件的缓冲区变满时,在网络中可能会出现死锁情况。死锁情况很可能发生在笛卡尔网络拓扑中,例如网状拓扑、环面拓扑、超立方体拓扑和hyperx拓扑。
3.避免死锁情况的分组路由方法在本领域中是已知的。例如,美国专利申请公开2019/0058651描述了在多维网络中使用距离等级路由分组。在完全连接的多维网络中的网络设备处接收分组,并且确定要路由到目的地网络设备的分组的所有可能的候选输出端口。候选输出端口对应于网络设备和目的地网络设备之间沿着多维网络的所有剩余未对齐维度的候选最小路径和候选非最小路径。在所有候选输出端口中选择最佳输出端口,并且通过最佳输出端口和使用下一距离等级将分组路由到网络中的下一跳。
4.美国专利10/404,574描述了一种包括网络接口和处理器的装置。网络接口被配置为与网络通信,该网络包括以具有多个维度的笛卡尔拓扑互连的多个交换机。处理器被配置为预定义笛卡尔拓扑的维度之间的顺序,以通过至少基于沿着从一个维度更改为与预定义顺序相反的另一维度的遍历到下一跳交换机的候选路由的交换机的相应数量来评估候选路由来搜索经由网络从源交换机到目的地交换机的优选路由,并配置网络中的一个或多个交换机以沿着优选路线将分组从源交换机路由到目的地交换机。
5.在名称为“hyperx:topology,routing,and packaging of efficient large-scale networks(hyperx:高效大规模网络的拓扑、路由和封装)”的论文中,2009年11月14至20日发表于“proceedings of the conference on high performance computing networking,storage and analysis(高性能计算网络、存储和分析会议论文集)”,作者考虑了超立方体和扁平蝴蝶拓扑的扩展,hyperx,并给出了自适应路由算法dal。


技术实现要素:

6.在此描述的实施方式提供了一种包括网络接口和处理器的装置。网络接口被配置为与包括以笛卡尔拓扑互连的多个网络元件的网络进行通信。处理器被配置为定义所述拓扑中的第一组转弯和第二组转弯,其中所述第一组中的每个转弯和所述第二组中的每个转弯包括从前一网络元件到当前网络元件的输入跳和从所述当前网络元件到下一网络元件的输出跳。基于第一组和第二组中的转弯,处理器被配置为指定规则,当其应用于遍历相应网络元件的分组时,保证在所述网络中不发生死锁情况。为给定网络元件指定的所述规则包括(i)将规则从一个或多个输入端口转发到一个或多个输出端口,以便到达耦合到所述
网络的给定目标,而无需遍历所述第二组的任何所述转弯,以及(ii)虚拟通道(vl)修改规则,用于将遍历所述第一组的转弯并分配给第一vl的分组重新分配给不同的第二vl。处理器还被配置为所述给定的网络元件配置有所述规则。
7.在一些实施方式中,处理器被配置为识别在从输入端口到输出端口遍历所述给定网络元件时发生的给定转弯,并(i)取决于所述给定转弯是否属于所述第一组,为分配给所述第一vl的分组指定至少一个所述规则,以及(ii)取决于所述给定转弯是否属于所述第二组,为分配给所述第二vl的分组指定至少一个所述规则。在其他实施方式中,处理器被配置为响应于检测到所述给定转弯属于所述第二组,指定禁止所述给定转弯的转发规则。在其他实施方式中,处理器被配置为响应于检测到遍历所述给定转弯的分组属于所述第一组,指定禁止所述给定转弯的转发规则。
8.在一个实施方式中,处理器被配置为响应于检测到所述给定转弯属于所述第一组,指定(i)允许所述给定转弯的转发规则和(ii)将所述分组中的所述vl修改为所述第二vl的相应vl修改规则。在另一实施方式中,处理器被配置为指定转发规则,所述转发规则仅当遍历所述转弯减少到所述给定目标的剩余跳数时才允许从输入端口到输出端口的转弯。在又一个实施方式中,处理器被配置为指定转发规则,所述转发规则允许不减少到所述给定目标的剩余跳数但满足每条路径的指定总跳数的转弯。
9.在一些实施方式中,处理器被配置为响应于检测到从所述给定网络元件到所述目标的路径必须包含属于所述第二组的转弯,指定禁止遍历所述路径的转发规则。在其他实施方式中,笛卡尔拓扑包括从笛卡尔拓扑的列表中选择的笛卡尔拓扑,所述笛卡尔拓扑包括所述网状、环面、超立方体、广义超立方体和hyperx拓扑。在其他实施方式中,笛卡尔hyperx拓扑包括多达三个维度,并且其中所述处理器被配置为指定所述规则,以便保证在所述网络中的任何一对网络元件之间,至少有一条路径为最多三跳。在其他实施方式中,处理器被配置为指定vl修改规则,所述vl修改规则禁止修改分配给所述第二vl的分组的vl。
10.根据这里描述的实施方式,另外提供了一种方法,包括在与网络通信的网络管理器中,所述网络包括以笛卡尔拓扑互连的多个网络元件,定义所述拓扑中的第一组转弯和第二组转弯,其中所述第一组中的每个转弯和所述第二组中的每个转弯包括从前一网络元件到当前网络元件的输入跳和从所述当前网络元件到下一网络元件的输出跳。基于所述第一组和所述第二组中的转弯,指定规则,当其应用于遍历相应网络元件的分组时,保证在所述网络中不发生死锁情况,其中为给定网络元件指定的所述规则包括(i)将规则从一个或多个输入端口转发到一个或多个输出端口,以便到达耦合到所述网络的给定目标,而无需遍历所述第二组的任何所述转弯,以及(ii)虚拟通道(vl)修改规则,用于将遍历所述第一组的转弯并分配给第一vl的分组重新分配给不同的第二vl。给定的网络元件配置有所述规则。
11.根据这里描述的另一实施方式,另外提供了一种通信网络,该通信网络包括以笛卡尔拓扑互连的多个网络元件,其中所述网络元件被配置为根据规则转发分组,当其应用于遍历相应网络元件的分组时,保证在所述网络中不发生死锁情况。基于所述笛卡尔拓扑中的第一组转弯和第二组转弯指定所述规则,所述第一组中的每个转弯和所述第二组中的每个转弯包括从前一网络元件到当前网络元件的输入跳和从所述当前网络元件到下一网络元件的输出跳。为给定网络元件指定的所述规则包括(i)将规则从一个或多个输入端口
转发到一个或多个输出端口,以便到达耦合到所述网络的给定目标,而无需遍历所述第二组的任何所述转弯,以及(ii)虚拟通道(vl)修改规则,用于将遍历所述第一组的转弯并分配给第一vl的分组重新分配给不同的第二vl。
12.根据在此描述的实施方式,另外提供了一种通信方法,包括在包括以笛卡尔拓扑互连的多个网络元件的通信网络中,由所述网络元件根据规则转发分组,当所述规则应用于遍历相应网络元件的分组时,保证在所述网络中不发生死锁情况。基于所述笛卡尔拓扑中的第一组转弯和第二组转弯指定所述规则,所述第一组中的每个转弯和所述第二组中的每个转弯包括从前一网络元件到当前网络元件的输入跳和从所述当前网络元件到下一网络元件的输出跳。为给定网络元件指定的所述规则包括(i)将规则从一个或多个输入端口转发到一个或多个输出端口,以便到达耦合到所述网络的给定目标,而无需遍历所述第二组的任何所述转弯,以及(ii)虚拟通道(vl)修改规则,用于将遍历所述第一组的转弯并分配给第一vl的分组重新分配给不同的第二vl。
13.结合附图,从其实施方式的以下详细描述中将更全面地理解这些和其他实施方式,其中:
附图说明
14.图1a是示意性地示出了根据本文描述的实施方式的计算系统的框图,其中网络节点通过具有笛卡尔三维(3d)hyperx拓扑的网络进行通信;
15.图1b是示意性地示出了根据本文描述的另一实施方式的计算系统的框图,其中网络节点通过具有笛卡尔三维(3d)网络拓扑的网络进行通信;
16.图2是示意性地示出了根据本文描述的实施方式的网络交换机的框图;
17.图3是示意性地示出了根据本文描述的实施方式的跨两个维度的依赖循环的图;
18.图4是示意性地示出了根据本文描述的实施方式的跨三个维度的依赖循环的图;以及
19.图5是示意性地示出了根据本文描述的实施方式的用于为具有笛卡尔拓扑的网络中的交换机指定转发规则的方法的流程图。
具体实施方式
20.概述
21.遍历通信网络的分组通常在沿路由的交换机中临时缓冲。在采用无损链路级流量控制的网络中,交换机通常向其前一跳邻居交换机发送指示交换机缓冲区状态的流量控制通知。前一跳交换机基于这些通知限制相关链路上的分组传输。在某些实际情况下,循环互连的多个交换机的缓冲区已满,导致这些交换机无法进一步发送或接收分组。为简洁起见,这种不希望的情况被称为“死锁情况”或简称为“死锁”。
22.在某些网络中,交换机以笛卡尔拓扑布置,例如网状、环面、超立方体、广义超立方体或hyperx。笛卡尔拓扑中的交换机在虚拟网格中互连,并且可以通过各自的笛卡尔坐标来识别。笛卡尔拓扑可以具有任何合适的维度,例如一维(1d)、二维(2d)、三维(3d)或更高维度。
23.在此描述的实施方式提供了用于在具有笛卡尔拓扑的网络中进行无死锁路由的
改进方法和系统。原则上,可以通过以下方式打破依赖循环以防止死锁:(i)防止经由参与依赖循环的交换机中的至少一个进行路由,以及(ii)修改遍历依赖循环中的交换机之一的分组的vl。然而,限制网络中的路径使用会降低路径多样性和路由灵活性,并且可能排除网络元件之间的最短路径。此外,使用大量的vl需要大的缓冲存储空间,这是昂贵的并且并不总是可用的。
24.在所公开的实施方式中,仅使用两个vl就保证了笛卡尔3d拓扑(和较低维度)的无死锁路由。此外,对于某些拓扑,例如笛卡尔hyperx拓扑,可以保证生成最短路径。例如,在3d hyperx拓扑中,保证生成长度最多为三跳(在这种情况下,三也是网络直径)的所有路径,其中包括所有最短路径。
25.在一些实施方式中,网络管理计算机也称为“网络管理器”,连接到网络并用于配置网络交换机。
26.为此,网络管理器在笛卡尔拓扑中定义了多个转弯类型,其中每个转弯沿第一维遍历第一跳,接着是沿第二维遍历第二跳。第一维度和第二维度可以具有相同或不同的各自身份,并且第一跳和第二跳可以具有相同或不同的方向。每个转弯类型都由第一跳和第二跳的身份和方向定义。根据转弯类型,网络管理器指定提供给网络元件以控制分组转发的规则,和对遍历网络的分组的vl分配,同时避免死锁情况。
27.考虑包括网络接口和处理器的装置(例如,网络管理器)的实施方式。网络接口与包括以笛卡尔拓扑互连的多个网络元件的网络通信。处理器定义拓扑中的第一组转弯和第二组转弯,其中第一组中的每个转弯和第二组中的每个转弯包括从前一网络元件到当前网络元件的输入跳和从当前网络元件到下一网络元件的输出跳。基于第一组和第二组中的转弯,处理器指定规则,当其应用于遍历相应网络元件的分组时,保证网络中不发生死锁情况。为给定网络元件指定的规则包括(i)将规则从一个或多个输入端口转发到一个或多个输出端口,以便到达耦合到网络的给定目标,而无需遍历第二组的任何转弯,以及(ii)虚拟通道(vl)修改规则,用于将遍历第一组的转弯并分配给第一vl的分组重新分配给不同的第二vl。处理器为给定的网络元件配置有指定的规则。
28.在一些实施方式中,处理器识别在从输入端口到输出端口遍历给定网络元件时发生的给定转弯,并(i)取决于给定转弯是否属于第一组,为分配给所述第一vl的分组指定至少一个规则,以及(ii)取决于给定转弯是否属于第二组,为分配给第二vl的分组指定至少一个规则。
29.在一些实施方式中,处理器避免修改分配给第二vl的分组的vl,在这种情况下仅使用两个vl。
30.处理器可以以各种方式指定转发规则。例如,处理器可以独立于分组vl指定禁止第一组和第二组中的所有转弯所依据的规则。作为另一示例,处理器可以为分配给第一vl的分组指定规则,根据这些规则,第一组中的转弯被允许,但是当被占用时,分组vl必须增加到第二vl。在这个示例中,对于分配给第二个vl的分组,第二组中的转弯被禁止。
31.在一些实施方式中,为了保证最短路径,处理器指定转发规则,该规则仅当遍历转弯减少到给定目标的剩余跳数时才允许从输入端口到输出端口的转弯。或者,处理器可以指定转发规则,该规则允许不减少到给定目标的剩余跳数但满足每条路径的指定总跳数的转弯。这限制了网络中的最大路径长度。
32.在一些实施方式中,从网络元件到目标的唯一可用路径包含禁止转弯。这意味着到达给定交换机并目的地为目标的分组无法进一步转发。为了防止此类事件,处理器检查到目标的可能路径,并响应于检测到从给定网络元件到目标的路径必须包含属于第二组的转弯,指定禁止遍历该路径的转发规则.
33.所公开的实施方式适用于笛卡尔拓扑,包括笛卡尔hyperx拓扑。对于最多包含三个维度的hyperx拓扑,处理器可以指定规则,以保证网络中任意一对网络元件之间至少有一条最多三跳的路径。请注意,处理器也可能生成更长的路径。
34.在所公开的技术中,保证笛卡尔拓扑中的无死锁路由的规则是基于两组预定义的转弯来指定的。仅当vl被修改为第二vl时,对于分配给第一vl的分组,允许在第一组中的转弯。对于分配给第二组的分组,禁止在第二组中转弯。在3d或更低维的拓扑中,导出的规则只需要使用两个vl,从而节省了缓冲存储空间。此外,在某些拓扑(例如笛卡尔hyperx拓扑)中,导出的规则会导致高度的路径多样性,并保证网络中任意两个网络元件之间的最短路径。
35.系统描述
36.图1a是示意性地示出了根据在此描述的实施方式的计算系统20的框图,其中网络节点通过具有笛卡尔三维(3d)hyperx拓扑的网络进行通信。
37.计算系统20包括多个主机计算机24,它们通过网络30彼此通信并因此用作网络的网络节点。网络节点24通常经由相应的网络接口控制器(nic)(未示出)连接到网络30。在图1a中,网络节点表示为“nd”。
38.网络30(以及将在下面描述的图1b的网络31)可以包括任何合适的通信网络,例如infiniband(ib)交换结构,或其他种类的分组网络,例如以太网或因特网协议(ip)网络。或者,网络30可以根据任何其他合适的标准或协议进行操作。
39.网络30通常包括多个网络元件32,它们根据一些预定义的网络拓扑经由物理链路34互连。网络元件32可以包括例如交换机、路由器、网桥、网关或任何其他合适类型的网络元件。在诸如图1a中描绘的hyperx拓扑的全连接笛卡尔拓扑中,每个网络节点24使用物理链路34连接到网络中的相应交换机,并且能够通过网络与所有其他网络节点通信。
40.网络30可以包括一个或多个交换机,这些交换机与网络中的其他交换机互连但不连接到任何网络节点24。在图1a的示例中,每个交换机连接到两个网络节点。然而,实际上,笛卡尔拓扑中的每个交换机都可以连接到任何其他合适数量的网络节点。此外,不同的交换机可以连接到各自不同数量的网络节点。通常,网络节点的数量受不用于连接到其他交换机的交换机端口数量的限制。
41.使用物理链路34直接相互连接的网络30中的交换机被称为“邻居交换机”。从给定交换机到邻居交换机的分组遍历底层拓扑中的一“跳”。在笛卡尔拓扑中,交换机被分配笛卡尔坐标,这将交换机与底层笛卡尔网格上的相应顶点相关联。每对顶点在一个网格单元中沿给定维度分开(例如,网格单元等于整数“1”)。例如,在3d笛卡尔拓扑中,笛卡尔坐标可以由三个整数(cx,cy,cz)指定。例如,笛卡尔坐标(0,1,2)相对于原点笛卡尔坐标(0,0,0)在y维上有一个网格单元,在z维上有两个网格单元不同。在笛卡尔拓扑中,直接互连的两个相邻交换机的笛卡尔坐标仅在一个且仅一个拓扑维度上存在一个或多个网格单元不同。
42.例如,网格或超立方体拓扑中两个相邻交换机的笛卡尔坐标在拓扑维度之一中仅
一个网格单元不同。相比之下,在环面、广义超立方体和hyperx拓扑中,两个连接的交换机的笛卡尔坐标可能在一个网格单元中或在拓扑维度之一的多个网格单元中不同。例如,在hyperx拓扑中,原点坐标(0,0,0)处的交换机直接连接到坐标(0,0,2)处的交换机,但不直接连接到坐标(0,1,1)处的交换机。在笛卡尔拓扑中,每个维度的网络元件数量可以跨所有维度通用,或者,可以在不同维度之间变化。
43.在下面的描述中,为简洁起见,“笛卡尔坐标”也简称为“坐标”。
44.下面将描述的实施方式适用于各种笛卡尔拓扑,包括网状、环面、超立方体、广义超立方体和hyperx。假设d维笛卡尔拓扑中的每个交换机都与底层虚拟网格的d维坐标相关联。在网状拓扑中,交换机布置在d维虚拟网格中,并且每个交换机连接到其在虚拟网格中具有最近的相应坐标的相邻交换机。环面拓扑结构与网状拓扑结构相似,但与网状拓扑不同的是,环面拓扑还包括虚拟网格边缘处的交换机之间的循环连接。超立方体拓扑是一种笛卡尔网状拓扑,沿每个维度仅遍历一跳。广义超立方体拓扑通过将所有交换机沿某个轴互连而不是仅互连最近坐标的相邻交换机来扩展环面拓扑。在笛卡尔hyperx拓扑中,每个交换机都连接到每个d维中的所有其他交换机。
45.d维笛卡尔拓扑中的路由(或路径)遍历一个或多个跳的序列,其中每跳沿该路由从一个交换机(或源节点)遍历到一个连续的交换机(或目的地节点)。每跳遍历拓扑维度之一,对应于两个交换机之间变化的拓扑坐标。
46.在图1a的示例中,网络30的交换机被布置在笛卡尔3d hyperx拓扑中。在笛卡尔hyperx拓扑中,每个交换机都沿着每个维度连接到所有其他交换机。在图1a中,交换机用沿x、y和z维度的相应3d坐标标记。在本示例中,笛卡尔3d hyperx拓扑包括沿x和y维度的四个交换机和沿z维度的三个交换机。
47.图1b是示意性地示出了根据在此描述的另一实施方式的计算系统90的框图,其中网络节点通过具有笛卡尔三维(3d)网状拓扑的网络31进行通信。
48.在本示例中,根据网状拓扑,网络31包括使用3d笛卡尔网格中的物理链路34互连的多个交换机32。在此示例中,网状拓扑包括沿x和y维度中的每一个的三个交换机,以及沿z维度的两个交换机。网络节点24耦合到交换机32并且可以通过网络彼此通信。
49.以上关于图1a的计算系统20的描述类似地适用于图1b的计算系统90。
50.这里公开的实施方式适用于虚拟网格上的所有交换机(32)和物理链路(34)都存在并起作用的原始网络,以及其中至少一个交换机或物理链路丢失或失败的故障网络。
51.网络30和31使用中央网络管理计算机进行管理,这里称为网络管理器36。图1a中描绘了描绘示例网络管理器36的细节的框图,但为了清楚起见从图1b中省略。网络管理器包括用于连接到相关网络30或31的接口44,以及经由总线49(例如,外围组件互连快速(pcie)总线或任何其他合适的总线)耦合到接口44和存储器48的处理器46。在一些其他实施方式中,网络管理器36可以在网络节点24之一之上运行。网络管理器使网络管理员能够设置网络并经由接口44向网络元件提供路由信息。或者,提供的至少一部分由网络管理员自动执行。
52.在一些实施方式中,网络管理器36知道底层网络拓扑,即网络元件的身份和它们互连的方式,例如,如由网络管理员经由合适的接口(未示出)手动配置的。替代地或附加地,网络管理器通过询问网络元件32来自动学习网络拓扑。
53.在其他任务中,网络管理器36基于网络拓扑指定网络元件对之间的路由,并将相关路由信息配置到属于这些路由的网络元件。
54.在一些实施方式中,网络管理器36将存储器48中的底层拓扑表示为拓扑50,包括一组交换机坐标和它们之间的连接。在一些实施方式中,为了控制分组转发和vl使用,网络管理器在拓扑50中定义了多种类型的转弯52,其中每个转弯遍历两个连续的跳。基于定义的转弯,网络管理器指定要在各个交换机内应用以防止死锁情况的规则56。网络管理器还可以存储指定对允许路径的附加限制的一个或多个策略54,例如每条路径的最大跳数。网络管理器根据规则56例如经由接口44配置网络中的交换机。
55.尽管在图1a的计算系统20和图1b的计算系统90中,网络管理器36在专用网络节点上实现,但在替代实施方式中,网络管理器可以在网络节点24之一内实现,并且其功能通过网络节点的处理器执行。进一步替代地,网络中的交换机中的至少一个可以包括附接到处理器的“受管交换机”,并且网络管理器(或其一部分)可以驻留在受管交换机上。
56.网络元件结构和功能
57.图2是示意性地示出了根据在此描述的实施方式的网络交换机32的框图。尽管下面的描述主要涉及网络交换机,但是所公开的技术可以与各种其他类型的网络元件一起使用,例如路由器。
58.图2的描述主要涉及图1a的网络30中的交换机32,但类似地适用于图1b的网络31中的交换机32。
59.交换机32包括多个端口64,用于经由物理链路34与网络30交换数据分组。在一些实施方式中,给定端口64可以用作传入分组的入口接口或用作传出分组的出口接口。或者,端口64可以用作入口和出口接口两者。
60.遍历网络的分组可能属于不同的流。在一些实施方式中,网络30中的物理链路34均由多个逻辑通信链路共享,也称为虚拟信道。在infiniband中,虚拟信道也称为虚拟通道(vl)。
61.在本示例实施方式中,交换机32包括耦合到数据存储器68的分组处理电路66,该数据存储器包括vl0缓冲区72和vl1缓冲区74,这些缓冲区被分配用于存储经由端口64的入口接口从网络到达的分组。vl0缓冲区和vl1缓冲区也称为“虚拟缓冲区”。接收到的分组被分配到vl0或vl1,并根据分组报头中携带的相应vl值存储在虚拟缓冲区中。在一个实施方式中,交换机将经由公共端口接收的并且属于一个或多个不同流的分组存储在相同的vl0或vl1缓冲区中。
62.在一个实施方式中,交换机32经由端口64接收分配给表示为“vl0”的输入vl值的分组,并且在将分组经由端口64的出口接口之一发回网络之前用表示为“vl1”的不同输出vl值替换分组报头中的该输入vl值。在一些实施方式中,从输入vl值到输出vl值的映射是由网络管理器提供给交换机的路由信息(例如,规则56)的一部分。在以下公开的一些实施方式中,改变分配给遍历交换机的分组的vl值用于防止具有笛卡尔拓扑的网络中的死锁情况。在一些实施方式中,基于指定vl修改信息的规定规则,交换机决定将从vl0接收的分组的vl修改为vl1,用于由该交换机作为中间的两跳形成的某些类型的转弯。
63.在示例交换机32中,分组处理电路66还耦合到存储器76,其存储用于在端口64之间转发分组的转发规则和指定vl修改条件的vl修改规则。在本示例中,转发规则在一个或
多个转发表78中实现,而vl修改规则在vl-到-vl表80中实现。在替代实施方式中,可以在交换机中使用任何其他合适的方法实现规则。
64.通常,每个分组都属于某个流。通过基于配置的转发规则将某个流路由到某个端口,交换机使该流的分组通过底层网络(例如,网络30)通过某个路由路径进行路由。
65.在本专利申请和权利要求的上下文中,术语“分组”用于描述通过网络路由的基本数据单元。不同的网络类型和通信协议对此类数据单元使用不同的术语,例如分组、帧或信元。所有这些数据单元在本文中都被视为分组。
66.交换机32包括交换机控制器82,其配置规则存储器76中的规则以应用期望的路由计划。通过控制路由计划,交换机32能够使分组通过底层网络(例如,网络30)遍历各种路由路径。
67.在一些实施方式中,交换机32通过允许在给定入口接口中接收的分组经由多个出口接口之一路由来支持自适应路由。在转发表78中配置从入口端口到一个或多个出口端口的映射。为了重新路由给定的流,交换机控制器82为交换机经由入口接口接收的流分组选择不同的出口接口。或者,交换机32可以保持一组路由规则,例如,每个流。在某些情况下,路由分组而不会记录任何信息以备将来使用。
68.在一些实施方式中,转发分组基于分组报头中的某些字段。这些字段可以包括例如源地址和目的地地址、底层协议以及源和目的地端口号中的至少一个。在一些实施方式中,转发分组包括在分组报头中的一个或多个字段上计算散列函数,并且使用结果散列值来为分组选择相应的出口接口。
69.图1a中的计算系统20和网络管理器36、图1b中的计算系统90和图2中的交换机32的配置是示例配置,选择它们纯粹是为了概念清楚。在替代实施方式中,也可以使用任何其他合适的配置。网络管理器36和交换机32的不同元件可以在硬件中实现,例如使用一个或多个专用集成电路(asic)或现场可编程门阵列(fpga)。在替代实施方式中,网络管理器36和/或交换机32的一些元件(例如,处理器46和/或交换机控制器82)可以在合适的处理器上执行的软件中或者使用硬件和软件元件的组合来实现。
70.对于理解本技术的原理不是必需的元件,例如各种接口、寻址电路、定时和排序电路以及调试电路,为清楚起见,已经从图1a、图1b和图2中省略。
71.在一些实施方式中,处理器46和/或交换机控制器82可以包括通用处理器,其在软件中被编程以执行这里描述的网络管理器和/或交换机功能。软件可以通过例如网络以电子形式下载到处理器,或者它可以替代地或附加地提供和/或存储在非暂时性有形介质上,例如磁、光或电子存储器。
72.笛卡尔拓扑中的路由和死锁预防
73.如上所述,在一些拓扑中,例如在笛卡尔拓扑中,彼此直接连接的两个相邻交换机之间的路径在本文中也被称为“跳”。从给定交换机到底层拓扑中的任何其他交换机的路径可以包括一个或多个跳。在笛卡尔拓扑中,分组只能沿着底层笛卡尔网格遍历交换机。这意味着不允许对角线路径。
74.在一些实施方式中,笛卡尔拓扑中的每一跳与维度和符号属性相关联。当跳遍历到遍历维度中较高的坐标值时,跳的符号被称为“正”。类似地,当跳遍历到遍历维度中较低的坐标值时,跳的符号被称为“负”。
75.如上所述,在一些实施方式中,网络管理器36在笛卡尔拓扑中定义多种类型的转弯(52)。每个转弯在第一方向(正或负)上沿着第一维度遍历第一跳,接着是在第二方向上沿着第二维度遍历第二跳。每个转弯类型可以由第一维度和第二维度的身份以及第一跳和第二跳的方向(例如,符号属性)来定义。转弯的第一跳和第二跳在本文中也分别称为“输入跳”和“输出跳”。包括输入跳和之后的输出跳的序列因此形成笛卡尔拓扑中的相应转弯。例如,在y维度的正方向上遍历输入跳,然后在x维度的负方向上遍历输出跳的转弯表示为“+y到-x”。
76.现在考虑图1a中的笛卡尔3d hyperx拓扑,其中三个维度在表示为x、y和z的三个相应维度中指定。在本示例中,x和y维度中的每一个都包括四个交换机,并且z维度包括三个交换机。笛卡尔拓扑中的每个交换机32由笛卡尔3d坐标识别,该坐标包括在相应范围(0

3)、(0

3)和(0

2)中表示为(cx,cy,cz)的坐标值。例如,位于原点坐标cx=cy=cz=0的交换机表示为“s000”,坐标cx=3、cy=2、cz=1的交换机表示为“s321”。
77.在图1a的3d hyperx拓扑中,每个交换机使用相应的物理链路34沿每个x、y和z维度直接连接到所有其他交换机。例如,交换机s110沿x维度直接连接到交换机s010、s210和s310,沿y维度直接连接到交换机s100、s120和s130,沿z维度直接连接到s111和s112。
78.在笛卡尔3d hyperx拓扑中,3d坐标在一维、二维或三维不同的交换机之间的最短路径分别包括单跳路径、两跳路径和三跳路径。注意,最短路径不一定是唯一的。例如,从s110到s230的两跳路径可以遍历中间交换机s210或s130。
79.接下来考虑在笛卡尔拓扑中产生死锁的条件。具体取决于包括转弯的两跳的维度和符号属性,条件将使用拓扑中的某些类型的转弯来指定。为方便起见,对于笛卡尔3d拓扑讨论了死锁的条件。
80.在定义转弯类型时,使用以下跳符号:在x、y或z维度中具有正号属性的跳分别表示为+x、+y或+z。在x、y或z维度中具有负号属性的跳分别表示为-x、-y或-z。在x、y或z维度中具有正号或负号属性的跳分别表示为
±
x、
±
y或
±
z。
81.依赖循环包括一个或多个模式流所遍历的转弯的循环序列。当依赖循环中涉及的交换机的缓冲区变满时,会发生死锁情况,从而阻止从这些交换机中的任何一个进一步传输分组。可以通过(i)禁止网络中的任何流遍历依赖循环中的至少一个转弯,或(ii)修改分配给遍历依赖循环中的一个转弯的分组的vl值来防止死锁情况。
82.在没有vl修改的情况下,可以通过沿着每个维度遍历相反方向的两跳来形成循环路径。在单个维度(例如x维度)中,依赖循环可能发生在包括从-x到+x的至少一个转弯和从+x到-x的另一转弯的路径中。因此,当vl值保持不变时,防止所有-x到x、-y到y和-z到z就足够了。
83.在二维中,例如x和y,依赖循环可能发生在路径中,包括(i)从
±
y到+x的至少一个转弯和从-x到
±
y的另一转弯,或(ii)从
±
x到+y的至少一个转弯和从-y到
±
x的另一转弯。
84.这里描述了防止二维和三维死锁。
85.图3是示意性地示出了根据在此描述的实施方式的跨两个维度的依赖循环的图。图3描绘了在具有笛卡尔3d拓扑的网络中表示为s1

s4的交换机84。每个交换机84包括缓冲区86,用于存储从前一交换机的缓冲区接收的分组并且用于将分组发送到后续交换机的缓冲区86。循环路径s1-》s2-》s3-》s4-》s1在维度x和y上形成依赖循环。
86.在图3中,交换机s1、s2、s3和s4被分配了相应的坐标,如表1所示。sw/坐标cxcycz变化s1124 s2104-ys3304+xs4324+ys1124-x
87.表1:分配给图3中的交换机的坐标
88.如图3所示,从s1经由s2到s3的路径创建了从-y到+x的转弯,从s2经由s3到s4的路径创建了从+x到+y的转弯,从s3经由s4到s1的路径创建了从+y到-x的转弯,从s4经由s1到s2的路径创建了从-x到-y的转弯。
89.当s1

s4的缓冲区86都被分配给公共vl时,依赖循环可能被网络管理器36打破,该网络管理器36指定禁止转弯之一的规则,例如,以虚线描绘的-y到+x。或者,允许所有转弯,但网络管理器指定规则,其强制在一个转弯内将vl从vl0修改为vl1,例如,从-y到+x的转弯。
90.在一些实施方式中,网络管理器36指定将应用于分配给vl0的分组的第一组转弯和将应用于分配给vl1的分组的第二组转弯。第一组指定分组vl必须从vl0修改为vl1的转弯。第二组指定禁止分配给vl1的分组的转弯。
91.在一些实施方式中,从其导出防止跨任何维度对的死锁条件的规则的第一组和第二组转弯由下式给出:第一组转弯-(
±
y到+x)、(
±
z到+x)和(
±
z到+y),第二组转弯-(-y到
±
x)、(-z到
±
x)和(-z到
±
y)。
92.图4是示意性地示出了根据在此描述的实施方式的跨三个维度的依赖循环的图。
93.图4描绘了表示为s1

s6的交换机84,其属于具有笛卡尔3d拓扑的网络。每个交换机84包括缓冲区86,用于存储从前一交换机的缓冲区接收的分组并且用于将分组发送到后续交换机的缓冲区。循环路径s1-》s2-》s3-》s4-》s5-》s6-》s1在维度x、y和z上形成依赖循环。
94.在图4中,交换机s1

s6被分配了相应的坐标,如表2所示。sw/坐标cxcycz变化s1324 s2321-zs3301-ys4101-xs5121+ys6124+zs1324+x
95.表2:分配给图4中的交换机的坐标
96.如图4所示,从s1经由s2到s3的路径创建了从-z到-y的转弯,从s2经由s3到s4的路径创建了从-y到-x的转弯,从s3经由s4到s5的路径创建了从-x到+y的转弯,从s4经由s5到s6的路径创建了从+y到+z的转弯,从s5经由s6到s1的路径创建了从+z到+x的转弯。
97.当s1

s6的缓冲区86都分配给公共vl时,依赖循环可能会被网络管理器打破,该网络管理器指定禁止vl0中的一个转弯的规则,例如,+z到+x。但是,如果将vl修改为vl1,则允许该转弯。作为另一示例,为了打破依赖循环,可以在vl0中允许转弯,但在vl1中禁止转弯,例如,-z到-y。
98.在一些实施方式中,从其导出防止跨三个维度的死锁条件的规则的第一组和第二组转弯由下式给出:第一组-(
±
y到+x)、(
±
z到+x)和(
±
z到+y)和第二组-(-y到
±
x)、(-z到
±
x)和(-z到
±
y)。
99.在实施方式中,表3总结了为第一组和第二组转弯中的3d笛卡尔拓扑指定的转弯的类型。
100.表3:在第一组和第二组转弯中为3d笛卡尔拓扑指定的转弯。
101.指定转发规则和vl修改规则的方法
102.在一些实施方式中,为了防止具有笛卡尔拓扑的网络中的死锁情况,处理器基于属于第一组转弯的转弯指定要应用于分配给vl0的分组的规则,并基于第二组转弯中指定的转弯指定要应用于分配给vl1的分组的规则。在示例实施方式中,网络包括3d笛卡尔拓扑,在这种情况下,第一组和第二组中的转弯数可以如上表3中给出的那样指定。
103.图5是示意性地示出了根据在此描述的实施方式的用于为具有笛卡尔拓扑的网络中的交换机指定转发规则的方法的流程图。
104.该方法将被描述为由网络管理器36的处理器46执行以指定要提供给图1a的网络30中的交换机32的转发规则。该方法类似地适用于其他合适网络中的交换机32,例如图1b的网络31。进一步假设每个网络节点24具有例如由网络管理器分配的唯一地址或本地标识符(lid)。尽管将针对单个交换机32描述该方法,但实际上该方法通常应用于网络30中的多个交换机32,例如,应用于所有或部分交换机32。
105.该方法开始于处理器46在第一lid选择步骤100处选择第一lid。第一lid可以是分别分配给网络节点24的任何lid。
106.在端口扫描步骤104处,处理器管理扫描底层交换机中的所有(输入端口、输出端口)对,其可以将经由输入端口接收的分组经由输出端口转发到当前lid。在规则指定步骤108处,处理器基于某些路由限制为当前输入端口和输出端口对指定转发规则(或多个转发规则)。此处给出了示例规则,对于经由底层交换机从输入跳到输出跳的给定转弯:
·
对于分配给vl0的分组,当检测到给定转弯属于第一组时,处理器指定禁止给定转弯的转发规则。
·
对于分配给vl0的分组,当检测到给定转弯属于第一组时,处理器指定允许给定转弯的转发规则,并在允许时指定与给定转弯对应的vl修改规则,用于修改从vl0到vl1的分组的vl。
·
对于分配给vl1的分组,当检测到给定转弯属于第二组时,处理器指定禁止给定转弯的规则。
·
对于分配给vl1的分组,处理器指定保持vl1值不变的规则。
107.在端口循环终止步骤112处,处理器检查是否已经扫描了交换机中的所有输入-输出端口对,如果没有,则循环回到步骤104以选择后续的输入和输出端口对。否则,处理器进行到lid循环终止步骤116以检查是否已经检查了网络中的所有lid。当在步骤116处存在尚未考虑的lid时,处理器在下一lid选择步骤120处选择这些lid之一并循环回到步骤104。
108.当在步骤116处处理完所有lid时,处理器进行到提供步骤124以向交换机提供指定规则。在步骤124之后,该方法终止。
109.如上所述,在一些实施方式中,基于被允许的第一组中的转弯指定的规则包括vl修改规则。在该实施方式中,对于经由交换机遍历属于第一组的转弯的分组,规则指定将vl修改为vl1。
110.在一些实施方式中,使用转发表在交换机内实现转发规则。在这样的实施方式中,为允许从输入端口到输出端口的转弯指定的转发规则将转发表中的输出端口与输入端口相关联。通常,多个输出端口可能与单个输入端口相关联,从而支持到目标的多个可能路径。这对于自适应路由和/或绕过故障链路可能很有用。在一个实施方式中,通过省略所讨论的输出端口和输入端口之间的关联来实现禁止给定转弯的转发规则。
111.在一些实施方式中,vl修改规则在vl-到-vl表中的交换机中实现。在这样的实施方式中,vl-到-vl表包含当被分配给vl0的分组遍历时,交换机将分组vl值修改为vl1的转弯。
112.基于其他政策的规则
113.上述规则主要用于防止网络中的死锁情况。在一些实施方式中,可以经由策略54施加额外的约束。例如,在各种应用中,从源节点到目的地的路径长度起着重要的作用,因此应该受到限制。
114.在笛卡尔拓扑中,从第一交换机到第二交换机的距离可以指定为从第一交换机到第二交换机遍历的跳数。经由给定交换机进行的转弯可能导致到目标的剩余跳数(例如,距离)减少、保持不变或增加。
115.当一个维度不同的坐标元素变为等于目标的对应坐标元素时,到目标的距离减小,例如,当目的地坐标为[1,2,3]时从[1,1,1]遍历到[1,1,3]。当变化的坐标元素与目标对应的坐标元素不同并保持不同时,到目标的距离保持不变,例如当目标坐标为[1,2,3]时从[1,1,1]遍历到[1,4,1]。当变化的坐标元素已经等于目标对应的坐标元素时到目标的距离增加,例如,当目标坐标为[1,2,3]时从[1,1,1]遍历到[3,1,1]。
[0116]
在一些实施方式中,处理器基于仅允许导致到目标的距离减小的转弯的策略来指定转发规则。在这样的实施方式中,处理器指定转发规则,该规则仅当遍历转弯减少到给定目标的剩余跳数时才允许从输入端口到输出端口的转弯。
[0117]
在一些实施方式中,处理器基于允许导致增加到目标的距离或保持到目标的距离
不变的转弯但限制到目标的总路径长度的策略来指定转发规则。在这样的实施方式中,处理器指定转发规则,该规则允许不减少到给定目标的剩余跳数但满足每条路径的指定总跳数的转弯。
[0118]
在一些实施方式中,为了限制路径长度,处理器指定规则,该规则仅允许不会导致减少到目标的长度的预定义数量的转弯。例如,允许只在选定的交换机(例如直接耦合到源节点的交换机和/或与耦合到目标节点的交换机相距一跳的交换机)处不减少到目标的跳数的转弯的规则。
[0119]
限制总路径长度减少路径延迟并强制路径收敛。例如,考虑3d hyperx拓扑的坐标(2,1,3)处的交换机,其中该交换机位于距坐标(2,5,3)处的目标交换机一跳。当路径长度不受约束时,网络管理器可能会生成非收敛路径,该路径沿第二维围绕目标交换机。此类非收敛路径的示例如下给定:(2,1,3)-》(2,2,3)-》(2,4,3)-》(2,3,3)等等。
[0120]
在一些实施方式中,从给定交换机到目标交换机的每条可用路径包含属于第二组转弯的转弯,这对于分配给vl1的分组是禁止的(为了防止死锁)。在一个实施方式中,响应于检测到从给定交换机到目标的路径必须包含属于第二组的转弯,处理器指定禁止遍历该路径的转发规则。
[0121]
在一些实施方式中,网络包括具有多达三个维度的笛卡尔hyperx拓扑,即1d、2d、3d拓扑。在这样的实施方式中,处理器被配置为指定规则,以保证在网络中的任何一对网络元件之间,至少有一个最多三跳的路径。
[0122]
上面描述的实施方式是作为示例给出的,也可以使用其他合适的实施方式。例如,上表3中给出的转弯是示例转弯,也可以使用其他合适的转弯。例如,在表3中,在表示为x、y和z的第一维度、第二维度和第三维度上为3d拓扑指定了转弯。在替代实施方式中,三个维度对符号x、y和z的其他分配也可以被使用。
[0123]
在一些实施方式中,也可以使用导致更严格规则的其他转弯。例如,-x到+x的转弯可以替换为-x到
±
x的转弯或
±
x到
±
x的转弯。(可以为y和z维度指定类似的替换转弯。)在这样的实施方式中,网络管理的处理器指定禁止包括沿相同维度的两个连续跳的转弯的规则。这可能有助于避免非收敛路径。在用于存储规则的存储空间有限的交换机中,例如在转发表中,使用从其中导出更严格规则的转弯可能是有用的。
[0124]
表3中的转弯是针对3d拓扑指定的,但也可以指定用于2d和1d笛卡尔拓扑的其他合适的转弯。在示例实施方式中,在笛卡尔二维拓扑中,第一组包括转弯
±
y到+x、-x到+x和-y到+y并且第二组包括转弯-y到
±
x、-x到+x和-y到+y。对于一维拓扑,第一组和第二组中的每一个都包括单转弯-x到+x。
[0125]
注意,可以将2d hyperx拓扑视为其中一个维度(例如z)的大小为1的3d hyperx拓扑。因此,在实施方式中,在3d拓扑中指定并且涉及缺失维度的转弯可能会被忽略。
[0126]
应当理解,以上描述的实施方式是通过示例的方式引用的,并且以下权利要求不限于已经在上文中具体示出和描述的内容。相反,该范围包括上文描述的各种特征的组合和子组合,以及本领域技术人员在阅读上述描述后会想到的并且在现有技术中未公开的变化和修改。以引用方式并入本专利申请中的文件应被视为本技术的组成部分,除非在这些并入文件中以与本说明书中明确或隐含的定义相冲突的方式定义的任何术语,仅应考虑本说明书中的定义。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1