CN114296876A - 虚拟设备创建方法、数据转发方法、装置及网络设备 - Google Patents
虚拟设备创建方法、数据转发方法、装置及网络设备 Download PDFInfo
- Publication number
- CN114296876A CN114296876A CN202111629680.XA CN202111629680A CN114296876A CN 114296876 A CN114296876 A CN 114296876A CN 202111629680 A CN202111629680 A CN 202111629680A CN 114296876 A CN114296876 A CN 114296876A
- Authority
- CN
- China
- Prior art keywords
- queue
- pcie
- physical
- virtual
- pcie device
- 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.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供一种虚拟设备创建方法、数据转发方法、装置及网络设备。方法包括:通过预设开发工具及预设创建参数,创建表征虚拟PCIE设备的设备结构体;将预设数量的设备结构体均与指定物理PCIE设备关联;基于预设队列映射关系,将每个设备结构体中的第一队列结构体与指定物理PCIE设备中对应的物理收包队列关联,以及将每个设备结构体中的第二队列结构体与指定物理PCIE设备中对应的物理发包队列关联,得到预设数量的虚拟PCIE设备。如此,一个物理PCIE设备可以创建得到多个虚拟PCIE设备,有利于物理设备的硬件资源得到充分利用,以提升处理性能,且无需依赖专门的BIOS,提高设备虚拟化的适用范围。
Description
技术领域
本申请涉及网卡驱动技术领域,具体而言,涉及一种虚拟设备创建方法、数据转发方法、装置及网络设备。
背景技术
随着网络硬件发展的越来越快,单接口的网络吞吐越来越高,从刚开始的10Mbps,到现在的100Gbps也开始大量普及。相对于网卡硬件性能突飞猛进的发展,系统的网络处理性能逐步成为瓶颈,为了能最大效率的利用网卡的高性能,逐渐发展了硬件虚拟化技术,即把单个网络硬件设备,在多个系统中进行共享。
当前对网络的虚拟化,主要是利用Intel的SR-IOV(Single Root I/OVirtualization,单根I/O虚拟化)的硬件虚拟化技术和Virtio软虚拟化技术。目前的虚拟化方式,对网络硬件设备存在各类限制,影响设备性能。例如,基于SR-IOV的虚拟化技术,对设备的BIOS(Basic Input Output System,基本输入输出系统)有限制,主要支持Intel的相关产品。PCIE(Peripheral Component Interconnect Express,高速串行计算机扩展总线标准)桥设备的BIOS需要支持Vd-t,PCIE桥设备以及桥接的所有PCIE桥也必须支持虚拟化等,且无法灵活调整设备参数。
发明内容
本申请实施例的目的在于提供一种虚拟设备创建方法、数据转发方法、装置及网络设备,能够改善在设备虚拟化过程中,对网络设备存在各类限制,影响设备性能的问题。
为了实现上述目的,本申请的实施例通过如下方式实现:
第一方面,本申请实施例提供一种虚拟设备创建方法,所述方法包括:
通过预设开发工具及预设创建参数,创建表征虚拟PCIE设备的设备结构体,其中,所述设备结构体包括表示虚拟收包队列的第一队列结构体以及表示虚拟发包队列的第二队列结构体,所述预设创建参数包括欲创建的虚拟PCIE设备的预设数量、欲与所述虚拟PCIE设备关联的指定物理PCIE设备及预设队列映射关系;
将所述预设数量的所述设备结构体均与所述指定物理PCIE设备关联;
基于所述预设队列映射关系,将每个所述设备结构体中的所述第一队列结构体与所述指定物理PCIE设备中对应的物理收包队列关联,以及将每个所述设备结构体中的所述第二队列结构体与所述指定物理PCIE设备中对应的物理发包队列关联,得到所述预设数量的虚拟PCIE设备,其中,得到的每个所述虚拟PCIE设备用于通过所述虚拟收包队列接收数据,以及通过所述虚拟发包队列发送数据。
在上述的实施方式中,通过将预设数量的设备结构体与物理PCIE设备关联,以及将虚拟收包队列和物理收包列关联,将虚拟发包队列和物理发包队列关联,如此,一个物理PCIE设备可以创建得到多个虚拟PCIE设备,有利于物理设备的硬件资源得到充分利用,以提升处理性能,且无需依赖专门的BIOS,不需要设备支持Vd-t,提高设备虚拟化的适用范围。
结合第一方面,在一些可选的实施方式中,基于所述预设队列映射关系,将每个所述设备结构体中的所述第一队列结构体与所述指定物理PCIE设备中对应的物理收包队列关联,包括:
将每个所述设备结构体中的所述第一队列结构体与所述指定物理PCIE设备中相同的物理收包队列关联,以使每个所述设备结构体共享所述指定物理PCIE设备中相同的物理收包队列;
或者,将每个所述设备结构体中的所述第一队列结构体与所述指定物理PCIE设备中的指定物理收包队列关联,其中,不同设备结构体中的所述第一队列结构体所关联的指定物理收包队列不相同。
在上述的实施方式中,虚拟PCIE设备在执行数据转发任务时,可以直接将转发任务重定向至物理PCIE设备上的收包队列或发包队列,以进行数据的转发,如此,多个虚拟PCIE设备可以共用一个物理PCIE设备的硬件资源,有利于让物理PCIE设备的硬件资源得到充分利用。
结合第一方面,在一些可选的实施方式中,基于所述预设队列映射关系,将每个所述设备结构体中的所述第二队列结构体与所述指定物理PCIE设备中对应的物理发包队列关联,包括:
将每个所述设备结构体中的所述第二队列结构体与所述指定物理PCIE设备中相同的物理发包队列关联,以使每个所述设备结构体共享所述指定物理PCIE设备中相同的物理发包队列;
或者,将每个所述设备结构体中的所述第二队列结构体与所述指定物理PCIE设备中的指定物理发包队列关联,其中,不同设备结构体中的所述第二队列结构体所关联的指定物理发包队列不相同。
结合第一方面,在一些可选的实施方式中,在创建表征虚拟PCIE设备的设备结构体之后,所述方法还包括:
将创建的所述预设数量的所述设备结构体,添加于全局链表中,其中,所述全局链表中预先添加有当前网络中的所有物理PCIE设备,在所述全局链表中,每个所述设备结构体包括身份标识及表征虚拟PCIE设备的标识。
结合第一方面,在一些可选的实施方式中,所述方法包括:
从所述全局链表中选择用于执行数据转发业务的当前PCIE设备;
当所述当前PCIE设备为虚拟PCIE设备时,将所述数据转发业务对应的待转发数据,重定向至目标物理PCIE设备中的目标物理收包队列,以接收所述待转发数据,和/或
重定向至所述目标物理PCIE设备中的目标物理发包队列,以发送所述待转发数据,其中,所述目标物理PCIE设备为与所述当前PCIE设备关联的物理PCIE设备,所述目标物理收包队列为所述目标物理PCIE设备中的与所述当前PCIE设备中的虚拟收包队列对应的物理发包队列,所述目标物理发包队列为所述目标物理PCIE设备中的与所述当前PCIE设备中的虚拟发包队列对应的物理发包队列。
第二方面,本申请还提供一种数据转发方法,所述方法包括:
从全局链表中选择用于执行数据转发业务的当前PCIE设备,其中,所述全局链表中预先添加有多个PCIE设备;
当所述当前PCIE设备为虚拟PCIE设备时,将所述数据转发业务对应的待转发数据,重定向至目标物理PCIE设备中的目标物理收包队列,以接收所述待转发数据,和/或
重定向至所述目标物理PCIE设备中的目标物理发包队列,以发送所述待转发数据,其中,所述目标物理PCIE设备为与所述当前PCIE设备关联的物理PCIE设备,所述目标物理收包队列为所述目标物理PCIE设备中的与所述当前PCIE设备中的虚拟收包队列对应的物理发包队列,所述目标物理发包队列为所述目标物理PCIE设备中的与所述当前PCIE设备中的虚拟发包队列对应的物理发包队列。
第三方面,本申请还提供一种虚拟设备创建装置,所述装置包括:
创建单元,用于通过预设开发工具及预设创建参数,创建表征虚拟PCIE设备的设备结构体,其中,所述设备结构体包括表示虚拟收包队列的第一队列结构体以及表示虚拟发包队列的第二队列结构体,所述预设创建参数包括欲创建的虚拟PCIE设备的预设数量、欲与所述虚拟PCIE设备关联的指定物理PCIE设备及预设队列映射关系;
第一关联单元,用于将所述预设数量的所述设备结构体均与所述指定物理PCIE设备关联;
第二关联单元,用于基于所述预设队列映射关系,将每个所述设备结构体中的所述第一队列结构体与所述指定物理PCIE设备中对应的物理收包队列关联,以及将每个所述设备结构体中的所述第二队列结构体与所述指定物理PCIE设备中对应的物理发包队列关联,得到所述预设数量的虚拟PCIE设备,其中,得到的每个所述虚拟PCIE设备用于通过所述虚拟收包队列接收数据,以及通过所述虚拟发包队列发送数据。
第四方面,本申请还提供一种数据转发装置,所述装置包括:
调度单元,用于从全局链表中选择用于执行数据转发业务的当前PCIE设备,其中,所述全局链表中预先添加有多个PCIE设备;
重定向单元,用于当所述当前PCIE设备为虚拟PCIE设备时,将所述数据转发业务对应的待转发数据,重定向至目标物理PCIE设备中的目标物理收包队列,以接收所述待转发数据,和/或
重定向至所述目标物理PCIE设备中的目标物理发包队列,以发送所述待转发数据,其中,所述目标物理PCIE设备为与所述当前PCIE设备关联的物理PCIE设备,所述目标物理收包队列为所述目标物理PCIE设备中的与所述当前PCIE设备中的虚拟收包队列对应的物理发包队列,所述目标物理发包队列为所述目标物理PCIE设备中的与所述当前PCIE设备中的虚拟发包队列对应的物理发包队列。
第五方面,本申请还提供一种网络设备,所述网络设备包括相互耦合的处理器及存储器,所述存储器内存储计算机程序,当所述计算机程序被所述处理器执行时,使得所述网络设备执行上述的虚拟设备创建方法,或上述的数据转发方法。
第六方面,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行上述的虚拟设备创建方法,或上述的数据转发方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的网络设备的结构示意图。
图2为本申请实施例提供的虚拟设备创建方法的流程示意图。
图3为本申请实施例提供的虚拟设备创建装置的框图。
图4为本申请实施例提供的数据转发装置的框图。
图标:10-网络设备;11-处理模块;12-存储模块;13-通信模块;200-虚拟设备创建装置;210-创建单元;220-第一关联单元;230-第二关联单元;400-数据转发装置;410-调度单元;420-重定向单元。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。需要说明的是,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
第一实施例
请参照图1,本申请提供一种网络设备10,网络设备10可以包括处理模块11及存储模块12。存储模块12内存储计算机程序,当计算机程序被所述处理模块11执行时,使得网络设备10能够执行下述虚拟设备创建方法、数据转发方法中的各步骤。
可以理解的是,图1所示的结构仅为网络设备10的一种结构示意图,网络设备10还可以包括比图1所示更多的组件。图1中所示的各组件可以采用硬件、软件或其组合实现。例如,网络设备10还可以包括通信模块13,用于建立与其他设备的通信连接。
在本实施例中,网络设备10可以为一种PCIE(Peripheral ComponentInterconnect Express,高速串行计算机扩展总线标准)设备,或者为用于对PCIE设备进行管理控制的设备。其中,一个物理PCIE设备可以作为一个物理网卡使用,用于转发数据。
在本实施例中,当一个物理PCIE设备可以通过虚拟化处理,形成多个虚拟PCIE设备,从而可以作为多个虚拟的物理网卡以转发数据。
请参照图2,本申请的还提供一种虚拟设备创建方法,可以应用于上述的网络设备10中,由网络设备10执行或实现方法中的各步骤。方法可以包括如下步骤:
步骤S110,通过预设开发工具及预设创建参数,创建表征虚拟PCIE设备的设备结构体,其中,所述设备结构体包括表示虚拟收包队列的第一队列结构体以及表示虚拟发包队列的第二队列结构体,所述预设创建参数包括欲创建的虚拟PCIE设备的预设数量、欲与所述虚拟PCIE设备关联的指定物理PCIE设备及预设队列映射关系;
步骤S120,将所述预设数量的所述设备结构体均与所述指定物理PCIE设备关联;
步骤S130,基于所述预设队列映射关系,将每个所述设备结构体中的所述第一队列结构体与所述指定物理PCIE设备中对应的物理收包队列关联,以及将每个所述设备结构体中的所述第二队列结构体与所述指定物理PCIE设备中对应的物理发包队列关联,得到所述预设数量的虚拟PCIE设备,其中,得到的每个所述虚拟PCIE设备用于通过所述虚拟收包队列接收数据,以及通过所述虚拟发包队列发送数据。
在上述的实施方式中,通过将预设数量的设备结构体与物理PCIE设备关联,以及将虚拟收包队列和物理收包列关联,将虚拟发包队列和物理发包队列关联,如此,一个物理PCIE设备可以创建得到多个虚拟PCIE设备,有利于物理设备的硬件资源得到充分利用,以提升处理性能,且无需依赖专门的BIOS,不需要设备支持Vd-t,提高设备虚拟化的适用范围。
下面将对方法中的各步骤进行详细阐述,如下:
在步骤S110中,预设开发工具可以根据实际情况灵活确定,例如,预设开发工具可以为DPDK(Data Plane Development Kit,数据平面开发工具)。
预设创建参数可以包括但不限于欲创建的虚拟PCIE设备的预设数量、欲进行虚拟化的物理PCIE设备、预设队列映射关系等。
可理解地,预设数量、欲进行虚拟化的物理PCIE设备可以根据实际情况灵活确定。另外,预设队列映射关系指虚拟PCIE设备中的虚拟队列与物理PCIE设备中的物理队列的映射关系,可以根据实际情况灵活确定。
在本实施例中,一个设备结构体可理解为与一个物理PCIE设备对应的结构体,可以用于表示一个虚拟PCIE设备。第一队列结构体用于表示虚拟收包队列,用于接收数据。第二队列结构体用于表示虚拟发包队列,用于发送数据。
通常而言,一个物理PCIE设备上,具有多个物理收包队列及多个物理收包队列。所创建的虚拟PCIE设备中的虚拟收包队列可以小于或等于物理PCIE设备上的物理收包队列;虚拟PCIE设备中的虚拟发包队列可以小于或等于物理PCIE设备上的物理发包队列。即,预设创建参数还可以包括欲创建的虚拟PCIE设备中的虚拟收包队列和虚拟发包队列的数量。
在步骤S110之前,网络设备10可以查找当前网络中的所有PCIE设备,并逐个添加进链表,以作为全局链表。在后续创建了虚拟PCIE设备后,再将所创建的虚拟PCIE设备加入该全局链表。在执行数据转发业务时,可以从全局链表中,调度相应的PCIE设备进行数据的转发。
在步骤S110中,网络设备10上可以部署有DPDK工具,用户可以将预设创建参数输入DPDK工具中,由DPDK进行初始化,便可以创建虚拟PCIE设备的设备结构体。
在步骤S120中,指定物理PCIE设备可以根据实际情况灵活确定。即,用户可以根据实际情况灵活选择用于与预设数量的设备结构体所关联的物理PCIE设备。
可理解地,与一个物理PCIE设备所关联的所有设备结构体,均可以使用该物理PCIE设备的硬件资源,比如,硬件资源包括物理收包队列、物理发包队列等。如此,可以对一个物理PCIE设备进行虚拟化处理,得到多个虚拟PCIE设备。
在步骤S130中,预设队列映射关系可以根据实际情况灵活设置。例如,当需要针对一个物理PCIE设备,创建多个虚拟PCIE设备时,多个虚拟PCIE设备以共享该物理PCIE设备的所有队列(指收包队列及发包队列);或者,每个虚拟PCIE设备可以独占物理PCIE设备中的相应队列,即,不同虚拟PCIE设备在物理PCIE设备中占用的队列不相同。
例如,在步骤S130中,基于所述预设队列映射关系,将每个所述设备结构体中的所述第一队列结构体与所述指定物理PCIE设备中对应的物理收包队列关联,可以包括:
将每个所述设备结构体中的所述第一队列结构体与所述指定物理PCIE设备中相同的物理收包队列关联,以使每个所述设备结构体共享所述指定物理PCIE设备中相同的物理收包队列;
或者,将每个所述设备结构体中的所述第一队列结构体与所述指定物理PCIE设备中的指定物理收包队列关联,其中,不同设备结构体中的所述第一队列结构体所关联的指定物理收包队列不相同。
示例性地,假设在指定物理PCIE设备中,具有5个收包队列,且欲创建2个虚拟PCIE设备,即,2个设备结构体。在对设备结构体的队列结构体与物理队列进行关联时,可以是将2个设备结构体的第一队列结构体均与5个收包队列队列关联,以共享相同的物理收包队列。
或者,将一个设备结构体的第一队列结构体与5个收包队列队中的1个或2个收包队列关联;以及将另一个设备结构体的第一队列结构体与5个收包队列队中剩余收包队列关联,或与剩余收包队列中的1个或2个收包队列关联,其中,剩余收包队列至未被关联的收包队列。如此,每个设备结构体可以独占指定物理PCIE设备中的收包队列,无需共享收包队列。
在步骤S130中,基于所述预设队列映射关系,将每个所述设备结构体中的所述第二队列结构体与所述指定物理PCIE设备中对应的物理发包队列关联,包括:
将每个所述设备结构体中的所述第二队列结构体与所述指定物理PCIE设备中相同的物理发包队列关联,以使每个所述设备结构体共享所述指定物理PCIE设备中相同的物理发包队列;
或者,将每个所述设备结构体中的所述第二队列结构体与所述指定物理PCIE设备中的指定物理发包队列关联,其中,不同设备结构体中的所述第二队列结构体所关联的指定物理发包队列不相同。
示例性地,假设在指定物理PCIE设备中,具有5个发包队列,且欲创建2个虚拟PCIE设备,即,2个设备结构体。在对设备结构体的队列结构体与物理队列进行关联时,可以是将2个设备结构体的第二队列结构体均与5个发包队列队列关联,以共享相同的物理发包队列。
或者,将一个设备结构体的第一队列结构体与5个发包队列队中的1个或2个发包队列关联;以及将另一个设备结构体的第一队列结构体与5个发包队列队中剩余发包队列关联,或与剩余发包队列中的1个或2个发包队列关联,其中,剩余发包队列至未被关联的发包队列。如此,每个设备结构体可以独占指定物理PCIE设备中的发包队列,无需共享发包队列。
在步骤S110之后,方法还可以包括:将创建的所述预设数量的所述设备结构体,添加于全局链表中,其中,所述全局链表中预先添加有当前网络中的所有物理PCIE设备,在所述全局链表中,每个所述设备结构体包括身份标识及表征虚拟PCIE设备的标识。
可理解地,通过将所创建的设备结构体加入全局链表中,方便将设备结构体作为虚拟PCIE设备进行调用,以执行相应的数据转发业务。
在步骤S130之后,方法还可以包利用所创建的虚拟PCIE设备执行数据转发业务的步骤。例如,方法还可以包括:
从所述全局链表中选择用于执行数据转发业务的当前PCIE设备;
当所述当前PCIE设备为虚拟PCIE设备时,将所述数据转发业务对应的待转发数据,重定向至目标物理PCIE设备中的目标物理收包队列,以接收所述待转发数据,和/或重定向至所述目标物理PCIE设备中的目标物理发包队列,以发送所述待转发数据,其中,所述目标物理PCIE设备为与所述当前PCIE设备关联的物理PCIE设备,所述目标物理收包队列为所述目标物理PCIE设备中的与所述当前PCIE设备中的虚拟收包队列对应的物理发包队列,所述目标物理发包队列为所述目标物理PCIE设备中的与所述当前PCIE设备中的虚拟发包队列对应的物理发包队列。
在本实施例中,虚拟PCIE设备在执行数据转发任务时,可以基于转发任务对应的目的地址,从全局链表中选择相应的PCIE设备。在全局链表中,各PCIE设备具有相应的类型标识,用于表征是虚拟设备,或物理设备。若所选择的PCIE设备为虚拟PCIE设备,则可以直接将转发任务重定向至物理PCIE设备上的收包队列或发包队列,以进行数据的转发,如此,多个虚拟PCIE设备可以共用一个物理PCIE设备的硬件资源,有利于让物理PCIE设备的硬件资源得到充分利用。
为了便于理解方法的实现过程,下面进行举例阐述,如下:
在DPDK工具中,表示虚拟PCIE设备的结构体为struct rte_pci_device;增加变量vdev以及index两个标记,vdev用于标识是该设备是否是虚拟设备,index标识该虚拟设备的索引号。例如,vdev的值为1,表示该设备为虚拟PCIE设备,若vdev的值为0,则表示该设备为物理PCIE设备。另外,index作为虚拟PCIE设备的编号,可以根据实际情况设置,例如,当创建了多个虚拟PCIE设备时,每个虚拟设备可以从0开始编号,以便于进行索引或区分。
在DPDK工具中,可以创建表示虚拟收包队列的结构体struct rx_queue,增加poll_ring和rx_real两个变量,其中poll_ring为struct rte_mempool结构体。rx_real为struct rx_queue型指针,用于建立虚拟收包队列与物理PCIE设备中的收包队列的对应关系,以便于重定向。
在DPDK工具中,可以创建表示虚拟发包队列的结构体struct tx_queue,增加tx_real变量。tx_real为struct tx_queue型指针,用于建立虚拟发包队列与物理PCIE设备中的发包队列的对应关系,以便于重定向。
在创建虚拟PCIE设备时,网络设备10先查找当前网络中的所有物理PCIE设备,并逐个添加进链表。然后,针对需要虚拟化处理的物理PCIE设备,输入上述的预设创建参数(例如,欲创建的虚拟PCIE设备的预设数量及预设队列映射关系等),创建表示虚拟PCIE设备的设备结构体。然后,将虚拟出来的PCIE设备的设备结构体逐个添加进全局链表,并置vdev为1,index从0递增。其中,在全局链表中,物理PCIE设备的vdev为0。
然后,遍历全局链表,初始化链表中的各个PCIE设备。例如,若PCIE设备的vdev为0,则以物理PCIE设备的初始化方式,进行初始化操作,包括:
A、物理PCIE设备的初始化方式,指对设备的硬件进行初始化,为本领域技术人员熟知的初始化方式,这里不再赘述。
B、若PCIE设备的vdev为1,且index为0的,则初始化方式与物理PCIE设备的初始化方式相同。
C、若PCIE设备的vdev为1,且index不为0,则跳过设备初始化,遍历全局变量,找到vdev为1且index为0的初始化数据结构,并进行复制,然后使用所复制的初始化数据结构即可。
然后,网卡驱动初始化PCIE对应的网卡功能,初始化队列,包括:
A、对于vdev为0的PCIE设备,以物理PCIE设备中的队列初始化方式进行初始化,该初始化方式为本领域技术人员熟知这里不再赘述。
B、对于vdev为1的设备,根据传入的预设队列映射关系,有2种方式进行初始化:
i.一种是全部虚拟PCIE设备共享物理PCIE设备的队列;
ii.另外一种是每个虚拟PCIE设备按需分配指定物理PCIE中的队列数,每个虚拟PCIE设备独占分配到的队列,其中,针对与该指定物理PCIE设备对应的所有虚拟PCIE设备,各虚拟PCIE设备分配到的队列的总数不超过指定物理设备的队列总数;
其中,对于全部虚拟设备共享物理PCIE设备的队列的情况,每个虚拟PCIE设备的队列索引和tx_real(rx_real)一一对应。
对于独占的队列,网络设备10逐个进行初始化,每一个虚拟队列的索引,指向实际的物理队列,即每个虚拟队列的tx_real(rx_real)不一样。
PCIE设备的CPU从队列进行报文收发。其中,报文的转发方式可以如下:
对于vdev为1的PICE设备设备,并且是共享物理队列的情况,所有针对虚拟设备的轮询,最终会重定向到对应的物理设备的物理队列上,然后会根据报文目的MAC进行匹配,分别进入对应的虚拟设备的队列,其中,可以通过串行或对物理队列进行上锁的方式,避免队列冲突;
对于独占队列的情况,则直接将报文重定向至相应的物理队列,然后对报文收发。
基于上述设计,上层队列和PICE设备绑定代码不需要改变,因为看到的所有备都是物理设备。另外,能极大降低硬件成本,不需要专门BIOS支持,也不需要PCIE设备支持Vd-t,并且PCIE设备的系统可以是但不限于X86、ARM还是MIPS等,只要是PCIE标准设备即可。另外,该设备虚拟化处理,不会增加应用开发成本,所有虚拟化相关操作在驱动层,对上层应用完全透明,应用层可以保持不变。
请参照图3,本申请实施例还提供一种虚拟设备创建装置200,可以应用于上述的网络设备10中,用于执行方法中的各步骤。虚拟设备创建装置200包括至少一个可以软件或固件(Firmware)的形式存储于存储模块12中或固化在网络设备10操作系统(OperatingSystem,OS)中的软件功能模块。处理模块11用于执行存储模块12中存储的可执行模块,例如虚拟设备创建装置200所包括的软件功能模块及计算机程序等。
虚拟设备创建装置200可以包括创建单元210、第一关联单元220及第二关联单元230,各单元具有的功能可以如下:
创建单元210,用于通过预设开发工具及预设创建参数,创建表征虚拟PCIE设备的设备结构体,其中,所述设备结构体包括表示虚拟收包队列的第一队列结构体以及表示虚拟发包队列的第二队列结构体,所述预设创建参数包括欲创建的虚拟PCIE设备的预设数量、欲与所述虚拟PCIE设备关联的指定物理PCIE设备及预设队列映射关系;
第一关联单元220,用于将所述预设数量的所述设备结构体均与所述指定物理PCIE设备关联;
第二关联单元230,用于基于所述预设队列映射关系,将每个所述设备结构体中的所述第一队列结构体与所述指定物理PCIE设备中对应的物理收包队列关联,以及将每个所述设备结构体中的所述第二队列结构体与所述指定物理PCIE设备中对应的物理发包队列关联,得到所述预设数量的虚拟PCIE设备,其中,得到的每个所述虚拟PCIE设备用于通过所述虚拟收包队列接收数据,以及通过所述虚拟发包队列发送数据。
可选地,第二关联单元230可以用于将每个所述设备结构体中的所述第一队列结构体与所述指定物理PCIE设备中相同的物理收包队列关联,以使每个所述设备结构体共享所述指定物理PCIE设备中相同的物理收包队列;或者,将每个所述设备结构体中的所述第一队列结构体与所述指定物理PCIE设备中的指定物理收包队列关联,其中,不同设备结构体中的所述第一队列结构体所关联的指定物理收包队列不相同。
可选地,第二关联单元230可以用于将每个所述设备结构体中的所述第二队列结构体与所述指定物理PCIE设备中相同的物理发包队列关联,以使每个所述设备结构体共享所述指定物理PCIE设备中相同的物理发包队列;或者,将每个所述设备结构体中的所述第二队列结构体与所述指定物理PCIE设备中的指定物理发包队列关联,其中,不同设备结构体中的所述第二队列结构体所关联的指定物理发包队列不相同。
可选地,虚拟设备创建装置200还可以包括添加单元。在创建单元创建表征虚拟PCIE设备的设备结构体之后,添加单元用于将创建的所述预设数量的所述设备结构体,添加于全局链表中,其中,所述全局链表中预先添加有当前网络中的所有物理PCIE设备,在所述全局链表中,每个所述设备结构体包括身份标识及表征虚拟PCIE设备的标识。
可选地,虚拟设备创建装置200还可以包括调度单元及重定向单元。调度单元用于从所述全局链表中选择用于执行数据转发业务的当前PCIE设备;重定向单元用于当所述当前PCIE设备为虚拟PCIE设备时,将所述数据转发业务对应的待转发数据,重定向至目标物理PCIE设备中的目标物理收包队列,以接收所述待转发数据,和/或,重定向至所述目标物理PCIE设备中的目标物理发包队列,以发送所述待转发数据,其中,所述目标物理PCIE设备为与所述当前PCIE设备关联的物理PCIE设备,所述目标物理收包队列为所述目标物理PCIE设备中的与所述当前PCIE设备中的虚拟收包队列对应的物理发包队列,所述目标物理发包队列为所述目标物理PCIE设备中的与所述当前PCIE设备中的虚拟发包队列对应的物理发包队列。
在本实施例中,处理模块11可以是一种集成电路芯片,具有信号的处理能力。上述处理模块11可以是通用处理器。例如,该处理器可以是中央处理器(Central ProcessingUnit,CPU)、数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。
存储模块12可以是,但不限于,随机存取存储器,只读存储器,可编程只读存储器,可擦除可编程只读存储器,电可擦除可编程只读存储器等。在本实施例中,存储模块12可以用于存储全局链表、预设创建参数、预设队列映射关系等。当然,存储模块12还可以用于存储程序,处理模块11在接收到执行指令后,执行该程序。
通信模块13用于通过网络建立网络设备10与其他设备的通信连接,并通过网络收发数据。
需要说明的是,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的网络设备10、虚拟设备创建装置200的具体工作过程,可以参考前述方法中的各步骤对应过程,在此不再过多赘述。
第二实施例
本申请还提供一种数据转发方法,可以应用于上述的网络设备10中。方法可以包括如下步骤:
步骤S310,从全局链表中选择用于执行数据转发业务的当前PCIE设备,其中,所述全局链表中预先添加有多个PCIE设备;
步骤S320,当所述当前PCIE设备为虚拟PCIE设备时,将所述数据转发业务对应的待转发数据,重定向至目标物理PCIE设备中的目标物理收包队列,以接收所述待转发数据,和/或,重定向至所述目标物理PCIE设备中的目标物理发包队列,以发送所述待转发数据,其中,所述目标物理PCIE设备为与所述当前PCIE设备关联的物理PCIE设备,所述目标物理收包队列为所述目标物理PCIE设备中的与所述当前PCIE设备中的虚拟收包队列对应的物理发包队列,所述目标物理发包队列为所述目标物理PCIE设备中的与所述当前PCIE设备中的虚拟发包队列对应的物理发包队列。
可理解地,在第二实施例中,数据转发方法的实现过程可以参照第一实施例中对完成虚拟设备创建后,利用虚拟PCIE设备执行数据转发业务的流程,这里不再赘述。
请参照图4,本申请实施例还提供一种数据转发装置400,可以应用于上述的网络设备10中,用于执行方法中的各步骤。数据转发装置400包括至少一个可以软件或固件(Firmware)的形式存储于存储模块12中或固化在网络设备10操作系统(OperatingSystem,OS)中的软件功能模块。处理模块11用于执行存储模块12中存储的可执行模块,例如数据转发装置400所包括的软件功能模块及计算机程序等。
数据转发装置400可以包括调度单元410及重定向单元420,各单元具有的功能可以如下:
调度单元410,用于从全局链表中选择用于执行数据转发业务的当前PCIE设备,其中,所述全局链表中预先添加有多个PCIE设备;
重定向单元420,用于当所述当前PCIE设备为虚拟PCIE设备时,将所述数据转发业务对应的待转发数据,重定向至目标物理PCIE设备中的目标物理收包队列,以接收所述待转发数据,和/或,重定向至所述目标物理PCIE设备中的目标物理发包队列,以发送所述待转发数据,其中,所述目标物理PCIE设备为与所述当前PCIE设备关联的物理PCIE设备,所述目标物理收包队列为所述目标物理PCIE设备中的与所述当前PCIE设备中的虚拟收包队列对应的物理发包队列,所述目标物理发包队列为所述目标物理PCIE设备中的与所述当前PCIE设备中的虚拟发包队列对应的物理发包队列。
需要说明的是,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的数据转发装置400的具体工作过程,可以参考前述方法中的各步骤对应过程,在此不再过多赘述。
本申请实施例还提供一种计算机可读存储介质。计算机可读存储介质中存储有计算机程序,当计算机程序在计算机上运行时,使得计算机执行如上述实施例中所述的虚拟设备创建方法或上述的数据转发方法。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现,基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。
综上所述,在本方案中,通过将预设数量的设备结构体与物理PCIE设备关联,以及将虚拟收包队列和物理收包列关联,将虚拟发包队列和物理发包队列关联,如此,一个物理PCIE设备可以创建得到多个虚拟PCIE设备,有利于物理设备的硬件资源得到充分利用,以提升处理性能,且无需依赖专门的BIOS,不需要设备支持Vd-t,提高设备虚拟化的适用范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置、系统和方法,也可以通过其它的方式实现。以上所描述的装置、系统和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种虚拟设备创建方法,其特征在于,所述方法包括:
通过预设开发工具及预设创建参数,创建表征虚拟PCIE设备的设备结构体,其中,所述设备结构体包括表示虚拟收包队列的第一队列结构体以及表示虚拟发包队列的第二队列结构体,所述预设创建参数包括欲创建的虚拟PCIE设备的预设数量、欲与所述虚拟PCIE设备关联的指定物理PCIE设备及预设队列映射关系;
将所述预设数量的所述设备结构体均与所述指定物理PCIE设备关联;
基于所述预设队列映射关系,将每个所述设备结构体中的所述第一队列结构体与所述指定物理PCIE设备中对应的物理收包队列关联,以及将每个所述设备结构体中的所述第二队列结构体与所述指定物理PCIE设备中对应的物理发包队列关联,得到所述预设数量的虚拟PCIE设备,其中,得到的每个所述虚拟PCIE设备用于通过所述虚拟收包队列接收数据,以及通过所述虚拟发包队列发送数据。
2.根据权利要求1所述的方法,其特征在于,基于所述预设队列映射关系,将每个所述设备结构体中的所述第一队列结构体与所述指定物理PCIE设备中对应的物理收包队列关联,包括:
将每个所述设备结构体中的所述第一队列结构体与所述指定物理PCIE设备中相同的物理收包队列关联,以使每个所述设备结构体共享所述指定物理PCIE设备中相同的物理收包队列;
或者,将每个所述设备结构体中的所述第一队列结构体与所述指定物理PCIE设备中的指定物理收包队列关联,其中,不同设备结构体中的所述第一队列结构体所关联的指定物理收包队列不相同。
3.根据权利要求1所述的方法,其特征在于,基于所述预设队列映射关系,将每个所述设备结构体中的所述第二队列结构体与所述指定物理PCIE设备中对应的物理发包队列关联,包括:
将每个所述设备结构体中的所述第二队列结构体与所述指定物理PCIE设备中相同的物理发包队列关联,以使每个所述设备结构体共享所述指定物理PCIE设备中相同的物理发包队列;
或者,将每个所述设备结构体中的所述第二队列结构体与所述指定物理PCIE设备中的指定物理发包队列关联,其中,不同设备结构体中的所述第二队列结构体所关联的指定物理发包队列不相同。
4.根据权利要求1所述的方法,其特征在于,在创建表征虚拟PCIE设备的设备结构体之后,所述方法还包括:
将创建的所述预设数量的所述设备结构体,添加于全局链表中,其中,所述全局链表中预先添加有当前网络中的所有物理PCIE设备,在所述全局链表中,每个所述设备结构体包括身份标识及表征虚拟PCIE设备的标识。
5.根据权利要求4所述的方法,其特征在于,所述方法包括:
从所述全局链表中选择用于执行数据转发业务的当前PCIE设备;
当所述当前PCIE设备为虚拟PCIE设备时,将所述数据转发业务对应的待转发数据,重定向至目标物理PCIE设备中的目标物理收包队列,以接收所述待转发数据,和/或
重定向至所述目标物理PCIE设备中的目标物理发包队列,以发送所述待转发数据,其中,所述目标物理PCIE设备为与所述当前PCIE设备关联的物理PCIE设备,所述目标物理收包队列为所述目标物理PCIE设备中的与所述当前PCIE设备中的虚拟收包队列对应的物理发包队列,所述目标物理发包队列为所述目标物理PCIE设备中的与所述当前PCIE设备中的虚拟发包队列对应的物理发包队列。
6.一种数据转发方法,其特征在于,所述方法包括:
从全局链表中选择用于执行数据转发业务的当前PCIE设备,其中,所述全局链表中预先添加有多个PCIE设备;
当所述当前PCIE设备为虚拟PCIE设备时,将所述数据转发业务对应的待转发数据,重定向至目标物理PCIE设备中的目标物理收包队列,以接收所述待转发数据,和/或
重定向至所述目标物理PCIE设备中的目标物理发包队列,以发送所述待转发数据,其中,所述目标物理PCIE设备为与所述当前PCIE设备关联的物理PCIE设备,所述目标物理收包队列为所述目标物理PCIE设备中的与所述当前PCIE设备中的虚拟收包队列对应的物理发包队列,所述目标物理发包队列为所述目标物理PCIE设备中的与所述当前PCIE设备中的虚拟发包队列对应的物理发包队列。
7.一种虚拟设备创建装置,其特征在于,所述装置包括:
创建单元,用于通过预设开发工具及预设创建参数,创建表征虚拟PCIE设备的设备结构体,其中,所述设备结构体包括表示虚拟收包队列的第一队列结构体以及表示虚拟发包队列的第二队列结构体,所述预设创建参数包括欲创建的虚拟PCIE设备的预设数量、欲与所述虚拟PCIE设备关联的指定物理PCIE设备及预设队列映射关系;
第一关联单元,用于将所述预设数量的所述设备结构体均与所述指定物理PCIE设备关联;
第二关联单元,用于基于所述预设队列映射关系,将每个所述设备结构体中的所述第一队列结构体与所述指定物理PCIE设备中对应的物理收包队列关联,以及将每个所述设备结构体中的所述第二队列结构体与所述指定物理PCIE设备中对应的物理发包队列关联,得到所述预设数量的虚拟PCIE设备,其中,得到的每个所述虚拟PCIE设备用于通过所述虚拟收包队列接收数据,以及通过所述虚拟发包队列发送数据。
8.一种数据转发装置,其特征在于,所述装置包括:
调度单元,用于从全局链表中选择用于执行数据转发业务的当前PCIE设备,其中,所述全局链表中预先添加有多个PCIE设备;
重定向单元,用于当所述当前PCIE设备为虚拟PCIE设备时,将所述数据转发业务对应的待转发数据,重定向至目标物理PCIE设备中的目标物理收包队列,以接收所述待转发数据,和/或
重定向至所述目标物理PCIE设备中的目标物理发包队列,以发送所述待转发数据,其中,所述目标物理PCIE设备为与所述当前PCIE设备关联的物理PCIE设备,所述目标物理收包队列为所述目标物理PCIE设备中的与所述当前PCIE设备中的虚拟收包队列对应的物理发包队列,所述目标物理发包队列为所述目标物理PCIE设备中的与所述当前PCIE设备中的虚拟发包队列对应的物理发包队列。
9.一种网络设备,其特征在于,所述网络设备包括相互耦合的处理器及存储器,所述存储器内存储计算机程序,当所述计算机程序被所述处理器执行时,使得所述网络设备执行如权利要求1-5中任一项所述的方法,或执行如权利要求6所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1-5中任一项所述的方法,或执行如权利要求6所述的方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202111629680.XA CN114296876A (zh) | 2021-12-28 | 2021-12-28 | 虚拟设备创建方法、数据转发方法、装置及网络设备 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202111629680.XA CN114296876A (zh) | 2021-12-28 | 2021-12-28 | 虚拟设备创建方法、数据转发方法、装置及网络设备 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN114296876A true CN114296876A (zh) | 2022-04-08 |
Family
ID=80972556
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202111629680.XA Pending CN114296876A (zh) | 2021-12-28 | 2021-12-28 | 虚拟设备创建方法、数据转发方法、装置及网络设备 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN114296876A (zh) |
Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20110069710A1 (en) * | 2009-09-22 | 2011-03-24 | Virtensys Limited | Switching Method |
| US20120042034A1 (en) * | 2010-08-13 | 2012-02-16 | Vmware, Inc. | Live migration of virtual machine during direct access to storage over sr iov adapter |
| CN104428752A (zh) * | 2012-06-21 | 2015-03-18 | 微软公司 | 将虚拟机流卸载至物理队列 |
| CN104503838A (zh) * | 2014-11-23 | 2015-04-08 | 华中科技大学 | 一种虚拟cpu调度方法 |
| CN105721566A (zh) * | 2016-01-29 | 2016-06-29 | 华为技术有限公司 | 一种端口重定向的方法、服务器和系统 |
| CN113111025A (zh) * | 2021-06-10 | 2021-07-13 | 深圳市科力锐科技有限公司 | Pci设备映射方法、装置、设备及存储介质 |
| CN113312155A (zh) * | 2021-07-29 | 2021-08-27 | 阿里云计算有限公司 | 虚拟机创建方法、装置、设备、系统及计算机程序产品 |
-
2021
- 2021-12-28 CN CN202111629680.XA patent/CN114296876A/zh active Pending
Patent Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20110069710A1 (en) * | 2009-09-22 | 2011-03-24 | Virtensys Limited | Switching Method |
| US20120042034A1 (en) * | 2010-08-13 | 2012-02-16 | Vmware, Inc. | Live migration of virtual machine during direct access to storage over sr iov adapter |
| CN104428752A (zh) * | 2012-06-21 | 2015-03-18 | 微软公司 | 将虚拟机流卸载至物理队列 |
| CN104503838A (zh) * | 2014-11-23 | 2015-04-08 | 华中科技大学 | 一种虚拟cpu调度方法 |
| CN105721566A (zh) * | 2016-01-29 | 2016-06-29 | 华为技术有限公司 | 一种端口重定向的方法、服务器和系统 |
| CN113111025A (zh) * | 2021-06-10 | 2021-07-13 | 深圳市科力锐科技有限公司 | Pci设备映射方法、装置、设备及存储介质 |
| CN113312155A (zh) * | 2021-07-29 | 2021-08-27 | 阿里云计算有限公司 | 虚拟机创建方法、装置、设备、系统及计算机程序产品 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10491517B2 (en) | Packet processing method in cloud computing system, host, and system | |
| US10095645B2 (en) | Presenting multiple endpoints from an enhanced PCI express endpoint device | |
| JP5160176B2 (ja) | 仮想マシンのための多数コンフィギュレーションによる通信管理のためのシステム、方法、およびプログラム | |
| US8359408B2 (en) | Enabling functional dependency in a multi-function device | |
| CN107005495B (zh) | 用于转发数据包的方法、网卡、主机设备和计算机系统 | |
| CN109688058B (zh) | 报文处理方法、装置及网络设备 | |
| CN103744716B (zh) | 一种基于当前vcpu调度状态的动态中断均衡映射方法 | |
| EP2783291B1 (en) | System and method for implementing locks shared between kernel and user space | |
| EP3497889B1 (en) | Device virtualization for containers | |
| US8312197B2 (en) | Method of routing an interrupt signal directly to a virtual processing unit in a system with one or more physical processing units | |
| US20150277955A1 (en) | System and method for controlling virtual-machine migrations based on processor usage rates and traffic amounts | |
| CN110888827A (zh) | 数据传输方法、装置、设备及存储介质 | |
| US20140059160A1 (en) | Systems and methods for sharing devices in a virtualization environment | |
| JP6408567B2 (ja) | カプセル化対応pcie仮想化 | |
| CN109074330A (zh) | 网络接口卡、计算设备以及数据包处理方法 | |
| US20190042339A1 (en) | Techniques for invocation of a function or a service | |
| JP2014509427A (ja) | Pciエクスプレス・マルチプル・ルートi/o仮想化環境における低待ち時間の優先順位付け | |
| EP3159802B1 (en) | Sharing method and device for pcie i/o device and interconnection system | |
| CN117519908B (zh) | 一种虚拟机热迁移方法、计算机设备及介质 | |
| CN101159765A (zh) | 网络接口技术 | |
| WO2018076882A1 (zh) | 存储设备的操作方法及物理服务器 | |
| CN109729731B (zh) | 一种加速处理方法及设备 | |
| CN114296876A (zh) | 虚拟设备创建方法、数据转发方法、装置及网络设备 | |
| US20180091447A1 (en) | Technologies for dynamically transitioning network traffic host buffer queues | |
| KR20190044098A (ko) | 컨테이너를 액세스하는데 사용하기 위한 방법 및 디바이스 |
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 | ||
| RJ01 | Rejection of invention patent application after publication | ||
| RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220408 |