CN107409095B - 从交换机的输入端口向输出端口路由分组的方法、***、介质和交换机 - Google Patents

从交换机的输入端口向输出端口路由分组的方法、***、介质和交换机 Download PDF

Info

Publication number
CN107409095B
CN107409095B CN201580077103.0A CN201580077103A CN107409095B CN 107409095 B CN107409095 B CN 107409095B CN 201580077103 A CN201580077103 A CN 201580077103A CN 107409095 B CN107409095 B CN 107409095B
Authority
CN
China
Prior art keywords
routing
output ports
packet
switch
entry
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
CN201580077103.0A
Other languages
English (en)
Other versions
CN107409095A (zh
Inventor
A·S·成
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN107409095A publication Critical patent/CN107409095A/zh
Application granted granted Critical
Publication of CN107409095B publication Critical patent/CN107409095B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/44Distributed routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/22Alternate routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/28Routing or path finding of packets in data switching networks using route fault recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/109Integrated on microchip, e.g. switch-on-chip
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/356Switches specially adapted for specific applications for storage area networks
    • H04L49/358Infiniband Switches

Landscapes

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

Abstract

一般而言,本公开提供了供交换***利用分布式路由表以针对多个网络拓扑、配置和路由模式提供改进的支持的***、方法和计算机可读介质。一种交换机的路由***,用于将分组从交换机的输入端口路由到交换机的输出端口,可以包括用于存储被配置成对条目进行存储的路由表的存储器模块,每一条目被配置成存储输出端口标识符。路由***还可以包括表地址生成模块,其被配置成部分地基于与分组关联的目的地位置ID(DLID)的第一子集来从路由表选择条目。表地址生成模块可以进一步被配置成从所选择的条目中选择一个或多个输出端口,所选择的输出端口部分地基于DLID的第二子集。

Description

从交换机的输入端口向输出端口路由分组的方法、***、介质 和交换机
技术领域
本公开涉及分布式网络路由表***,且更具体地,本公开涉及具有针对多个网络拓扑的改进的支持的分布式网络路由表***。
背景技术
高性能计算(HPC)***一般利用在交换机的网络组构(network fabric) 中相互连接的相对较大数目的处理节点。在一些HPC***中,在网络中可能存在几十万的处理器和数以万计的交换机,或更多。网络可以布置成各种各样已知的拓扑中的任何一种,例如蜻蜓、胖树、扁平蝴蝶和环面拓扑,其可以在2维、3维或更多维中配置。可以在处理器之间例如以分组发送数据,通过将多个交换机输入端口中的一个基于例如与分组关联的地址而动态地连接到多个交换机输出端口中的一个,从而将分组路由通过交换机。不同的网络可以被配置成支持不同的路由和寻址模式。
现有的交换机典型地被设计成以特定网络拓扑或较小的拓扑子集为目标。这些交换机可能不很适合处理其他类型的网络配置和寻址模式。此外,现有的交换机一般缺少有效地处理网络故障(例如,断开的链路和/或交换机)的能力,为避免分组采取导向死胡同的路径,需要网络管理软件通过禁用网络的相对大的部分来过度补偿这些故障。
附图简要说明
随着以下具体实施方式的继续进行,并通过参考附图,所请求保护的主题的实施例的特征和优点将变得明显,在附图中,相似的附图标记描绘相似的部分,且其中:
图1描绘了与本公开的示例性实施例一致的顶级HPC***网络组构图;
图2描绘了与本公开的示例性实施例一致的网络交换机的简化框图;
图3描绘了与本公开的示例性实施例一致的交换机路由模块的框图;
图4描绘了与本公开的示例性实施例一致的地址格式;
图5描绘了与本公开的示例性实施例一致的路由表条目;
图6(a)和6(b)描绘了与本公开的示例性实施例一致的表地址生成模块的框图;
图7描绘了与本公开的示例性实施例一致的输出端口向下选择模块的框图;
图8描绘了与本公开的示例性实施例一致的路由表;
图9描绘了与本公开的其他示例性实施例一致的路由表;
图10描绘了与本公开的实施例一致的示例性分组格式;以及
图11描绘了与本公开一致的一示例性实施例的操作的流程图。
虽然参考说明性的实施例,以下的具体实施方式将继续进行,但是对于本领域的熟练技术人员而言,其许多的可供选择的替换、修改和变化将是明显的。
具体实施方式
一般而言,本公开提供了供交换***采用分布式路由表来针对多个网络拓扑、配置和路由模式提供改进的支持的***、设备、方法和计算机可读介质。所支持的拓扑可以包括,例如,对角地、胖树的、被压扁的蝴蝶和环面拓扑。所支持的路由模式可以包括,例如,确定性最小、确定性非最小和自适应,如将在下文更详细描述的。交换机和路由表可以被配置成支持扁平节点寻址方案和分级节点寻址方案两者。分级寻址方案可以允许节点地址(目的地位置ID,或DLID)以相对灵活的方式以可调整的划分界限来进行划分,以支持各种网络大小和配置。此外,在一些实施例中,通过使用覆盖路由表来提供改进的网络容错,覆盖路由表被配置为在随机路由期间路由绕过出故障的链路和交换机。网络或组构的管理器可以被配置成基于网络的拓扑、大小和寻址模式来对交换机的路由表和相关联的控制寄存器进行编程。
当利用分级节点寻址来路由分组时,可以在交换机的每一个端口处的每一路由表采用3种可能类型的路由。第一类型被配置成提供直接的(最小)的路由选择,以通过直接路径将分组导向其目的地,从源节点开始或在进行多个间接跳跃之后从中间节点开始。第二类型被配置成提供用于根据许多各种网络拓扑将流量分散并改进负载平衡的间接(非最小)路由选择。第三类型被配置成提供供替代的路由选择,以在检测到网络故障的情况下对由直接或间接表提供的路径进行覆盖。每一路由表可以针对DLID 地址的每一分级子字段包括多个子表。这可以使得针对所应用的拓扑和路由模式在分级的每一级别能够实现间接路由和直接路由两者。例如,可以将分组路由为直接通过一个分级(例如,从一个维度到另一个维度),以及间接通过另一分级(例如,在一个维度之内从一个交换机到另一交换机)。
当在确定性的模式下路由分组时,基于例如分组的报头中的信息,以可预测的方式(如在下文将更完整描述的)从每一子表中提供仅仅一个路由选择。但是,当在自适应模式下路由分组时,可以提供多个路由选择,例如,通过提供随机性的单元(如也将在下文更完整描述的)。然后,来自子表的路由选择可以基于包括例如路由方法、分组的虚拟路径(VL)、以及与网络的分级相关的分组的位置等多个因素,被向下选择到较小数目的最终的候选者。然后,对路由的最终选择可以基于与每一路由相关联的拥塞信息。
当利用扁平节点寻址来路由分组时,在DLID未被划分成与网络分级关联的子字段的情况下,可以将路由表组合成一个具有直接映射到终端节点或目的地的条目的更大的表。虽然通常将不使用间接选项和覆盖选项,但是关于扁平节点寻址,确定性的和自适应的路由也是可以的。
一般而言,分组的报头可以包括路由控制(RC)字段,该路由控制字段指定了针对该分组期望的路由类型(例如,确定性的/自适应的、直接的/ 间接的)。
图1描绘了与本公开的示例性实施例一致的顶级HPC***网络组构图 100。组构100被示出为包括通过交换机104相互连接的任何数目的处理单元(PE)102。PE 102和交换机104有时可以被称为组构100中的节点。交换机104可以被配置为具有可以将该交换机链接到其他交换机或PE 102的任何数目的输入和输出端口106。任何给定的交换机104可以具有链接到该交换机和/或以其他方式与该交换机关联的零个、一个、两个或更多个PE 102。为了简单起见,在该说明中组构100以2维阵列(沿着x和y轴)来布置。在一些实施例中,该组构可以被扩展到第三维(沿着z轴)和/或扩展到未示出的更高维度中。在该简化的示例中,交换机被示出为仅连接到相邻的交换机,但是无需是这种情况。一般而言,交换机104和PE102可以被布置在从相对简单的配置到更复杂的配置的范围中的各种各样的拓扑中的任何一个中。可以根据其对特定应用的适合性来选择组构拓扑。
此外,组构100被示出为包括组构管理器(FM)108,其可以是被配置成对路由表编程并控制交换机104的状态寄存器(CSR)的处理器,如在下文将更详细描述的。在一些实施例中,FM 108可以是专用于管理功能的处理器。在一些实施例中,PE 102中的一个或多个可以被配置为充当FM 108。
在一些实施例中,通过将数据封装在包括指定目的地节点地址(DLID) 和其他路由信息的分组中,可以将数据或其他信息从一个PE发送到任何其他的PE。于是,分组可以沿着经过任何数目的交换机的路径来路由,上述交换机每一个基于分组的报头内容并进一步基于在该交换机中的路由表和 CSR来确定该路径中的下一步,如下文将更详细描述的。
图2描绘了与本发明的示例性实施例一致的网络交换机的简化框图 200。交换机104被示出为包括多个输入端口106a和输出端口106b。在一些实施例中,可以有64个输入端口和64个输出端口,尽管通常可以存在任何数目的这样的端口。在一些实施例中,16个端口可以连接到PE 102,且48个端口可以连接到网络组构中的其他交换机104,但是,一般而言,其他的分布也是可能的。交换机104被示出为进一步包括路由模块(也被称为路由***、或分布式路由表***)204,其可以与每一输入端口106a 关联,且被配置成将到达该输入端口的分组动态地路由到输出端口106b中的任何一个。输出端口的选择可以基于分组的报头内容并基于与该路由模块204关联的路由表和CSR。在一些实施例中,交换机104可以被并入到片上***(SoC)架构,且还可以包括被配置成执行软件(或固件等)以辅助控制路由模块204或任何其他适当任务的处理器或CPU(未示出)。
图3描绘了与本公开的示例性实施例一致的交换机路由模块204的框图。路由模块204被示出为包括路由表地址生成模块316、被配置成存储路由表(RT 0 304、RT 1 306、RT2 308、RT 3 310、RT 4 312、RT 5 314)的多个存储模块、控制状态寄存器(CSR)302、输出端口(Oport)向下选择模块318、队列存储器320以及Oport最终选择模块322。
路由表0-5可以以各种方式(例如,作为在2维和3维的种类中的直接表、间接表和覆盖表)来配置,如下文结合图8和9将更详细解释的。但是,在每一情况下,表都包括多个条目,且每一条目包括多个Oport规格 (specification)或标识符(例如,如在图5中所描绘的)。在一些实施例中,每一RT可以包括1024个条目,其中每一条目指定8个Oport。路由表地址生成模块316可以被配置成生成(针对每一分组)地址到每一个RT中。该地址在RT内选择条目并从所选择的条目中选择Oport。地址生成基于分组的DLID和其他信息(包括CSR 302的内容),如在后面结合图6所描述的。在确定性模式路由的情况下,从每一RT中选择一个Oport条目,而在自适应模式路由的情况下,可以从每一RT中选择2个Oport。
Oport向下选择模块318可以被配置成从RT中的12个可能的选择中将 Oport选择缩窄,在自适应模式中降到4个候选者,且在确定性模式中降到 1个候选者。在下文结合图7更详细地描述向下选择的过程。
向下选择的Oport可以(与分组一起)被存储在存储器队列320中以准备发送。Oport最终选择模块322可以被配置成基于网络拥塞级别(例如,与Oport候选者关联)从候选者中选择一个Oport。然后,可以将该分组通过所选择的Oport从交换机发送出去。在一些实施例中,拥塞信息可以由 FM 108提供且可以与全局条件关联(例如,遍及网络组构的拥塞)。拥塞信息也可以在交换机内生成且与本地条件关联(例如,每一端口可以与在该交换机中的其他端口共享或交换拥塞信息)。
虽然在该示例中仅示出和描述了6RT,但是应当理解,一般而言,***可以采用任何数目的任何大小的RT。此外,一般而言,在自适应模式中可以从每一RT选择任何数目的Oport选择,并进一步向下选择到任何其他数目的选择。此外,在一些实施例中,Oport最终选择模块322可以被配置在或定位在队列之前的位置而不是如所描绘的在队列之后的位置。
在一些实施例中,交换机路由模块204可以被并入到片上***(SoC) 架构中且还可以包括被配置成执行软件(或固件等)以辅助对路由模块204 组件或任何其他合适的任务进行控制的处理器或CPU(未示出)。
图4描绘了与本公开的示例性实施例一致的DLID地址格式400。扁平的DLID地址格式402与分级的DLID地址格式406一起被示出。如先前所描述的,交换机的每一输入端口可以与被配置成将输入的分组导向交换机的输出端口的一组路由表关联。分组的DLID可以被用来索引到路由表中的一个中,以获得指定了交换机输出端口(通过其该分组将被路由到另一交换机(或目的地节点))的RT条目。
在扁平寻址模式下,DLID指定了未被划分而是仅直接映射到终端节点或目的地的节点地址404。在该模式下,组构管理器108可以任意地向每一终端节点分配DLID。
但是,在分级寻址模式下,DLID可以被划分成多个子字段以支持可配置的网络拓扑和大小。在2维几何分类(geometric grouping)(例如,在组构中的交换机平面)中,标识交换机可以利用:列子字段412,其指定在平面中交换机的x坐标;以及行子字段410,其指定交换机的y坐标。在3维几何分类(例如,交换机的多个平面组成的立方体)中,可以通过另外的平面子字段408(其指定交换机的z坐标)来标识。另外的子字段可以指定特定的目的地节点或PE 414,以及可选地,子节点416(例如,PE 414的可寻址的子处理单元)。可以基于组构的大小(例如,平面、行、列、节点等的数目)来选择子字段的宽度(例如,比特数目)。当然,这些仅仅是示例,且子字段的大小和数目(例如,划分)可以被改变以与任何类型的网络拓扑(无论是现有的还是有待开发的)相适应。
在一些实施例中,扁平节点寻址还可以支持子节点。例如,这可以通过将扁平节点地址DLID 404分配给子节点来实现。
应当理解,假定路由表的大小近似,与利用扁平寻址模式将可能的相比,分级寻址模式通常可以支持具有更大数目的目的地节点的组构。例如,如果路由表具有200个条目,则在扁平寻址模式下可以寻址200个目的地节点。但是,在分级模式下,相同的路由表可使用100个条目来路由到邻域(例如,组构中的一区域),并且然后使用其他的100个条目来路由到目的地节点,有效地寻址100x 100(或10,000)个目的地节点。
图5描绘了与本公开的示例性实施例一致的路由表条目500。在路由表中的每一条目可以指定或标识多个Oport。在该示例中,路由表条目包括8 个Oport字段(Oport-0 520到Oport-7 506)。Oport字段可以具有合适的比特长度以与交换机上的输出端口数目(例如,64个Oport)相适应。另外的“X”比特(或状态比特)522被示出为与每一Oport关联且可以用于各种目的。在一些实施例中,如将在下文更详细解释的,当RT被配置为覆盖表时,X比特可以指示对应的Oport是有效的。模字段504可以被配置成指示在该条目中的有效的Oport选择的数目。例如,模=0可以指示仅1个Oport 选择是有效的,而模=7可以指示所有8个Oport选择是有效的。在一些实施例中,模字段可以在长度上是3比特。在条目中还可以包含误差校正码 (ECC)字段502,以提供误差保护。在一些实施例中,ECC字段可以在长度上是8比特。
图6(a)和6(b)描绘了与本公开的示例性实施例一致的表地址生成模块316的框图。表地址生成模块316被示出为在图6(a)中包括确定性模式表条目选择模块600和自适应模式表条目选择模块610,且在图6(b) 中包括确定性模式Oport选择模块620和自适应模式Oport选择模块630。
确定性模式表条目选择模块600可以被配置成基于DLID从RT中选择条目,所选择的字段来自分组的报头和/或交换机ID。在后面结合图10来描述来自分组的报头的所选择的字段的示例,图10呈现了分组格式的样本。
掩码和移位模块602可以被配置成从DLID中提取某些比特或比特字段,例如,通过逐位逻辑掩码和移位操作。提取过程由CSR 302导引(例如,比特字段定义由CSR 302提供),CSR 302继而可以由FM 108编程。虽然,在本申请中描述的提取过程使用掩码和移位操作作为示例性描述,但是,应当理解,提取和重新组合一个或多个比特或比特字段(无论比特是彼此邻接的抑或不是彼此邻接的)的任何方法都可以使用。
散列(Hash)生成模块604可以被配置成基于DLID生成散列值,所选择的字段来自分组的报头和/或交换机ID。可以使用被配置成将任意大小的数据转换成另一个通常较小的且固定大小的值的多个已知散列函数或算法中的任何一个来计算散列值。然后,由掩码和移位模块606以如上文针对模块602所描述的相同方式来处理所生成的散列值,以从散列值提取某些比特字段,如由CSR 302所指定的。然后,由组合逻辑608来组合所处理的DLID和散列值,组合逻辑608例如可以被配置成执行逐位OR操作,以生成表条目选择(Table EntrySelection)。例如,该过程可以以诸如如下的等式来表示:
Table Entry Select=((DLID[x:y]&TE_MASK[x:y])<<|>>TE_SHIFT)|
((HASH[n:m]&H_MASK[n:m])<<|>>H_SHIFT)
其中,[x:y]和[n:m]表示比特字段范围且﹤﹤∣>>表示左或右比特移位,其方向也可以由CSR指定。表条目掩码(TE_MASK)、表条目移位 (TE_SHIFT)、散列掩码(H_MASK)和散列移位(H_SHIFT)都可以由 CSR 302指定。
自适应模式表条目选择模块610可以被配置成基于DLID从RT选择条目。
掩码和移位模块612可以被配置成从DLID提取某些比特或比特字段,例如,通过逐位逻辑掩码和移位操作。提取过程由CSR 302导引(例如,比特字段定义由CSR 302提供),CSR 302继而可以由FM 108编程。
随机数生成模块614可以被配置成生成伪随机值,然后伪随机值由掩码和移位模块616处理,以从随机值中提取某些比特字段,如由CSR 302 所指定的。然后,所处理的DLID和随机值由组合逻辑618组合,组合逻辑 618可以被配置成例如执行逐位OR操作,以生成表条目选择(Table Entry Selection)。该过程可以利用在如下的等式中表示:
Table Entry Select=((DLID[x:y]&TE_MASK[x:y])<<|>>TE_SHIFT)|
((RAND[n:m]&R_MASK[n:m])<<|>>R_SHIFT)
其中,[x:y]和[n:m]表示比特字段范围且﹤﹤∣>>表示左或右比特移位,其方向也可以由CSR指定。表条目掩码(TE_MASK)、表条目移位 (TE_SHIFT)、随机掩码(R_MASK)和随机移位(R_SHIFT)都可以由 CSR 302指定。
确定性模式Oport选择模块620可以被配置成从上文选择的表条目中选择Oport。所选择的Oport也可以基于DLID,以与表条目选择类似的方式从分组的报头和/或交换机ID中选择字段。
掩码和移位模块622可以被配置成从DLID中提取某些比特或比特字段,提取过程由CSR 302导引。
散列生成模块624可以被配置成生成散列值,然后散列值由掩码和移位模块626处理以从散列值提取某些比特字段,如由CSR 302指定的。散列值可以进一步通过利用来自表条目的模字段执行模操作来处理。然后,由组合逻辑628对经过处理的DLID和散列值进行组合以生成所选择的 Oport。该过程例如可以以诸如如下内容的等式来表示:
Oport Select=((DLID[x:y]&OS_MASK[x:y])<<|>>OS_SHIFT)|
(((HASH[n:m]&OS_H_MASK[n:m])<<|>>OS_H_SHIFT)%(mod+1))
其中“%”运算符指示模操作(例如,使用算术除法的余数)。Oport选择掩码(OS_MASK)、Oport选择移位(OS_SHIFT)、Oport选择散列掩码 (OS_H_MASK)且Oport选择散列移位(OS_H_SHIFT)都可以由CSR 302 指定。
自适应模式Oport选择模块630可以被配置成从上文选择的表条目中选择两个Oport。所选择的Oport可以基于DLID和随机值。
掩码和移位模块632可以被配置成从DLID提取某些比特或比特字段,提取过程由CSR 302导引。
随机数生成模块634可以被配置成生成伪随机值,然后由掩码和移位模块636处理伪随机值,以从随机值中提取某些比特字段,如由CSR 302 所指定的。可以通过利用来自表条目的模字段执行模操作来进一步处理随机值。可以通过使用模字段的变形(例如,对摸字段中的比特诸位求或) 来生成两个经过处理的随机值。然后,经过处理的DLID和随机值由组合逻辑638组合以生成所选择的Oport。该过程例如可以由诸如以下的等式来表示:
Oport Select 1=((DLID[x:y]&OS_MASK[x:y])<<|>>OS_SHIFT)|
(((RAND[n:m]&OS_R_MASK[n:m])<<|>>OS_R_SHIFT)%(mod+1))
Oport Select 2=((DLID[x:y]&OS_MASK[x:y])<<|>>OS_SHIFT)|
((((RAND[n:m]&OS_R_MASK[n:m])<<|>>OS_R_SHIFT)
+(bitwise OR of mod bits))
%(mod+1))
Oport选择掩码(OS_MASK)、Oport选择移位(OS_SHIFT)、Oport 选择随机掩码(OS_R_MASK)和Oport选择随机移位(OS_R_SHIFT)都可以由CSR 302指定。
当然,上文的仅仅是示例。在可供替补的实施例中,可以使用任何合适的方法来选择任何数目的Oport。
因为每一RT具有其自身的表条目集合和Oport选择模块,以及CSR,故而所述表中的每一个可以由DLID比特的某子集与散列或随机比特的某子集的组合独立地访问。根据拓扑与寻址模式,可以从在一个极端仅仅是一DLID比特来选择Oport,到在另一个极端,仅仅使用散列或随机比特来选择Oport的范围的一系列可能性上配置RT。该灵活性允许这些表支持相对宽泛的各种网络拓扑和寻址模式,如在下文将更详细解释的。
在确定性模式中,具有给定DLID的每一分组可以通常被路由通过相同的路径,这是因为针对每一个这样的分组,散列函数将会把DLID(以及以不变的方式与DLID关联的其他的分组的报头字段)映射到相同的值。但是,在自适应模式中,由于随机化函数所导致的,具有相同DLID的分组可以采用不同的路径。
在一些实施例中,可以为了另外的目的配置路由表0(RT0)。当分组已经到达其目的地交换机时,在该交换机处的RT0条目将不用于任何目的且被浪费掉,其原本通常被配置作为用于将分组引向目的地交换机的直接表。替代地,可以使用该RT0(例如,利用一组不同的掩码和交换机寄存器)以使得Oport条目被分配用于该交换机DLID,以使用可供替补的规则集合将其重新用于将该分组导向目的地。
图7描绘了与本公开的示例性实施例一致的输出端口向下选择模块 318的框图。该模块318可以被配置成将从RT获得的Oport(在该示例中,多达12个Oport,来自6个表中的每一个表2个)在确定性模式中向下选择Oport到单个Oport,或在自适应模式中至多4个Oport(在该示例中,2 个最小的选择和2个非最小的选择)。向下选择可以基于多个因素,包括分组路由控制(RC)值、分组VL、Oport X(状态)比特和/或确定DLID是否在特定范围或范围集中(例如,指示与网络的分级相关的分组的位置及其目标目的地)。输出端口向下选择模块318被示出包括DLID范围确定模块702、选择参数压缩模块704和Oport向下选择查询表(LUT)706。
DLID范围确定模块702可以被配置成将分组DLID或其部分与目标匹配值进行比较,以确定分组是在其目标目的地或接近其目标目的地。在扁平寻址模式下,在DLID空间可以跨全部6个路由表被均匀划分的情况下,目标匹配值可以仅指定DLID空间的区域。在分级寻址模式中,目标值可以被配置成表示分组已经达到其在第一级别分级、第二级别分级、或最终的目的地交换机等处的目标。目标匹配值可以由CSR提供。
选择参数压缩模块704可以被配置成将相关的信息或参数(例如,RC、 DLID范围和X比特)合并到LUT索引中。LUT索引充当到Oport向下选择LUT 706中的地址。一般而言,虽然LUT索引可以具有任何的比特长度 (与未受限大小的LUT相对应),在实际上,LUT的大小将被技术和/或成本约束限制到某一最大值。从而,选择参数压缩模块704可以选择参数比特的子集(或以其他方式压缩或编码该信息),以创建匹配LUT大小的LUT 索引。FM 108可以配置CSR 302以基于网络组构的拓扑来确定比特的子集选择。该策略基于这样一个事实:一般而言,针对给定的拓扑或寻址模式并不需要全部的参数。
在一些网络拓扑中,随着其逐跳(hop)行进(沿着路由路径移动),分组的VL可以增量或减量,以避免在组构中的拓扑死锁。在一些实施例中, VL中的这些变化可以影响向下选择LUT决策。作为一个可能的示例,当 VL到达较高值时,向下选择过程可以被配置成选择更直接的(最小的) Oport,以将分组导向其目的地。
Oport向下选择查询表(LUT)706可以被配置成基于所生成的LUT索引提供或指示1到4个所选择的Oport(在该示例中)。在一些实施例中, LUT可以基于在FM上部署的网络组构配置和路由算法由FM 108编程。
图8描绘了与本公开的示例性实施例一致的路由表800。在802示出路由表被配置用于2级(或2维)寻址方案。RT被划分成直接寻址表804和间接寻址表806。RT 0 204可以用于沿着网络组构的行(y维)直接路由,且RT 1 206用于沿着网络组构的列(x维)直接路由。RT 2 208可以用于沿网络组构的行(y维)间接路由,且RT 3 210用于沿网络组构的列(x维)间接路由。在该2级寻址的示例中,仅使用6个可用RT中的4个,留下 RT 4 212和RT 5 214未被使用。
在808处示出了配置用于3级(或3维)寻址方案的路由表。RT被划分成直接寻址表810和间接寻址表812。RT 0 204可以被用于沿网络组构的行(y维)直接路由,RT 1 206用于沿网络组构的列(x维)直接路由,且 RT 4 212用于沿网络组构的平面(z维)直接路由。RT 2208用于沿网络组构的行(y维)间接路由,RT 3 210用于沿网络组构的列(x维)间接路由,以及RT 5 214用于沿网络组构的平面(z维)间接路由。
图9描绘了与本公开的其他示例性实施例一致的路由表900。示出了具有故障覆盖能力的、配置用于2级(或2维)寻址方案的路由表。RT被划分成直接寻址表902和间接寻址表904。如先前所描述的,结合图8,RT 0 204可以用于沿网络组构的行(y维)直接路由,以及RT1 206用于沿网络组构的列(x维)直接路由。RT 2 208可以用于沿网络组构的行(y维)间接路由,以及RT 3 210用于沿网络组构的列(x维)间接路由。原本未使用的RT(RT 4 212和RT5 214)现在被分别配置用于沿着行方向和列方向提供故障覆盖间接寻址。
图10描绘了与本公开的实施例一致的示例性分组格式1000。所示出的分组格式经过修改的无限带宽分组且包括报头1002,其被配置成传送控制和路由信息,且主体1004被配置成运送数据有效载荷。报头1002被示出包括用于以下各项的字段:DLID 1008、路由控制(RC)1012、和虚拟径 (VL)1016。报头中的另外的字段,其包含在需要排序的情况下,在源节点和终端节点对之间的分组流传输期间期望保持不变的值,上述另外的字段可以被用作生成先前描述的散列值的单元(element)。这些字段可以包括,例如,服务级别(SL)字段1010、源位置ID(SLID)字段1006以及目的地QP字段1014。
在下文以伪随机码的格式概括了与本公开的实施例一致的路由可能性的多个说明性示例。当然,这些仅表示通过本申请中描述的灵活可配置的分布式路由表架构可承担的若干可能性。
A.扁平寻址示例
(确定性的)
从DLID[12:11]中选择路由表
从DLID[10:1]中选择地址(在表中的条目)
基于{DLID[0]、2个散列比特}从RT条目中选择Oport
(自适应的)
从DLID[12:11]中选择路由表
从DLID[10:1]中选择地址(在表中的条目)
基于{DLID[0]、2个随机比特}从条目中选择Oport 1
基于{DLID[0]、(2个随机比特)+1}从条目中选择Oport 2
选择具有较低拥塞的Oport
B.2级分级寻址示例(例如,如在图8-802中的)
针对该示例:
DLID[15:12]表示在组构分级中的行
DLID[11:8]表示在组构分级中的列
DLID[7:4]表示在组构分级中的节点
“正确的行”指的是DLID行匹配交换机行
“正确的列”指的是DLID列匹配交换机列
“在目标处”指的是正确的行和正确的列
(确定性的最小)
如果在目标处,则RT0地址={DLID[15:12]、4个散列比特、DLID[7: 6]}
如果不在目标处,则RT0地址={DLID[15:12]、6个散列比特、DLID[7: 6]}
RT1地址={DLID[11:8]、6个散列比特}
如果在目标处,则Oport选择={DLID[5:4]、1个散列比特}
如果不在目标处,则Oport选择={3个散列比特}
使用1个直接列跳和1个直接行跳来路由,
如在错误的列,则使用RT1,否则使用RT0
(确定性的非最小)
如果在目标处,则RT0地址={DLID[15:12]、4个散列比特、DLID[7: 6]}
如果不在目标处,则RT0地址={DLID[15:12]、6个散列比特}
RT1地址={DLID[11:8]、6个散列比特}
RT2地址={10个散列比特}
RT3地址={10个散列比特}
如果在目标处,则Oport选择={DLID[5:4]、1个散列比特}
如果不在目标处,则Oport选择={3个散列比特}
使用1个间接列跳和1个间接行跳来路由,(VL=0),
采用1个直接列跳和1个直接行跳,(VL=1)
如在正确的列和正确的行,则使用RT0
如果VL=0,如果RT3有效则使用RT3以采取间接的列跳
如果VL=0且RT3条目无效(X比特设置),
则使用RT2来采用间接的行跳。
如果VL=0且RT3和RT2条目无效,则增加VL,且:
如果错误列,则使用RT1
否则使用RT0
如果VL=1且错误列,则使用RT1
如果VL=1且正确列,则使用RT0
在RT3中的所有条目都被针对列(x)方向输入端口标注为无效的,以在一旦采用列跳时,就促使使用RT2表。在RT2和RT3中的所有条目都被针对行(y)方向输入端口标注为无效的,以促使一旦采用列和行随机跳时就使用RT1和RT0直接进行。
(自适应的)
如果在目标处,则RT0地址={DLID[15:12]、4个随机比特、DLID[7: 6]}
如果不在目标处,则RT0地址={DLID[15:12]、6个随机比特}
RT1地址={DLID[11:8]、6个随机比特}
RT2地址={10个随机比特}
RT3地址={10个随机比特}
基于{DLID[0]、2个随机比特}从条目中选择Oport1
基于{DLID[0]、(2个随机比特+1}从条目中选择Oport2
首先尝试直接路由,如果拥塞则使用间接路由
如果在正确的列和正确的行,则使用RT0
如果在错误的列,VL=0且RT3条目有效,
则使用RT3和RT1来采取间接的或直接的列跳。
如果采用直接的列跳,则将VL增量。
如果在错误的列,VL=0,且RT3条目无效,则
如果RT2条目有效,则
使用RT2或RT1来采取间接的行跳或直接的列跳。
如果采用直接的列跳,则将VL增量。
如果在正确的列,VL=0,且RT2条目有效,则
使用RT2和RT0来采取间接的或直接的行跳。
如果采用直接的行跳,则将VL增量。
如果在正确的列,VL=0,且RT2条目无效,则
使用RT0来采取直接的行跳。
将VL增量。
如果VL=0、RT3和RT2条目无效,则增加VL且:
如果错误的列,则使用RT1
否则使用RT0
如果VL=1且在错误的列,则使用RT1
如果VL=1且在正确的列,则使用RT0
在上文的每一种情况下,通过每一个RT表来提供2个选择。
C.利用覆盖示例来进行2级分级寻址(例如,如在图9中)
针对RT2寻址,RT4提供了覆盖以避免网络故障
针对RT3寻址,RT5提供了覆盖以避免网络故障
RT4、RT5条目缺省为“无效的”X比特设置,但是当检测到故障时,由组构管理将其改变成“有效的”。如果RT4或RT5条目有效,则其将覆盖相应的RT2或RT3条目。
图11描绘了与本公开一致的一个示例性实施例的操作1100的流程图。操作提供了一种用于将分组从交换机的输入端口路由到交换机的输出端口的方法。在操作1110处,路由表被配置成存储多个条目。上述条目被进一步配置成存储交换机的一个或多个输出端口标识符。在操作1120处,从路由表中的一个或多个中选择条目。该选择部分地基于与分组关联的目的地位置ID(DLID)的第一子集。在操作1130处,从所选择的条目的一个或多个输出端口进行进一步的选择,所选择的输出端口部分地基于DLID的第二子集。
本申请中描述的方法的实施例可以在一种***中实现,该***包括一个或多个在其上单独地或组合地存储有指令的存储介质,当由一个或多个处理器执行上述指令时执行上述方法。在此,处理器可以包括例如***CPU (例如,内核处理器)和/或可编程电路。从而,其意图是,根据本申请中描述的方法的操作可以跨多个物理设备分布,诸如例如在若干不同物理位置处的处理结构之类的。此外,其意图在于,方法操作可以单独地或以子集合的方式来执行,如本领域的熟练技术人员将理解的。从而,并不需要执行流程图中的每一个流程图的全部操作,且如本领域的普通技术人员将理解的,本公开明确地意图在于能够实现这些操作的所有子集合。
存储介质可以包括任何类型的有形介质,例如,任何类型的磁盘,包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)、数字多功能盘(DVD)和磁-光盘,半导体设备,例如只读存储器(ROM)、诸如动态和静态RAM之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存、磁性的或光学的卡、或适合存储电子指令的任何类型的介质。
如在本申请中的任何实施例中所使用的,“电路”可以包括例如单个地或以任何组合的硬连线电路、可编程电路、状态机电路、和/或存储由可编程电路执行的指令的固件(例如,在集成电路上执行)。应用(或“app”) 可以被实现为可以在诸如主机处理器或其他可编程电路之类的可编程电路上执行的代码或指令。如在本申请的任何实施例中使用的,模块可以被实现为电路。电路可以被实现为集成电路,例如集成电路芯片。在一些实施例中,从而,模块可以在软件和/或固件中实现且其可以包括一个或多个过程、单个过程的线程或子例程。此外,在一些实施例中,模块可以是在相分离的设备中分布和执行的。
从而,本公开提供了供交换***利用分布式路由表来针对多个网络拓扑、配置和路由模式来提供改进的支持的***、设备、方法和计算机可读介质。随后的示例涉及另外的实施例。
根据示例1,提供了一种交换机,用于将分组从所述交换机的输入端口路由到所述交换机的输出端口。交换机可以包括:多个输入端口;多个输出端口;多个路由模块,每一个路由模块与输入端口中的一个关联。路由模块可以进一步包括一个或多个存储器模块,用于存储多个路由表以存储多个条目,条目中的每一个用于存储一个或多个输出端口标识符;表地址生成模块,用于从路由表中的一个或多个中选择条目,条目选择部分地基于与分组关联的目的地位置ID(DLID)的第一子集;并且表地址生成模块进一步用于从所选择的条目中选择一个或多个输出端口,所选择的输出端口部分地基于DLID的第二子集。
示例2可以包括示例1的主题,且表地址生成模块进一步用于另外地基于分组的报头的所选择的数据值的第一散列从路由表中选择条目;且进一步用于基于DLID的第二子集和分组的报头的所选择的数据值的第二散列的组合来选择一个或多个输出端口。
示例3可以包括示例1和2的主题,且表地址生成模块进一步用于另外地基于第一随机生成的值从路由表选择条目;且进一步用于基于DLID 的第二子集和第二随机生成的值选择一个或多个输出端口。
示例4可以包括示例1-3的主题,且路由表条目是能够由网络管理器编程的。
示例5可以包括示例1-4的主题,且路由表中的一个或多个用于指示将分组在直接路径上路由到与DLID关联的目的地的输出端口。
示例6可以包括示例1-5的主题,且路由表中的一个或多个用于指示将分组在间接路径上路由到与DLID关联的目的地的输出端口。
示例7可以包括示例1-6的主题,且路由表中的一个或多个用于指示将分组沿着用于避免网络故障的路径路由的输出端口。
示例8可以包括示例1-7的主题,进一步包括用于基于分组的报头的所选择的数据值并进一步基于所选择的输出端口的状态比特减小所选择的输出端口的数目的输出端口向下选择模块。
示例9可以包括示例1-8的主题,进一步包括输出端口最终选择模块,其用于基于与一个或多个输出端口中的每一个关联的网络拥塞信息从减小了数目的输出端口中选择最终的输出端口。
示例10可以包括示例1-9的主题,且交换机被并入到片上***(SoC) 中且进一步包括处理器(CPU)。
根据示例11,提供了一种交换机的路由***,用于将分组从交换机的输入端口路由到交换机的输出端口。该路由***可以包括:一个或多个存储器模块,用于存储多个路由表以存储多个条目,条目中的每一个用于存储一个或多个输出端口标识符;表地址生成模块,用于从路由表中的一个或多个中选择条目,条目选择部分地基于与分组关联的目的地位置ID (DLID)的第一子集;且表地址生成模块进一步用于从所选择的条目中选择一个或多个输出端口,所选择的输出端口部分地基于DLID的第二子集。
示例12可以包括示例11的主题,且表地址生成模块进一步用于另外地基于分组的报头的所选择的数据值的第一散列从路由表选择条目;且进一步用于基于DLID的第二子集和分组的报头的所选择的数据值的第二散列的组合,选择一个或多个输出端口。
示例13可以包括示例11和12的主题,且表地址生成模块进一步用于另外地基于第一随机生成的值从路由表选择条目;且进一步用于基于DLID 的第二子集和第二随机生成的值来选择一个或多个输出端口。
示例14可以包括示例11-13的主题,且路由表条目可用网络管理器编程。
示例15可以包括示例11-14的主题,且路由表中的一个或多个用于指示将分组在直接路径上路由到与DLID关联的目的地的输出端口。
示例16可以包括示例11-15的主题,且路由表中的一个或多个用于指示将分组在间接路径上路由到与DLID关联的目的地的输出端口。
示例17可以包括示例11-16的主题,且路由表中的一个或多个用于指示将分组沿着用于避免网络故障的路径路由的输出端口。
示例18可以包括示例11-17的主题,进一步包括输出端口向下选择模块,其用于基于分组的报头的所选择的数据值并进一步基于所选择的输出端口的状态比特减小所选择的输出端口的数目。
示例19可以包括示例11-18的主题,进一步包括输出端口最终选择模块,其用于基于与一个或多个输出端口中的每一个关联的网络拥塞信息从减小了数目的输出端口中选择最终的输出端口。
根据示例20,提供了一种用于将分组从交换机的输入端口路由到交换机的输出端口的方法。该方法可以包括:配置多个路由表以存储多个条目,条目中的每一个用于存储一个或多个输出端口标识符;从路由表中的一个或多个中选择条目,条目选择部分地基于与分组关联的目的地位置ID (DLID)的第一子集;以及从所选择的条目中选择一个或多个输出端口,所选择的输出端口部分地基于DLID的第二子集。
示例21可以包括示例20的主题,进一步包括:另外地基于分组的报头的所选择的数据值的第一散列从路由表选择条目;以及进一步基于DLID 的第二子集和分组的报头的所选择的数据值的第二散列的组合,选择一个或多个输出端口。
示例22可以包括示例20和21的主题,进一步包括:另外地基于第一随机生成的值从路由表选择条目;以及基于DLID的第二子集和第二随机生成的值的组合来选择一个或多个输出端口。
示例23可以包括示例20-22的主题,且路由表中的一个或多个用于指示将分组在直接路径上路由到与DLID关联的目的地的输出端口。
示例24可以包括示例20-23的主题,且路由表中的一个或多个用于指示将分组在间接路径上路由到与DLID关联的目的地的输出端口。
示例25可以包括示例20-24的主题,且路由表中的一个或多个用于指示将分组沿着用于避免网络故障的路径路由的输出端口。
示例26可以包括示例20-25的主题,进一步包括基于分组的报头的所选择的数据值并进一步基于所选择的输出端口的状态比特减小所选择的输出端口的数目。
示例27可以包括示例20-26的主题,进一步包括基于与一个或多个输出端口中的每一个关联的网络拥塞信息从减小了数目的输出端口中选择最终的输出端口。
根据示例28,提供了至少一个计算机可读存储介质,其上存储有指令,当由处理器执行上述指令时,导致了以下的用于将分组从交换机的输入端口路由到交换机的输出端口的操作。上述操作可以包括:配置多个路由表以存储多个条目,条目中的每一个用于存储一个或多个输出端口标识符;从路由表中的一个或多个中选择条目,条目选择部分地基于与分组关联的目的地位置ID(DLID)的第一子集;以及从所选择的条目中选择一个或多个输出端口,所选择的输出端口部分地基于DLID的第二子集。
示例29可以包括示例28的主题,进一步包括:另外地基于分组的报头的所选择的数据值的第一散列从路由表选择条目;以及基于DLID的第二子集和分组的报头的所选择的数据值的第二散列的组合来选择一个或多个输出端口。
示例30可以包括示例28和29的主题,进一步包括:另外地基于第一随机生成的值从路由表选择条目;以及基于DLID的第二子集和第二随机生成的值的组合来选择一个或多个输出端口。
示例31可以包括示例28-30的主题,且路由表中的一个或多个用于指示将分组在直接路径上路由到与DLID关联的目的地的输出端口。
示例32可以包括示例28-31的主题,且路由表中的一个或多个用于指示将分组在间接路径上路由到与DLID关联的目的地的输出端口。
示例33可以包括示例28-32的主题,且路由表中的一个或多个用于指示将分组沿着用于避免网络故障的路径路由的输出端口。
示例34可以包括示例28-33的主题,进一步包括基于分组的报头的所选择的数据值并进一步基于所选择的输出端口的状态比特减小所选择的输出端口的数目。
示例35可以包括示例28-34的主题,进一步包括基于与一个或多个输出端口中的每一个关联的网络拥塞信息从减小了数目的输出端口中选择最终的输出端口。
根据示例36,提供了一种用于将分组从交换机的输入端口路由到交换机的输出端口的***。该***可以包括:用于配置多个路由表以存储多个条目的单元,条目中的每一个用于存储一个或多个输出端口标识符;用于从路由表中的一个或多个中选择条目的单元,条目选择部分地基于与分组关联的目的地位置ID(DLID)的第一子集;以及用于从所选择的条目中选择一个或多个输出端口的单元,所选择的输出端口部分地基于DLID的第二子集。
示例37可以包括示例36的主题,进一步包括:用于另外地基于分组的报头的所选择的数据值的第一散列从路由表选择条目的单元;以及用于进一步基于DLID的第二子集和分组的报头的所选择的数据值的第二散列的组合来选择一个或多个输出端口的单元。
示例38可以包括示例36和37的主题,进一步包括:用于另外地基于第一随机生成的值从路由表选择条目的单元;以及用于基于DLID的第二子集和第二随机生成的值的组合来选择一个或多个输出端口的单元。
示例39可以包括示例36-38的主题,且路由表中的一个或多个用于指示将分组在直接路径上路由到与DLID关联的目的地的输出端口。
示例40可以包括示例36-39的主题,且路由表中的一个或多个用于指示将分组在间接路径上路由到与DLID关联的目的地的输出端口。
示例41可以包括示例36-40的主题,且路由表中的一个或多个用于指示将分组沿着用于避免网络故障的路径路由的输出端口。
示例42可以包括示例36-41的主题,进一步包括用于基于分组的报头的所选择的数据值并进一步基于所选择的输出端口的状态比特减小所选择的输出端口的数目的单元。
示例43可以包括示例36-42的主题,进一步包括用于基于与一个或多个输出端口中的每一个关联的网络拥塞信息从减小了数目的输出端口中选择最终的输出端口的单元。
在本申请中已经使用的术语和表达被用作描述的术语而不是现在,且在使用这样说术语和表达是没有将示出和描述(或其部分)的特征的任何等同排除在外的意图,且可以认识到的是,在权利要求书的范围之内各种修改都是可能的。因此,权利要求书意在覆盖所有重要的等同物。如由本领域的熟练技术人员将理解的,特征、方面和实施例易于彼此组合以及进行变化和修改。从而,本公开应该被认为包含这样的组合、变化和修改。

Claims (24)

1.一种用于将分组从交换机的输入端口路由到交换机的输出端口的交换机,所述交换机包括:
多个所述输入端口;
多个所述输出端口;
多个路由模块,每一个所述路由模块与所述输入端口中的一个关联;以及
所述路由模块包括:
一个或多个存储器模块,用于存储多个路由表以存储多个条目,所述条目中的每一个用于存储一个或多个输出端口标识符;
表地址生成模块,用于从所述路由表中的一个或多个中选择条目,条目选择部分地基于与所述分组关联的目的地位置ID(DLID)的第一子集;并且
所述表地址生成模块进一步用于从所选择的条目中选择一个或多个输出端口,所选择的输出端口部分地基于所述DLID的第二子集;
输出端口向下选择模块,其用于基于所述分组的报头的所选择的数据值以及进一步基于所选择的输出端口的状态比特来减小所述所选择的输出端口的数目,其中所述报头的所选择的数据值包括所述分组的虚拟路径。
2.根据权利要求1所述的交换机,其中,所述表地址生成模块进一步用于另外地基于所述分组的报头的所选择的数据值的第一散列来从所述路由表中选择所述条目;且进一步用于基于所述DLID的所述第二子集和所述分组的报头的所述所选择的数据值的第二散列的组合来选择所述一个或多个输出端口。
3.根据权利要求1所述的交换机,其中,所述表地址生成模块进一步用于另外地基于第一随机生成的值来从所述路由表中选择所述条目;且进一步用于基于所述DLID的所述第二子集和第二随机生成的值的组合来选择所述一个或多个输出端口。
4.根据权利要求1-3中的任何一项所述的交换机,其中,所述路由表条目是能够由网络管理器编程的。
5.根据权利要求1-3中的任何一项所述的交换机,其中所述路由表中的一个或多个用于指示将所述分组在直接路径上路由到与所述DLID关联的目的地的输出端口。
6.根据权利要求1-3中的任何一项所述的交换机,其中所述路由表中的一个或多个用于指示将所述分组在间接路径上路由到与所述DLID关联的目的地的输出端口。
7.根据权利要求1-3中的任何一项所述的交换机,其中所述路由表中的一个或多个用于指示将所述分组沿着用于避免网络故障的路径路由的输出端口。
8.根据权利要求1所述的交换机,进一步包括输出端口最终选择模块,其用于基于与所述一个或多个输出端口中的每一个关联的网络拥塞信息来从减小了数目的输出端口中选择最终的输出端口。
9.一种用于将分组从交换机的输入端口路由到交换机的输出端口的交换机的路由***,所述路由***包括:
一个或多个存储器模块,用于存储多个路由表以存储多个条目,所述条目中的每一个用于存储一个或多个输出端口标识符;
表地址生成模块,用于从所述路由表中的一个或多个中选择条目,条目选择部分地基于与所述分组关联的目的地位置ID(DLID)的第一子集;并且
所述表地址生成模块进一步用于从所选择的条目中选择一个或多个输出端口,所选择的输出端口部分地基于所述DLID的第二子集;
输出端口向下选择模块,其用于基于所述分组的报头的所选择的数据值并进一步基于所述所选择的输出端口的状态比特来减小所述所选择的输出端口的数目,其中所述报头的所选择的数据值包括所述分组的虚拟路径。
10.根据权利要求9所述的路由***,其中,所述表地址生成模块进一步用于另外地基于所述分组的报头的所选择的数据值的第一散列来从所述路由表中选择所述条目;且进一步用于基于所述DLID的所述第二子集和所述分组的报头的所述所选择的数据值的第二散列的组合来选择所述一个或多个输出端口。
11.根据权利要求9所述的路由***,其中,所述表地址生成模块进一步用于另外地基于第一随机生成的值来从所述路由表中选择所述条目;且进一步用于基于所述DLID的所述第二子集和第二随机生成的值的组合来选择所述一个或多个输出端口。
12.根据权利要求9-11中的任何一项所述的路由***,其中所述路由表条目是能够由网络管理器编程的。
13.根据权利要求9-11中的任何一项所述的路由***,其中所述路由表中的一个或多个用于指示将所述分组在直接路径上路由到与所述DLID关联的目的地的输出端口。
14.根据权利要求9-11中的任何一项所述的路由***,其中,所述路由表中的一个或多个用于指示将所述分组在间接路径上路由到与所述DLID关联的目的地的输出端口。
15.根据权利要求9-11中的任何一项所述的路由***,其中所述路由表中的一个或多个用于指示将所述分组沿着用于避免网络故障的路径路由的输出端口。
16.一种用于从交换机的输入端口向交换机的输出端口路由分组的方法,所述方法包括:
配置多个路由表以存储多个条目,所述条目中的每一个用于存储一个或多个输出端口标识符;
从所述路由表中的一个或多个中选择条目,条目选择部分地基于与所述分组关联的目的地位置ID(DLID)的第一子集;以及
从所选择的条目中选择一个或多个输出端口,所选择的输出端口部分地基于所述DLID的第二子集;
基于所述分组的报头的所选择的数据值以及进一步基于所述所选择的输出端口的状态比特来减小所述所选择的输出端口的数目,其中所述报头的所选择的数据值包括所述分组的虚拟路径。
17.根据权利要求16所述的方法,进一步包括:
另外地基于所述分组的报头的所选择的数据值的第一散列来从所述路由表中选择所述条目;以及
基于所述DLID的所述第二子集和所述分组的报头的所述所选择的数据值的第二散列的组合来选择所述一个或多个输出端口。
18.根据权利要求16所述的方法,进一步包括:
另外地基于第一随机生成的值来从所述路由表中选择所述条目;以及
基于所述DLID的所述第二子集和第二随机生成的值的组合来选择所述一个或多个输出端口。
19.根据权利要求16-18中的任何一项所述的方法,其中,所述路由表中的一个或多个用于指示将所述分组在直接路径上路由到与所述DLID关联的目的地的输出端口。
20.根据权利要求16-18中的任何一项所述的方法,其中所述路由表中的一个或多个用于指示将所述分组在间接路径上路由到与所述DLID关联的目的地的输出端口。
21.根据权利要求16-18中的任何一项所述的方法,其中,所述路由表中的一个或多个用于指示将所述分组沿着用于避免网络故障的路径路由的输出端口。
22.根据权利要求16所述的方法,进一步包括基于与所述一个或多个输出端口中的每一个关联的网络拥塞信息来从减小了数目的输出端口中选择最终的输出端口。
23.至少一个计算机可读存储介质,其上存储有指令,所述指令当由处理器执行时引起用于执行根据权利要求16-22中的任何一项的方法的操作。
24.一种用于将分组从交换机的输入端口路由到交换机的输出端口的***,所述***包括用于执行根据权利要求16-22中的任何一项的方法的操作的单元。
CN201580077103.0A 2015-03-28 2015-03-28 从交换机的输入端口向输出端口路由分组的方法、***、介质和交换机 Active CN107409095B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2015/023203 WO2016159945A1 (en) 2015-03-28 2015-03-28 Distributed routing table system with improved support for multiple network topologies

Publications (2)

Publication Number Publication Date
CN107409095A CN107409095A (zh) 2017-11-28
CN107409095B true CN107409095B (zh) 2020-12-08

Family

ID=57007052

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580077103.0A Active CN107409095B (zh) 2015-03-28 2015-03-28 从交换机的输入端口向输出端口路由分组的方法、***、介质和交换机

Country Status (4)

Country Link
US (1) US10469368B2 (zh)
EP (1) EP3278520B1 (zh)
CN (1) CN107409095B (zh)
WO (1) WO2016159945A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10893005B2 (en) * 2018-09-17 2021-01-12 Xilinx, Inc. Partial reconfiguration for Network-on-Chip (NoC)
US10798049B2 (en) 2018-11-08 2020-10-06 Ripple Labs Inc. Obscured routing
DE112020002484T5 (de) 2019-05-23 2022-04-28 Hewlett Packard Enterprise Development Lp System und verfahren zur erleichterung der feinkörnigen flusssteuerung in einer netzwerkschnittstellensteuerung (nic)
US11693800B2 (en) * 2020-07-13 2023-07-04 EMC IP Holding Company LLC Managing IO path bandwidth
EP4183117A4 (en) * 2020-07-15 2024-04-10 Telefonaktiebolaget LM Ericsson (publ) NETWORK NODE UNIT, RECEIVING ELEMENT AND METHODS THEREIN FOR MANAGING PACKET AND PACKET PROCESSING

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1638334A (zh) * 2003-12-30 2005-07-13 国际商业机器公司 在无限带宽网络中传送数据包的***和方法
US20080123679A1 (en) * 2003-11-19 2008-05-29 Cray Inc. Routing table architecture
CN102119510A (zh) * 2008-08-14 2011-07-06 格诺多有限公司 一种多路径网络
US20120314706A1 (en) * 2011-06-07 2012-12-13 Mellanox Technologies Ltd. Packet switching based on global identifier
CN104079491A (zh) * 2014-07-07 2014-10-01 中国科学院计算技术研究所 一种面向高维度网络的路由器及路由方法
US20140334290A1 (en) * 2011-08-30 2014-11-13 International Business Machines Corporation Implementing redundancy on infiniband (ib) networks
CN104246700A (zh) * 2012-05-11 2014-12-24 甲骨文国际公司 用于基于胖树路由在不同无限带宽子网间路由流量的***和方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5970232A (en) * 1997-11-17 1999-10-19 Cray Research, Inc. Router table lookup mechanism
JP2000209271A (ja) * 1999-01-18 2000-07-28 Nec Corp ル―タ装置
JP4294821B2 (ja) * 2000-01-26 2009-07-15 株式会社日立製作所 ネットワーク中継装置
US7103626B1 (en) 2000-05-24 2006-09-05 Hewlett-Packard Development, L.P. Partitioning in distributed computer system
US7428598B2 (en) 2003-11-20 2008-09-23 International Business Machines Corporation Infiniband multicast operation in an LPAR environment
US7984180B2 (en) 2005-10-20 2011-07-19 Solarflare Communications, Inc. Hashing algorithm for network receive filtering
WO2009001183A2 (en) * 2007-06-22 2008-12-31 Telefonaktiebolaget L M Ericsson (Publ) System and method for access network multi-homing
US8804531B2 (en) * 2012-05-21 2014-08-12 Cisco Technology, Inc. Methods and apparatus for load balancing across member ports for traffic egressing out of a port channel
US9699079B2 (en) * 2013-12-30 2017-07-04 Netspeed Systems Streaming bridge design with host interfaces and network on chip (NoC) layers
NO2776466T3 (zh) * 2014-02-13 2018-01-20

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080123679A1 (en) * 2003-11-19 2008-05-29 Cray Inc. Routing table architecture
CN1638334A (zh) * 2003-12-30 2005-07-13 国际商业机器公司 在无限带宽网络中传送数据包的***和方法
CN100352196C (zh) * 2003-12-30 2007-11-28 国际商业机器公司 在无限带宽网络中传送数据包的***和方法
CN102119510A (zh) * 2008-08-14 2011-07-06 格诺多有限公司 一种多路径网络
US20120314706A1 (en) * 2011-06-07 2012-12-13 Mellanox Technologies Ltd. Packet switching based on global identifier
US20140334290A1 (en) * 2011-08-30 2014-11-13 International Business Machines Corporation Implementing redundancy on infiniband (ib) networks
CN104246700A (zh) * 2012-05-11 2014-12-24 甲骨文国际公司 用于基于胖树路由在不同无限带宽子网间路由流量的***和方法
CN104079491A (zh) * 2014-07-07 2014-10-01 中国科学院计算技术研究所 一种面向高维度网络的路由器及路由方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
J.C. Mart'ınez,等."Supporting fully adaptive routing in InfiniBand networks".《Proceedings International Parallel and Distributed Processing Symposium》.2003, *

Also Published As

Publication number Publication date
EP3278520B1 (en) 2022-06-22
WO2016159945A1 (en) 2016-10-06
US10469368B2 (en) 2019-11-05
CN107409095A (zh) 2017-11-28
EP3278520A1 (en) 2018-02-07
EP3278520A4 (en) 2018-09-26
US20180083868A1 (en) 2018-03-22

Similar Documents

Publication Publication Date Title
US9998574B2 (en) Packet processing match and action unit with configurable bit allocation
US10979353B2 (en) Packet processing match and action unit with configurable memory allocation
CN107409095B (zh) 从交换机的输入端口向输出端口路由分组的方法、***、介质和交换机
US10645032B2 (en) Packet processing match and action unit with stateful actions
US8401012B2 (en) Packet routing
US9438447B2 (en) Flow distribution algorithm for aggregated links in an ethernet switch
US9130856B2 (en) Creating multiple NoC layers for isolation or avoiding NoC traffic congestion
US11003604B2 (en) Procedures for improving efficiency of an interconnect fabric on a system on chip
TWI543566B (zh) 基於軟體定義網路的資料中心網路系統及其封包傳送方法、位址解析方法與路由控制器
US9246810B2 (en) Hash-based load balancing with per-hop seeding
US8819611B2 (en) Asymmetric mesh NoC topologies
EP2924927B1 (en) Techniques for aggregating hardware routing resources in a multi-packet processor networking system
US9716592B1 (en) Traffic distribution over multiple paths in a network while maintaining flow affinity
US8825986B2 (en) Switches and a network of switches
JP6275263B2 (ja) 大規模データセンターネットワークのためのトラフィック工学
CN107347035B (zh) 路由查找方法、装置、分配节点、查找节点及入口节点
CN106130920A (zh) 一种报文转发方法及装置
CN103873367B (zh) 路由数据分组以及确定路由的方法和装置、胖树网络
WO2022269357A1 (en) Deadlock-free multipath routing for direct interconnect networks
EP3063906A1 (en) Packet forwarding control
US20180183672A1 (en) System and method for grouping of network on chip (noc) elements
CN116915708A (zh) 路由数据包的方法、处理器及可读存储介质
CN106209671A (zh) 一种确定路由负载分担的方法及装置
US11233730B2 (en) Network routing using aggregated links
CN106330748A (zh) 一种流量控制方法及装置

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