发明内容
为解决上述问题,本发明根据一个实施例提供一种面向高维度网络的路由器,所述路由器包括:
多个子路由器,每个子路由器包括多个互联端口。其中,每个子路由器通过其部分互联端口与所述路由器内的其他子路由器全互联,并且每个子路由器通过其剩余互联端口与外部路由器相连;其中,所述路由器中与外部路由器相连的所有互联端口与所述高维度网络的所有维度方向一一对应。
在一个实施例中,所述子路由器还包括:
与所述多个互联端口一一对应的多个路由选择装置,用于接收经由对应的互联端口从所述子路由器外输入的数据包、修改包头中的路由信息,并且将修改后的数据包发送给交换装置;以及
交换装置,用于经由包头中的路由信息指示的输出互联端口和虚通道从所述子路由器输出来自所述路由选择装置的数据包。
在一个实施例中,所述数据包的包头包括用于指示以下信息的信息位:数据包的路由策略、数据包的输出互联端口和虚通道、目的路由器在所述高维度网络中的位置和目的子路由器在目的路由器中的位置,以及数据包在所述高维度网络的每个维度方向上的运行状态;其中,所述路由策略体现数据包依次走完所述高维度网络的所有维度到达目的路由器。
在一个实施例中,所述路由选择装置包括:
配置寄存模块,用于提供关于所述路由选择装置所在的子路由器的信息;以及路由交换模块,用于根据包头和所述配置寄存模块提供的信息,确定并修改要转发的数据包中关于输出互联端口和虚通道的信息。
在一个实施例中,所述配置寄存模块用于提供以下信息:数据包当前所在的路由选择装置对应的互联端口、当前所在的路由器在所述高维度网络中的位置和当前所在的子路由器在路由器中的位置,以及当前所在的子路由器是否是能够切换到所述高维度网络的各个维度的维度可切换点。
在一个实施例中,所述子路由器还包括用于与I/O设备或者本地计算与存储单元连接的数据端口,所述路由选择装置还包括:
包头拆解模块:用于将来自所述交换装置的数据包进行包头拆解,并且将不含包头的数据净载荷经由所述数据端口传送给所述I/O设备或者本地计算与存储单元;
包头添加模块,用于将经由所述数据端口来自所述I/O设备或者本地计算与存储单元的数据净载荷添加包头,并且将该数据包传送给所述交换装置;以及
仲裁模块,用于将来自所述包头添加模块和所述路由交换模块的数据包传送给所述交换装置,其中优先传送来自所述路由交换模块的数据包。
在一个实施例中,所述路由器包括4个子路由器,其中每个子路由器具有5个互联端口。
根据本发明的一个实施例,还提供一种基于上述路由器在高维度网络中进行数据包路由的方法,包括:
步骤1)、子路由器中的路由选择装置接收经由对应的互联端口从所述子路由器外输入的数据包;
步骤2)、所述路由选择装置中的路由交换模块修改包头中的路由信息,并且所述路由选择装置将修改后的数据包发送给所述子路由器中的交换装置;
步骤3)、所述交换装置经由包头中的路由信息指示的输出互联端口和虚通道从所述子路由器输出来自所述路由选择装置的数据包。
在一个实施例中,步骤2)中,所述路由交换模块根据包头和配置寄存模块提供的信息,确定并修改要转发的数据包中关于输出互联端口和虚通道的信息。
在进一步的实施例中,步骤2)中,修改包头中的路由信息包括:
步骤21)、路由交换模块根据包头中数据包在所述高维度网络的每个维度方向上的运行状态,将走完所有维度的要转发的数据包确定为到达目的路由器,并且将没有走完所有维度的要转发的数据包确定为未到达目的路由器;
步骤22)、对于到达目的路由器的要转发的数据包,所述路由交换模块根据包头中目的子路由器在目的路由器中的位置以及配置寄存模块中数据包当前所在的子路由器在路由器中的位置,确定输出互联端口并且将虚通道确定为第一虚通道,进入步骤24);
步骤23)、对于未到达目的路由器的要转发的数据包,所述路由交换模块根据包头中的数据包路由策略和数据包在所述高维度网络的每个维度方向上的运行状态,确定该数据包的输出维度方向,并且根据该输出维度方向确定输出互联端口;
对于进出维度不同的要转发的数据包,所述路由交换模块将虚通道确定为第二虚通道;对于进出维度相同的要转发的数据包查询所述配置寄存模块,如果数据包当前所在的子路由器是输出维度的维度可切换点,则将虚通道确定为第三虚通道,否则将虚通道确定为第二虚通道;
步骤24)、所述路由交换模块修改包头中关于输出互联端口和虚通道的信息。
在进一步的实施例中,步骤22)中,确定输出互联端口包括:
所述路由交换模块计算目的子路由器在路由器中的坐标与数据包当前所在的子路由器在路由器中的坐标的差;当差值为0时,将包头中关于输出互联端口的信息位置零,当差值不为0时,确定相应的输出互联端口。
在进一步的实施例中,步骤23)还包括:
所述路由交换模块根据所述配置寄存模块中数据包当前所在的路由选择装置对应的互联端口以及所确定的输出维度方向,检查要转发的数据包的进出维度。
在一个实施例中,步骤2)中,修改包头中的路由信息还包括:
由所述路由交换模块修改包头中用于指示数据包在所述高维度网络的每个维度方向上的运行状态的信息位。
采用本发明可以达到如下的有益效果:
由具有较少端口的子路由器(即具有路由功能的子节点)级联成具有多个端口的虚拟路由器,无需其他造价较高的交换设备就能完成数据交换和计算机组网。造价低廉、实现容易,适用于高性能计算机以及具有如3D-torus、4D-torus以及5D-torus等高维度网络路由交换需求的其他数据通信应用场景。同时,虚拟路由器内采用全互联的方式,仅需一跳就可以在该虚拟路由器的内部进行数据交换和路由,使得数据交换具有较低的延迟。此外,本发明提供的路由方法避免了数据包死锁问题,保障了整体数据交换的可靠性。
具体实施方式
下面结合附图和具体实施方式对本发明加以说明。应当理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。
根据本发明的一个实施例,提供一种面向高维度网络的路由器(后文也称作虚拟路由器)。该虚拟路由器由具有路由功能的多个子节点组成,其中,虚拟路由器内部的子节点之间全互联,并且多个这样的虚拟路由器可以构成高维度的计算机互联网络(其中,可将每个虚拟路由器看作高维度网络中的节点)。
图1a示出了构成虚拟路由器的子节点(或称子路由器)的一个实施例。在该实施例中,子节点包括八个数据端口,其中五个数据端口(互联端口)用于进行子节点级联和组网互联,而另外三个数据端口用于连接本地计算与存储资源以及I/O设备。例如,可将三个数据端口中的两个端口连接本地计算与存储资源,而另外一个端口连接I/O设备。后文将对子节点的内部结构进行详细描述。
图1b示出了由四个图1a所示的子节点级联而成的虚拟路由器,如图所示,该虚拟路由器具有八个对外的互联端口(即用于组网的互联端口)。对于每一个子节点来说,在用于进行子节点级联和组网互联的五个互联端口中,有三个互联端口用于与其他子节点的全互联,而另外两个用于充当所组成的虚拟路由器的对外的互联端口。因此,在本实施例中,每个虚拟路由器共有八个对外的互联端口(根据在高维度网络中对应的维度方向,这些端口在图1b中分别标作A+、A-、B+、B-、C+、C-、D+、D-)。以具有八个对外互联端口的虚拟路由器为单位,可构造更高维度的网络,如图1c所示的4D-torus网络。
需要说明的是,尽管图1b描述了由四个具有八个数据端口的子节点组成的虚拟路由器,但可以使用不同数量的具有不同端口数的子节点来组成该虚拟路由器。此外,对于更低或者更高维度的应用场景,可构造具有不同对外互联端口数的虚拟路由器。例如,如果期望将图1b的具有八个对外互联端口的虚拟路由器应用于更低维度的场景,则可以将其中不用的对外互联端口滞空。针对更高维度的应用场景,可以相应地构造具有更多对外互联端口数的虚拟路由器。
在一个实施例中,具有路由功能的子节点可包括节点内全互联Crossbar控制器、路由选择控制器以及互联端口。图2示出了具有五个互联端口的子节点的一个实施例,其中子节点还可以包括PCI-e控制器、本地计算与存储单元(RC)以及I/O设备。下面将分别介绍这些组件:
节点内全互联Crossbar控制器
节点内全互联Crossbar控制器与路由选择控制器或者互联端口中的网络接口控制器相连接。该节点内全互联Crossbar控制器可以根据来自路由选择控制器的数据包头中修正过的路由信息,将该数据包传输到指定的互联端口以及相应的虚通道上。
互联端口
在本实施例中,互联端口包括网络接口控制器和虚通道。
其中,网络接口控制器是连接路由选择控制器与虚通道的通用控制器装置,其可以解读数据包中的虚通道信息进行数据传输。该网络接口控制器可以进行双向数据传输,数据传输方向如图2所示。网络接口控制器的数据输出接口(如图2中与网络接口控制器连接的向外箭头所示)连接到路由选择控制器,而数据输入接口(如图2中与网络接口控制器连接的向内箭头所示)连接到节点内全互联Crossbar控制器。
虚通道TC(在图2中为三个,分别表示为TC0、TC1、TC2)是用于连接子节点内部设备与外部网络接口的通用物理链路,可进行双向数据传输。在物理实现上,根据网络接口控制器对物理信号处理方式的不同,其可以是铜质电缆、光纤或双绞线。
路由选择控制器
路由选择控制器可用于执行路由选择操作,完成对数据包的处理,其内部结构将在下文中结合图3进行详细描述。
PCI-e控制器
PCI-e控制器是针对PCI-e接口进行双向数据传输的通用控制装置,用于在子节点中连接RC(或I/O设备)与路由选择控制器。应理解,也可以将其替换为可适用于其他接口的、用于进行双向数据传输的其他控制装置。
RC
子节点的本地计算与存储资源,如CPU或者内存控制器装置,图2的实施例中示出了两个RC。
I/O设备
带有I/O接口的通用存储或计算装置。
图3示出了路由选择控制器的一个实施例的结构框图,该路由选择控制器基于经过修改的维序路由方法来处理数据包。如图所示,该路由选择控制器包括报头拆解控制器、报头添加控制器、路由交换控制器、Crossbar接口仲裁控制器、缓存FIFO和配置寄存器。下面将分别介绍这些组件:
包头拆解控制器
用于从节点内全互联Crossbar控制器接口读取送往I/O设备或者RC的网络数据包并且进行包头拆解,将不含网络数据包包头的数据净载荷信息传递给与PCI-e控制器接口连接的缓存FIFO。
图4a示出了适用于图1b和1c的虚拟路由器和4D-torus网络的网络数据包包头的一个实施例,其中该包头的总长度为96bit,其包含的具体数据位如下:
网络包头引导码:9bit位宽,表示网络数据包包头的起始,在本实施例中固定设定为“011000000”。
TC:3bit位宽,表示当前网络包在转发离开当前子节点(即路由选择控制器所在的子节点)时,要选择使用的虚通道的编号。
在本实施例中,每个互联端口的虚通道有三条。其中第一条可用于传输目标是当前虚拟路由器(即当前子节点所在的虚拟路由器)内的子节点的数据包;第二条可用于在数据包进出维度(输入和输出当前子节点的维度)相同且当前子节点是输出维度的维度可切换点时,输出该数据包;最后一条可用于在数据包进出维度相同但当前子节点不是输出维度的维度可切换点时,以及用于在数据包进出维度不相同时,传输该数据包。
RT:1bit位宽,表示当前网络数据包所使用的路由算法,如使用本发明提供的路由算法(将在下文中描述),可设置为“1”。
目的端口编号(DestPort):3bit位宽,表示当前网络包在转发离开当前子节点时,要选择使用的端口编号。
Subtype:5bit位宽,是预留位,可以用于区分数据包的类型。
NIC:3bit位宽,用于定位子节点本地外设的编号。当数据包传输到目的子节点后,根据NIC信息位区分该数据包是传输到哪个本地计算与存储资源还是传输到I/O设备。
Length:10bit位宽,表示网络包长度。
策略ID(Strategy ID):4bit位宽,路由策略编码,即路由算法所使用的信息,用于计算当前网络数据包所要采取的路由策略。与现有维序路由中的路由策略编码相同,Strategy ID的值所表示的0~15分别对应策略寄存器组的16行中的一行(将在下文中描述)。
维度引导码(Guide Bits):8bit位宽,与现有维序路由相同,用于表示当前网络数据包在A、B、C、D四个维度上是否走到尽头,如果该数据包在四个维度都走完,则说明该数据包已经传输到目的虚拟路由器内。根据维序路由算法,数据包的传输都是先走完一个维度后再进行下一维度的数据包传输。Guide Bits的8个bit对应八个维度方向,分别指示在各个维度的正反两个方向是否走到终点。在Guide Bits的各个bit位中,“1”表示该方向尚未到达终点;“0”表示该方向已经到达终点或无需行走,且可以切换到下一维度进行寻路。
应理解,这里的8bit维度引导码适用于4D-torus网络,而针对更高维度的网络,需要增加相应维度方向的bit位。
目的子节点坐标(A Dest、B Dest、C Dest、D Dest、E Dest):即目的子节点在各个维度上的坐标,每个坐标有8bit位宽。其中,A Dest、B Dest、C Dest和D Dest表示目的子节点在4D-torus网络中分在A、B、C、D四个维度上的地址。在本实施例中,A、B、C、D四个维度都有正反两个方向,当数据包在四个维度都走完后,表明该数据包已经到达了目的虚拟路由器的某个子节点。而E Dest用于指示目的虚拟路由器中的目的子节点,即目的子节点在E维度上的坐标,在数据包走完四个维度后,再根据E维度走到目的子节点。
应理解,对于更高维度的应用场景,需要增加目的子节点在相应维度上的维度坐标。
First BE和Last BE:各有4bit位宽,指示第一个和最后一个双字(DOUBLE WORD)中有效的字节(不包含网络包头),其符合PCI-e定义。
上面给出了网络数据包包头的一个实施例,使用其他结构的数据包头对于本领域技术人员来说是显而易见的。
包头添加控制器
用于从与PCI-e控制器接口连接的缓存FIFO中读取I/O设备或者RC发出的数据净载荷信息,对该数据净载荷信息根据其目的信息添加诸如图4a所示的网络数据包包头,并将带有该包头的数据包传送给连接到节点内全互联Crossbar控制器接口的Crossbar接口仲裁控制器。
路由交换控制器
用于从与网络接口控制器接口连接的缓存FIFO读取来自网络接口控制器的网络数据包,并且进行包头信息位的修改操作,其中,这些信息位能够影响节点内全互联Crossbar控制器对该网络数据包的转发。路由交换控制器将修改过包头的网络数据包传送给连接节点内全互联Crossbar控制器接口的Crossbar接口仲裁控制器。
在一个实施例中,修改的信息位可包括目的端口编号(DestPort)、虚通道(TC)和维度引导码(Guide Bits),该路由交换控制器可通过执行下文描述的路由方法来修改这些信息,节点内全互联Crossbar控制器经由修改后的目的互联端口和虚通道发送该数据包。
Crossbar接口仲裁控制器
连接路由交换控制器、包头添加控制器与节点内全互联Crossbar控制器接口。在本实施例中,与包头添加控制器相比,路由交换控制器的权值更高。因此,在发生接口冲突时,优先由路由交换控制器占用。
缓存FIFO
在进行数据信息传输时,对数据信息进行临时缓存,从而保证接口与模块间数据传输的可行性,图3中示出了三个缓存FIFO。
配置寄存器
该配置寄存器用于协助路由交换控制器执行路由方法(即下文中描述的修改的维序路由方法)。当路由交换控制器在修改包头信息时,需要调用由配置寄存器提供的路由策略以及关于本地子节点的信息。配置寄存器包括两个寄存器组(参见图4b和4c):策略寄存器组和维度寄存器组。如图3所示,配置寄存器所存储的数据信息是由外部寄存器配置控制器事先设置好的,并且可通过寄存器配置控制器接口进行实时更新。配置寄存器的物理实现可以是是双端口RAM。
图4b示出了策略寄存器组的一个实施例,该策略寄存器组与现有维序路由方法使用的策略寄存器组相同,策略寄存器组的每一行对应一种路由策略,一共存储有16种路由策略。每一行的路由策略又包含八项8bit的策略数值,该策略数值分别表示与当前策略寄存器组所在的路由选择控制器相对应的互联端口到达八个维度(A+、A-、B+、B-、C+、C-、D+、D-)的路由信息。网络数据包每到达一个路由交换控制器,就根据包头中策略ID信息位查询对应的路由策略(如前所述,4bit的策略ID分别对应路由策略寄存器组的16行路由策略中的一行)。然后采用现有的维序路由方法,用该数据包携带的维度引导码(Guide Bits)分别与对应路由策略中的每项策略数值进行按位与(And)操作,比较结果中1的数目,结果中1的数目最少的策略数值所对应的维度方向就是该包要选择的路由方向。
图4c示出了维度寄存器组的一个实施例,与现有维序路由方法使用的维度寄存器组类似,其中存储的数据包括:
S标示:即与当前的路由选择控制器连接的互联端口的维度标示。例如,如果路由选择控制器连接的互联端口对应A维度(A+/-),则图4c中的S标示可体现该互联端口对应于维度A。
D标示:即维度可切换点(Dateline)标示。图4c中的“D_A”到“D_E”指示当前路由选择控制器所在的子节点是否是可以切换到A到E维度的维度可切换点。例如,如果“D_A”信息位为“1”,则表示当前子节点是A维度的维度可切换点。由于在现有的维序路由方法中规定,维度间的切换只能在维度可切换点上进行维度切换,因此在本发明中,为了避免维度间切换造成死锁,设定了在维度切换时进行相应的虚通道(TC)切换操作(将在下文中详细描述)。
当前子节点坐标信息:即当前子节点的A、B、C、D、E维度坐标。如图4c所示,A_ID、B_ID、C_ID、D_ID、E_ID分别为当前子节点在A、B、C、D、E各个维度上的坐标数值。如上文所述,A_ID、B_ID、C_ID、D_ID是当前子节点在A、B、C、D各个维度上的坐标,E_ID用于指示当前子节点在当前虚拟路由器(即当前子节点所在的虚拟路由器)中的位置。
切换虚通道编号(VC):图4c中的A1_VC、B1_VC、C1_VC、D1_VC表示当前子节点在A、B、C、D维度上的1号虚通道编号数值;A0_VC、B0_VC、C0_VC、D0_VC表示当前子节点在A、B、C、D维度上的0号虚通道编号数值;E2_VC为当前子节点在E维度上的2号虚通道编号数值。
各维度方向对应的端口编号(PD):包括八个对外互联维度(A+/-、B+/-、C+/-、D+/-)和虚拟路由器内部的三个互联维度(E+1,E+2,E+3)。其中A、B、C、D表示4D-torus网络中虚拟路由器的位置,正负方向表示在该维度上可传输的两个方向,E表示虚拟路由器中每个子节点的位置。如图4c所示,A+方向对应的端口编号在维度寄存器组中的数值标记为“A+_PD”(其为当前子节点的一个互联端口的端口编号);维度寄存器组中的“E+1_PD”表示与当前子节点的维度距离相差为1的子节点所对应互联端口编号(即连接该维度相差为1的子节点所使用的互联端口编号),其他同理。
应理解,上文所示的维度寄存器组适用于4D-torus网络的路由,对于更高维度的应用场景,可增加相应维度的S标示、D标示、当前子节点坐标信息、切换虚通道编号和各维度方向对应的端口编号。
继续参考图3,路由选择控制器还包括以下接口:
PCI-e控制器接口:用于连接PCI-e控制器与路由选择控制器,并进行双向数据传输。
网络接口控制器接口:用于连接网络接口控制器与路由选择控制器,并进行单向数据传输。
寄存器配置控制器接口:用于连接寄存器配置控制器与路由选择控制器,并进行单向寄存器配置数据的传输。
节点内全互联Crossbar控制器接口:用于连接节点内全互联Crossbar控制器与路由选择控制器,并进行单向或双向数据传输。
综上所述,路由选择控制器用于对本地计算与存储设备等发起的数据进行数据包头添加、对发往本地计算与存储设备(或I/O设备)的网络数据包进行包头拆解、对发往非本地计算与存储单元(或I/O设备)的网络数据包进行路由交换(即包头信息修改),再由节点内全互联Crossbar控制器进行数据包交换处理。其中,包头拆解包括:当路由选择控制器通过节点内全互联Crossbar控制器接收到送往本地计算与存储设备(或I/O设备)的网络数据包时,将包头去除并存入缓存FIFO,再通过PCI-e控制器将缓存FIFO中的数据信息递送给本地计算与存储设备(或I/O设备)。包头添加包括:当路由选择控制器通过PCI-e控制器接收到发往非本地计算与存储资源(或I/O设备)的数据信息时,对未添加网络信息包头的数据信息添加如图4a所示的网络包头。路由交换包括:当路由选择控制器经由网络接口控制器接收到子节点外部发来的待转发的网络数据包时,对网络数据包的网络包头进行信息提取,并结合下文讨论的路由方法修改网络数据包的包头信息,其中确定节点内全互联Crossbar控制器将该数据包从当前子节点的哪个互联端口和哪个虚通道输出。其中,包头添加和路由交换都需要获取当前子节点的网络拓扑信息,即需要获取配置寄存器中的信息,因此需要首先经由路由选择控制器外的寄存器配置控制器对该配置寄存器进行配置。
根据本发明的一个实施例,还提供一种适用于上述虚拟路由器的路由方法。概括而言,该路由方法包括:接收来自网络接口控制器的网络数据包的路由选择控制器根据该网络数据包的包头信息以及自身配置寄存器的数据,来确定并修改该网络数据包包头的信息位。其中,包括修改如图4a所示的数据包头的三个部分的信息:目的端口编号(DestPort)、虚通道(TC)以及维度引导码(Guide Bits)。接着,当前子节点的节点内全互联Crossbar控制器将根据修改后的网络包头中的目的端口编号确定输出端口(即输出该数据包的互联端口)、将根据TC确定在输出端口使用的虚通道编号,并且根据维度引导码确定网络数据包的运行状态。最后,根据进行网络数据包的具体转发操作。
下面将根据一个实施例,描述路由选择控制器修改目的端口编号、TC以及维度引导码的具体步骤:
一、修改目的端口编号(DestPort)
如图5所示,概括而言,路由选择控制器中的路由交换控制器在接收到需要进行路由交换的网络数据包(即待路由转发的数据包)后,根据包头中的策略ID和维度引导码进行计算和判定,根据结果确定该数据包离开本子节点的互联端口编号(DestPort),以协助节点内全互联Crossbar控制器转发该数据包。现根据以下子步骤进行描述:
步骤11:在接收到待路由转发的网络数据包后,路由交换控制器从相应的缓存FIFO中提取该网络数据包中的策略ID(Strategy ID)和维度引导码(Guide Bits)。
步骤12:根据在步骤11中得到的Guide Bits进行判定。
如果Guide Bits的所有位不全为零,则表示该网络数据包在A、B、C、D四个维度没有走到终点,即该路由交换控制器所在的虚拟路由器不是此网络数据包的目的虚拟路由器,则进入步骤13;如果Guide Bits全为零则表示该网络数据包已经到达目的虚拟路由器(即已经走完了A、B、C、D四个维度),则进入步骤17。
步骤13:策略选择。
采用现有的维序路由方法,根据包头中4bit位宽的Strategy ID读取十六行策略寄存器组中对应的路由策略,得到该路由策略中的八项策略数值。
步骤14:采用现有的维序路由方法,将Guide Bits分别与八项8bit位宽的策略数值进行按位“与”计算,即将Guide Bits的每一个Bit位与每个策略数值对应的Bit位进行“逻辑与”计算。
步骤15:将每个策略数值参与的“逻辑与”计算结果进行比较,结果中1的个数最少的策略数值所对应的维度方向就是该数据包要选择的路由方向,即确定从A+、A-、B+、B-、C+、C-、D+、D-这八个维度方向的对应哪个端口输出。
步骤16:根据输出的维度方向,路由交换控制器从维度寄存器组中的“各维度方向对应的端口编号(PD)”部分读取与输出维度方向对应的当前子节点的互联端口编号,进入步骤20。例如,如果确定的输出维度为A+,则读取维度寄存器组中A+_PD部分。
步骤17:在虚拟路由器内部,计算各子节点间的维度距离(其中,虚拟路由器内四个子节点之间的维度距离为1、2或3)。
该计算包括:从维度寄存器组读取当前子节点在E维度的ID数值(E_ID),将此数值与网络数据包中的目的E维度坐标(E Dest)进行作差运算。如果结果为0则表示当前数据包已经送达了目的子节点,则进入步骤19;如果结果不为0,则表示当前数据包未送达目的子节点,则进入步骤18。
步骤18:根据作差的结果,从维度寄存器组中读取“各维度方向对应的端口编号”部分,从中获得目标端口编号,进入步骤20。例如,如果作差的结果为1,则对应地读取“E+1_PD”;如果作差的结果为2,则读取“E+2_PD”;如果作差的结果为3,则读取“E+3_PD”中的对应数值。
步骤19:已经到达了目的子节点,将DestPort置零,不进入步骤20。
步骤20:操作成功,将前面步骤得到的目的端口编号替换到网络数据包包头中。
二、修改虚通道(TC)
步骤21:参见图6,在接收到待路由转发的网络数据包后,路由交换控制器从相应的缓存FIFO中提取该网络数据包的目的子节点维度坐标信息(即图4a中的A Dest、B Dest、C Dest、D Dest、E Dest)并且从配置寄存器中的维度寄存器组中获得当前子节点(即本地子节点)的坐标信息(图4c中的A_ID、B_ID、C_ID、D_ID、E_ID)。
步骤22:将目的子节点的A、B、C、D维度坐标与本地子节点的A、B、C、D维度坐标进行比较。如果这四个维度的坐标相同,说明已达到目的虚拟路由器内的任意一个子节点,则进入步骤27;如果不相同,说明未达到目的虚拟路由器,则进入步骤23。
步骤23:进行网络数据包进出维度检查。根据上文中修改目的端口编号的步骤可以得到当前网络数据包的下一跳输出维度。再根据维度寄存器组中的“S标示”,确定本路由交换控制器所对应的互联端口的维度。比较两个维度是否相同,若相同(即同维度输入输出)则进行步骤24。若不相同,则需要切换至0号虚通道,进行步骤26。
其中,在执行进出维度检查时,进行A、B、C、D维度的检查,例如,如果网络数据包要从A+方向进入而后从A-方向离开,则该网络数据包进出维度都是A方向维度,即满足同维度进出。
步骤24:检查是否是输出维度的维度可切换点。
查询维度寄存器组中对应输出维度的“D标示”位是否为1。如果D标示为1则表示当前路由选择控制器所在的子节点是该输出维度的维度可切换点,则需要切换到1号虚通道,进入步骤25;否则,表示当前路由选择控制器所在的子节点不是输出维度的维度可切换点,则需要切换到0号虚通道,进入步骤26。
步骤25:1号虚通道切换操作。
根据当前网络数据包的下一跳输出维度。从维度寄存器组查询该输出维度方向对应的1号虚通道编号,进入步骤28。例如,A维度的1号虚通道在维度寄存器组中标记为“A1_VC”。
步骤26:0号虚通道切换操作。
从维度寄存器组中查询输出维度方向对应的0号虚通道编号,作为TC值,进入步骤28。例如,如A维度的0号虚通道在维度寄存器中标记为“A0_VC”。
步骤27:2号虚通道切换操作。
从维度寄存器组查询“E2_VC”,得到2号虚通道编号。
步骤28:操作成功,将得到的虚通道编号替换到网络数据包包头的TC中,结束本步骤。
三、修改Guide Bits
步骤31:参见图7,在接收到待路由转发的网络数据包后,路由交换控制器从相应的缓存FIFO中提取网络数据包包头中的维度引导码(Guide Bits)以及目的子节点坐标信息,并且从本地维度寄存器组得到当前本地子节点的坐标信息。
步骤32:将目的子节点坐标与当前子节点目的坐标进行比较,如果目的与当前子节点在A、B、C、D四个维度的坐标完全相同则说明已达到目的虚拟路由器内的任意一个子节点。
步骤33:将坐标相同的维度所对应的Guide Bits中的Bit数据位进行归0操作。如上文所述,Guide Bets共有8bit数据位,分别代表A、B、C、D四个维度的正反方向,共八个方向,即每个Bit指示一个方向。例如,如果目的子节点与本地子节点在A维度上的坐标相同,则将Guide Bits中对应A+、A-的Bit位设置为0。
步骤34:操作成功,将Guide Bits替换到网络数据包包头中,结束本步骤。
发明人采用本发明提供的路由器和路由方法进行了多次实验,图8示出了在不同组网规模下的数据传输延时性能效果。图8中横坐标表示网络中某一子节点的单端口数据传输速率,纵坐标表示该端口所传输数据包的传输延时的平均数;图中各个线条表示在不同网络规模(即不同节点数)下,单端口数据传输速率与数据包传输延时平均数的变化关系。从图8中可见,采用本发明提供的路由器和路由方法,在不同组网规模下的数据传输延时性能效果良好。
应该注意到并理解,在不脱离后附的权利要求所要求的本发明的精神和范围的情况下,能够对上述详细描述的本发明做出各种修改和改进。因此,要求保护的技术方案的范围不受所给出的任何特定示范教导的限制。