一种RapidIO交换设备动态管理方法及系统
技术领域
本发明属于RapidIO网络技术领域,特别是涉及到一种RapidIO交换设备动态管理方法及系统。
背景技术
RapidIO规范作为嵌入式互连技术方面得到国际标准化组织(ISO)和国际电工协会(IEC)授权的唯一标准,为嵌入式系统提供了高带宽、低延迟、高可靠性的互连技术。一般地,RapidIO网络由处理器件(PE,Processing Element)和交换器件(SWITCH)组成,前者主要负责生成、收发和处理数据包,后者完成数据包的接收与转发。作为RapidIO网络中的核心设备,交换器件具有高可靠性、高速率和高吞吐量等优点,能否根据场景需要对其灵活配置就显得尤为关键。
RapidIO网络中各设备间是基于ID号进行数据交换的,而SWITCH不具有器件ID,当操作目标是交换设备(即向其发送维护包)时,就需要使用目的器件ID与跳数(hopCount)的组合进行寻址。目的器件ID用以保证维护包能够投递到目标SWITCH,而跳数是指从起点到目标交换之间经过的交换设备数量。交换机的处理器件一旦接收到维护包,检查到跳数字段为0即解析处理,否则将其值减1,再根据目标器件ID继续转发出去。
目标器件ID采用传统的交换设备寻址ID方法,主要有两种:为交换设备直接分配ID和复用终端设备ID;前者顾名思义,会为网络中每个交换设备分配一个ID,这种方法需要消耗掉相当多十分宝贵且有限的设备ID资源,只能应用在设备数量较少的场合;而后者复用ID的方案即在RapidIO网络枚举阶段,为终端设备分配器件ID时,按照就近原则在逻辑上为交换设备设定寻址ID,比如会优先选择交换直连的终端设备ID,条件不满足的话就选择其后继交换设备的器件ID;但是当网络发生变化时(如设备热插拔等),需要动态调整为交换器件“绑定”的ID,调整过程依赖于实际网络拓扑结构,复杂的网络拓扑会使得调整过程难以求解,而且这种方案无法解决配置有多播等复杂场景下的寻址问题。
发明内容
针对上述问题,本发明提出一种新的动态可扩展的RapidIO交换设备管理方法及系统,达到交换设备管理的智能化、动态自适应和高可靠性。
为达到上述目的,本发明的技术方案是这样实现的:
一种RapidIO交换设备动态管理方法,采用虚拟ID池(Virtual ID Pool,VIDP)的概念从根本上解除交换设备与PE设备的耦合关系,通过固定个数ID加弹性可变ID两部分实现虚拟ID池VIDP尺寸的自适应调整,并且构建、维护RapidIO网络交换设备实时路由覆盖缓冲区cache,用于存储已配置好的交换设备维护路径;当cache中查询交换设备未命中时动态配置路径。
进一步的,所述VIDP及cache构建方法包括:
S1、Host主机发起RapidIO网络枚举,同时计算生成RapidIO网络交换设备维护路径集(Switch Maintaining Path Set,SMPS),即以Host为源点、用尽可能少的路径覆盖网络中所有交换设备、形成的路径集合;
S2、Host主机在枚举完成之后,根据网络规模初始化虚拟ID池VIDP,尺寸由固定阈值确定,固定阈值指在设备ID空间中预留出若干数量;然后构建RapidIO网络交换设备实时路由覆盖缓冲区cache。
更进一步的,所述cache存储已配置好的交换设备维护路径的方法为:
S3、Host主机准备给交换设备A发送维护包,首先到cache中查询该交换设备是否已配置有维护路由,因cache初始为空未命中,则到RapidIO网络交换设备维护路径集SMPS中检索出一条包含交换设备A的最长路径,并从VIDP中读取一个可用ID;然后基于该ID依次配置路径上的所有交换设备,成功完成后将该路径与ID一并存储到cache中。
更进一步的,所述动态配置路径的方法为:
S4、Host主机准备发送维护包给交换设备B,先到cache中检索,如命中则直接使用相应的ID,否则采用步骤S3策略完成配置;直到出现VIDP无可用ID的情况,如果当前网络中已无空闲设备ID,转步骤S5,否则转步骤S6;
S5、首先从cache中释放一个ID出来,可按照某种规则如路径长度最短进行选取,然后采用步骤3策略完成配置,进而完成维护包的组织与发送;
S6、当前网络中存在空闲的设备ID,这时根据空闲设备ID数量动态确定若干ID补充给VIDP,然后采用步骤3策略完成配置,进而完成维护包的组织与发送。
更进一步的,动态配置路径的方法还包括:
S7、如果出现PE设备热插入,并且空闲设备ID为空,则检测VIDP是否可压缩,即当前尺寸是否大于固定阈值,如是则执行VIDP尺寸压缩,释放一个ID出来供新插入的PE设备使用,同时保持VIDP与cache的一致性。
本发明的另一方面,还提供了一种RapidIO交换设备动态管理系统,包括:
VIDP及cache构建模块,用于采用虚拟ID池VIDP的概念从根本上解除交换设备与PE设备的耦合关系,通过固定个数ID加弹性可变ID两部分实现虚拟ID池VIDP尺寸的自适应调整,并且构建、维护RapidIO网络交换设备实时路由覆盖缓冲区cache;
Cache模块,用于存储已配置好的交换设备维护路径;
动态配置路径模块,用于当cache中查询交换设备未命中时动态配置路径。
进一步的,所述VIDP及cache构建模块包括:
SMPS单元,用于在Host主机发起RapidIO网络枚举时,同时计算生成RapidIO网络交换设备维护路径集SMPS,即以Host为源点、用尽可能少的路径覆盖网络中所有交换设备、形成的路径集合;
构建单元,用于在Host主机枚举完成之后,根据网络规模初始化虚拟ID池VIDP,尺寸由固定阈值确定,固定阈值指在设备ID空间中预留出若干数量;然后构建RapidIO网络交换设备实时路由覆盖缓冲区cache。
进一步的,所述Cache模块包括:
查询检索存储单元,用于Host主机准备给交换设备A发送维护包时,首先到cache中查询该交换设备是否已配置有维护路由,因cache初始为空未命中,则到RapidIO网络交换设备维护路径集SMPS中检索出一条包含交换设备A的最长路径,并从VIDP中读取一个可用ID;然后基于该ID依次配置路径上的所有交换设备,成功完成后将该路径与ID一并存储到cache中。
进一步的,所述动态配置路径模块包括:
第一动态配置单元,用于在Host主机准备发送维护包给交换设备B时,先到cache中检索,如命中则直接使用相应的ID,否则采用步骤S3策略完成配置;直到出现VIDP无可用ID的情况,如果当前网络中已无空闲设备ID,转第二动态配置单元,否则转第三动态配置单元;
第二动态配置单元,用于从cache中释放一个ID出来,可按照某种规则如路径长度最短进行选取,然后采用步骤3策略完成配置,进而完成维护包的组织与发送;
第三动态配置单元,用于在当前网络中存在空闲的设备ID时,根据空闲设备ID数量动态确定若干ID补充给VIDP,然后采用步骤3策略完成配置,进而完成维护包的组织与发送。
更进一步的,所述动态配置路径模块还包括:
第四动态配置单元,用于如果出现PE设备热插入,并且空闲设备ID为空,则检测VIDP是否可压缩,即当前尺寸是否大于固定阈值,如是则执行VIDP尺寸压缩,释放一个ID出来供新插入的PE设备使用,同时保持VIDP与cache的一致性。
与现有技术相比,本发明具有如下的有益效果:
1、本发明提出“动态可伸缩的RapidIO交换设备虚拟ID池”技术概念,根据网络实时规模自动判断ID池的尺寸,能够在保证RapidIO网络正常运转的同时,最大化设备ID的资源利用率;
2、本发明提出“一个ID对应一条由若干交换设备形成的路由链路”技术概念,实现有限ID覆盖尽量多RapidIO交换设备的目标;
3、本发明提出“RapidIO网络交换设备实时路由覆盖缓冲区”技术概念,用来存储所有已配置好的交换设备维护路径,实现已配置交换设备直接寻址,将动态配置带来的开销降至最低。
综上所述,本发明提出了一种新的RapidIO交换设备动态管理方案,通过采用虚拟ID池解除交换设备与PE设备的耦合关系,有效解决了传统方法难以应对网络变化和无法处理多播等复杂问题,并且通过引入路径缓冲区和动态伸缩等机制,实现了网络资源的最大化利用,又充分降低了配置操作带来的时间开销,能够广泛应用于不同规模的RapidIO网络和动态变化的应用场景。
附图说明
图1是本发明实施例中带闭环的网络模型示意图;
图2是本发明实施例中阵列形态网络模型示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
本发明针对传统方案的不足,提出一种新的动态可扩展的RapidIO交换设备管理方法,采用虚拟ID池的概念从根本上解除交换设备与PE设备的耦合关系,通过固定个数ID加弹性可变ID两部分实现ID池尺寸的自适应调整,并且构建、维护RapidIO网络交换设备实时路由覆盖缓冲区,使得仅当交换设备未命中时才需动态配置,进而达到交换设备管理的智能化、动态自适应和高可靠性。
●方法步骤详述
本发明的新方法主要包含RapidIO网络交换设备维护路径集合的计算,虚拟ID池和交换设备配置路由覆盖缓冲区的初始化与实时维护,并根据用户请求和网络状态动态调整,具体步骤如下:
步骤1、RapidIO网络枚举阶段,同时计算生成RapidIO网络交换设备覆盖路径集合,即以Host为源点,目标是用尽可能少的路径覆盖网络中所有交换设备,称这些路径的集合为交换设备维护路径集(SMPS,Switch_Maintenance_path_set);
步骤2、Host主机在枚举完成之后,根据网络规模初始化虚拟ID池(VIDP,SwitchVirtual ID Pool),尺寸由固定阈值确定,固定阈值指在设备ID空间中预留出若干数量(例如8比特的设备ID表示域,预留最后6个ID用于表征交换设备,即0xFA-0xFF);然后构建RapidIO网络交换设备实时路由覆盖缓冲区(下称cache),初始为空,后续用来存储一条条已配置好的交换设备维护路径;
步骤3、Host主机准备给交换设备A发送维护包,首先到cache中查询该交换设备是否已配置有维护路由,因cache初始为空未命中,那么就到SMPS中检索出一条包含交换设备A的最长路径,并从VIDP中读取一个可用ID=X;然后基于ID=X依次配置路径上的所有交换设备,成功完成后将该路径与ID一并存储到cache中。至此,Host主机就可以使用ID=X(hopCount即交换A在路径中的位置)来组织维护包并发送出去;
步骤4、Host主机准备发送维护包给交换设备B,仍然是先到cache中检索,如命中则直接使用相应的ID,否则采用步骤3策略完成配置;直到出现VIDP无可用ID的情况,如果当前网络中已无空闲设备ID,转步骤5,否则转步骤6;
步骤5、首先需要从cache中释放一个ID出来,可按照某种规则如路径长度最短进行选取,然后采用步骤3策略完成配置,进而完成维护包的组织与发送;
步骤6、当前网络中存在空闲的设备ID,这时根据空闲设备ID数量动态确定若干ID补充给VIDP,然后采用步骤3策略完成配置,进而完成维护包的组织与发送;
步骤7、如果出现PE设备热插入,并且空闲设备ID为空,则需要检测VIDP是否可压缩,即当前尺寸是否大于固定阈值,如是则执行VIDP尺寸压缩,释放一个ID出来供新插入的PE设备使用,同时需保持VIDP与cache的一致性。
●具体网络模型演示
参阅图1所示网络模型,为突出强调交换设备,模型中除host主机外,忽略其他PE设备,灰色背景为交换器件,红色数字为建立有物理链路的端口号。
首先,Host主机发起RapidIO网络枚举,依次探测所有建链设备并完成初始配置动作(如为PE设备分配ID等),同步计算用尽可能少的路径覆盖网络中所有交换设备,得到交换设备维护路径集:SMPS={(1,2,3,5,6),(1,4,3,5,7)};
然后,Host主机初始化虚拟ID池VIDP,尺寸为固定个数6(可根据实际场景调整),初始池子为满状态,即VIDP={0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};构建RapidIO网络交换设备实时路由覆盖缓冲区cache,初始为空;
接下来,假定用户要读取SW2上的某个寄存器值,就需要获取能够寻址SW2的ID和hopCount:优先在cache中查询,由于cache当前为空是以未命中,然后从SMPS里检索出一条包含目标SWITCH且长度最长的路径,结果是1-2-3-5-6,同时向VIDP申请一个可用ID(返回0xFA),依次对1-2-3-5-6路径上的所有交换配置路由(SW6之所以不必配置,是因为其为当前路径最后一个SWITCH,不会再向其他SWITCH转发维护包):
SWITCH |
Port_IN |
Port_OUT |
ID |
Hopcount |
1 |
0 |
1 |
0xFA |
0 |
2 |
8 |
6 |
0xFA |
1 |
3 |
10 |
4 |
0xFA |
2 |
5 |
13 |
5 |
0xFA |
3 |
6 |
NA |
NA |
0xFA |
4 |
配置成功后,将{ID=0xFA,path=(1,2,3,5,6)}这一ID与路径的组合存储到cache中,再将ID=0xFA,hopCount=1返回用以寻址SW2;
用户要读取SW5上的寄存器配置,仍然优先去cache中查询,直接命中并返回ID=0xFA,hopCount=3;
用户要读取SW7上的寄存器配置,很明显cache查询失败,类似地,从SMPS里检索出路径1-4-3-5-7,同时向VIDP申请一个可用ID(返回0xFB),依次配置路径上的所有交换设备路由:
SWITCH |
Port_IN |
Port_OUT |
ID |
Hopcount |
1 |
0 |
5 |
0xFB |
0 |
4 |
2 |
9 |
0xFB |
1 |
3 |
7 |
4 |
0xFB |
2 |
5 |
13 |
9 |
0xFB |
3 |
7 |
NA |
NA |
0xFB |
4 |
配置成功后,将{ID=0xFB,path=(1,4,3,5,7)}这一ID与路径的组合存储到cache中,再将ID=0xFB,hopCount=4返回用以寻址SW7;至此,网络中所有SWITCH均能通过ID=0xFA,0xFB成功寻址。
分析可知,新方案能够完美解决掉传统方式存在的问题,由于SWITCH寻址ID不再复用PE设备ID,所以RapidIO网络发生PE设备热插拔对于SWITCH寻址没有任何影响,即便网络中存在SWITCH被配置有多播,也不会和SWITCH寻址产生交叉。此外,通过引入SMPS实现了一个ID与一条路径的映射,加之二者之间没有固定关系,使得只通过有限ID即可覆盖多条路径(无限多的交换设备),而且开辟缓冲区cache保证SWITCH寻址参数能够快速获取,最大程度降低重复配置带来的开销。
另一方面,新方案支持根据网络规模实时进行评估,确定虚拟ID池是否可动态完成扩展,并在网络设备热插入时及时释放设备ID,进而实现设备ID资源的最大化利用。借助图2所示网络模型来进一步说明新方案的动态可伸缩性:
首先,Host主机发起RapidIO网络枚举,得到交换设备维护路径集:SMPS={(1,2),(1,4),(1,3,5),(1,3,7),(1,3,6,8),(1,3,6,9),(1,3,6,10)};
然后,Host主机初始化虚拟ID池VIDP,尺寸为固定个数6(可根据实际场景调整),初始池子为满状态,即VIDP={0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};构建RapidIO网络交换设备实时路由覆盖缓冲区cache,初始为空;
接下来,假定用户要读取SW6上的某个寄存器值,就需要获取能够寻址SW6的ID和hopCount:优先在cache中查询,由于cache当前为空是以未命中,然后从SMPS里检索出一条包含目标SWITCH且长度最长的路径,结果是1-3-6-10,同时向VIDP申请一个可用ID(返回0xFA),依次对路径上的所有交换配置路由,成功后cache填充入{ID=0xFA,path=(1,3,6,10)}:
SWITCH |
Port_IN |
Port_OUT |
ID |
Hopcount |
1 |
0 |
1 |
0xFA |
0 |
3 |
10 |
4 |
0xFA |
1 |
6 |
13 |
5 |
0xFA |
2 |
10 |
NA |
NA |
0xFA |
3 |
接下来,用户分别请求读取SW2、SW4、SW5、SW7和SW8,按上述策略予以处理后,VIDP为空,cache={{0xFA,(1,3,6,10)},{0xFB,(1,2)},{0xFC,(1,4)},{0xFD,(1,3,5)},{0xFE,(1,3,7)},{0xFF,(1,3,6,8)};当用户再请求读取SW9时,会发现cache未命中且VIDP为空,这时根据当前网络中PE设备占用ID情况(11个),评估存在空闲设备ID,那么就临时性的将0xF4-0xF9共6个ID扩充到VIDP中,如此基于网络规模实现合理的动态扩展,继而采用上述策略完成配置和寻址参数的确定。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。