在无限带宽网络中传送数据包的系统和方法 【技术领域】
本发明涉及在网络环境中传送数据包,以及尤其涉及在无限带宽网络中传送数据包的系统和方法。
背景技术
计算机的处理器可以通过输入/输出(I/O)网络与诸如网络适配器的外围设备(I/O单元)进行通信。一种众所周知的I/O网络类型被称做无限带宽(IB)网。作为无限带宽贸易协会商标的无限带宽是最近用于I/O通信的产业架构(IBA)。通过IBA结构或由交换机和路由器构成的子网,在同一子网中或经由几个子网IBA使服务器,远程存储器和其他组网设备(也称作端节点)能够并行通行,所述交换机和路由器将数据包传递到它们的目的。交换机容许通过子网管理器(SM)实体、子网管理器代理(SMA)的控制在同一子网内将从一个源端节点接收的数据包传送到目的端节点。通过向子网管理器代理发送命令,子网管理器在网络的初始化时配置交换机,包括在每个交换机内配置称作转发表(Forwarding Table)或转发数据库(FDB)的路由表。
每个目的端节点包括具有一个或多个输出端口的一个或多个信道适配器。将唯一地址分配给每个输出端口,被认为是端口的本地识别符(LID),以及在源端节点处将该地址置于数据包的路由字段首标中,即本地路由首标(LRH)来限定它的目的地址。每个数据包具有由SM分配的唯一目的本地识别符(DLID),并且是通过交换机传递数据包的输出端口的16位地址。位于交换机中地转发表将DLID映射到输出端口。安排FDB为端口块的列表,每个端口块包括目的输出端口的列表。
可以在无限带宽结构规约卷1(InfiniBand ArchitectureSpecification Volume 1)中得到FDB的完整说明和所有先前限定的IB网络的元件,在www.无限带宽.org可获得版本1.0的发布,该版本合并在此以做参考。
为了支持大容量的交换,交换机可以由相互连接的几个芯片来实现。在数据包到达它的目的外部输出端口之前,可以对到达该交换机的外部输入端口的数据包内部安排路由以通过几个芯片层。这些芯片从子网管理器的观点来看可以是分离的交换机,也就是其每一个带有分离的子网管理器代理,或是仅具有一个子网管理器代理的经组合的交换机,因此极大地简化了这种交换结构的管理。
无论在一个或多个交换机内的内部路由路径是什么,使用这样的多芯片实现的主要要求是维护每个数据包的完整路由路径。
此外,必须满足优先级、负载平衡或服务质量(QoS)的所有不同的限制,这些限制通过子网管理器来限定。
本发明提供实现这些要求的系统和方法。
【发明内容】
因此,本发明的主要目的是提供一种分解为多个子交换机或路由实体的交换机结构,而且这些呈现为单一无限带宽适应交换机实体。
在优选实施例中,实现对于至少具有SL对VL映射表和包括通过路由实体耦合到多个输出端口的多个输入端口的交换系统的方法。所述方法包括步骤:
a)从相关于交换系统的交换机路由表得到分配给数据包的输出端口;
b)确定输出端口是否耦合到第一路由实体;以及转到步骤d)或
c)如果先前获得的输出端口没有耦合到第一路由实体,则从相关于第一路由实体的本地路由表得到分配给数据包的本地输出端口;
d)确定输出端口是否耦合到第一路由实体;以及转到步骤f)或
e)从SL对VL映射表得到相关于数据包的VL;以及
g)将数据包放在VL队列中。
【附图说明】
通过结合附图来阅读以下本发明的具体说明,上述和其他目、特征以及优点将能更好的理解,其中:
图1是优选应用本发明的网络环境的示意性方框图;
图2是由4×4端口芯片组成的8端口交换机的示意性方框图;
图3是用于安排路由以单播数据包的步骤流程图。
【具体实施方式】
本发明最好在如图1所说明的网络环境中实现,其中图1的网络环境示出了高层的IBA子网100。为了简略起见,示出了一个IBA子网,但是应该理解IB网可以包括通过路由器102相互连接的多个IBA子网。路由器102也可以是在IBA子网和其他类型的诸如WAN和LAN的网络之间的网桥。IBA子网100包括多个交换机104,以容许多个端节点106通过数据包传输链路进行通信。
子网管理器(SM)108容许在对包括在交换机中的路由表进行初始化和维护期间对子网进行配置。子网管理器也负责SL对VL映射表(SL2VL)的初始化和配置,该映射表包括输入包的服务层(SL)到其输出虚拟路径(VL)之间的对应。SL是在每个数据包的本地路由首标中放置的值,该值限定了数据包在哪个服务层上工作。
VL容许在单个物理链路中创建多个虚拟链路。虚拟路径由子网管理器配置,以及虚拟路径是基于数据包的服务层值。当数据包遍历交换机结构时,通过指向由交换机中的子网管理器配置的SL对VL映射表,其相关的SL确定在每个链路上使用哪个VL。
再次声明,在前述的无限带宽架构规约文档中,读者将发现有关SL和VL的所有信息。
现在参考图2,详细说明用作本发明的优选实施例的交换系统104。图2示出由4×4端口芯片(201-1、202-2、202-3和202-4)构建的8端口全局交换机。虽然对于本发明使用任何组合的芯片(例如,基于为负载平衡所要求的冗余路径的数量,而决定的由12×8端口芯片构建的32端口交换机,或者由24或32芯片构建的64端口交换机)都是可行的,但应该理解本示例仅是为了容易进行说明。此外,由于同样的端口可以作为输入端口和输出端口,所以用在描述中的对于输入端口和输出端口的命名习惯上也是为了清楚的目的,并不作为限定。
如图2所示,8端口全局交换机具有四个外部输入端口(212-1至212-4)或耦合到两个芯片(201-1和202-2)的交换机输入端口,以及四个外部输出端口(214-1至214-4)或耦合到两个芯片(202-3和202-4)的交换机输出端口。在示例的两级结构中,四个芯片(201-1、202-2、202-3和202-4)的每一个具有两个内部端口或芯片端口(208-1至208-4和210-1至210-4)。所述内部端口(208-1、208-2、208-3和208-4)分别耦合到内部端口(210-1、210-3、210-2和210-4)。
由子网管理器代理管理的配置寄存器容许将每个端口分类为外部或内部端口(交换机或芯片端口)。并且对于每个端口也存在对交换机输出端口之一的映射规则。
当数据包在外部输入端口212-i输入交换机时,必须为数据包安排路由到由它的对应目的本地识别符(DLID)所限定的、被指定的外部端口214-i。通过参考图3描述的算法来确定内部路由路径。
因此参考图3,现将说明在交换机内安排路由给数据包的步骤流程图。为了更好的理解请参考图2。在步骤302,在外部输入端口212-i接收的到达交换机的外部链路的数据包。从数据包的首标提取输入数据包的DLID并被用在步骤304,以便得到分配到该数据包的外部输出端口号214-i。通过使用提取的作为指向与交换机104相关的映射表(转发表FWD)的索引的DLID,来获得输出端口号。
在步骤306,进行检查来确定从转发表获得的外部输出端口号是否对于数据包正通过的芯片来讲是本地的。
如果对于芯片外部输出数据端口是本地的(分支,是),则在步骤308检查输入端口以确定它是内部端口还是外部端口。
如果输入端口是内部端口(分支,是),则在步骤310设置输出VL等于包VL,以及将数据包放在对应于VL的队列。在步骤312,通过转发输出自交换机的数据包,结束该过程。
如果输入端口是外部端口(分支,否),则过程转到步骤316。
在步骤316,执行SL对VL映射。在先前步骤中获取的输入SL、输入端口号和外部输入端口用来寻址SL2VL表以获得VL,该VL将与数据包一同发送。
随后,该过程跟随前述的步骤310和312。
回到步骤306,如果从转发表获得的外部输出端口号对于芯片来讲不是本地的(分支,否),则该过程转到步骤314。
在步骤314,在先前步骤获得的外部输出端口号用来作为指向与当前芯片相关的第二映射表(内部转发表IFWD)的索引,以便得到分配给数据包的本地输出端口号。
在可替换要求负载平衡的实施例中,一个或多个DLID的最低有效位(lsb)的位数可以组合成用于索引IFWD表的第i个外部输出端口号。
然后,该过程跟随前述的步骤308。
可以理解已经说明了用于数据包的单播通信,但是可以通过较小的改变而应用到组播通信。更具体地讲,基于用在子网的组播地址的数量、交换机中端口的数量和其他实现的折衷方案,利用位数对外部端口进行编码。