CN114265804A - 一种多根CPU下的PCIe交换芯片上、下游端口路由表构建方法 - Google Patents

一种多根CPU下的PCIe交换芯片上、下游端口路由表构建方法 Download PDF

Info

Publication number
CN114265804A
CN114265804A CN202111587159.4A CN202111587159A CN114265804A CN 114265804 A CN114265804 A CN 114265804A CN 202111587159 A CN202111587159 A CN 202111587159A CN 114265804 A CN114265804 A CN 114265804A
Authority
CN
China
Prior art keywords
port
routing table
downstream port
virtual switch
downstream
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
Application number
CN202111587159.4A
Other languages
English (en)
Other versions
CN114265804B (zh
Inventor
许晶
王展
元国军
李剑雄
谭光明
孙凝晖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Publication of CN114265804A publication Critical patent/CN114265804A/zh
Application granted granted Critical
Publication of CN114265804B publication Critical patent/CN114265804B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供了一种多根CPU下的PCIe交换芯片上、下游游端口路由表构建方法,用于构建上、下游端口路由表,所述PCIe芯片被划分为多个虚拟交换机,每一个虚拟交换机配置有唯一的虚拟机交换标识,每个虚拟交换机均包括一个上游端口和多个下游端口,其中,上游端口路由表构建方法包括:在每个虚拟交换机的上游端口重复执行如下步骤直至完成上游端口到当前虚拟交换机下的所有下游端口的路由表项构建:S1、上游端口捕获与其相连的操作系统下发的包含当前上游端口所属虚拟交换机标识的且与下游端口路由相关的配置包;S2、解析所述配置包中与路由相关的信息并根据解析到的路由相关信息构建当前虚拟交换机下的上游端口路由表项。

Description

一种多根CPU下的PCIe交换芯片上、下游端口路由表构建方法
技术领域
本发明涉及通信技术领域,具体来说,涉及支持PCIe协议的数据通信,更具体地说,涉及一种支持PCIe协议的多根CPU下的PCIe交换芯片上、下游端口路由表构建方法及系统。
背景技术
随着科技的发展和进步,互联网业务变得更加丰富多样,业务需求也在持续增长,例如大数据、人工智能、图像计算等应用,它们对存储设备、智能加速卡等I/O设备的需求不断增长,其中,数据爆炸式增长使得对存储设备的需求量极速增加,人工智能等领域为加速模型训练要求有更多的专用加速卡。存储设备(NVMe SSD等)、加速卡(NVIDIA GPU、寒武纪思元智能加速卡等)都支持通用的I/O互连协议即PCIe协议,但是主机主板的PCIe扩展插槽有限,限制设备的可扩展性,影响应用的性能。因此,需要通过PCIe交换芯片进行拓展。在这基础上,随着多核处理器系统发展得越来越普遍,尤其是在高性能计算中,过去通常只有一个CPU与PCIe芯片相连,但如今出现了多个CPU通过多个根复合体与一个PCIe交换芯片相连的情况,例如在数据中心或高性能计算中心里,此时,可以通过将一个PCIe交换芯片划分为多个虚拟交换机,分别连接不同的根复合体,进而连接到不同CPU,系统结构如图1所示。
PCIe交换芯片被划分为多个虚拟交换机,每一个虚拟交换机配置有唯一的虚拟机交换标识,每一个虚拟交换机中均包含一个上游端口和多个下游端口,划分多个虚拟交换机的PCIe交换芯片内部结构如图2所示,其中,上游端口是指向根复合体方向的端口,下游端口是指远离根复合体的端口。PCIe交换芯片的主要功能是将数据包从源端口正确发送至目的端口,完成此功能需要根据数据包中的目的地址查找路由表,从而得到目的端口。当主机系统复位或上电时会进行枚举操作,系统软件首先对PCIe总线进行扫描来枚举并进行该总线下连接的所有设备的发现,然后发送读配置包,根据返回的内容判断PCIe设备类型后再发送写配置包并初始化设备中的寄存器。在枚举过程中,系统软件会遍历所有组合{总线号Bus(0~255)、设备号Device(0~31)、功能号Function(0~7)},尝试去读取每个Bus、Device、Function组合的VendorID寄存器,当读取到的VendorID是0xFFFF时,表示该设备不存在,当设备存在时,系统软件会对设备寄存器初始化,然而上电启动后,交换芯片的路由表初始状态为空,如果不进行正确的路由表配置,则交换芯片收到数据包后无法正确查找目的端口。传统方法未构建路由表,在每个虚拟交换机中的上游端口到目的下游端口的数据传输中,与当前虚拟交换机上游端口相连的CPU在发出数据包后,上游端口将其广播给所属虚拟交换机的所有下游端口,当数据包到达下游端口后,再由每一个下游端口单独判断,判断此数据包的目的地址是否属于当前虚拟交换机下本端口下属设备所属的地址空间范围,如果不是则将此包丢弃,如果是再将其发送给相连的下属设备;此外,每个虚拟交换机下的下游端口接收到当前虚拟交换机下与其相连的设备发送的访问当前虚拟交换机下的其他下游端口下的设备的数据包时也需要下游端口将其广播给当前所属虚拟交换机其他所有的下游端口,当数据包到达其他所有下游端口后再由每一个下游端口单独判断此包是否为发给自己的数据包,这使得每个下游端口也都需要进行数据包的判断和处理,大大增加了整个过程的延时,浪费了交换网络的带宽,影响整个PCIe交换芯片的吞吐。
总体来说,传统方法的主要缺点在于:
1、每个虚拟交换机中上游端口将数据包广播给所有下游端口,增加了端口之间的互连网络的数据流量,浪费了交换网络的带宽,影响整个PCIe交换芯片的吞吐。
2、增加了各虚拟交换机中下游端口要处理的数据包数量,当数据量大时,需要在端口排队等待依次处理,造成了本应由此端口转发的数据包的延时。
发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供一种多根CPU下的PCIe交换芯片上、下游端口路由表构建方法及系统。
根据本发明的第一方面,提供一种多根CPU下的PCIe交换芯片上游端口路由表构建方法,所述PCIe芯片被划分为多个虚拟交换机,每一个虚拟交换机配置有唯一的虚拟机交换标识,对于每一个虚拟交换机,所述方法包括:S1、上游端口捕获与其相连的操作系统下发的包含当前上游端口所属虚拟交换机标识的且与下游端口路由相关的配置包;S2、解析所述配置包中与路由相关的信息并根据解析到的路由相关信息构建所述虚拟交换机下的上游端口路由表项,其中,所述上游端口路由表项中至少包括所述虚拟交换机标识、下游端口设备号信息以及与每一个下游端口设备号对应的路由信息。
在本发明的一些实施例中,所述上游端口路由表项为:地址路由表项、和/或ID路由表项、和/或隐式路由表项、和/或组播表项。
优选的,所述地址路由表项为:IO地址空间路由表项、和/或可预取内存地址空间路由表项、和/或非预取内存地址空间路由表项;其中,IO地址空间路由表项至少包括:虚拟交换机标识、下游端口设备号以及与下游端口设备号对应的IO地址空间范围;可预取内存地址空间路由表项至少包括:虚拟交换机标识、下游端口设备号以及与下游端口设备号对应的可预取内存地址空间范围;非预取内存地址空间路由表项至少包括:虚拟交换机标识、下游端口设备号以及与下游端口设备号对应的非预取内存地址空间范围;所述ID路由表项至少包括:虚拟交换机标识、下游端口设备号以及与下游端口设备号对应的BUS号范围。
根据本发明的第二方面,提供一种用于多根CPU下的PCIe交换芯片的数据转发方法,所述PCIe芯片被划分为多个虚拟交换机,每一个虚拟交换机配置有唯一的虚拟机交换标识,其中,每一个虚拟交换机的上游端口包括如本发明第一方面所述方法配置的上游端口路由表,所述方法包括:T1、上游端口接收来自于与其相连的操作系统下发的数据包;T2、基于步骤T1中接收到的数据包中的目的信息以及虚拟交换机标识在上游端口路由表中查找与数据包目的信息以及虚拟交换机标识对应的目的下游端口;T3、将数据包转发给步骤T2获得的对应虚拟交换机的目的下游端口。
根据本发明的第三方面,提供一种多根CPU下的PCIe交换芯片上游端口路由表系统,所述上游端口路由表系统包括:配置模块,用于将PCIe芯片划分为多个虚拟交换机,确定每个虚拟交换机中上游和下游的连接关系并为每个虚拟交换机配置唯一标识,其中,同一个虚拟交换机下的上游和下游端口共用相同的标识;多个上游端口路由表单元,其中,每个上游端口路由表单元均包括:上游端口配置包解析模块,用于捕获包含当前上游端口所属虚拟交换机标识的且与下游端口路由相关的配置包,解析配置包以提取与配置下游端口路由相关的信息并发送给上游端口路由表构建模块;上游端口路由表构建模块,用于接收上游端口配置包解析模块提取到的信息并构建上游端口路由表项,其中,所述上游端口路由表项至少包括当前上游端口所属虚拟交换机标识、下游端口设备号信息以及与每一个下游端口设备号对应的路由信息;上游端口路由表存储模块,用于存储上游端口路由表构建模块构建好的上游端口路由表;上游端口路由查找模块,用于根据上游端口接收到的操作系统发出的数据包中的目的信息以及虚拟交换机标识在上游端口路由表中查找与数据包目的信息以及虚拟交换机标识对应的目的下游端口并进行路由。
根据本发明的第四方面,提供一种多根CPU下的PCIe交换芯片下游端口路由表构建方法,所述PCIe芯片被划分为多个虚拟交换机,每一个虚拟交换机配置有唯一的虚拟机交换标识,对于每一个虚拟交换机,所述方法包括:P1、下游端口接收其所属虚拟交换机的上游端口捕获的操作系统下发的包含当前下游端口所属虚拟交换机标识的且与下游端口路由相关的配置包;P2、解析所述配置包中与路由相关的信息并根据解析到的路由相关的信息构建所述虚拟交换机下的下游端口路由表项,其中,所述下游端口路由表项中至少包括所述虚拟交换机标识、下游端口设备号信息以及与每一个下游端口设备号对应的路由信息。
在本发明的一些实施例中,所述下游端口路由表项为:地址路由表项、和/或ID路由表项、和/或隐式路由表项、和/或组播表项。
优选的,所述地址路由表项为:IO地址空间路由表项、和/或可预取内存地址空间路由表项、和/或非预取内存地址空间路由表项;其中,IO地址空间路由表项至少包括:虚拟交换机标识、下游端口设备号以及与下游端口设备号对应的IO地址空间范围;可预取内存地址空间路由表项至少包括:虚拟交换机标识、下游端口设备号以及与下游端口设备号对应的可预取内存地址空间范围;非预取内存地址空间路由表项至少包括:虚拟交换机标识、下游端口设备号以及与下游端口设备号对应的非预取内存地址空间范围;所述ID路由表项至少包括:虚拟交换机标识、下游端口设备号以及与下游端口设备号对应的BUS号范围。
根据本发明的第五方面,提供一种用于多根CPU下的PCIe交换芯片的数据转发方法,所述PCIe芯片被划分为多个虚拟交换机,每一个虚拟交换机配置有唯一的虚拟机交换标识,其中,每一个虚拟交换机的下游端口包括如本发明第四方面所述方法配置的下游端口路由表,所述方法包括:R1、下游端口接收来自与其相连的设备发出的数据包;R2、基于步骤R1中接收到的数据包中的目的信息以及虚拟交换机标识在下游端口路由表中查找与数据包目的信息以及虚拟交换机标识对应的目的下游端口;R3、将数据包转发给步骤R2获得的对应虚拟交换机的目的下游端口。
根据本发明的第六方面,提供一种多根CPU下的PCIe交换芯片下游端口路由表系统,所述下游端口路由表系统包括:配置模块,用于将PCIe芯片划分为多个虚拟交换机,确定每个虚拟交换机中上游和下游的连接关系并为每个虚拟交换机配置唯一标识,其中,同一个虚拟交换机下的上游和下游端口共用相同的标识;多个下游端口路由表单元,其中,每个下游端口路由表单元均包括:下游端口配置包解析模块,用于接收同属一个虚拟交换机的上游端口转发的包含当前下游端口所属虚拟交换机标识的且与下游端口路由相关的配置包,提取配置包中与配置下游端口路由相关的信息并发送给下游端口路由表构建模块;下游端口路由表构建模块,用于接收当前虚拟交换机标识下的下游端口配置包解析模块提取到的信息并构建下游端口路由表项,其中,所述下游端口路由表项至少包括当前下游端口所属虚拟机标识、下游端口设备号信息以及与每一个下游端口设备号对应的路由信息;下游端口路由表存储模块,用于存储当前虚拟交换机标识下的下游端口路由表构建模块构建好的下游端口路由表;下游端口路由查找模块,用于根据下游端口接收到的来自于与其相连的设备发出的数据包中的目的信息以及虚拟交换机标识在下游端口路由表中查找与数据包目的信息以及虚拟交换机标识对应的目的下游端口并进行路由。
根据本发明的第七方面,提供一种多根CPU下的PCIe交换芯片,所述PCIe芯片被划分为多个虚拟交换机,每一个虚拟交换机配置有唯一的虚拟机交换标识,每个虚拟交换机均包括一个上游端口和多个下游端口,所述所有虚拟交换机的上游端口均存储有采用如本发明第一方面所述方法构建的上游端口路由表;所述所有虚拟交换机的下游端口均存储有采用如本发明第四方面所述方法构建的下游端口路由表。
根据本发明的第八方面,提供一种多根CPU下的PCIe交换系统,所述系统包括PCIe芯片,所述PCIe芯片被划分为多个虚拟交换机,每一个虚拟交换机配置有唯一的虚拟机交换标识,每个虚拟交换机均包括一个上游端口和多个下游端口,所述每个虚拟机的上游端口配置有上游端口路由表单元;所述每个虚拟机的每个下游端口配置有下游端口路由表单元;其中,所述每个上游端口路由表单元包括:上游端口配置包解析模块,用于捕获包含当前上游端口所属虚拟交换机标识的且与下游端口路由相关的配置包,解析配置包以提取与配置下游端口路由相关的信息并发送给上游端口路由表构建模块;上游端口路由表构建模块,用于接收上游端口配置包解析模块提取到的信息并构建上游端口路由表项,其中,所述上游端口路由表项至少包括当前上游端口所属虚拟交换机标识、下游端口设备号信息以及与每一个下游端口设备号对应的路由信息;上游端口路由表存储模块,用于存储上游端口路由表构建模块构建好的上游端口路由表;上游端口路由查找模块,用于根据上游端口接收到的操作系统发出的数据包中的目的信息以及虚拟交换机标识在上游端口路由表中查找与数据包目的信息以及虚拟交换机标识对应的目的下游端口并进行路由;所述每个下游端口路由表单元包括:下游端口配置包解析模块,用于接收同属一个虚拟交换机的上游端口转发的包含当前下游端口所属虚拟交换机标识的且与下游端口路由相关的配置包,提取配置包中与配置下游端口路由相关的信息并发送给下游端口路由表构建模块;下游端口路由表构建模块,用于接收当前虚拟交换机标识下的下游端口配置包解析模块提取到的信息并构建下游端口路由表项,其中,所述下游端口路由表项至少包括当前下游端口所属虚拟机标识、下游端口设备号信息以及与每一个下游端口设备号对应的路由信息;下游端口路由表存储模块,用于存储当前虚拟交换机标识下的下游端口路由表构建模块构建好的下游端口路由表;下游端口路由查找模块,用于根据下游端口接收到的来自于与其相连的设备发出的数据包中的目的信息以及虚拟交换机标识在下游端口路由表中查找与数据包目的信息以及虚拟交换机标识对应的目的下游端口并进行路由。
在本发明的一些实施例中,所述每个上游端口路由表单元还包括:上游端口配置包广播模块,用于为当前虚拟交换机下的上游端口捕获的与配置下游端口路由相关的配置包添加输入端口标识并广播给当前所属虚拟交换机下的所有下游端口。
与现有技术相比,本发明的优点在于:
1、提供了一种多根CPU下的PCIe交换芯片构建路由表的方法,可以主动解析经过交换芯片的数据包并实时构建不同虚拟机下的路由表,通过建立不同虚拟机下的路由表可以实现各自虚拟交换机下由与当前虚拟交换机下PCIe上游端口相连的操作系统到与当前虚拟交换机下的下游目的端口相连的设备的点对点直接通信以及当前虚拟交换机下与不同PCIe下游端口相连的设备之间的端到端通信。
2、不需要专门的处理器(如ARM、MCU、DSP等)来配置路由表,节省资源。
3、本发明将PCIe芯片划分为多个虚拟交换机,每个虚拟交换机都同时包含上游端口和下游端口的路由表构建方法,均可以实时构建路由表,无需再将数据包采用广播的方式转发给所有下游端口,更加直接高效,充分利用不同虚拟交换机中交换网络的性能,提高整个PCIe交换芯片的吞吐,充分拓展了PCIe交换芯片的性能,同时减少端口数据包的处理,降低数据包的处理延时。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1为根据本发明实施例的一种多根CPU下的PCIe系统架构示意图;
图2为根据本发明实施例的一种多根CPU下的PCIe交换芯片内部结构示意图;
图3为根据本发明实施例的一种多根CPU下的PCIe交换芯片上游端口路由表构建方法流程示意图;
图4为根据本发明实施例的一种多根CPU下的PCIe交换芯片上游端口数据传输方法流程示意图;
图5为根据本发明实施例的一种多根CPU下的PCIe交换芯片上游端口路由表系统结构示意图;
图6为根据本发明实施例的一种多根CPU下的PCIe交换芯片下游端口路由表构建方法流程示意图;
图7为根据本发明实施例的一种多根CPU下的PCIe交换芯片下游端口数据传输方法流程示意图;
图8为根据本发明实施例的一种多根CPU下的PCIe交换芯片下游端口路由表系统结构示意图;
图9是根据本发明实施例的一种多根CPU下的PCIe交换系统结构示意图。
具体实施方式
为了使本发明的目的,技术方案及优点更加清楚明白,以下通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
为了更好的理解本发明,下面结合附图详细说明本发明。其中,由于PCIe协议均是公知技术,本发明对具体的PCIe协议本身涉及到的英文表示、协议本身以及通信过程不做赘述,仅对构建路由表的方法进行说明。
如背景技术中提到的基于PCIe的传统数据传输方法中,每个虚拟交换机中的上游端口到下游端口的数据转发并未构建路由表,与当前虚拟交换机上游端口相连的CPU在发出数据包后,上游端口将其广播给所属虚拟交换机的所有下游端口,当数据包到达下游端口后,再由每一个下游端口单独判断,判断此数据包的目的地址是否属于当前虚拟交换机下本端口下属设备所属的地址空间范围,如果不是则将此包丢弃,如果是再将其发送给相连的下属设备;此外,每个虚拟交换机下的下游端口接收到当前虚拟交换机下与其相连的设备发送的访问当前虚拟交换机下的其他下游端口下的设备的数据包时也需要下游端口将其广播给当前所属虚拟交换机其他所有的下游端口,当数据包到达下游端口后再由每一个下游端口单独判断此包是否为发给自己的数据包,这使得每个下游端口也都需要进行数据包的判断和处理,大大增加了整个过程的延时,浪费了交换网络的带宽,影响整个PCIe交换芯片的吞吐。
如上所述,由于传统方法中上游端口到下游端口的数据包转发采用了广播的方式,增加了整个数据传输过程的耗时,浪费了交换网络的带宽,发明人针对此设计了一种多根CPU下的PCIe交换芯片上游端口路由表的构建方法,本发明中的PCIe芯片被划分为多个虚拟交换机,每一个虚拟交换机配置有唯一的虚拟机交换标识,在每个虚拟交换机中构建上游端口到每个下游端口的路由表项,每个虚拟交换机基于构建的上游端口路由表项可以实现与当前虚拟交换机下的PCIe上游端口相连的操作系统到与所属虚拟交换机下的PCIe下游端口相连的设备之间的点对点通信。
根据本发明的一个实施例,本发明提供一种多根CPU下的PCIe交换芯片上游端口路由表构建方法,如图3所示,用于在每个虚拟交换机中构建上游端口到下游端口的路由表,其中,所述PCIe芯片被划分为多个虚拟交换机,每一个虚拟交换机配置有唯一的虚拟机交换标识,所述方法包括对每一个虚拟交换机重复执行步骤S1、S2直至完成所有虚拟交换机中的上游端口到对应的所有下游端口的路由表项构建,下面详细介绍每个步骤。
在步骤S1中,上游端口捕获与其相连的操作系统下发的包含当前上游端口所属虚拟交换机标识的且与下游端口路由相关的配置包。与路由相关的信息是指可以指示从上游端口直接到达下游端口路径的路由信息,其中,该路由信息可以是地址路由信息、ID路由信息、隐式路由信息、组播信息等,本发明的实施例主要以ID路由和地址路由两种路由形式进行展开说明,其他形式的路由与此类似。
基于PCIe协议本身的特性,PCIe交换芯片中的每个端口都有配置空间,其中,协议规定与ID路由和地址路由相关的配置空间字段在寄存器中的编号范围是18h-30h。表1示出了基于PCIe协议的与地址路由相关寄存器具体内容和ID路由相关寄存器具体内容。
表1
Figure BDA0003428297310000091
Figure BDA0003428297310000101
配置空间由主机操作系统上电枚举时进行配置,表2示出了基于PCIe协议的读写配置包格式,由于读写配置格式是PCIe协议规定的,本发明不对每个字段的含义进行说明,仅对与路由相关的字段进行说明,其中,所述上游端口捕获的配置包具体内容为:Fmt字段为0b010,Type字段为0b00100或0b00101,代表此包类型为配置写包;EP字段为0,代表该配置包的Payload为有效数据;Bus Number字段为上游端口的Bus号加一,其中,下游端口的Bus号=上游端口的Bus号加1,上游端口的Bus号可以由上游端口的配置空间中得到;Device Number字段不超过PCIe交换芯片的下游端口数目;Function Number字段不超过交换芯片的下游端口实现的功能数(一般情况只实现物理功能,功能号为0);Rgister Number字段值在18h-30h范围内;提取的路由信息包括:Register Number(注册码),Payload(有效负载),First DW BE(First DW BE字段的每一位对应数据Payload第一个双字的字节使能位),Device Number。
表2
Figure BDA0003428297310000102
从表1可以看出,每个端口的寄存器配置空间均包含有ID路由信息(通过BUS号即总线号表示)和地址路由信息,从表2可以看出,每个端口尤其下游端口均配置有端口设备号,那么端口设备号对应的就是下游端口,通过表1和表2结合来看,通过获得下游端口的ID号或者地址空间范围,均可直接获得对应的下游端口对应的下游端口设备号,由此可以根据配置包中的ID号信息构建ID路由表项或者根据地址空间范围构建地址路由表项,均可实现通过路由表项实现上游端口到下游端口的点对点通信。
在步骤S2中,解析所述配置包中与路由相关的信息并根据解析到的路由相关信息构建所述虚拟交换机下的上游端口路由表项,其中,所述上游端口路由表项中至少包括所述虚拟交换机标识、下游端口设备号信息以及与每一个下游端口设备号对应的路由信息。
根据本发明的一个实施例,所述上游端口路由表项为:地址路由表项、和/或ID路由表项、和/或隐式路由表项、和/或组播表项,下面以上游端口路由表中的地址路由表项以及ID路由表项的建立为例进行说明。
从上面的表1可以看出,地址空间范围可以有IO地址空间范围、可预取内存地址空间范围、非预取内存地址空间范围。
因此,地址路由表项可构建为:IO地址空间路由表项、和/或可预取内存地址空间路由表项、和/或非预取内存地址空间路由表项;其中,IO地址空间路由表项至少包括:虚拟交换机标识、下游端口设备号以及与下游端口设备号对应的IO地址空间范围;可预取内存地址空间路由表项至少包括:虚拟交换机标识、下游端口设备号以及与下游端口设备号对应的可预取内存地址空间范围;非预取内存地址空间路由表项至少包括:虚拟交换机标识、下游端口设备号以及与下游端口设备号对应的非预取内存地址空间范围。
具体来说,IO地址空间路由表项的索引为虚拟交换机标识、下游端口设备号、每个下游端口设备号对应的IO地址空间范围,其中,IO地址空间范围:I/O Limit/Base长度为8bits,其中I/O Limit/Base[3:0]为1时,支持I/O Limit Upper 16bits、I/O Base Upper16bits,IO地址长度为32bits,地址空间为:{I/O Base Upper 16bits,I/O Base[7:4],000H}~{I/O Limit Upper 16bits,I/O Limit[7:4],FFFH};I/O Limit/Base[3:0]为0则代表不支持I/O Limit Upper 16bits、I/O Base Upper 16bits,地址长度为16bits,IO地址空间为:{I/O Base[7:4],000H}~{I/O Limit[7:4],FFFH};I/O Limit/Base[3:0]其余值保留,构建好的IO地址空间路由表项组成的路由表如表3所示,可以看出,每个表项中,在每个虚拟交换机标识下,一个下游端口设备号对应着一个IO地址空间范围,通过匹配数据包中的IO地址空间范围即可找到对应的目的端口设备号。
表3
Figure BDA0003428297310000121
可预取地址空间路由表项的索引为虚拟交换机标识、下游端口设备号、每个下游端口设备号对应的可预取地址空间范围,其中,可预取内存地址空间范围:PreftchableMemory Limit/Base长度为16bits,其中Prefetchable Memory Limit/Base[3:0]为1时代表可预取地址的长度为64bits,{Upper Prefetchable Base[31:0],Prefetchable MemoryBase[15:4],00000H}~{Upper Prefetchable Base[31:0]Prefetchable Memory Base[15:4],FFFFFH};为0时代表可预取地址长度为32bits,地址空间为:{PrefetchableMemory Base[15:4],00000H~Prefetchable Memory Base[15:4],FFFFFH},构建好的可预取地址空间路由表项组成的路由表如表4所示,可以看出,每个表项中,在每个虚拟交换机标识下,一个下游端口设备号对应着一个可预取地址空间范围,通过匹配数据包中的可预取地址空间范围即可找到对应的目的端口设备号。
表4
Figure BDA0003428297310000122
Figure BDA0003428297310000131
非预取地址路由表项的索引为虚拟交换机标识、下游端口设备号、每个下游端口设备号对应的非预取地址空间范围,其中,非预取内存地址空间范围:Memory Base/Limit长度为16bits,其中Memory Base/Limit[3:0]必须为0,非预取内存地址长度始终为32bits,不会超过4GB主机内存{Memory Base[15:4],00000H}~{Memory Limit[15:4],FFFFFH},构建好的非预取地址空间路由表项组成的路由表如表5所示,可以看出,每个表项中,在每个虚拟交换机标识下,一个下游端口设备号对应着一个非预取地址空间范围,通过匹配数据包中的非预取地址空间范围即可找到对应的目的端口设备号。
表5
Figure BDA0003428297310000132
ID路由表项至少包括包括:虚拟交换机标识、下游端口设备号以及与下游端口设备号对应的BUS号范围。其中,ID路由表项的索引为虚拟交换机标识、每个下游端口设备号和与每个下游端口设备号对应的BUS号范围(由上游和下游组成),构建好的ID路由表项组成的路由表如表6所示,可以看出,每个表项中,在每个虚拟交换机标识下,一个下游端口设备号对应着一个BUS号范围,通过匹配数据包中的BUS号范围即可找到对应的目的下游端口设备号。根据本发明的一个实施例,在本发明中为了灵活支持任意空间的地址,在芯片设计时每种类型的地址寄存器或RAM位宽均取最大值。
表6
Figure BDA0003428297310000141
通过上述实施例可以看出,通过本发明的方法可以在每个虚拟交换机中构建上游端口路由表,通过构建的上游端口路由表可实现与当前虚拟交换机下的PCIe上游端口相连的操作系统到与当前虚拟交换机下的PCIe下游目的端口相连的设备的点对点通信。
根据本发明的一个实施例,本发明还提供一种用于多根CPU下的PCIe交换芯片的数据转发方法,如图4所示,所述PCIe芯片被划分为多个虚拟交换机,每一个虚拟交换机配置有唯一的虚拟机交换标识,其中,每个虚拟交换机中的上游端口存储有使用本发明上游端口路由表构建方法配置的路由表,所述方法包括步骤T1、T2、T3,下面详细说明每个步骤。
在步骤T1中,上游端口接收来自于与其相连的操作系统下发的数据包。
在步骤T2中,基于步骤T1中接收到的数据包中的目的信息以及虚拟交换机标识在上游端口路由表中查找与数据包目的信息以及虚拟交换机标识对应的目的下游端口;
在步骤T3中,将数据包转发给步骤T2获得的对应虚拟交换机的目的下游端口。
根据本发明的一个实施例,本发明还提供一种多根CPU下的PCIe交换芯片上游端口路由表系统,如图5所示,所述系统包括:配置模块,用于将PCIe芯片划分为多个虚拟交换机,确定每个虚拟交换机中上游和下游的连接关系并为每个虚拟交换机配置唯一标识,其中,同一个虚拟交换机下的上游和下游端口共用相同的标识;多个上游端口路由表单元,其中,每个上游端口路由表单元均包括:上游端口配置包解析模块,用于捕获包含当前上游端口所属虚拟交换机标识的且与下游端口路由相关的配置包,解析配置包以提取与配置下游端口路由相关的信息并发送给上游端口路由表构建模块;上游端口路由表构建模块,用于接收上游端口配置包解析模块提取到的信息并构建上游端口路由表项,其中,所述上游端口路由表项至少包括当前上游端口所属虚拟交换机标识、下游端口设备号信息以及与每一个下游端口设备号对应的路由信息;上游端口路由表存储模块,用于存储上游端口路由表构建模块构建好的上游端口路由表;上游端口路由查找模块,用于根据上游端口接收到的操作系统发出的数据包中的目的信息以及虚拟交换机标识在上游端口路由表中查找与数据包目的信息以及虚拟交换机标识对应的目的下游端口并进行路由。
下面详细说明每个虚拟交换机下的上游端口路由表系统的工作过程:1、配置模块将PCIe芯片划分为多个虚拟交换机,确定每个虚拟交换机中上游和下游的连接关系并为每个虚拟交换机配置唯一标识;2、每个虚拟交换机中的上游端口捕获与其相连的操作系统下发的包含当前上游端口所属虚拟交换机标识的且与下游端口路由相关的配置包,由于上游端口的配置空间中寄存器代表的路由范围为所有下游端口路由范围的集合,所以上游端口路由只需构建属于虚拟交换机标识下每个单独的下游端口的路由表项;3、上游端口配置包解析模块解析配置包,提取与配置当前虚拟交换机下的下游端口路由相关信息发送给上游端口路由表构建模块;4、上游端口路由表构建模块根据提取到的信息构建上游端口路由表,并写入上游端口路由表存储模块中,上游端口路由表存储模块包含路由表项。根据本发明的一个实施例,本发明并不对存储介质进行限定,可以是RAM、寄存器等。
下面以一个虚拟交换机中从CPU端向与指定目的下游端口连接的设备发起一次IO写请求为例,说明通过构建好的上游端口路由表进行数据包转发的具体实现过程,其他类型的请求(如IO读请求、存储器读写、完成报文)路由过程以及下游端口之间通过使用下游端口路由表进行数据包转发的过程也与之相似。
首先,当上游端口配置包解析模块接收到数据包时进行判断,如果不是用于配置下游端口的配置包,则转发给路由查找模块进行路由;然后上游端口路由查找模块首先判断包类型,如果为IO读写,则匹配IO空间路由表;如果为存储器读写包,则匹配非预取内存地址空间路由表和预取内存地址空间路由表;如果为完成包或者非下游端口的配置包,则匹配ID路由表项。
本实施例中以IO写包为例,Fmt字段为0b010,Type字段为0b00010,代表此包的类型为IO写请求包。路由查找模块根据包头中携带的虚拟交换机标识以及Address字段,查找IO地址空间路由表(表7),匹配Address[31:0]在哪个表项的地址范围内,本例中对应表7中的表项2,则此包对应的目的下游输出端口为虚拟交换机标识为0的虚拟交换机中下游端口设备号为1的端口,从而得到了正确的目的下游端口,由CPU通过构建的上游端口路由表将该IO写包发送给虚拟交换机标识为0的虚拟交换机中下游端口设备号为1的端口所连接的设备。
表7
Figure BDA0003428297310000161
通过上述实施例的描述可知,通过本发明的方法可以在多根CPU下的PCIe芯片中不同虚拟交换机下的上游端口构建路由表,通过路由表的查找,可以实现由与不同虚拟交换机下的PCIe上游端口相连的操作系统到通过当前虚拟交换机中的路由表查找得到的对应虚拟交换机下的目的下游端口的点对点通信,而无需再将数据包广播给所有下游端口,节约了数据转发的时间,更加直接高效,充分利用交换机中交换网络的性能,提高整个PCIe交换芯片的吞吐,同时减少端口数据包的处理,降低数据包的处理延时。
进一步地,发明人还设计了一种多根CPU下的PCIe交换芯片下游端口路由表构建方法,如图6所示,本发明中的PCIe芯片被划分为多个虚拟交换机,每一个虚拟交换机配置有唯一的虚拟机交换标识,在每个虚拟交换机中构建下游端口到其他下游端口的路由表项,每个虚拟交换机基于构建的下游端口路由表项可以实现与当前虚拟交换机下的PCIe下游端口相连的设备到与所属虚拟交换机下的其他PCIe下游端口相连的设备之间的端到端通信。根据本发明的一个实施例,所述多根CPU下的PCIe交换芯片下游端口路由表构建方法包括对每一个虚拟交换机重复执行步骤P1、P2直至完成所有虚拟交换机中的下游端口到所在虚拟交换机下的其他所有下游端口的路由表项构建,下面详细介绍每个步骤。
在步骤P1中,下游端口接收上游端口捕获与其相连的操作系统下发的包含当前上游端口所属虚拟交换机标识的且与下游端口路由相关的配置包。与路由相关的信息是指可以指示从上游端口直接到达下游端口路径的路由信息,其中,该路由信息可以是地址路由信息、ID路由信息、隐式路由信息、组播信息等,本发明的实施例主要以ID路由和地址路由两种路由形式进行展开说明,其他形式的路由与此类似。
基于PCIe协议本身的特性,PCIe交换芯片中的每个端口都有配置空间,其中,协议规定与ID路由和地址路由相关的配置空间字段在寄存器中的编号范围是18h-30h。如前面实施例中的表1示出了基于PCIe协议的与地址路由相关寄存器具体内容和ID路由相关寄存器具体内容。
配置空间由主机操作系统上电枚举时进行配置,如前面实施例中的表2示出了基于PCIe协议的读写配置包格式,由于读写配置格式是PCIe协议规定的,本发明不对每个字段的含义进行说明,仅对与路由相关的字段进行说明,其中,所述上游端口捕获的配置包具体内容为:Fmt字段为0b010,Type字段为0b00100或0b00101,代表此包类型为配置写包;EP字段为0,代表该配置包的Payload为有效数据;Bus Number字段为上游端口的Bus号加一,其中,下游端口的Bus号=上游端口的Bus号加1,上游端口的Bus号可以由上游端口的配置空间中得到;Device Number字段不超过PCIe交换芯片的下游端口数目;Function Number字段不超过交换芯片的下游端口实现的功能数(一般情况只实现物理功能,功能号为0);Rgister Number字段值在18h-30h范围内;提取的路由信息包括:Register Number(注册码),Payload(有效负载),First DW BE(First DW BE字段的每一位对应数据Payload第一个双字的字节使能位),Device Number。
从表1可以看出,每个端口的寄存器配置空间均包含有ID路由信息(通过BUS号即总线号表示)和地址路由信息,从表2可以看出,每个端口尤其下游端口均配置有端口设备号,那么端口设备号对应的就是下游端口,通过表1和表2结合来看,通过获得下游端口的ID号或者地址空间范围,均可直接获得对应的下游端口对应的下游端口设备号,由此可以根据配置包中的ID号信息构建ID路由表项或者根据地址空间范围构建地址路由表项,均可实现通过路由表项实现每个虚拟交换机中的下游端口到当前虚拟交换机中的其他下游端口的端到端通信。
在步骤P2中,解析所述配置包中与路由相关的信息并根据解析到的路由相关信息构建所述虚拟交换机下的下游端口路由表项,其中,所述下游端口路由表项中至少包括所述虚拟交换机标识、下游端口设备号信息以及与每一个下游端口设备号对应的路由信息。
根据本发明的一个实施例,本发明所述下游端口路由表项为:地址路由表项、和/或ID路由表项、和/或隐式路由表项、和/或组播表项,下面以下游端口路由表中的地址路由表项以及ID路由表项的建立为例进行说明。
从上面的表1可以看出,地址空间范围可以有IO地址空间范围、可预取内存地址空间范围、非预取内存地址空间范围。
因此,地址路由表项可构建为:IO地址空间路由表项、和/或可预取内存地址空间路由表项、和/或非预取内存地址空间路由表项;其中,IO地址空间路由表项至少包括:虚拟交换机标识、下游端口设备号以及与下游端口设备号对应的IO地址空间范围;可预取内存地址空间路由表项至少包括:虚拟交换机标识、下游端口设备号以及与下游端口设备号对应的可预取内存地址空间范围;非预取内存地址空间路由表项至少包括:虚拟交换机标识、下游端口设备号以及与下游端口设备号对应的非预取内存地址空间范围。
具体来说,与每个虚拟交换机中的上游端口的路由表项类似,每个虚拟交换机中的下游端口的IO地址空间路由表项的索引为虚拟交换机标识、下游端口设备号、每个下游端口设备号对应的IO地址空间范围,其中,IO地址空间范围:I/O Limit/Base长度为8bits,其中I/O Limit/Base[3:0]为1时,支持I/O Limit Upper 16bits、I/O Base Upper16bits,IO地址长度为32bits,地址空间为:{I/O Base Upper 16bits,I/O Base[7:4],000H}~{I/O Limit Upper 16bits,I/O Limit[7:4],FFFH};I/O Limit/Base[3:0]为0则代表不支持I/O Limit Upper 16bits、I/O Base Upper 16bits,地址长度为16bits,IO地址空间为:{I/O Base[7:4],000H}~{I/O Limit[7:4],FFFH};I/O Limit/Base[3:0]其余值保留,构建好的IO地址空间路由表项组成的路由表与上游端口的IO地址空间路由表一致(如表3所示)可以看出,每个表项中,在每个虚拟交换机标识下,一个下游端口设备号对应着一个IO地址空间范围,通过匹配数据包中的IO地址空间范围即可找到对应的目的端口设备号。
每个虚拟交换机中的下游端口的可预取地址空间路由表项的索引为虚拟交换机标识、下游端口设备号、每个下游端口设备号对应的可预取地址空间范围,其中,可预取内存地址空间范围:Preftchable Memory Limit/Base长度为16bits,其中PrefetchableMemory Limit/Base[3:0]为1时代表可预取地址的长度为64bits,{Upper PrefetchableBase[31:0],Prefetchable Memory Base[15:4],00000H}~{Upper Prefetchable Base[31:0]Prefetchable Memory Base[15:4],FFFFFH};为0时代表可预取地址长度为32bits,地址空间为:{Prefetchable Memory Base[15:4],00000H~Prefetchable Memory Base[15:4],FFFFFH},构建好的可预取地址空间路由表项组成的路由表与上游端口的可预取地址空间路由表一致(如表4所示),可以看出,每个表项中,在每个虚拟交换机标识下,一个下游端口设备号对应着一个可预取地址空间范围,通过匹配数据包中的可预取地址空间范围即可找到对应的目的端口设备号。
每个虚拟交换机中的下游端口非预取地址路由表项的索引为虚拟交换机标识、下游端口设备号、每个下游端口设备号对应的非预取地址空间范围,其中,非预取内存地址空间范围:Memory Base/Limit长度为16bits,其中Memory Base/Limit[3:0]必须为0,非预取内存地址长度始终为32bits,不会超过4GB主机内存{Memory Base[15:4],00000H}~{Memory Limit[15:4],FFFFFH},构建好的非预取地址空间路由表项组成的路由表与上游端口的非预取地址空间路由表一致(如表5所示),可以看出,每个表项中,在每个虚拟交换机标识下,一个下游端口设备号对应着一个非预取地址空间范围,通过匹配数据包中的非预取地址空间范围即可找到对应的目的端口设备号。
每个虚拟交换机中的下游端口ID路由表项至少包括包括:虚拟交换机标识、下游端口设备号以及与下游端口设备号对应的BUS号范围。其中,ID路由表项的索引为虚拟交换机标识、每个下游端口设备号和与每个下游端口设备号对应的BUS号范围(由上游和下游组成),构建好的ID路由表项组成的路由表与上游端口的ID路由表一致(如表6所示)可以看出,每个表项中,在每个虚拟交换机标识下,一个下游端口设备号对应着一个BUS号范围,通过匹配数据包中的BUS号范围即可找到对应的目的下游端口设备号。根据本发明的一个实施例,在本发明中为了灵活支持任意空间的地址,在芯片设计时每种类型的地址寄存器或RAM位宽均取最大值。
通过上述实施例可以看出,通过本发明的方法可以在每个虚拟交换机中构建下游端口路由表,通过构建的下游端口路由表可实现与当前虚拟交换机下的PCIe下游端口相连的设备到与当前虚拟交换机下的PCIe其他下游目的端口相连的设备的端到端通信。
根据本发明的一个实施例,本发明还提供一种用于多根CPU下的PCIe交换芯片下游端口路由表的数据转发方法,如图7所示,所述PCIe芯片被划分为多个虚拟交换机,每一个虚拟交换机配置有唯一的虚拟机交换标识,其中,每个虚拟交换机中的下游端口存储有使用本发明下游端口路由表构建方法配置的路由表,所述方法包括步骤R1、R2、R3,下面详细说明每个步骤。
在步骤R1中,下游端口接收来自与其相连的设备发出的数据包。
在步骤R2中,基于步骤R1中接收到的数据包中的目的信息以及虚拟交换机标识在下游端口路由表中查找与数据包目的信息以及虚拟交换机标识对应的目的下游端口。
在步骤R3中,将数据包转发给步骤R2获得的对应虚拟交换机的目的下游端口。
需要说明的是,一些固定类型的包或路由失败的数据包会转发到对应虚拟交换机的上游端口,因此,此处步骤R3中的“将数据包转发给步骤R2中获得的对应虚拟交换机的目的下游端口”中的目的端口仅指需要接收到数据包并路由成功得到的目的下游端口。
根据本发明的一个实施例,本发明还提供一种多根CPU下的PCIe交换芯片下游端口路由表系统,如图8所示,所述系统包括:配置模块,用于将PCIe芯片划分为多个虚拟交换机,确定每个虚拟交换机中上游和下游的连接关系并为每个虚拟交换机配置唯一标识,其中,同一个虚拟交换机下的上游和下游端口共用相同的标识;多个下游端口路由表单元,其中,每个下游端口路由表单元均包括:下游端口配置包解析模块,用于接收同属一个虚拟交换机的上游端口转发的包含当前下游端口所属虚拟交换机标识的且与下游端口路由相关的配置包,提取配置包中与配置下游端口路由相关的信息并发送给下游端口路由表构建模块,需要说明的是,下游端口收到的配置包是通过对应上游端口路由表单元中的上游端口配置包解析模块捕获的包含与当前虚拟交换机标识且与配置下游端口路由相关的信息的配置包;下游端口路由表构建模块,用于接收当前虚拟交换机标识下的下游端口配置包解析模块提取到的信息并构建下游端口路由表项,其中,所述下游端口路由表项至少包括当前下游端口所属虚拟机标识、下游端口设备号信息以及与每一个下游端口设备号对应的路由信息;下游端口路由表存储模块,用于存储当前虚拟交换机标识下的下游端口路由表构建模块构建好的下游端口路由表;下游端口路由查找模块,用于根据下游端口接收到的来自于与其相连的设备发出的数据包中的目的信息以及虚拟交换机标识在下游端口路由表中查找与数据包目的信息以及虚拟交换机标识对应的目的下游端口并进行路由。
需要说明的是,一些固定类型的包或路由失败的数据包会转发到对应虚拟交换机的上游端口,因此,此处的下游端口路由查找模块中的“查找与数据包目的信息以及虚拟交换机标识对应的目的下游端口并进行路由”中的目的端口与上述步骤R3相同,同样仅指需要接收到数据包并路由成功得到的目的下游端口。
此外,由于每个虚拟交换机中的每个下游端口构建路由表的过程都一样,相当于所属虚拟交换机上游端口要把与路由相关的配置包分别发送给当前虚拟交换机中的每个下游端口,基于此,发明人在每个虚拟交换机中的上游端口路由表单元中还配置了上游端口配置包广播模块,用于为当前虚拟交换机标识下的上游端口配置包解析模块捕获的配置包添加输入端口标识,并将配置包广播给当前虚拟交换机标识下的所有下游端口,避免每个虚拟交换机中的上游端口单独给所属虚拟交换机中的每个下游端口发送配置包以节省工作时间和带宽并提高效率。
下面详细说明每个虚拟交换机下的下游端口路由表系统的工作过程:1、配置模块将PCIe芯片划分为多个虚拟交换机,确定每个虚拟交换机中上游和下游的连接关系并为每个虚拟交换机配置唯一标识;2、每个虚拟交换机中的上游端口配置包解析模块捕获用于配置下游端口且与路由相关的配置包,由上游端口配置包解析模块将捕获到的配置包继续发送给上游端口配置包广播模块;3、上游端口配置包广播模块为配置包添加输入端口标识,并将配置包广播给所有下游端口配置包解析模块,以便下游端口构建路由表4、下游端口配置包解析模块接收同属一个虚拟交换机的上游端口转发的包含当前下游端口所属虚拟交换机标识的且与下游端口路由相关的配置包,判断配置包输入端口标识,当配置包与下游端口所在虚拟交换机标识对应时,将配置包转发至端口控制器进行解析,提取配置包中与配置下游端口路由相关的信息并发送给下游端口路由表构建模块;5、下游端口路由表构建模块根据提取到的信息构建下游端口路由表,并写入下游端口路由表存储模块中,下游端口路由表存储模块包含路由表项。根据本发明的一个实施例,本发明并不对存储介质进行限定,可以是RAM、寄存器等。
通过上述实施例的描述可知,通过本发明的方法可以在多根CPU下的PCIe芯片中不同虚拟交换机下的下游端口构建路由表,通过路由表的查找,可以实现当前虚拟交换机下由与PCIe下游端口相连的设备到通过当前虚拟交换机中的路由表查找得到的所在虚拟交换机下的其他目的下游端口的端到端通信,而无需再将数据包广播给所有下游端口,节约了数据转发的时间,更加直接高效,充分利用交换机中交换网络的性能,提高整个PCIe交换芯片的吞吐,同时减少端口数据包的处理,降低数据包的处理延时。
根据本发明的一个实施例,本发明还提供一种多根CPU下的PCIe交换芯片,所述PCIe芯片被划分为多个虚拟交换机,每一个虚拟交换机配置有唯一的虚拟机交换标识,每个虚拟交换机均包括一个上游端口和多个下游端口,所述所有虚拟交换机的上游端口均存储有采用上游端口路由表构建方法构建的上游端口路由表;所述所有虚拟交换机的下游端口均存储有采用下游端口路由表构建方法构建的下游端口路由表。
根据本发明的一个实施例,本发明还提供一种多根CPU下的PCIe交换系统,所述系统包含PCIe芯片,所述PCIe交换芯片被划分为多个虚拟交换机,每一个虚拟交换机配置有唯一的虚拟机交换标识,每个虚拟交换机均包括一个上游端口和多个下游端口,整体系统结构如图9所示,所述每个虚拟机的上游端口配置有上游端口路由表单元,其中,所述每个上游端口路由表单元包括:上游端口配置包解析模块,用于捕获包含当前上游端口所属虚拟交换机标识的且与下游端口路由相关的配置包,解析配置包以提取与配置下游端口路由相关的信息并发送给上游端口路由表构建模块;上游端口路由表构建模块,用于接收上游端口配置包解析模块提取到的信息并构建上游端口路由表项,其中,所述上游端口路由表项至少包括当前上游端口所属虚拟交换机标识、下游端口设备号信息以及与每一个下游端口设备号对应的路由信息;上游端口路由表存储模块,用于存储上游端口路由表构建模块构建好的上游端口路由表;上游端口路由查找模块,用于根据上游端口接收到的操作系统发出的数据包中的目的信息以及虚拟交换机标识在上游端口路由表中查找与数据包目的信息以及虚拟交换机标识对应的目的下游端口并进行路由;根据本发明的一个实施例,所述每个上游端口路由表单元还包括:上游端口配置包广播模块,用于为当前虚拟交换机下的上游端口捕获的与配置下游端口路由相关的配置包添加输入端口标识并广播给当前所属虚拟交换机下的所有下游端口,避免每个虚拟交换机中的上游端口单独给每个下游端口发送配置包以节省工作时间和带宽并提高效率。所述每个虚拟机的每个下游端口配置有下游端口路由表单元,其中,所述每个下游端口路由表单元包括:下游端口配置包解析模块,用于接收同属一个虚拟交换机的上游端口转发的包含当前下游端口所属虚拟交换机标识的且与下游端口路由相关的配置包,提取配置包中与配置下游端口路由相关的信息并发送给下游端口路由表构建模块;下游端口路由表构建模块,用于接收当前虚拟交换机标识下的下游端口配置包解析模块提取到的信息并构建下游端口路由表项,其中,所述下游端口路由表项至少包括当前下游端口所属虚拟机标识、下游端口设备号信息以及与每一个下游端口设备号对应的路由信息;下游端口路由表存储模块,用于存储当前虚拟交换机标识下的下游端口路由表构建模块构建好的下游端口路由表;下游端口路由查找模块,用于根据下游端口接收到的来自于与其相连的设备发出的数据包中的目的信息以及虚拟交换机标识在下游端口路由表中查找与数据包目的信息以及虚拟交换机标识对应的目的下游端口并进行路由。
与现有技术相比,本发明的优点在于:
1、提供了一种多根CPU下的PCIe交换芯片构建路由表的方法,可以主动解析经过交换芯片的数据包并实时构建不同虚拟机下的路由表,通过建立不同虚拟机下的路由表可以实现各自虚拟交换机下由与当前虚拟交换机下PCIe上游端口相连的操作系统到与当前虚拟交换机下的下游目的端口相连的设备的点对点直接通信以及当前虚拟交换机下与不同PCIe下游端口相连的设备之间的端到端通信。
2、不需要专门的处理器(如ARM、MCU、DSP等)来配置路由表,节省资源。
3、本发明将PCIe芯片划分为多个虚拟交换机,每个虚拟交换机都同时实现上游端口和下游端口的路由表构建,均可以实时构建路由表,无需再将数据包采用广播的方式转发给所有下游端口,更加直接高效,充分利用不同虚拟交换机中交换网络的性能,提高整个PCIe交换芯片的吞吐,充分拓展了PCIe交换芯片的性能,同时减少端口数据包的处理,降低数据包的处理延时。
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (19)

1.一种多根CPU下的PCIe交换芯片上游端口路由表构建方法,所述PCIe芯片被划分为多个虚拟交换机,每一个虚拟交换机配置有唯一的虚拟机交换标识,其特征在于,对于每一个虚拟交换机,所述方法包括:
S1、上游端口捕获与其相连的操作系统下发的包含当前上游端口所属虚拟交换机标识的且与下游端口路由相关的配置包;
S2、解析所述配置包中与路由相关的信息并根据解析到的路由相关信息构建所述虚拟交换机下的上游端口路由表项,其中,所述上游端口路由表项中至少包括所述虚拟交换机标识、下游端口设备号信息以及与每一个下游端口设备号对应的路由信息。
2.根据权利要求1所述的方法,其特征在于,所述上游端口路由表项为:地址路由表项、和/或ID路由表项、和/或隐式路由表项、和/或组播表项。
3.根据权利要求2所述的方法,其特征在于,所述地址路由表项为:IO地址空间路由表项、和/或可预取内存地址空间路由表项、和/或非预取内存地址空间路由表项;
其中,IO地址空间路由表项至少包括:虚拟交换机标识、下游端口设备号以及与下游端口设备号对应的IO地址空间范围;
可预取内存地址空间路由表项至少包括:虚拟交换机标识、下游端口设备号以及与下游端口设备号对应的可预取内存地址空间范围;
非预取内存地址空间路由表项至少包括:虚拟交换机标识、下游端口设备号以及与下游端口设备号对应的非预取内存地址空间范围。
4.根据权利要求2所述的方法,其特征在于,所述ID路由表项至少包括:虚拟交换机标识、下游端口设备号以及与下游端口设备号对应的BUS号范围。
5.一种用于多根CPU下的PCIe交换芯片的数据转发方法,所述PCIe芯片被划分为多个虚拟交换机,每一个虚拟交换机配置有唯一的虚拟机交换标识,其中,每一个虚拟交换机的上游端口包括如权利要求1-4任一所述方法配置的上游端口路由表,所述方法包括:
T1、上游端口接收来自于与其相连的操作系统下发的数据包;
T2、基于步骤T1中接收到的数据包中的目的信息以及虚拟交换机标识在上游端口路由表中查找与数据包目的信息以及虚拟交换机标识对应的目的下游端口;
T3、将数据包转发给步骤T2获得的对应虚拟交换机的目的下游端口。
6.一种多根CPU下的PCIe交换芯片上游端口路由表系统,其特征在于,所述上游端口路由表系统包括:
配置模块,用于将PCIe芯片划分为多个虚拟交换机,确定每个虚拟交换机中上游和下游的连接关系并为每个虚拟交换机配置唯一标识,其中,同一个虚拟交换机下的上游和下游端口共用相同的标识;
多个上游端口路由表单元,其中,每个上游端口路由表单元均包括:
上游端口配置包解析模块,用于捕获包含当前上游端口所属虚拟交换机标识的且与下游端口路由相关的配置包,解析配置包以提取与配置下游端口路由相关的信息并发送给上游端口路由表构建模块;
上游端口路由表构建模块,用于接收上游端口配置包解析模块提取到的信息并构建上游端口路由表项,其中,所述上游端口路由表项至少包括当前上游端口所属虚拟交换机标识、下游端口设备号信息以及与每一个下游端口设备号对应的路由信息;
上游端口路由表存储模块,用于存储上游端口路由表构建模块构建好的上游端口路由表。
7.根据权利要求6所述的上游端口路由表系统,其特征在于,所述上游端口路由表系统中的每个上游端口路由表单元还包括:
上游端口路由查找模块,用于根据上游端口接收到的操作系统发出的数据包中的目的信息以及虚拟交换机标识在上游端口路由表中查找与数据包目的信息以及虚拟交换机标识对应的目的下游端口并进行路由。
8.一种多根CPU下的PCIe交换芯片下游端口路由表构建方法,所述PCIe芯片被划分为多个虚拟交换机,每一个虚拟交换机配置有唯一的虚拟机交换标识,其特征在于,对于每一个虚拟交换机,所述方法包括:
P1、下游端口接收其所属虚拟交换机的上游端口捕获的操作系统下发的包含当前下游端口所属虚拟交换机标识的且与下游端口路由相关的配置包;
P2、解析所述配置包中与路由相关的信息并根据解析到的路由相关的信息构建所述虚拟交换机下的下游端口路由表项,其中,所述下游端口路由表项中至少包括所述虚拟交换机标识、下游端口设备号信息以及与每一个下游端口设备号对应的路由信息。
9.根据权利要求8所述的方法,其特征在于,所述下游端口路由表项为:地址路由表项、和/或ID路由表项、和/或隐式路由表项、和/或组播表项。
10.根据权利要求9所述的方法,其特征在于,所述地址路由表项为:IO地址空间路由表项、和/或可预取内存地址空间路由表项、和/或非预取内存地址空间路由表项;
其中,IO地址空间路由表项至少包括:虚拟交换机标识、下游端口设备号以及与下游端口设备号对应的IO地址空间范围;
可预取内存地址空间路由表项至少包括:虚拟交换机标识、下游端口设备号以及与下游端口设备号对应的可预取内存地址空间范围;
非预取内存地址空间路由表项至少包括:虚拟交换机标识、下游端口设备号以及与下游端口设备号对应的非预取内存地址空间范围。
11.根据权利要求9所述的方法,其特征在于,所述ID路由表项至少包括:虚拟交换机标识、下游端口设备号以及与下游端口设备号对应的BUS号范围。
12.一种用于多根CPU下的PCIe交换芯片的数据转发方法,所述PCIe芯片被划分为多个虚拟交换机,每一个虚拟交换机配置有唯一的虚拟机交换标识,其中,每一个虚拟交换机的下游端口包括如权利要求8-11任一所述方法配置的下游端口路由表,所述方法包括:
R1、下游端口接收来自与其相连的设备发出的数据包;
R2、基于步骤R1中接收到的数据包中的目的信息以及虚拟交换机标识在下游端口路由表中查找与数据包目的信息以及虚拟交换机标识对应的目的下游端口;
R3、将数据包转发给步骤R2获得的对应虚拟交换机的目的下游端口。
13.一种多根CPU下的PCIe交换芯片下游端口路由表系统,其特征在于,所述下游端口路由表系统包括:
配置模块,用于将PCIe芯片划分为多个虚拟交换机,确定每个虚拟交换机中上游和下游的连接关系并为每个虚拟交换机配置唯一标识,其中,同一个虚拟交换机下的上游和下游端口共用相同的标识;
多个下游端口路由表单元,其中,每个下游端口路由表单元均包括:
下游端口配置包解析模块,用于接收同属一个虚拟交换机的上游端口转发的包含当前下游端口所属虚拟交换机标识的且与下游端口路由相关的配置包,提取配置包中与配置下游端口路由相关的信息并发送给下游端口路由表构建模块;
下游端口路由表构建模块,用于接收当前虚拟交换机标识下的下游端口配置包解析模块提取到的信息并构建下游端口路由表项,其中,所述下游端口路由表项至少包括当前下游端口所属虚拟机标识、下游端口设备号信息以及与每一个下游端口设备号对应的路由信息;
下游端口路由表存储模块,用于存储当前虚拟交换机标识下的下游端口路由表构建模块构建好的下游端口路由表。
14.根据权利要求13所述的下游端口路由表系统,其特征在于,所述下游端口路由表系统中的每个下游端口路由表单元还包括:
下游端口路由查找模块,用于根据下游端口接收到的来自于与其相连的设备发出的数据包中的目的信息以及虚拟交换机标识在下游端口路由表中查找与数据包目的信息以及虚拟交换机标识对应的目的下游端口并进行路由。
15.一种多根CPU下的PCIe交换芯片,所述PCIe芯片被划分为多个虚拟交换机,每一个虚拟交换机配置有唯一的虚拟机交换标识,每个虚拟交换机均包括一个上游端口和多个下游端口,其特征在于:
所述所有虚拟交换机的上游端口均存储有采用如权利要求1-4任一所述方法构建的上游端口路由表;
所述所有虚拟交换机的下游端口均存储有采用如权利要求8-11任一所述方法构建的下游端口路由表。
16.一种多根CPU下的PCIe交换系统,所述系统包括PCIe芯片,所述PCIe芯片被划分为多个虚拟交换机,每一个虚拟交换机配置有唯一的虚拟机交换标识,每个虚拟交换机均包括一个上游端口和多个下游端口,其特征在于:
所述每个虚拟机的上游端口配置有上游端口路由表单元;
所述每个虚拟机的每个下游端口配置有下游端口路由表单元;
其中,所述每个上游端口路由表单元包括:
上游端口配置包解析模块,用于捕获包含当前上游端口所属虚拟交换机标识的且与下游端口路由相关的配置包,解析配置包以提取与配置下游端口路由相关的信息并发送给上游端口路由表构建模块;
上游端口路由表构建模块,用于接收上游端口配置包解析模块提取到的信息并构建上游端口路由表项,其中,所述上游端口路由表项至少包括当前上游端口所属虚拟交换机标识、下游端口设备号信息以及与每一个下游端口设备号对应的路由信息;
上游端口路由表存储模块,用于存储上游端口路由表构建模块构建好的上游端口路由表;
上游端口路由查找模块,用于根据上游端口接收到的操作系统发出的数据包中的目的信息以及虚拟交换机标识在上游端口路由表中查找与数据包目的信息以及虚拟交换机标识对应的目的下游端口并进行路由;
所述每个下游端口路由表单元包括:
下游端口配置包解析模块,用于接收同属一个虚拟交换机的上游端口转发的包含当前下游端口所属虚拟交换机标识的且与下游端口路由相关的配置包,提取配置包中与配置下游端口路由相关的信息并发送给下游端口路由表构建模块;
下游端口路由表构建模块,用于接收当前虚拟交换机标识下的下游端口配置包解析模块提取到的信息并构建下游端口路由表项,其中,所述下游端口路由表项至少包括当前下游端口所属虚拟机标识、下游端口设备号信息以及与每一个下游端口设备号对应的路由信息;
下游端口路由表存储模块,用于存储当前虚拟交换机标识下的下游端口路由表构建模块构建好的下游端口路由表;
下游端口路由查找模块,用于根据下游端口接收到的来自于与其相连的设备发出的数据包中的目的信息以及虚拟交换机标识在下游端口路由表中查找与数据包目的信息以及虚拟交换机标识对应的目的下游端口并进行路由。
17.根据权利要求16所述的系统,其特征在于,所述每个上游端口路由表单元还包括:
上游端口配置包广播模块,用于为当前虚拟交换机下的上游端口捕获的与配置下游端口路由相关的配置包添加输入端口标识并广播给当前所属虚拟交换机下的所有下游端口。
18.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序可被处理器执行以实现如权利要求1-4或5或8-11或12中任一所述方法的步骤。
19.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现如权利要求1-4或5或8-11或12中任一项所述方法的步骤。
CN202111587159.4A 2021-12-13 2021-12-23 一种多根CPU下的PCIe交换芯片上、下游端口路由表构建方法 Active CN114265804B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2021115139375 2021-12-13
CN202111513937 2021-12-13

Publications (2)

Publication Number Publication Date
CN114265804A true CN114265804A (zh) 2022-04-01
CN114265804B CN114265804B (zh) 2024-06-11

Family

ID=80829049

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111587159.4A Active CN114265804B (zh) 2021-12-13 2021-12-23 一种多根CPU下的PCIe交换芯片上、下游端口路由表构建方法

Country Status (1)

Country Link
CN (1) CN114265804B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115114219A (zh) * 2022-07-22 2022-09-27 深圳星云智联科技有限公司 一种pci-e拓扑方法、装置、设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102707991A (zh) * 2012-05-17 2012-10-03 中国科学院计算技术研究所 多根i/o 虚拟化共享方法和系统
CN103117929A (zh) * 2013-01-31 2013-05-22 中国科学院计算技术研究所 一种基于PCIe数据交换的通信方法及系统
US20130151750A1 (en) * 2010-08-19 2013-06-13 Balaji Kanigicherla Multi-root input output virtualization aware switch
CN105515991A (zh) * 2014-09-23 2016-04-20 中兴通讯股份有限公司 一种扩展三层转发设备的路由表容量的方法及转发设备
CN108337910A (zh) * 2015-12-22 2018-07-27 英特尔公司 用于软件定义的互连交换机的架构
CN111092773A (zh) * 2019-12-25 2020-05-01 成都九芯微科技有限公司 一种支持虚拟交换的pcie交换芯片端口配置系统和方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130151750A1 (en) * 2010-08-19 2013-06-13 Balaji Kanigicherla Multi-root input output virtualization aware switch
CN102707991A (zh) * 2012-05-17 2012-10-03 中国科学院计算技术研究所 多根i/o 虚拟化共享方法和系统
CN103117929A (zh) * 2013-01-31 2013-05-22 中国科学院计算技术研究所 一种基于PCIe数据交换的通信方法及系统
CN105515991A (zh) * 2014-09-23 2016-04-20 中兴通讯股份有限公司 一种扩展三层转发设备的路由表容量的方法及转发设备
CN108337910A (zh) * 2015-12-22 2018-07-27 英特尔公司 用于软件定义的互连交换机的架构
CN111092773A (zh) * 2019-12-25 2020-05-01 成都九芯微科技有限公司 一种支持虚拟交换的pcie交换芯片端口配置系统和方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115114219A (zh) * 2022-07-22 2022-09-27 深圳星云智联科技有限公司 一种pci-e拓扑方法、装置、设备及存储介质
CN115114219B (zh) * 2022-07-22 2023-10-20 深圳星云智联科技有限公司 一种pci-e拓扑方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN114265804B (zh) 2024-06-11

Similar Documents

Publication Publication Date Title
WO2020236295A1 (en) System and method for facilitating efficient message matching in a network interface controller (nic)
CN108268328B (zh) 数据处理装置及计算机
CN103559156B (zh) 一种fpga与计算机之间的通信系统
JPWO2012128282A1 (ja) 通信制御システム、スイッチノード、及び通信制御方法
US8661207B2 (en) Method and apparatus for assigning a memory to multi-processing unit
CN114546913B (zh) 一种基于pcie接口的多主机之间数据高速交互的方法和装置
CN106844263B (zh) 一种基于可配置的多处理器计算机系统及实现方法
WO2022032990A1 (zh) 一种命令信息传输方法、系统、装置及可读存储介质
CN114265804B (zh) 一种多根CPU下的PCIe交换芯片上、下游端口路由表构建方法
CN116132287A (zh) 基于dpu的高性能网络加速方法及系统
IL275859B1 (en) Method and device for improving bandwidth utilization in a communication network
CN115426312A (zh) 一种大规模多模态网络中标识管理及优化转发方法和装置
CN117178263A (zh) SmartNIC中的网络附接的MPI处理架构
CN114265805A (zh) 一种PCIe交换芯片上、下游端口路由表构建方法及系统
CN111371804A (zh) Dns后端转发方法及系统
CN117033275B (zh) 加速卡间的dma方法、装置、加速卡、加速平台及介质
CN112256331B (zh) 虚拟机指令解析加速方法、装置和计算机存储介质
CN117240935A (zh) 基于dpu的数据平面转发方法、装置、设备及介质
US20230153153A1 (en) Task processing method and apparatus
CN101504613B (zh) 用于受限系统的分布式动态二进制翻译方法
CN116032498A (zh) 一种内存区域注册方法、装置及设备
CN114827655B (zh) 内容存储转发方法及装置、电子设备、存储介质
US20240104045A1 (en) System and method for ghost bridging
CN115996203B (zh) 网络流量分域方法、装置、设备和存储介质
US12001370B2 (en) Multi-node memory address space for PCIe devices

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