CN110380962A - 一种在srio的交换系统中配置路由的方法及装置 - Google Patents
一种在srio的交换系统中配置路由的方法及装置 Download PDFInfo
- Publication number
- CN110380962A CN110380962A CN201910648439.8A CN201910648439A CN110380962A CN 110380962 A CN110380962 A CN 110380962A CN 201910648439 A CN201910648439 A CN 201910648439A CN 110380962 A CN110380962 A CN 110380962A
- Authority
- CN
- China
- Prior art keywords
- path
- optimal
- srio
- exchange
- physical pathway
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/12—Shortest path evaluation
- H04L45/125—Shortest path evaluation based on throughput or bandwidth
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/18—Loop-free operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/24—Multipath
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种在SRIO的交换系统中配置路由的方法及装置,本发明实施例在SRIO的交换系统中,采用深度优先的递归扫描方式得到硬件路径之后,从硬件路径中根据设置的最优路径选择方式选择得到最优路径;按照所选择的最优路径进行SRIO的交换系统的路由配置及后续的地址空间映射。所述设置的最优路径选择方式为剔除冗余路径及平均原则的方式,或者为统计端点设备之间的通信量确定方式。这样,本发明实施例就可以最优化配置路由。
Description
技术领域
本发明涉及计算机数据通信技术,特别涉及一种在高速串行输入输出接口(SRIO,Serial RapidIO)的交换系统中配置路由的方法及装置。
背景技术
SRIO总线是一种基于交换的高速串行数据总线,它和以太网相比,具有速率更高且协议更简化,输出传输延迟更小及更可控等优点,非常适合于嵌入式系统的应用。SRIO总线仅包括逻辑层(Logic Layer)、传输层(Transport Layer)和物理层(Physical Layer)三层,因此其交换结构也更简单,是类似的二次数据链路层交换。以SRIO总线为基础构成一个SRIO的交换系统。图1为现有技术中的SRIO数据传输过程示意图,如图所示,包括发起节点、SRIO交换单元及目标节点,发起节点和目标节点都是端点设备。其中,发起节点发送请求信息包给交换单元,交换单元将该请求信息包路由到目的节点,目的节点将信息包的响应消息发送给交换单元,交换单元将该响应消息路由到发起节点,整个交互过程完成。
在SRIO的交换系统中具体包括:端点设备、主机设备和交换单元,其中主机设备也是一个端点设备,交换单元由一个或多个交换芯片构成。
端点设备在该系统中具有唯一的标识(ID),通过点对点的方式与交换单元连接,每个端点设备都是一个SRIO控制器,挂接在微处理(DSP)或PowerPC等处理器上或采用现场可编程门阵列(FPGA)实现。
在标准的且可扩展的SRIO的交换系统中,主机设备在整个系统启动之前,对整个系统进行“发现”或“枚举”操作。
交互单元是单个交换芯片或由多个交换芯片级联而成的交换网络。比如采用艾迪悌科技有限(IDT)公司的型号为CPS1848的交换芯片。交换芯片的路由只需要对该交换芯片的输入端口进行路由配置。在具体实现时,有直接配置和间接配置两种方式,在动态路由配置中,常用的是间接路由配置。和直接配置方式相比,间接路由配置对交换芯片中的存储器访问次数要少很多。
对于需要进行动态路由配置的SRIO的交换系统,其初始化过程包含端点设备枚举、路由配置和地址空间映射。在完成端点设备枚举和路由配置之后,主机设备还要完成对整个系统的地址空间映射,从而完成整个系统的初始化。
Linux内核为SRIO交换系统提供了端点设备枚举或发现路由的方法。在Linux内核中,主要提供了两个函数,一个用于枚举,即rio_enum_mport()函数,一个用于发现,即rio_disc_mport()函数。后者用于所有端点设备的ID都已经被枚举和设置的情况。在这里,主要讨论rio_enum_mport()函数实现枚举过程。通过这个函数,主机设备建立一个设备链表,采用深度优先的扫描算法,以迭代的方式枚举该系统中的所有端点设备和交换单元,并在枚举后,依次对端点设备和交换单元进行路由配置,图2为现有技术提供的在SRIO的交换系统中枚举过程示意图。
交换板一般都会对外提供十几个到几十个的端口的交换能力,而目前市场上现有的单个交换芯片只能提供最多18个端口。所以在SRIO的交换系统中的交换单元通过多个交换芯片进行级联实现。在级联时,为了减少交换芯片之间的数据阻塞,会在任意两个交换芯片之间使用一条以上的物理路径进行互联。图3为现有技术提供的一个典型的交换单元的拓扑结构示意图,如图所示:采用了A、B、C和D四个交换芯片组成了一个交换单元,任意两个交换芯片之间有两条物理路径进行互联。另外,某些COTS产品的功能板上也可能会存在有交换芯片,因此一个SRIO的交换系统中可能实现存在多条冗余的物理路径。
在SRIO的交换系统中进行复杂的硬件路由拓扑下,采用图2所述的枚举路由方式,得到的路由路径并不优化。以图3为例,系统中的一个主机设备H与交换芯片A的端口0,标识为PA0相连,有两个端点设备S1和端点设备S2,分别与交换芯片A的端口PA5和交换芯片D的端口PD5连接,具体地枚举路由过程为:
1)系统中所有SRIO端点设备上电;
2)主机设备H发现自己是主机设备初始化自己标识为0x00,将自己信息加入设备链表,然后判断自己的端口是否已经完成连接,确认后通过维护包进行邻居的“枚举”;
3)主机设备H通过维护包;该维护包携带的信息为destDevId=0xFF及hopCount=0,查询到交换芯片A,两者间通过交换芯片的端口PA0进行连接,将其锁定,配置该端口的路由,将所有destDevId为0x00的信息包路由给该端口,并将相关信息保存在设备链表中;
4)主机设备H从交换芯片A的端口0开始依次检查其每个端口,当扫描到与主机设备H互联的端口时,自动跳过,当发现当前端口没有链路时,也跳过该端口;
5)当查询到PA5端口时,发现该端口已经链路;对交换芯片A的该端口配置一个路由,将目的标识为0xFF,也就是默认标识的信息包路由给当前端口;随后主机设备H发送维护包(destDevId=0xFF,hopCount=1),查询与S1是否被锁定,并对其进行锁定,分配标识为0x01,并将相关信息保存到设备链表;
6)主机设备H继续对交换芯片A的剩余端口进行扫描,当主机设备H扫描到交换芯片A的端口PA6时,发现了第二个交换芯片B,获取它的相关信息,得知两者间通过交换芯片B的端口PB11进行互联,将其锁定,对该端口配置所有已发现设备与之相关的路由,保存;
7)重复上面的步骤,陆续发现并锁定交换芯片B、C和D,并在交换芯片D的端口PD5处扫描到了端点设备S2,将其锁定,并对交换芯片D的端口PD5配置所有已知设备与之相关的路由;
8)主机设备H继续依次查询交换芯片D的PD0到PD17端口,在端口PD6发现交换芯片A,发现这是一个被自己锁定的交换芯片,且前一个设备为交换芯片,判定该路径为冗余的物理路径并记录,然后退出对端口PD6的扫描,继续扫描端口PD7,同理,陆续发现了被自己锁定的交换芯片B和交换芯片C,记录冗余的物理路径,并退出扫描;
9)主机设备H对交换芯片D的扫描完成,退回到从交换芯片C的端口PC6后,设置该端口相关的路由,然后继续从端口PC7处开始对交换芯片C剩余的端口进行扫描,依次类推,最后完成对整个系统的枚举。
整个过程就是一个深度优先的递归扫描方法,最终得到了一个包含所有设备的链表net->devices,以及一个包含所有交换芯片的链表net->switches,这两个链表均是系统中的linux内核的标准链表。每个设备与其他设备相联的物理路由都保存在其rdev->rswitch->nextdev[port]的指针数组中。此外在rdev->rswitch->route_table[destid]中保存了对交换芯片的路由配置的备份。
在SRIO的交换系统中,交换芯片是没有标识的,它只根据信息包的跳数(hopCount)是否为0来判断当前的信息包是否要自己接收,还是要对该信息包进行路由。所以在存在环路的SRIO的交换系统中,当主机设备扫描到一个交换芯片,只能根据配置空间偏移地址为0x68的“Host Base deviceID Lock CSR”的交换芯片中的寄存器的情况,来判断当前交换芯片是否被锁定过,被谁锁定过,但是主机设备并无法判断出当前被自己锁定过的交换芯片是之前扫描过的哪个交换芯片。
为了解决这个问题,改进的枚举方式中使用了配置空间偏移地址为0x6C的“Component Tag CSR”的交换芯片中的寄存器,这个寄存器可以被任意读写。主机设备在第一次扫描到某个交换芯片时,对其“Component Tag CSR”寄存器进行标记,这样,在主机设备第二次扫描到该交换芯片时,可以知道是哪个交换芯片。
这种枚举方式对设备的枚举,实际上是沿着一条路径不断延伸的,因此,实际得到的路由也是一条直线。上例中,最终得到主机设备H到端点设备S2的配置的硬件路径为:主机设备H←→(PA0←→PA6)←→(PB11←→PB6)←→(PC11←→PC6)←→(PD11←→PD5)←→端点设备S2。
由系统中的Linux内核提供的动态路由方案,由于采用迭代的深度优先的递归扫描方式,容易实现,但针对复杂的SRIO的交换系统,其得到的路由路径并不优化。而且由于配置了硬件路径而形成了一条直线链,中间存在很长的共用链路,当各个端点设备之间数据传输量很大时,很容易造成数据阻塞。通过图3,很容易看出,主机设备H到端点设备S2之间的最优路径应为:主机设备H←→(PA0←→PA11)←→(PD6←→PD5)←→(PC11←→PC6)←→端点设备S2,或者H←→(PA0←→PA10)←→(PD7←→PD5)←→端点设备S2,而最终配置的硬件路径并不是。
因此,在SRIO的交换系统中,如何最优化的配置路由是一个亟待解决的问题。
发明内容
有鉴于此,本发明实施例提供一种在SRIO的交换系统中确定路由的方法,该方法能够最优化的配置路由。
本发明实施例还提供一种在具有SRIO的交换系统中确定路由的装置,该系统能够最优化的配置路由。
本发明实施例是这样实现的:
一种在高速串行输入输出接口SRIO的交换系统中配置路由的方法,包括:
在SRIO的交换系统中采用动态枚举方式,得到SRIO的交换系统中的所有硬件路径;
根据设置的最优路径选择方式从所有硬件路径中选择得到最优路径;
根据所选择的最优路径进行SRIO的交换系统的路由配置。
所述进行路由配置之后,还包括:
SRIO的交换系统中的主机设备,对该系统进行地址空间映射,完成该系统的初始化。
所述设置的最优路径选择方式为剔除冗余路径及平均原则的方式,或者为统计端点设备之间的通信量确定方式。
当所设置的最优路径选择方式为剔除冗余路径及平均原则方式时,所述选择得到最优路径为:
识别出SRIO的交换系统中任意两个端点设备之间的逻辑路径对应的不含环路的全部物理路径,选取出最优的物理路径和次优的物理路径,从中选取作为最优路径;
所述最优的物理路径为:两个端点设备之间所经过的交换芯片数最少的物理路径;所述次优的物理路径为:两个端点设备之间所经过的交换芯片数量比最优的物理路径多,且没有重复经过同一的交换芯片的物理路径。
所述选取出最优的物理路径和次优的物理路径过程为:
采用两级循环遍历方式对SRIO的交换系统中的所有交换芯片之间的物理路径进行遍历,将遍历的物理路径采用二维数组方式呈现,其中,数组中的每个元素为双字节,以数组x维度方向,第一元素标识当前数组对应的源交换芯片与目的交换芯片之间的逻辑路径,第二个元素的第一个字节为该逻辑路径所包含的所有物理路径标识,第二个元素的第二个字节标识对应物理路径标识所经过的端口数量;
查询呈现的二维数组,根据数组中的第二元素的第二个字节,得到端口数量最小的一条以上的物理路径;
当判断与源交换芯片连接的端点设备数量小于等于所选择的物理路径的端口数量时,则所选择的物理路径分配为最优的物理路径和次优的物理路径;
否则,则由与源交换芯片连接的多个端点设备共享所选择的物理路径,比例关系为:与源交换芯片连接的端点设备的数量与所选择的物理路径的端口数量之间的比值。
所述设置的最优路径选择方式为所述统计端点设备之间的通信量确定方式时,所述选择得到最优路径为:
采用两级循环遍历方式,对SRIO的交换系统中的所有交换芯片的端口设置跟踪功能,以对传输的信息包进行计数;
在设定的时间范围内,基于交换芯片的端口对传输的信息包的计数值,计算与交换芯片连接的端点设备之间的通信量,依据通信量的大小作为优先级,依次为不同两个端点设备之间的逻辑路径分配最优的物理路径,作为选择得到的最优路径。
所述依次为不同两个端点设备之间的逻辑路径分配最优的物理路径包括:
设置带宽占有率阈值;
所述端点设备之间的逻辑路径的带宽占有率大于设置的所述阈值时,为其分配独享的最优物理路径作为最优路径;
所述端点设备之间的逻辑路径的带宽占有率小于等于设置的所述阈值时,为其分配与其他逻辑路径共享的最优物理路径作为最优路径。
一种在高速串行输入输出接口SRIO的交换系统中配置路由的装置,包括:硬件路径枚举单元、最优路径选择单元及路由配置单元,其中,
硬件路径枚举单元,用于在SRIO的交换系统中采用动态枚举方式,得到SRIO的交换系统中的所有硬件路径;
最优路径选择单元,用于在得到所有硬件路径中,根据设置的最优路径选择方式选择得到最优路径;
路由配置单元,用于根据所选择的最优路径进行SRIO的交换系统的路由配置。
所述装置为SRIO交换系统中的主机设备。
如上所见,本发明实施例在SRIO的交换系统中,采用深度优先的递归扫描方式得到硬件路径之后,从硬件路径中根据设置的最优路径选择方式选择得到最优路径;按照所选择的最优路径进行SRIO的交换系统的路由配置及后续的地址空间映射。更进一步地,所述设置的最优路径选择方式为剔除冗余路径及平均原则的方式,或者为统计端点设备之间的通信量确定方式。这样,本发明实施例就可以最优化配置路由。
附图说明
图1为现有技术中的SRIO数据传输过程示意图;
图2为现有技术提供的在SRIO的交换系统中枚举过程示意图;
图3为现有技术提供的一个典型的交换单元的拓扑结构示意图;
图4为本发明实施例的一种在SRIO的交换系统中确定路由的方法流程图;
图5为本发明实施例提供的任意两个交换芯片之间的多条物理路径的呈现形式示意图;
图6为本发明实施例提供的在具有SRIO的交换系统中确定路由的装置结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
本发明实施例为了在SRIO的交换系统中最优化配置路由,按照背景技术中的采用深度优先的递归扫描方式得到硬件路径之后,再从硬件路径中根据设置的最优路径选择方式选择得到最优路径;按照所选择的最优路径进行SRIO的交换系统的路由配置。在这里,所述设置的最优路径选择方式为剔除冗余路径及平均原则的方式,或者为统计端点设备之间的通信量确定方式。
图4为本发明实施例的一种在SRIO的交换系统中确定路由的方法流程图,其具体步骤为:
步骤401、在SRIO的交换系统中采用动态枚举方式,得到SRIO的交换系统中的所有硬件路径;
在该步骤中,所述硬件路径中包含了冗余物理路径;
在该步骤中,所述动态枚举方式就是深度优先的递归扫描方式;
步骤402、在得到所有硬件路径中,根据设置的最优路径选择方式选择得到最优路径;
步骤403、根据所选择的最优路径进行SRIO的交换系统的路由配置。
在该方法中,在进行路由配置之后,还包括:
SRIO的交换系统中的主机设备,对整个系统进行地址空间映射,完成整个系统的初始化。
在该方法中,所述设置的最优路径选择方式为剔除冗余路径及平均原则的方式,或者为统计端点设备之间的通信量确定方式。
在该方法中,当所设置的最优路径选择方式为剔除冗余路径及平均原则方式时,所述选择得到最优路径为:
识别出SRIO的交换系统中任意两个端点设备之间的逻辑路径对应的不含环路的全部物理路径,选取出最优的物理路径和次优的物理路径,从中选取作为选择的最优路径;
所述最优的物理路径为:两个端点设备之间所经过的交换芯片数最少的物理路径;所述次优的物理路径为:两个端点设备之间所经过的交换芯片数量比最优的物理路径多,且没有重复经过同一的交换芯片的物理路径。
在该方法中,所述选取出最优的物理路径和次优的物理路径过程为:
采用两级循环遍历方式对SRIO的交换系统中的所有交换芯片之间的物理路径进行遍历,将遍历的物理路径采用二维数组方式呈现,其中,数组中的每个元素为双字节,以数组x维度方向,第一元素标识当前数组对应的源交换芯片与目的交换芯片之间的逻辑路径,第二个元素的第一个字节为该逻辑路径所包含的所有物理路径标识,第二个元素的第二个字节标识对应物理路径标识所经过的端口数量;
查询呈现的二维数组,根据数组中的第二元素的第二个字节,得到端口数量最小的一条以上的物理路径;
当判断与源交换芯片连接的端点设备数量小于等于所选择的物理路径的端口数量时,则所选择的物理路径分配为最优的物理路径和次优的物理路径;
否则,则由与源交换芯片连接的多个端点设备共享所选择的物理路径,比例关系为:与源交换芯片连接的端点设备的数量与所选择的物理路径的端口数量之间的比值。
在该方法中,所述设置的最优路径选择方式为所述统计端点设备之间的通信量确定方式时,所述选择得到最优路径为:
采用两级循环遍历方式,对SRIO的交换系统中的所有交换芯片的端口设置跟踪功能,以对传输的信息包进行计数;
在设定的时间范围内,基于交换芯片的端口对传输的信息包的计数值,计算与交换芯片连接的端点设备之间的通信量,依据通信量的大小作为优先级,依次为不同两个端点设备之间的逻辑路径分配最优的物理路径,作为选择得到的最优路径。
所述依次为不同两个端点设备之间的逻辑路径分配最优的物理路径包括:
设置带宽占有率阈值;
所述端点设备之间的逻辑路径的带宽占有率大于设置的所述阈值时,为其分配独享的最优物理路径作为最优路径;
所述端点设备之间的逻辑路径的带宽占有率小于等于设置的所述阈值时,为其分配与其他逻辑路径共享的最优物理路径作为最优路径。
对本发明实施例进行详细说明。
在该方法中,剔除冗余路径及平均原则的方式实际上就是识别出SRIO的交换系统中任意两个端点设备之间的逻辑路径对应的不含环路的全部物理路径,选取出某条最优的物理路径或次优的物理路径。
以下对采用平均原则及剔除冗余路径的方式选择得到最优路径的过程进行详细说明。
在类似图3中存在冗余环路的SRIO的交换系统中,理论上,任意两个端点设备之间存在无穷数量的网路路径,所述网络路径为冗余环路中多次循环。因此,在网络路径识别时,必须首先剔除所有的包含环路的路径,然后在剩余路径中,识别出最优物理路径和次优物理路径。
最优物理路径指的是两个端点设备之间,所经过的交换芯片数最少的物理路径,这样的物理路径,信息包的传输时延缩短。在某个实际网络中,端点设备之间的逻辑路径对应的最优物理路径可能不止一条,比如在图3所示的网络中,主机设备H到端点设备S2之间的最优路径为两条。
次优物理路径指的是两个端点设备之间,所经过的交换芯片数量比最优物理路径多,但是没有重复经过同一的交换芯片的物理路径。从图3可以看出,主机设备H到端点设备S2之间的次优物理路径包括,依次经过交换芯片A、B和D的4条路径,依次经过交换芯片A、C和D的4条路径,及依次经过交换芯片A、B、C和D的8条路径。次优物理路径上的传输信息包延时要长,但是当系统对延时要求较小,对数据通流能力要求较高时,次优物理路径也可以是最终配置路径的可选项。
最优物理路径和次优物理路径识别的过程,SRIO的交换系统根据扫描得到的设备链表net->devices和net->switches,及rdev->rswitch->nextdev[port]的指针数组,逐一地对任意两个端点设备之间的逻辑路由进行遍历,同一个交换芯片只遍历一次,剔除掉死循环的环路,最终得到多个物理路径,这多个物理路径以数组的形式实现。数组的长度就对应着其所代表的物理路径所经过的交换芯片的个数,长度越短,说明物理路径越优化,即该物理路径的信息包传输时延越短。
识别出最优物理路径和次优物理路径后,可以由主机设备随机选择某条最优物理路径或次优物理路径作为最终配置的物理路径,然后据此对该配置的物理路径相关的交换芯片端口进行重新路由配置,实现优化的路由配置。
在SRIO的交换系统中,识别出最优物理路径和/或次优物理路径的具体过程如下,
SRIO的交换系统是一种基于交换的点对点连接的网络系统,所有端点设备都是连接在交换芯片上的,不存端点设备与端点设备直连的情况,如果出现这种情况,则可以认为这两个端点设备与整个交换网络无关。另外,可能会存在一个交换芯片只是与其他交换芯片连接,但是其本身并没有与任何端点设备连接的情况,这种情况采用背景技术的提供动态枚举方式,已经被识别出来,这里成为空交换芯片。在本发明实施例中,SRIO的交换系统可以被划分为两个域,一个是所有交换芯片构成的交换域,另一个是由所有端点设备构成的端点域。
在SRIO的交换系统中,任意两个端点设备之间的多条物理路径,实际上等同于交换单元的多条物理路径。为了提高代码效率,简化搜索流程,可以将搜索任意两个端点设备之间的多条物理路径的操作,简化为搜索任意两个交换芯片之间的多条物理路径的操作。搜索任意两个交换芯片之间的多条物理路径的步骤如下所述。
1)利用背景技术的枚举过程得到的结果,即链表net->devices和链表net->switches,使用Linux内核提供的标准链表遍历函数list_for_each_entry(),对交换芯片进行两级遍历,其中一级对应源交换芯片及另一级对应目的交换芯片,搜索一个交换芯片到另外一个交换芯片的所有非冗余路径。遍历过程中,通过查询每个交换芯片的有效端口,即查询rdev->rswitch->nextdev[port]函数,来找到下一个交换芯片,直到搜索到目的交换芯片,或者找不到而退出。在搜索过程中,需要判断机制,保证每个交换芯片不被第二次添加到路径中,从而避免产生环路。此外源交换芯片到目的交换芯片互换的情况,路径是一致的,所以实际搜索次数为其中n为系统中交换芯片的个数。这个值也是系统中逻辑路径的数量。最后得到的路径,以二维数组的形式呈现,数据结构参见图5,图5为本发明实施例提供的任意两个交换芯片之间的多条物理路径的呈现形式示意图。
2)以得到的代表每两个交换芯片之间的物理路径的二维数组为基础,进行优化路径选择和路径配置,以及路由表更新,主要包括以下两个步骤:
a)首先依次查询二维数组的每行的第二个元素的第二个字节的值,找到值最小的行,这一行就是最优的物理路径。在实际情况下,可能会存在多个最小值。
b)利用选出的某两个交换芯片之间的最优物理路径,通过查询源交换芯片的dev->rswith->nextdev[port]函数,可以找到与源交换芯片所连接的端点设备。当与源交换芯片连接的端点设备数量小于等于得到的最优路径的数量时,就为每一个与源交换芯片连接的端点设备各自分配一条最优路径。这时,这个端点设备到目的交换芯片连接的每个端点设备都使用者同一条最优路径。当与源交换芯片连接的端点设备数量大于得到的最优路径的数量时,根据两个数量的比例关系(向上取整):
由s个与源交换芯片连接的端点设备共享一条最优物理路径。
在识别出每两个端点设备的最优物理路径后,通过Linux内核提供的框架函数rio_route_add_entry(),可以依次设置该物理路径上的每个交换芯片的相应端口的路由,并保存到rdev->rswitch->route_table[destid]。
在这里要注意的是,主机设备本身也是一个端点设备,它与其他端点设备的路由路径需要最后来设置,这是因为,是主机设备实现该方法,对任何交换芯片的访问的前提,就是要求主机设备到该交换芯片之间的路由路径是已经建立好的。如果在对其他端点设备设置路由之前就对主机设备相关的路由进行设置,有可能破坏主机设备对某些交换芯片的访问路径,导致不能对这些交换芯片进行访问。
每个源交换芯片到目的交换芯片的所有非回环物理路径均放置在一个二维数组中,数组的大小可根据系统的规模来调整。在具体实现时,设置为16*16,每条最优的物理路径一般不会经过4个以上的不同的交换芯片,在数组x维度,一个交换芯片占用1到2个数组元素,设置为16,完全能够满足需求。在多个交换芯片级联的系统中,对每个交换芯片而言,为了减少数据阻塞,要求与设备端点连接的端口数小于等于与其他交换芯片连接的端口数量,而采用已有的型号为CPS1848的交换芯片为18个端口,数字在y维度,能够存储16条最优或次优物理路径,已经能够满足绝大部分的SRIO的交互系统需求。
在数组中的每个元素为双字节,具体含义如图5所示,从数组x维度方向看,第一元素的两个字节分别为源交换芯片的Component TAG(标识为Src_CTG)和目的交换芯片的Component TAG(标识为Dist_CTG),这样元素代表当前数组对应的两个交换芯片之间的逻辑路径。第二个元素的第一个字节为路径标识,初始化时为0x00,表示该行路径无效,当该行填充为一个有效路径后,将该字节设置为0xFF,表示该行路径有效。第二个元素的第二个字节标识当前x维度,从第三个元素开始有效的元素的数量,也就是物理路径所经过的端口数量。从第三个元素开始为实际物理路径,每个元素的两个字节分别为当前交换芯片的Component TAG和当前端口。前一个元素表示的交换芯片和后一个元素标识的交换芯片的端口存在实际的物理连接。
在该方法中,统计端点设备之间的通信量确定方式的过程如下。
在进行最优的选择时,需要考虑两个方面:第一方面是,选择最短的物理路径来减少信息包在系统中的传输时延;第二方面是对流量非常大的端点设备间的逻辑路径,所选择对应的物理路径不要有共用路径,这很容易引起数据阻塞。采用平均原则及剔除冗余路径的方式选择最优路径实际上是从交换系统的硬件角度考虑,但是,要解决第二方面的问题,就必须了解各个端点设备之间实际的通信量。
对于系统规模较大的可扩展系统来说,人工统计各个端点设备之间的通信量,耗时耗力,且如果系统使用了类似IO-net等较高层的协议,就会增加很多底层的,对用户不可见的信息包传输,这也会增通信量统计的难度。因此,本发明实施例在具体实现时,通过利用交换芯片之间传输的信息包跟踪功能,自动实现端点设备之间的通信量统计。
SRIO的交换系统中的交换芯片都支持信息包跟踪功能,可以任意定义其中一个端口作为跟踪端口。所设置的信息包跟踪功能支持缺省跟踪路由模式和可选跟踪路由模式两种。在缺省跟踪路由模式表,跟踪端口接收其他端口路由过来的所有正常的信息包;在可选跟踪路由模式下,跟踪端口只接收满足端口跟踪准则的信息包。每个跟踪端口可以使用四个比较值来跟踪或者过滤信息包。这四个比较值包括160比特的比较值和160比特的掩膜,这四个比较值是“或”的关系,只要在其中一个及以上的比较值满足条件,就可以触发该端口的跟踪功能。信息包跟踪功能不会影响该端口正常的信息包传输包,只是将满足条件的信息包复制一份发送给跟踪端口。每个端口都有一个连续的计数器,记为Trace MatchCounter Value 0/1/2/3Register分别对应四个值,来对匹配的信息包进行计数。
此外,在SRIO的交互系统中两个端点设备之间的通信是双向的,两个方向的数据量一般并不相等,在实际传输过程中,常用的基于信息包的事务类型包括IO事务、消息、门铃和维护包等,信息包的长度有长有短,做到通信量的精确统计非常困难。同时考虑到,为了减少传输时延,系统规定每个信息包中的数据负载不能超过256个字节,所以每个信息包的大小相差不是特别大,所以本发明实施例在实现时,关于两个端点设备之间的通信量统计,确定以下原则:
1)在实际统计过程中,只统计信息包的数量,而不必统计每个信息包的长度及包的类型;
2)两个端点设备之间的通信为双向的,每个方向的信息包的数量不是严格对应的,所以分别进行统计,在这里定义两个端点设备之间的通信量为双向传输的信息包总和;
3)对于广播消息,因为它对所有物理路径的影响是一致的,而且一般数据量很小,所以不在统计范围内。
对于任意两个端点设备之间的通信量统计,以每个端点设备为切入点,架设在SRIO的交换系统中存在n个端点设备,则需要进行n*(n-1)次统计,通过两个端点设备之间双向统计数据的合并,得到个结果,与该系统中的逻辑路径是一致的。
在具体实现时,具体分为以下两个阶段。
第一阶段通信量统计阶段
在采用枚举方式得到所有硬件路径之后,启动设置的统计程序。这个过程不需要该系统每次上电运行,仅仅需要在该系统第一次正常运行时或该系统的状态发生改变时才运行一次,比如当端点设备的数量或功能发生变化,会影响两个端点设备之间的通信量时则状态发生改变。运行的结果可以记录在主机设备中的非易失性存储器中,以便第二阶段时被调用。
通信量统计阶段包括:
在整个SRIO的交换系统正常工作情况下,主机设备采用Linux标准的链表遍历函数list_for_each_entry(),通过net->devices做两级循环,第一级逐一遍历每个端点设备,根据rdev->swpinfo以及rdev->rswitch->nextdev[port]指针数组,将第二级循环中的,与当前端点设备连接的交换芯片的信息包跟踪功能打开,通过设置信息包的跟踪规则,设置为只关心160比特的destid域,根据交换芯片的特性,可以一次性将四种不同的destid的信息包路由到该交换芯片指定的跟踪端口上,这个跟踪端口选择一个未用端口。由于在采用枚举方式得到的硬件路径上,包括了冗余的物理路径,但是并没有对冗余的物理路径进行路由配置,因此大部分情况下,每个交换芯片都是存在未用端口的。
对于每一次统计,需要确定一个固定的运行时间,时间长度的选取,需要根据该系统实际运行情况确定,应该保证该时间范围内,统计得到的通信量是具有代表性的。在固定时间内,可以通过同时记录4个相应匹配值对应的连续计数器Trace Match Counter Valuex Register的开始值和结束值,从而得到4个增量,完成对当前端点设备发送到其他4个端点设备的信息包的统计。由于这个计数器是一个32位循环计数器,理论上要非常长时间才会记满并清零,但是不排除会有记满的情况,需要结合实际情况处理。
通过这两级的对交换芯片的变量及信息包的统计,最终得到该系统中任意两个端点设备(包括主机设备)之间的通信量,也就是将两个端点设备之间的双向通信量进行相加,得到总的结果。
第二阶段物理路由路径识别和配置阶段
在进行物理路由路径的识别和配置时,与采用平均原则及剔除冗余路径的方式进行物理路由路径识别和配置的过程基本相同。
具体实施时,根据两个端点之间的通信量大小,将它们对应的逻辑路径划分为不同的优先级。在这里,划分为两级优先级,对于属于1级优先级的逻辑路径,要求为其分配独享的物理路径;对于属于2级优先级的逻辑路径,要求该逻辑路径可以与其他优先级的逻辑路径共享物理路径。优先级的划分的阈值,主要依据两个端点设备之间的通信量与物理带宽的比例,即带宽占有率来确定。
对于属于1级优先级的逻辑路径,按照通信量排序,首先为通信量最大的逻辑路径分配一个最优的物理路径,然后遍历第二个逻辑路径对应的物理路径,找出一条与第一条逻辑路径不重叠或重叠次数最少的一条物理路径,对于第三条逻辑路径,处理方法类似,通过与第一条逻辑路径和第二条逻辑路径分配的物理路径分别进行对比和排除,来从与其对应的物理路径中找出一条合适的物理路径,以此类推。对于属于2级优先级的逻辑路径,仅排除与1级优先级的逻辑路径由共用的物理路径后,在剩余物理路径中,任意选择一条即可。
在实际应用中,通过选择合适的优先级阈值,尽量将输入1级优先级的逻辑路径的通信量控制在较小分为内,因为独享物理路径数量有限,属于稀缺资源。另外如果该系统对于信息包传输时延要求不高,在为属于2级优先级的逻辑路径分配物理路径时,可以考虑使用次优的物理路径。
选择好合适的物理路径之后,需要对相应的交换西片进行配置,并进行路由表的备份。
图6为本发明实施例提供的在具有SRIO的交换系统中确定路由的装置结构示意图,包括:硬件路径枚举单元、最优路径选择单元及路由配置单元,其中,
硬件路径枚举单元,用于在SRIO的交换系统中采用动态枚举方式,得到SRIO的交换系统中的所有硬件路径;
最优路径选择单元,用于在得到所有硬件路径中,根据设置的最优路径选择方式选择得到最优路径;
路由配置单元,用于根据所选择的最优路径进行SRIO的交换系统的路由配置。
在本发明实施例中,所述装置为SRIO交换系统中的主机设备。
采用本发明实施例提供的方法在SRIO的交换系统中配置路由,不会破坏该系统所采用的Linux内核或其他操作系统内核提供的枚举过程,不会由于新引入的方法出现漏洞;用户对该系统的路由配置是否需要进行优化,有选择权;独立的路径配置优化,关于路由路径的识别及选择,都是采用软件实现,不涉及对该系统中硬件的修改及访问,运行时间很短,另外路由配置部分,也仅仅需要对相应的交换芯片端口进行配置,耗时不会太长;将路由优化的过程与背景技术中的枚举过程融合,不会因为访问过程太复杂,造成整个初始化时间过长,难以实现和调试。
综上,本发明实施例可以实现SRIO的交换系统汇总的路由优化,在很小幅度增加该系统初始化时间的前提下,减少了SRIO的交换系统的传输时延及堵塞情况,减少系统中设计工作量,同时也在一定程度上提高系统可靠性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (9)
1.一种在高速串行输入输出接口SRIO的交换系统中配置路由的方法,其特征在于,包括:
在SRIO的交换系统中采用动态枚举方式,得到SRIO的交换系统中的所有硬件路径;
根据设置的最优路径选择方式从所有硬件路径中选择得到最优路径;
根据所选择的最优路径进行SRIO的交换系统的路由配置。
2.如权利要求1所述的方法,其特征在于,所述进行路由配置之后,还包括:
SRIO的交换系统中的主机设备,对该系统进行地址空间映射,完成该系统的初始化。
3.如权利要求1或2所述的方法,其特征在于,所述设置的最优路径选择方式为剔除冗余路径及平均原则的方式,或者为统计端点设备之间的通信量确定方式。
4.如权利要求3所述的方法,其特征在于,当所设置的最优路径选择方式为剔除冗余路径及平均原则方式时,所述选择得到最优路径为:
识别出SRIO的交换系统中任意两个端点设备之间的逻辑路径对应的不含环路的全部物理路径,选取出最优的物理路径和次优的物理路径,从中选取作为最优路径;
所述最优的物理路径为:两个端点设备之间所经过的交换芯片数最少的物理路径;所述次优的物理路径为:两个端点设备之间所经过的交换芯片数量比最优的物理路径多,且没有重复经过同一的交换芯片的物理路径。
5.如权利要求4所述的方法,其特征在于,所述选取出最优的物理路径和次优的物理路径过程为:
采用两级循环遍历方式对SRIO的交换系统中的所有交换芯片之间的物理路径进行遍历,将遍历的物理路径采用二维数组方式呈现,其中,数组中的每个元素为双字节,以数组x维度方向,第一元素标识当前数组对应的源交换芯片与目的交换芯片之间的逻辑路径,第二个元素的第一个字节为该逻辑路径所包含的所有物理路径标识,第二个元素的第二个字节标识对应物理路径标识所经过的端口数量;
查询呈现的二维数组,根据数组中的第二元素的第二个字节,得到端口数量最小的一条以上的物理路径;
当判断与源交换芯片连接的端点设备数量小于等于所选择的物理路径的端口数量时,则所选择的物理路径分配为最优的物理路径和次优的物理路径;
否则,则由与源交换芯片连接的多个端点设备共享所选择的物理路径,比例关系为:与源交换芯片连接的端点设备的数量与所选择的物理路径的端口数量之间的比值。
6.如权利要求3所述的方法,其特征在于,所述设置的最优路径选择方式为所述统计端点设备之间的通信量确定方式时,所述选择得到最优路径为:
采用两级循环遍历方式,对SRIO的交换系统中的所有交换芯片的端口设置跟踪功能,以对传输的信息包进行计数;
在设定的时间范围内,基于交换芯片的端口对传输的信息包的计数值,计算与交换芯片连接的端点设备之间的通信量,依据通信量的大小作为优先级,依次为不同两个端点设备之间的逻辑路径分配最优的物理路径,作为选择得到的最优路径。
7.如权利要求6所述的方法,其特征在于,所述依次为不同两个端点设备之间的逻辑路径分配最优的物理路径包括:
设置带宽占有率阈值;
所述端点设备之间的逻辑路径的带宽占有率大于设置的所述阈值时,为其分配独享的最优物理路径作为最优路径;
所述端点设备之间的逻辑路径的带宽占有率小于等于设置的所述阈值时,为其分配与其他逻辑路径共享的最优物理路径作为最优路径。
8.一种在高速串行输入输出接口SRIO的交换系统中配置路由的装置,其特征在于,包括:硬件路径枚举单元、最优路径选择单元及路由配置单元,其中,
硬件路径枚举单元,用于在SRIO的交换系统中采用动态枚举方式,得到SRIO的交换系统中的所有硬件路径;
最优路径选择单元,用于在得到所有硬件路径中,根据设置的最优路径选择方式选择得到最优路径;
路由配置单元,用于根据所选择的最优路径进行SRIO的交换系统的路由配置。
9.如权利要求8所述的装置,其特征在于,所述装置为SRIO交换系统中的主机设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910648439.8A CN110380962B (zh) | 2019-07-18 | 2019-07-18 | 一种在srio的交换系统中配置路由的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910648439.8A CN110380962B (zh) | 2019-07-18 | 2019-07-18 | 一种在srio的交换系统中配置路由的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110380962A true CN110380962A (zh) | 2019-10-25 |
CN110380962B CN110380962B (zh) | 2021-11-05 |
Family
ID=68253813
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910648439.8A Active CN110380962B (zh) | 2019-07-18 | 2019-07-18 | 一种在srio的交换系统中配置路由的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110380962B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111490948A (zh) * | 2020-04-14 | 2020-08-04 | 北京大地信合信息技术有限公司 | 用于siro交换系统的路由配置方法、装置以及介质 |
CN112039703A (zh) * | 2020-08-28 | 2020-12-04 | 迈普通信技术股份有限公司 | 路径确定方法、装置、设备及可读存储介质 |
CN115208820A (zh) * | 2022-06-24 | 2022-10-18 | 中国电子科技集团公司第五十二研究所 | 一种RapidIO交换网络的路由自动规划方法 |
CN116846399A (zh) * | 2023-05-31 | 2023-10-03 | 北京国科环宇科技股份有限公司 | 数模转换器、电子设备、及数模转换方法 |
CN115208820B (zh) * | 2022-06-24 | 2024-05-14 | 中国电子科技集团公司第五十二研究所 | 一种RapidIO交换网络的路由自动规划方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060026275A1 (en) * | 2004-07-27 | 2006-02-02 | Gilmour David A | Fabric network management and diagnostic tool |
US20090198957A1 (en) * | 2008-02-01 | 2009-08-06 | Arimilli Lakshminarayana B | System and Method for Performing Dynamic Request Routing Based on Broadcast Queue Depths |
CN103746910A (zh) * | 2013-11-28 | 2014-04-23 | 苏州长风航空电子有限公司 | 一种RapidIO网络递归枚举方法 |
CN106789161A (zh) * | 2016-11-24 | 2017-05-31 | 北京无线电测量研究所 | 一种基于VPX系统的RapidIO路由配置装置和方法 |
CN109039780A (zh) * | 2018-09-21 | 2018-12-18 | 中国航空无线电电子研究所 | 自动搜索以及自动配置交换机路由的程序 |
CN109067650A (zh) * | 2018-08-13 | 2018-12-21 | 中国航空无线电电子研究所 | 基于srio交换网络的路由自动搜索及配置方法 |
CN109474532A (zh) * | 2018-10-09 | 2019-03-15 | 天津市滨海新区信息技术创新中心 | 一种RapidIO交换设备管理方法及系统 |
-
2019
- 2019-07-18 CN CN201910648439.8A patent/CN110380962B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060026275A1 (en) * | 2004-07-27 | 2006-02-02 | Gilmour David A | Fabric network management and diagnostic tool |
US20090198957A1 (en) * | 2008-02-01 | 2009-08-06 | Arimilli Lakshminarayana B | System and Method for Performing Dynamic Request Routing Based on Broadcast Queue Depths |
CN103746910A (zh) * | 2013-11-28 | 2014-04-23 | 苏州长风航空电子有限公司 | 一种RapidIO网络递归枚举方法 |
CN106789161A (zh) * | 2016-11-24 | 2017-05-31 | 北京无线电测量研究所 | 一种基于VPX系统的RapidIO路由配置装置和方法 |
CN109067650A (zh) * | 2018-08-13 | 2018-12-21 | 中国航空无线电电子研究所 | 基于srio交换网络的路由自动搜索及配置方法 |
CN109039780A (zh) * | 2018-09-21 | 2018-12-18 | 中国航空无线电电子研究所 | 自动搜索以及自动配置交换机路由的程序 |
CN109474532A (zh) * | 2018-10-09 | 2019-03-15 | 天津市滨海新区信息技术创新中心 | 一种RapidIO交换设备管理方法及系统 |
Non-Patent Citations (3)
Title |
---|
FLORIAN GREFF,等: ""A dynamic flow allocation method for the design of a software-defined real-time mesh network"", 《2017 IEEE 13TH INTERNATIONAL WORKSHOP ON FACTORY COMMUNICATION SYSTEMS (WFCS)》 * |
潘灵,等: ""一种RapidIO网络路径分配策略"", 《计算机应用》 * |
郦伟,等: ""基于RapidIO协议的网络路径分配策略"", 《计算机工程与设计》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111490948A (zh) * | 2020-04-14 | 2020-08-04 | 北京大地信合信息技术有限公司 | 用于siro交换系统的路由配置方法、装置以及介质 |
CN111490948B (zh) * | 2020-04-14 | 2022-06-28 | 北京大地信合信息技术有限公司 | 用于siro交换系统的路由配置方法、装置以及介质 |
CN112039703A (zh) * | 2020-08-28 | 2020-12-04 | 迈普通信技术股份有限公司 | 路径确定方法、装置、设备及可读存储介质 |
CN112039703B (zh) * | 2020-08-28 | 2022-04-22 | 迈普通信技术股份有限公司 | 路径确定方法、装置、设备及可读存储介质 |
CN115208820A (zh) * | 2022-06-24 | 2022-10-18 | 中国电子科技集团公司第五十二研究所 | 一种RapidIO交换网络的路由自动规划方法 |
CN115208820B (zh) * | 2022-06-24 | 2024-05-14 | 中国电子科技集团公司第五十二研究所 | 一种RapidIO交换网络的路由自动规划方法 |
CN116846399A (zh) * | 2023-05-31 | 2023-10-03 | 北京国科环宇科技股份有限公司 | 数模转换器、电子设备、及数模转换方法 |
CN116846399B (zh) * | 2023-05-31 | 2023-12-01 | 北京国科环宇科技股份有限公司 | 数模转换器、电子设备、及数模转换方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110380962B (zh) | 2021-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110380962A (zh) | 一种在srio的交换系统中配置路由的方法及装置 | |
CN1307564C (zh) | 网络交换机和部件及其操作方法 | |
AU699509B2 (en) | Method and apparatus for tracking connection-oriented communications configurations | |
US7733789B1 (en) | Remote monitoring of switch network | |
US5793765A (en) | Method for selecting links in networks | |
US8327021B2 (en) | Technique of determining connectivity solutions for network elements | |
CN101841471B (zh) | 具有连接成多维矩阵的节点的系统及其控制方法以及设备 | |
JPH05506976A (ja) | 電話通信網の故障回復能改善の分配式プロトコル | |
CN109376867A (zh) | 两量子比特逻辑门的处理方法及装置 | |
EP0018756B1 (en) | Speed independent arbiter switch for digital communication networks | |
JPS62155648A (ja) | パケットスイッチ装置 | |
US8825986B2 (en) | Switches and a network of switches | |
US5884090A (en) | Method and apparatus for partitioning an interconnection medium in a partitioned multiprocessor computer system | |
US20040156322A1 (en) | Network and method of configuring a network | |
CN109067650A (zh) | 基于srio交换网络的路由自动搜索及配置方法 | |
US6021442A (en) | Method and apparatus for partitioning an interconnection medium in a partitioned multiprocessor computer system | |
CN108429679A (zh) | 扩展型互连网络及其路由算法 | |
Bienstock et al. | A degree sequence problem related to network design | |
CN110046891A (zh) | 一种智能区块链互联系统 | |
CN106911521A (zh) | 基于多环的光片上网络拓扑结构设计方法 | |
Knoll et al. | Data fusion using large multi-agent networks: an analysis of network structure and performance | |
CN101466051B (zh) | 一种业务路径搜索方法和装置 | |
US5608649A (en) | Directly programmable networks | |
CN100420245C (zh) | 路由器内部物理设备配置管理方法及系统 | |
Bagchi et al. | Parallel information dissemination by packets |
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 |