一种包含跨维度链路的直接网络路由方法和系统与流程

文档序号:11460111阅读:252来源:国知局
一种包含跨维度链路的直接网络路由方法和系统与流程

本发明涉及计算机网络技术领域,特别涉及一种包含跨维度链路的直接网络路由方法和系统。



背景技术:

高性能并行计算机的性能仍按照每四年提高10倍的速度增长,预计在2018~2019年会出现艾级(exascale)计算机,系统规模达到100,000节点以上。作为高性能计算机支柱技术之一的高性能互连网络,其设计是实现艾级计算机性能和扩展性的关键。直接网络凭借极好的扩展性成为高端系统的主流,在2016年底的top10排行中有7台系统使用直接网络。此外,随着处理器内集成网络部件的技术趋势逐渐清晰(ibmbluegeneq和下一代kcomputer已将网络部件集成在处理器,intel和nvidia也推出了相关路线图),直接网络将得到更广泛的使用。

然而,由于直接网络的维度提升受到芯片封装工艺的限制(端口带宽、端口数目受限),其网络直径会随着系统规模的增大而快速增加(全局通信跳步数增加),艾级系统的互连网络在全局通信性能方面面临挑战。同时,在面临网络直径增加而导致全局通信性能下降的同时,艾级系统的大规模直接网络还面临层次化设计对全局通信性能的进一步缩减。类比于internet的局部网和骨干网,当计算机系统达到一定规模时,在其互连网络之上假设高速“骨干网”成为必要,在数据中心领域,已经研究提出了增加快速通路(shortcutpath)来弥补全局通信性能,在直接网络中使用该技术也是未来趋势,其中跨维度链路便属于快速通路。

路由算法是网络实现的核心要素之一。快速通路会在直接网络中引入新的路由资源依赖环路,而已有的直接网络路由算法无法解决该问题,

因此,本发明提出一种包含快速通路的直接网络下的路由转发方法。区别于传统直接网络中的维序路由、自适应路由,本发明首先对快速通路链路进行配对分组;基于分组结果,生成快速通路的专用维度和相关节点坐标值。最后按照分组维度的固定顺序进行路由选择,为网络中的每个节点计算到其他节点的输出端口号,实现对走快速通路流量的无死锁路由转发。



技术实现要素:

为了解决上述技术问题,本发明目的在于提供一种包含跨维度链路的直接网络路由方法,其中包括:

步骤1、对直接网络中的跨维度链路进行两两配对分组,生成多个分组,并依次为每个该分组设置分组编号,将设置完成后的多个该分组集合为分组信息发送至步骤2;

步骤2、根据该分组编号,为该分组信息中相应分组设置维度,并根据分组中跨维度链路的方向和该维度,为每条设置跨维度链路两端节点的坐标和方向信息;

步骤3、根据该坐标和方向信息,生成该直接网络中各节点到其他节点的端口转发表,该直接网络中各节点根据该端口转发表对相应数据进行转发。

该包含跨维度链路的直接网络路由方法,其中该步骤1包括:

步骤11、在该直接网络中选定初始目标交换机作为分组起始点;

步骤12、标记该起始点作为当前节点,并判断是否具有跨维度链路,若是则执行步骤13,否则执行步骤19;

步骤13、标记当前该跨维度链路,并针对当前该跨维度链路,遍历寻找该直接网络中尚未标记的跨维度链路;

步骤14、判断是否具有另一条跨维度链路与当前该跨维度链路处于同一平面,且该另一条跨维度链路两头节点不与当前链路两头节点重叠,若有则执行步骤15,否则执行步骤16;

步骤15、将该另一条跨维度链路与当前该跨维度链路集合为组合链路分组,并将该组合链路分组中两条链路分别标记为1号链路与2号链路;

步骤16、将当前该跨维度链路组成独立链路分组;

步骤17、判断是否已将步骤12中该节点的跨维度链路遍历完全,若是则执行步骤19,否则执行步骤18;

步骤18、针对步骤12中该节点,执行该步骤13继续选择另一尚未标记的跨维度链路;

步骤19、判断目前是否遍历完该直接网络中的全部节点,若是则执行步骤111,否则执行步骤110;

步骤110、在该直接网络中按照维度顺序,选择另一未标记过的节点,继续执行步骤12;

步骤111、遍历该独立链路分组,并按照遍历顺序将每两个该独立链路分组合并为一个组合,作为合并独立分组,直到不存在独立链路分组或仅有一个独立链路分组,其中步骤1中该分组信息包含多个该组合链路分组、多个该合并独立分组和/或一个该独立链路分组。

该包含跨维度链路的直接网络路由方法,其中该步骤2包括:

步骤21、遍历步骤1中该分组信息内的各个分组,将当前正在遍历的分组作为当前分组;

步骤22、根据该当前分组的分组编号,为该当前分组设置所占用的维度,并判断该当前分组是否包含独立链路分组,若有则执行步骤24,否则执行步骤23;

步骤23、根据该当前分组中2号链路两端节点在同一个维度的坐标中的大小,判定该2号链路的方向,并根据该维度和该2号链路的方向分别为该2号链路的两端节点分别设置坐标和端口维度方向;

步骤24、根据该当前分组中1号链路两端节点在同一个维度的坐标中的大小,判定该1号链路的方向,并根据该维度和该1号链路的方向分别为该1号链路的两端节点分别设置坐标和端口维度方向;

步骤25、判断是否已对该分组信息内的所有分组进行遍历,若是则结束,否则开始遍历下一分组并执行步骤22,其中步骤2中该坐标和方向信息包括,步骤23和步骤24所设置的坐标和端口维度方向;

其中该端口维度方向包括正方向端口和负方向端口。

该包含跨维度链路的直接网络路由方法,其中该步骤3包括:

步骤31、定义i为分组信息中第i个分组编号,j为当前分组的第j个维度编号,生成源节点和目的节点的跨维度链路的维度坐标值g(i,j);

步骤32、根据该维度坐标值判定源交换节点到目的交换节点在g(i,j)维度上的路由方式,路由方式包括:无需路由、源节点通过g(i,j)维度负方向端口路由到目的节点、源节点通过g(i,j)维度正方向端口路由到目的节点;

步骤33、根据步骤32中该路由方式,判断当前节点是否需要在g(i,j)维度正方向进行路由,若是则执行步骤34,否则执行步骤36;

步骤34、判断源节点是否具有去往g(i,j)维度正目标方向的端口,若是则执行步骤35,否则执行步骤39;

步骤35、将源节点的g(i,j)维度正方向端口作为路由到目的节点的输出端口;

步骤36、根据步骤32中该路由方式,判断当前节点是否需要在g(i,j)维度负方向进行路由,若是则执行步骤37,否则执行步骤39;

步骤37、判断源节点是否具有去往g(i,j)维度负目标方向的端口,若是则执行步骤38,否则执行步骤39;

步骤38、将源交换节点的g(i,j)维度负方向的端口作为路由到目的节点的输出端口;

步骤39、结束g(i,j)维度路由检查,同时对j数值自增1;

步骤310、判断是否已经对分组编号为i的分组中全部维度的路由方式进行判定,若是则执行步骤311,否则执行步骤32;

步骤311、检查当前是否完成对分组信息中所有分组的输出判断,若是则执行步骤313,否则执行步骤312;

步骤312、完成对当前分组编号为i的分组路由检查,并对当前分组编号i自增1,执行步骤32;

步骤313、判定源节点无跨维度链路端口可直接输出至目的交换节点。

该包含跨维度链路的直接网络路由方法,其中步骤32中该路由方式的判定方法为、

若源节点在g(i,j)维度上的坐标值等于目的节点在g(i,j)维度上的坐标值,则该路由方式判定为无需路由;

若源节点在g(i,j)维度上的坐标值大于目的节点在g(i,j)维度上的坐标值,则该路由方式判定为源节点通过g(i,j)维度负方向端口路由到目的节点;

若源节点在g(i,j)维度上的坐标值小于目的节点在g(i,j)维度上的坐标值,则该路由方式判定为源节点通过g(i,j)维度正方向端口路由到目的节点。

本发明还提供一种包含跨维度链路的直接网络路由系统,其中包括:

分组模块、用于对直接网络中的跨维度链路进行两两配对分组,生成多个分组,并依次为每个该分组设置分组编号,将设置完成后的多个该分组集合为分组信息;

设置模块、用于根据该分组编号,为该分组信息中相应分组设置维度,并根据分组中跨维度链路的方向和该维度,为每条设置跨维度链路两端节点的坐标和方向信息;

转发模块、用于根据该坐标和方向信息,生成该直接网络中各节点到其他节点的端口转发表,该直接网络中各节点根据该端口转发表对相应数据进行转发。

该包含跨维度链路的直接网络路由系统,其中该分组模块包括:

第一判断模块、用于在该直接网络中选定初始目标交换机作为分组起始点,标记该起始点作为当前节点,并判断是否具有跨维度链路,若是则调用第二判断模块,否则调用第三判断模块;

第二判断模块、用于标记当前该跨维度链路,并针对当前该跨维度链路,遍历寻找该直接网络中尚未标记的跨维度链路,判断是否具有另一条跨维度链路与当前该跨维度链路处于同一平面,且该另一条跨维度链路两头节点不与当前链路两头节点重叠,若有则调用标记模块,否则调用独立链路分组模块;

集合模块、用于将该另一条跨维度链路与当前该跨维度链路集合为组合链路分组;

独立链路分组模块、用于将当前该跨维度链路组成独立链路分组;

第三判断模块、用于判断是否已将该第二判断模块中该节点的跨维度链路遍历完全,若是则调用第四判断模块,否则针对该第二判断模块中该节点,继续调用该第二判断模块;

第四判断模块、用于判断目前是否遍历完该直接网络中的全部节点,若是则遍历该独立链路分组,并按照遍历顺序将每两个该独立链路分组合并为一个组合,作为合并独立分组,直到不存在独立链路分组或仅有一个独立链路分组,并为各该合并独立分组和各该组合链路分组中两条跨维度链路分别标记为1号链路与2号链路,为该独立链路分组中单条跨维度链路标记为1号链路,其中第一判断模块中该分组信息包含多个该组合链路分组、多个该合并独立分组和/或一个该独立链路分组。

该包含跨维度链路的直接网络路由系统,其中该设置模块包括:

维度设置模块、用于遍历该分组信息内的各个分组,将当前正在遍历的分组作为当前分组,并根据该当前分组的分组编号,为该当前分组设置所占用的维度为g(i,1)和g(i,2)两个维度,并判断该当前分组是否属于独立链路分组,若是则调用第二判定模块,否则调用第一判定模块;

第一判定模块、用于设置该当前分组中2号链路的其中一节点在g(i,1)与g(i,2)两个维度的坐标为(0,1)且对该2号链路端口的维度为g(i,1),另一节点在g(i,1)与g(i,2)两个维度的坐标为(1,0)且对该2号链路端口的维度为g(i,2);

第二判定模块、用于设置该当前分组中1号链路的其中一节点在g(i,1)与g(i,2)两个维度的坐标为(0,-1)且对该1号链路端口的维度为g(i,1),另一节点在g(i,1)与g(i,2)两个维度的坐标为(-1,0)且对该1号链路端口的维度为g(i,2),并设置步骤23和步骤24以外的其他链路所包含的交换节点,在g(i,1)与g(i,2)两个维度的坐标均为(0,0);

第五判断模块、用于判断是否已对该分组信息内的所有分组进行遍历,若是则结束,否则开始遍历下一分组并调用维度设置模块,其中设置模块中该坐标和方向信息包括,第一判定模块和第二判定模块所设置的坐标和端口维度方向,该端口维度方向包括正方向端口和负方向端口。

该包含跨维度链路的直接网络路由系统,其中该转发模块包括:

路由方式确定模块、用于定义i为分组信息中第i个分组编号,j为当前分组的第j个维度编号,生成源节点和目的节点的跨维度链路的维度坐标值g(i,j),并根据该维度坐标值判定源交换节点到目的交换节点在g(i,j)维度上的路由方式,路由方式包括:无需路由、源节点通过g(i,j)维度负方向端口路由到目的节点、源节点通过g(i,j)维度正方向端口路由到目的节点;

第六判断模块、用于根据该路由方式,判断当前节点是否需要在g(i,j)维度正方向进行路由,若是则调用第七判断模块,否则调用第八判断模块;

第七判断模块、用于判断源节点是否具有去往g(i,j)维度正目标方向的端口,若是则将源节点的g(i,j)维度正方向端口作为路由到目的节点的输出端口,否则调用结束模块;

第八判断模块、用于根据该路由方式,判断当前节点是否需要在g(i,j)维度负方向进行路由,若是则调用第九判断模块,否则调用结束模块;

第九判断模块、用于判断源节点是否具有去往g(i,j)维度负目标方向的端口,若是则将源交换节点的g(i,j)维度负方向的端口作为路由到目的节点的输出端口,否则调用结束模块;

结束模块、用于结束g(i,j)维度路由检查,同时对j数值自增1;

第十判断模块、用于判断是否已对分组编号为i的分组中全部维度的路由方式进行判定,若是则调用检查模块,否则调用该路由方式确定模块;

检查模块、用于检查当前是否完成对分组信息中所有分组的输出判断,若是则判定源节点无跨维度链路端口可直接输出至目的交换节点,否则完成对当前分组编号为i的分组路由检查,并对当前分组编号i自增1,调用该路由方式确定模块。

该包含跨维度链路的直接网络路由系统,其中路由方式确定模块中还包括:

若源节点在g(i,j)维度上的坐标值等于目的节点在g(i,j)维度上的坐标值,则该路由方式判定为无需路由;

若源节点在g(i,j)维度上的坐标值大于目的节点在g(i,j)维度上的坐标值,则该路由方式判定为源节点通过g(i,j)维度负方向端口路由到目的节点;

若源节点在g(i,j)维度上的坐标值小于目的节点在g(i,j)维度上的坐标值,则该路由方式判定为源节点通过g(i,j)维度正方向端口路由到目的节点。

由此本发明具有的优势如下:

对应用场景强适应性:适合于在任意维度数量,任意网络规模下的torus和mesh网络中,保证对任意数量任意位置的跨纬度shortcut通路的路由支持。

路由交换无死锁特性:本发明所提供的对shortcut通路的路由选择与转发方法不存在路由死锁的问题。

通过lft表示路由算法结果:支持产生目前用于主流路由判断的lft线性转发表,即目的交换节点到输出端口号的路由映射表,可直接在现有交换设备上通过sdn控制器进行实现。

低数据依赖性特征:在进行路由判断时,所使用的“源交换节点”是数据包在网络中转发传输时,已经路由到且正在进行路由判断的“当前交换节点”,而不是产生该数据包的“起始交换节点”。因此本专利的路由转发判断方法,仅需“当前交换节点”位置信息,无需参考产生该数据包的交换节点,即具有低数据依赖性特征。

大规模可扩展性强:本专利所提出的方法,不会产生额外过多的判断数据需要存储,大部分无效的路由坐标数据均为“0”,可通过简化存储的方式表示这些无效数据。

为让本发明的上述特征和效果能阐述的更明确易懂,下文特举实施例,并配合说明书附图作详细说明如下。

附图说明

图1是本发明所述的链路信息与路由转发表产生方法结构图;

图2是本发明所述的快速通路分组以及分组合并举例的示意图;

图3是本发明一个实施例的快速通路配对分组方法实施流程图;

图4是本发明所述的快速通路分组坐标与端口维度信息设置的示意图;

图5是本发明一个实施例的坐标与端口相关信息生成方法实施流程图;

图6是本发明一个实施例的路由转发表生成方法方法实施流程图;

图7是本发明一个实施例的具有快速通路的mesh网络中路由计算的实施示意图。

具体实施方式

本发明提供一种包含快速通路的直接网络下的数据路由方法。本发明方法将网络中的各条快速通路进行分组配对处理,基于分组结果生成快速通路的专用维度和相关节点坐标值,进而生成适应于当前网络结构的能够避免路由死锁的路由信息,需要说明的是,下文中“网络”在没有特殊说明时均指“直接网络”。

如图1所示,整个方法包含三个子方法:快速通路分组配对步骤,路由信息生成步骤以及路由转发表生成步骤。

所述快速通路分组配对步骤,作为步骤1,对直接网络中的跨维度链路进行两两配对分组,生成多个分组,并依次为该分组进行编号,将编号完成后的多个该分组集合为分组信息发送至步骤2,具体来说为了节约路由生成过程中对维度的过多占用,对网络中的快速通路,进行分组配对处理。其特点在于先对直接网络中同一平面不同起始节点的跨维度链路进行两两配对,两根为一个组或一根为一个组,形成初次分组结果;再对独立成组的链路进行分组合并,形成最终的分组信息。通过对链路的分组,为路由信息生成方法,提供处理和计算所需的分组信息。

所述路由信息生成步骤,作为步骤2,从“快速通路分组配对方法”获得快速通路最终分组信息,产生快速通路两端节点的“快速通路坐标”和“快速通路端口维度与方向”信息,所产生的信息供路由转发表生成方法使用。方法的特点在于其对每个快速通路分组设置特定的“快速通路维度”,对节点连接快速通路的端口设置特定的“快速通路维度”方向信息,从而产生独立于原直接网络中节点坐标和端口维度方向的路由信息。

所述路由转发表生成步骤,作为步骤3,使用从“路由信息生成方法”获得的快链路路由信息,产生直接网络中各节点到其他节点的端口转发表,也称“线性转发表”(lft)该直接网络中各节点根据该端口转发表对相应数据进行转发,即交换机或路由器依据该转发表实现数据的无死锁路由转发。

针对“快速通路配对分组”模块,本发明提出一种快速通路配对分组方法,举例如图2所示,按照本方法中对shortcut通路(快速通路)配对分组,可得图2(a)的初步分组结果。在通过对独立成组的链路进行分组合并,可得图2(b)的分组结果,举例中独立成组的分组3与分组2被合并为一个分组。具体实现细节如图3所示,具体操作步骤如下:

步骤11:选择起始点,在直接网络中选定初始目标交换机作为分组起始点,在图2的举例中将选择三维mesh网络中x,y,z三个维度坐标为(0,0,0)的交换节点作为起始点。

步骤12:交换节点shortcut通路判断,标记当前节点(交换节点),并开始检查当前节点是否具跨维度链路,即shortcut通路,若是则执行步骤13,否则执行步骤19。

步骤13:遍历未标记的shortcut通路:标记当前该跨维度链路,并针对当前该跨维度连接线,遍历寻找网络中尚未标记的shortcut通路,这个步骤的目的是给当前标记链路寻找另一条跨维度链路组成一个分组。

步骤14:判断是否具有同平面shortcut通路:判断是否具有另一条跨维度链路与当前该跨维度链路处于同一平面,且链路两头节点不与当前链路两头节点重叠,若有则执行步骤15,否则执行步骤16。

步骤15:将该另一条跨维度链路与当前该跨维度链路集合为组合链路分组,与任一同平面shortcut通路进行配对:选择一条满足要求的链路,即将该另一条跨维度链路与当前该跨维度链路集合为组合链路分组,并将该链路分组两条链路分别标记为该分组的1号链路与2号链路。

步骤16:独立组成分组:将当前链路独立组成一个链路分组,将该分组这条线标记为“独立链路分组”。

步骤17:判断是否已将步骤12中该节点的跨维度链路遍历完全:判断当前是否遍历完当前节点的shortcut快速通路,若是则执行步骤19,否则执行步骤18。

步骤18:遍历下一shortcut快速通路:针对步骤12中该节点,执行该步骤13继续选择另一尚未标记的跨维度链路。

步骤19:网络节点遍历结束判断:判断目前是否遍历完网络中的全部交换节点,若是则执行步骤111,否则执行步骤110。

步骤110:遍历下一交换节点:在该直接网络中按照维度顺序,选择另一未标记过的节点,继续执行步骤12。

步骤111:独立链路分组合并:遍历该独立链路分组,并按照遍历顺序将每两个该独立链路分组合并为一个组合,作为合并独立分组,直到不存在独立链路分组或仅有一个独立链路分组,并为各该合并独立分组和各该组合链路分组中两条跨维度链路分别标记为1号链路与2号链路,为该独立链路分组中单条跨维度链路标记为1号链路,其中步骤1中该分组信息包含多个该组合链路分组、多个该合并独立分组和/或一个该独立链路分组。

需要注意的是,以上该合并独立分组和该组合链路分组内均包含有一对符合要求的跨维度链路,即两者在实质上内容几乎是相同的,只是该组合链路分组内的两跨维度链路位于同一平面,该合并独立分组中两跨维度链路位于相异平面,并且多个该组合链路分组、多个该合并独立分组和/或一个该独立链路分组即为该分组信息中多个该分组,也即多个该组合链路分组、多个该合并独立分组和/或一个该独立链路分组统称为分组,共同组合为该分组信息,该分组信息包含多个该组合链路分组、多个该合并独立分组和/或一个该独立链路分组。

针对“路由信息生成模块”模块,本发明提出一种基于坐标与端口维度方向的信息生成方法,举例如图4所示。具体实现细节如图5所示,具体操作步骤如下:

步骤21:以快速通路分组为单位,遍历分组:根据链路分组方法得到的分组信息,遍历各个链路分组,将当前正在遍历的分组作为当前分组。

步骤22:根据该当前分组的分组编号,为该当前分组设置所占用的维度为g(i,1)和g(i,2)两个维度,并判断该当前分组是否属于独立链路分组,若是则忽略步骤23,否则继续执行步骤23,其中i为该分组编号:根据当前分组编号i,设置当前分组链路所占用的维度为g(i,1)和g(i,2)两个维度。判断当前分组是否仅包含一条链路(跨维度链路),若仅有一条链路直接进行步骤24,否则进行步骤23。

每个维度定义都有“正方向”与“负方向”;在本路由算法中对“正链路”的定义如图4(a)中所示,是一条同时包含了两个不同维度的正方向的快速通路。相应的,“负链路”的定义如图4(a)中所示,是一条包含了两个不同维度的负方向的快速通路,此处对本发明正方向和负方向的定义加以定义,该定义属于现有技术,仅为了使本发明正方向和负方向的定义更加明确,首先需要明确一个概念,即:方向是正还是负,不是由人直接定义的,是由链路上两节点在同一个维度的坐标的定义得出的,例如:在同在x坐标系中的两个点间有一条链路,坐标值大的点指向坐标值小的点,在x维度上就是“负”方向。通过人为故意定义的坐标,结合各个链路端口所在的维度,可以推到出“正链路”的两个端口所在维度的的方向都是“正方向”。简单的说:决定链路一个端口的方向的因素有两方面:链路两头的两个交换节点坐标的设置以及这两个节点端口所在维度的设置。

步骤23:设置该当前分组中2号链路的其中一节点在g(i,1)与g(i,2)两个维度的坐标为(0,1)且对该2号链路端口的维度为g(i,1),另一节点在g(i,1)与g(i,2)两个维度的坐标为(1,0)且对该2号链路端口的维度为g(i,2),实施例中定义当前分组的“2号正链路”,设置两端节点坐标与端口维度方向:按照图4(a)中i号分组的2号“正链路”所示,设置当前分组2号链路的其中一节点在g(i,1)与g(i,2)两个维度的坐标为(0,1),该节点对该链路端口的维度为g(i,1);根据该端口维度和两个交换节点坐标可知:该端口在g(i,1)维度上的方向是正方向。设置当前分组2号链路的另一节点在g(i,1)与g(i,2)两个维度的坐标为(1,0),该节点对该链路端口的维度为g(i,2);根据该端口维度和两个交换节点坐标可知:该端口在g(i,2)维度上的方向是正方向。设置完成后将如图4(b)中两根灰虚线的端口维度的设置结果,对应的坐标将如图4(c)所示的完成设置,本步骤思路包括设置链路两个节点的坐标和链路端口的维度后,推导出该端口的方向,该步骤23包括判断该2号链路是否为坐标值小的点指向坐标值大的点的链路,若是则判定该该2号链路的方向为正,否则为负,如图4a中2号链路所示,3节点指向4节点看各自坐标的前一位,即0到1,由小到大所以是正方向,故3节点对应正方向端口,4节点指向3节点看各自坐标的后一位,即0到1,由小到大所以也是正方向,故4节点也对应正方向端口,方向判断下同故不再赘述。

步骤24:设置该当前分组中1号链路的其中一节点在g(i,1)与g(i,2)两个维度的坐标为(0,-1)且对该1号链路端口的维度为g(i,1),另一节点在g(i,1)与g(i,2)两个维度的坐标为(-1,0)且对该1号链路端口的维度为g(i,2),实施例中定义当前分组的“1号负链路”,设置两端节点坐标与端口维度方向:按照图4(a)中i号分组的1号“负链路”所示,设置当前分组1号链路的其中一节点在g(i,1)与g(i,2)两个维度的坐标为(0,-1),该节点对该链路端口的维度为g(i,1);根据该端口维度和两个交换节点坐标可知:该端口在g(i,1)维度上的方向是负方向。设置当前分组1号链路的另一节点在g(i,1)与g(i,2)两个维度的坐标为(-1,0),该节点对该链路端口的维度为g(i,2);根据该端口维度和两个交换节点坐标可知:该端口在g(i,2)维度上的方向是负方向。设置完成后将如图4(b)中两灰实线线的端口维度的设置结果,对应的坐标将如图4(c)所示的完成设置,该步骤24包括判断该1号链路是否为坐标值小的点指向坐标值大的点的链路,若是则判定该该1号链路的方向为正,否则为负。设置步骤23和步骤24以外的其他链路所包含的交换节点,在g(i,1)与g(i,2)两个维度的坐标均为(0,0),如图4(c)中所示。

步骤25:分组遍历结束判断:判断是否已经完成对所有分组的遍历,若已经完成了分组遍历则结束,否则开始遍历下一分组并执行步骤22。

针对“路由转发表生成模块”模块即步骤3,本发明提出一种面向直接网络的无死锁路由转发与路由表生成方法。当数据包已送达源交换节点(源节点),为了路由到目的交换节点(目的节点),需在源交换节点通过查询路由转发表,得知从源交换节点的哪个端口进行转发,可将数据包送达目的交换节点。该方法是在已知源交换节点和目的交换节点的原始dor坐标和快速通路坐标的前提下,产生各交换节点内路由转发表的路由计算方法。

具体路由计算并得到路由转发表的实现细节如图6所示,具体操作步骤如下:

步骤31:分组编号与维度参数初始化:初始化维度判断参数,定义i为遍历的第i个分组编号,j为当前分组的第j个维度编号(初始i=1,j=1,每个分组共两个维度),生成源节点和目的节点的跨维度链路的维度坐标值g(i,j)。

步骤32:根据该维度坐标值判定源交换节点到目的交换节点在g(i,j)维度上的路由方式,路由方式包括:无需路由、源节点通过g(i,j)维度负方向端口路由到目的节点、源节点通过g(i,j)维度正方向端口路由到目的节点,具体为对g(i,j)维度进行判断:对源交换节点和目的交换节点的快速通路的g(i,j)维度坐标值进行判断,判断是否需要在g(i,j)维度的正方向进行路由。判断方法如下:源交换节点在g(i,j)维度上的坐标值是“n”,目的交换节点在g(i,j)维度上的坐标值是“m”。若n=m,则说明两节点在g(i,j)维度上位置相同,无需在该维度上进行路由;若n>m,则说明源节点需要通过g(i,j)维度负方向端口路由到目的交换节点;若n<m,则说明源节点需要通过g(i,j)维度正方向端口路由到目的交换节点。

步骤33:g(i,j)维度正方向路由判断:根据步骤32中对源交换节点到目的交换节点在g(i,j)维度上的路由方式,判断当前节点是否需要在g(i,j)维度正方向进行路由,若是则执行步骤34,否则执行步骤36。

步骤34:源交换节点存在g(i,j)维度正向端口的判断:判断源交换节点是否具有去往g(i,j)维度正目标方向的端口,若是则执行步骤35,否则执行步骤39。(在网络基于交换节点进行组网连接时,可以对每个交换节点的各个端口的维度和方向信息进行存储,即“端口-维度方向”信息。此步骤处再根据交换节点的“端口-维度方向”信息,进行相应维度和方向的查找和判断即可。)

步骤35:将源节点的g(i,j)维度正方向的端口作为路由到目的节点的输出端口,输出源交换节点g(i,j)维度正向端口号:将源交换节点的g(i,j)维度正方向的端口号,作为路由到目的节点的输出端口号;完成后结束对源交换节点到目的节点的路由端口判断。

步骤36:g(i,j)维度负方向路由判断:根据步骤32中对源交换节点到目的交换节点在g(i,j)维度上的路由方式,判断当前节点是否需要在g(i,j)维度负方向进行路由,若是则执行步骤37,否则执行步骤39。

步骤37:源交换节点存在g(i,j)维度负向端口的判断:判断源交换节点是否具有去往g(i,j)维度负目标方向的端口,若是则执行步骤38,否则执行步骤39。

步骤38:将源交换节点的g(i,j)维度负方向的端口作为路由到目的节点的输出端口,输出源交换节点g(i,j)维度负向端口号:将源交换节点的g(i,j)维度负方向的端口号,作为路由到目的节点的输出端口号;完成后结束对源交换节点到目的节点的路由端口判断。

步骤39:结束g(i,j)维度路由检查,对下一维度进行检查:通过之前的路由检查,源交换节点到目的交换节点不应该从g(i,j)维度的端口进行路由。因此,需要跳过g(i,j)维度,同时对j数值自增1,以对目前分组的另一维度进行路由检查或开始对下一分组的维度进行检查。

步骤310:判断当前分组维度检查是否结束:是否完成对分组编号为i分组的两个维度的路由输出判断,若是则执行步骤311,否则执行步骤32。

步骤311:判断是否完成对全部分组的遍历:检查当前是否完成对所有分组的输出判断,即是否完成对全部分组的遍历,若是则执行步骤313,否则执行步骤312。

步骤312:结束g(i)分组的路由检查,对下一分组进行检查:完成对当前g(i)分组的维度判断,并对当前分组编号自增1,即开始对下一分组进行路由输出判断,执行步骤32。

步骤313:判定源节点无跨维度链路端口可直接输出至目的交换节点:当完成了对所有shortcut链路分组的路由检查后,发现没有任何快速通路端口可供输出,即判断为源交换节点无快速通路端口可直接输出至目的交换节点,至少需通过mesh或torus网络的一步,才能路由至目的交换节点。按照传统直接网络的无死锁路由算法进行路由选择,如dor维序路由方法,得到输出端口号;完成后结束对源交换节点到目的节点的路由端口判断。

图7是本方法在基于图4(b)与图4(c)实施例中各个维度坐标和网络结构,为展示本方法路由特点所做的实施例。图7中各个交换节点的坐标、端口维度和方向均与图4(b)(c)相同。从图7的实施例可以看出,在本路由算法中能够使用快速通路进行路由转发,具有以下三方面特点:

特点1)只有当快速通路中一个端点是整条点到点链路的终点时,才能够使用快速通路的进行路由的链路;否则快速通路的维度坐标将无法影响路由判断。如图7中的节点9到节点3的路由,没有经由节点10到节点7的快速通路。根据本发明的路由计算方法,将按照xy维度的传统维序方式进行路由。

特点2)只有当快速通路是传统维序路由链路的部分或全部路径的替代时,才能够使用快速通路的进行路由的链路。如图7中节点13到节点7的路由,根据本发明的路由计算方法,按照xy维度的传统维序方式进行路由。虽然节点10到节点7的快速通路满足特点1,但该快速通路没有对传统维序路由链路,作为部分或全部路径的替代。

特点3)不是所有点到点通信都是完全利用快速通路的最短路径。如节点9到节点3的路由,在具有快速通路的网络中并没有按照最短路径进行路由。

采用本发明可以达到如下的有益效果:

本发明对应用场景强适应性:适合于在任意维度数量,任意网络规模下的torus和mesh网络中,保证对任意数量任意位置的跨维度shortcut通路的路由支持。

路由交换无死锁特性:本发明所提供的对shortcut通路的路由选择与转发方法不存在路由死锁的问题。

通过lft表示路由算法结果:支持产生目前用于主流路由判断的lft线性转发表,即目的交换节点到输出端口号的路由映射表,可直接在现有交换设备上通过sdn控制器进行实现。

低数据依赖性特征:在进行路由判断时,所使用的“源交换节点”是数据包在网络中转发传输时,已经路由到且正在进行路由判断的“当前交换节点”,而不是产生该数据包的“起始交换节点”。因此本发明的路由转发判断方法,仅需“当前交换节点”位置信息,无需参考产生该数据包的交换节点,即具有低数据依赖性特征。

大规模可扩展性强:本发明所提出的方法,不会产生额外过多的判断数据需要存储,大部分无效的路由坐标数据均为“0”,可通过简化存储的方式表示这些无效数据。

以下为与上述方法实施例对应的系统实施例,本实施系统可与上述实施方式互相配合实施。上述施方式中提到的相关技术细节在本实施系统中依然有效,为了减少重复,这里不再赘述。相应地,本实施系统中提到的相关技术细节也可应用在上述实施方式中。

本发明还提供一种包含跨维度链路的直接网络路由系统,其中包括:

分组模块、用于对直接网络中的跨维度链路进行两两配对分组,生成多个分组,并依次为每个该分组设置分组编号,将设置完成后的多个该分组集合为分组信息;

设置模块、用于根据该分组编号,为该分组信息中相应分组设置维度,并根据分组中跨维度链路的方向和该维度,为每条设置跨维度链路两端节点的坐标和方向信息;

转发模块、用于根据该坐标和方向信息,生成该直接网络中各节点到其他节点的端口转发表,该直接网络中各节点根据该端口转发表对相应数据进行转发。

该包含跨维度链路的直接网络路由系统,其中该分组模块包括:

第一判断模块、用于在该直接网络中选定初始目标交换机作为分组起始点,标记该起始点作为当前节点,并判断是否具有跨维度链路,若是则调用第二判断模块,否则调用第三判断模块;

第二判断模块、用于标记当前该跨维度链路,并针对当前该跨维度链路,遍历寻找该直接网络中尚未标记的跨维度链路,判断是否具有另一条跨维度链路与当前该跨维度链路处于同一平面,且该另一条跨维度链路两头节点不与当前链路两头节点重叠,若有则调用标记模块,否则调用独立链路分组模块;

集合模块、用于将该另一条跨维度链路与当前该跨维度链路集合为组合链路分组;

独立链路分组模块、用于将当前该跨维度链路组成独立链路分组;

第三判断模块、用于判断是否已将该第二判断模块中该节点的跨维度链路遍历完全,若是则调用第四判断模块,否则针对该第二判断模块中该节点,继续调用该第二判断模块;

第四判断模块、用于判断目前是否遍历完该直接网络中的全部节点,若是则遍历该独立链路分组,并按照遍历顺序将每两个该独立链路分组合并为一个组合,作为合并独立分组,直到不存在独立链路分组或仅有一个独立链路分组,并为各该合并独立分组和各该组合链路分组中两条跨维度链路分别标记为1号链路与2号链路,为该独立链路分组中单条跨维度链路标记为1号链路,其中第一判断模块中该分组信息包含多个该组合链路分组、多个该合并独立分组和/或一个该独立链路分组。

该包含跨维度链路的直接网络路由系统,其中该设置模块包括:

维度设置模块、用于遍历该分组信息内的各个分组,将当前正在遍历的分组作为当前分组,并根据该当前分组的分组编号,为该当前分组设置所占用的维度为g(i,1)和g(i,2)两个维度,并判断该当前分组是否属于独立链路分组,若是则调用第二判定模块,否则调用第一判定模块;

第一判定模块、用于设置该当前分组中2号链路的其中一节点在g(i,1)与g(i,2)两个维度的坐标为(0,1)且对该2号链路端口的维度为g(i,1),另一节点在g(i,1)与g(i,2)两个维度的坐标为(1,0)且对该2号链路端口的维度为g(i,2);

第二判定模块、用于设置该当前分组中1号链路的其中一节点在g(i,1)与g(i,2)两个维度的坐标为(0,-1)且对该1号链路端口的维度为g(i,1),另一节点在g(i,1)与g(i,2)两个维度的坐标为(-1,0)且对该1号链路端口的维度为g(i,2),并设置步骤23和步骤24以外的其他链路所包含的交换节点,在g(i,1)与g(i,2)两个维度的坐标均为(0,0);

第五判断模块、用于判断是否已对该分组信息内的所有分组进行遍历,若是则结束,否则开始遍历下一分组并调用维度设置模块,其中设置模块中该坐标和方向信息包括,第一判定模块和第二判定模块所设置的坐标和端口维度方向,该端口维度方向包括正方向端口和负方向端口。

该包含跨维度链路的直接网络路由系统,其中该转发模块包括:

路由方式确定模块、用于定义i为分组信息中第i个分组编号,j为当前分组的第j个维度编号,生成源节点和目的节点的跨维度链路的维度坐标值g(i,j),并根据该维度坐标值判定源交换节点到目的交换节点在g(i,j)维度上的路由方式,路由方式包括:无需路由、源节点通过g(i,j)维度负方向端口路由到目的节点、源节点通过g(i,j)维度正方向端口路由到目的节点;

第六判断模块、用于根据该路由方式,判断当前节点是否需要在g(i,j)维度正方向进行路由,若是则调用第七判断模块,否则调用第八判断模块;

第七判断模块、用于判断源节点是否具有去往g(i,j)维度正目标方向的端口,若是则将源节点的g(i,j)维度正方向端口作为路由到目的节点的输出端口,否则调用结束模块;

第八判断模块、用于根据该路由方式,判断当前节点是否需要在g(i,j)维度负方向进行路由,若是则调用第九判断模块,否则调用结束模块;

第九判断模块、用于判断源节点是否具有去往g(i,j)维度负目标方向的端口,若是则将源交换节点的g(i,j)维度负方向的端口作为路由到目的节点的输出端口,否则调用结束模块;

结束模块、用于结束g(i,j)维度路由检查,同时对j数值自增1;

第十判断模块、用于判断是否已对分组编号为i的分组中全部维度的路由方式进行判定,若是则调用检查模块,否则调用该路由方式确定模块;

检查模块、用于检查当前是否完成对分组信息中所有分组的输出判断,若是则判定源节点无跨维度链路端口可直接输出至目的交换节点,否则完成对当前分组编号为i的分组路由检查,并对当前分组编号i自增1,调用该路由方式确定模块。

该包含跨维度链路的直接网络路由系统,其中路由方式确定模块中还包括:

若源节点在g(i,j)维度上的坐标值等于目的节点在g(i,j)维度上的坐标值,则该路由方式判定为无需路由;

若源节点在g(i,j)维度上的坐标值大于目的节点在g(i,j)维度上的坐标值,则该路由方式判定为源节点通过g(i,j)维度负方向端口路由到目的节点;

若源节点在g(i,j)维度上的坐标值小于目的节点在g(i,j)维度上的坐标值,则该路由方式判定为源节点通过g(i,j)维度正方向端口路由到目的节点。

虽然本发明以上述实施例公开,但具体实施例仅用以解释本发明,并不用于限定本发明,任何本技术领域技术人员,在不脱离本发明的构思和范围内,可作一些的变更和完善,故本发明的权利保护范围以权利要求书为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1