报文的转发方法及装置与流程

文档序号:22320721发布日期:2020-09-23 01:54阅读:125来源:国知局
报文的转发方法及装置与流程

本发明涉及通信领域,具体而言,涉及一种报文的转发方法及装置。



背景技术:

随着虚拟化技术的不断发展和广泛应用,虚拟化技术在i/o性能方面的变革变得越来越突出。sr-iov(singlerooti/ovirtualization)越来越多的在网络功能虚拟化方案中出现,sr-iov技术是一种基于硬件的虚拟化解决方案,可显著提高性能和可伸缩性。sr-iov标准允许在虚拟机之间高效共享pcie(peripheralcomponentinterconnectexpress,快速外设组件互连)设备,并且它是在硬件中实现的,可以获得能够与使用物理网卡性能媲美的i/o性能。

sr-iov技术用于实现虚拟化环境中的i/o设备共享。它继承了intelvt-d技术,支持设备直接分配和dma重映射。物理功能(physicalfunction,pf)部件用于配置和管理所有虚拟功能部件。虚拟功能(virtualfunction,vf)部件是一个轻量级的pcie功能部件。pf驱动运行于domain0,vf驱动运行于domainu。pf驱动是一个真实的pcie设备驱动,可以直接访问pf,同时负责创建、配置和管理所有vf。vf驱动为一个真实的pcie设备驱动,可直接访问其对应的vf。

采用sr-iov技术的网卡(以下简称sr-iov网卡)可由一个pf创建多个vf,每个vf可独立分配给一个虚拟机。虚拟机可以通过vf驱动直接与vf进行数据通信,不用通过domain0和vmm,避免了传统网络模式中vmm处的数据拷贝和domain0中用户态与核心态间的切换,提高了网络i/o性能。

sr-iov网卡作为一种支持虚拟化技术的网卡,可以为vm(virtualmachine,虚拟机)分配对应的不同vf(virtualfunctioning,虚拟功能)网卡,以使得不同虚拟机之间可以进行报文的发送与接收。

但是,现有sr-iov技术在实现本地虚拟机之间进行报文转发时,至少存在以下问题,大大限制了sr-iov网卡的部署和应用场景:

1.不设置sr-iov网卡vf的vlan,使用sr-iov网卡vf的本地虚拟机之间不能转发带vlantag的报文;

2.设置sr-iov网卡vf的vlan,使用sr-iov网卡vf的本地虚拟机之间不能转发带多层vlantag的报文,同时必须配置vf的vlantag,而且vf的vlantag和报文的vlantag必须相同。



技术实现要素:

本发明实施例提供了一种报文的转发方法及装置,以至少解决相关技术中本地虚拟机进行报文转发时的局限性的问题。

根据本发明的一个实施例,提供了一种报文的转发方法,包括:sr-iov网卡对接收到的以太网报文进行二层转发至相应的端口。

可选地,sr-iov网卡对接收到的以太网报文进行二层转发至相应的端口,包括:所述sr-iov网卡配置虚拟局域网vlan;在接收到携带所述vlan的以太网报文后,所述sr-iov网卡根据虚拟功能vf中的配置的vlantag参数确定该以太网报文的报文类型;所述sr-iov网卡将所述报文类型为vlantag报文的以太网报文进行二层转发至所述相应的端口。

可选地,所述vlantag参数至少包括标签协议标识tpid,所述sr-iov网卡根据虚拟功能vf中的配置的vlantag参数确定该以太网报文的报文类型,包括:所述sr-iov网卡判断所述以太网报文中携带的tpid是否与vlantag报文的tpid相同;在判断结果为是的情况下,确定所述以太网报文为vlantag报文;在判断结果为否的情况下,确定所述以太网报文为非vlantag报文。

可选地,所述sr-iov网卡将所述报文类型为vlantag报文的以太网报文进行二层转发至所述相应的端口,包括:所述sr-iov网卡将指定vlantag参数配置在所述报文类型为非vlantag报文的所述以太网报文中,其中,所述指定vlantag参数用于指示所述报文类型为vlantag报文;所述sr-iov网卡将携带有所述指定vlantag参数的以太网报文进行二层转发至所述相应的端口。

可选地,所述sr-iov网卡将指定vlantag参数配置在报文类型为非vlantag报文中,包括:所述sr-iov网卡在所述以太网报文中附加所述vlantag报文的tpid。

可选地,sr-iov网卡对接收到的以太网报文进行二层转发至相应的端口,还包括:所述sr-iov网卡根据设置的vlan的层数在所述vlan内将所述以太网报文进行二层转发至相应的端口。

可选地,sr-iov网卡对接收到的以太网报文进行二层转发至相应的端口,还包括:在接收到以太网报文后,所述sr-iov网卡根据所述以太网报文中的地址信息对所述以太网报文进行二层转发至所述相应的端口。

可选地,sr-iov网卡对接收到的以太网报文进行二层转发至相应的端口,还包括:在接收到以太网报文后,所述sr-iov网卡根据所述以太网报文中的地址信息对所述以太网报文进行二层转发至所述相应的端口。

可选地,所述地址信息至少包括:所述以太网的源mac,所述以太网的目标mac。

可选地,所述sr-iov网卡从物理口pf或者本地虚拟机接收所述以太网报文。

根据本发明的另一个实施例,提供了一种报文的转发装置,位于sr-iov网卡中,包括:转发模块,用于对接收到的以太网报文进行二层转发至相应的端口。

根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。

通过本发明,对于sr-iov网卡接收到的报文进行二层vlan转发,而非一层vlan转发,因此,可以解决相关技术当中本地虚拟机之间进行报文转发的局限性的问题,从而有效拓展了sr-iov网卡的部署和应用场景。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的一种报文的转发方法的流程图;

图2是根据本发明实施例的一种sr-iov网卡判断vlantag报文处理流程示意图;

图3是根据本发明实施例的一种sr-iov网卡vf设置vlan非vlantag报文转发流程示意图;

图4根据本发明实施例的一种sr-iov网卡vf设置vlan带vlantag报文转发流程示意图;

图5根据本发明实施例的一种sr-iov网卡vf不设置vlan的报文转发处理流程示意图。

图6是根据本发明实施例的一种报文的转发装置的结构框图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

实施例1

在本实施例中提供了一种报文的转发方法,图1是根据本发明实施例的一种报文的转发方法的流程图,如图1所示,该流程包括如下步骤:

步骤s102,sr-iov网卡对接收到的以太网报文进行二层转发至相应的端口。

具体而言,vlan的取值范围为1-4094之间的正整数(含1和4094)。

可选地,sr-iov网卡对接收到的以太网报文进行二层转发至相应的端口,包括:所述sr-iov网卡配置虚拟局域网vlan;在接收到携带所述vlan的以太网报文后,所述sr-iov网卡根据虚拟功能vf中的配置的vlantag参数确定该以太网报文的报文类型;所述sr-iov网卡将所述报文类型为vlantag报文的以太网报文进行二层转发至所述相应的端口。

可选地,所述vlantag参数至少包括标签协议标识(tagprotocidentifier,简称tpid),所述sr-iov网卡根据虚拟功能vf中的配置的vlantag参数确定该以太网报文的报文类型,包括:所述sr-iov网卡判断所述以太网报文中携带的tpid是否与vlantag报文的tpid相同;在判断结果为是的情况下,确定所述以太网报文为vlantag报文;在判断结果为否的情况下,确定所述以太网报文为非vlantag报文。

具体而言,如果以太网报文是vlantag报文的话,则在tpid中携带的tpid类型包括但不限于:0xabcd。例如,0x8100、0x88a8、0x9100、0x9200、0x9300等。如果检测到tpid不满足上述形式的话,那么sr-iov网卡则将该以太网报文视为非以太网报文。

需要说明的是,tpid指示本实施中列举的其中一种用于确定以太网报文类型的标识的vlantag参数,其他能够实现上述功能的参数,也在本实施例的保护范围之内,在此不做过多赘述。

可选地,所述sr-iov网卡将所述报文类型为vlantag报文的以太网报文进行二层转发至所述相应的端口,包括:所述sr-iov网卡将指定vlantag参数配置在所述报文类型为非vlantag报文的所述以太网报文中,其中,所述指定vlantag参数用于指示所述报文类型为vlantag报文;所述sr-iov网卡将携带有所述指定vlantag参数的以太网报文进行二层转发至所述相应的端口。

具体而言,通过将指定vlantag参数配置在至少一层的非vlantag报文中,因此,不仅弥补了sr-iov网卡vf的本地虚拟机之间最多只能转发带一层的问题,同时无需vf的vlantag和报文的vlantag必须相同。

可选地,所述sr-iov网卡将指定vlantag参数配置在报文类型为非vlantag报文中,包括:所述sr-iov网卡在所述以太网报文中附加所述vlantag报文的tpid。

可选地,sr-iov网卡对接收到的以太网报文进行二层转发至相应的端口,还包括:所述sr-iov网卡根据设置的vlan的层数在所述vlan内将所述以太网报文进行二层转发至相应的端口。

可选地,sr-iov网卡对接收到的以太网报文进行二层转发至相应的端口,还包括:在接收到以太网报文后,所述sr-iov网卡根据所述以太网报文中的地址信息对所述以太网报文进行二层转发至所述相应的端口。

具体而言,由于通过以太网报文的地址信息,而非vlantag报文的标识信息。因此,即使以太网报文是vlantag报文,也不会被丢弃而不能够被转发。因此,可以解决相关技术中,不设置sr-iov网卡vf的vlan,使用sr-iov网卡vf的本地虚拟机之间不能转发带vlantag的报文的问题。

可选地,sr-iov网卡对接收到的以太网报文进行二层转发至相应的端口,还包括:在接收到以太网报文后,所述sr-iov网卡根据所述以太网报文中的地址信息对所述以太网报文进行二层转发至所述相应的端口。

可选地,所述地址信息至少包括:所述以太网的源mac,所述以太网的目标mac。

可选地,所述sr-iov网卡从物理口pf或者本地虚拟机接收所述以太网报文。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

为了更好的理解上述实施例中记载的方案,还提供了如下4个场景进行说明:

场景1:sr-iov网卡判断vlantag报文的过程。

图2是根据本发明实施例的一种sr-iov网卡判断vlantag报文处理流程示意图。

如图2所示sr-iov网卡vf设置vlan并且tpid为0xabcd,判断是否vlantag报文处理流程如下:

步骤s201:在宿主机上加载sr-iov网卡驱动程序,基于sr-iov网卡创建多个vf网卡,设置sr-iov网卡vlan并且tpid为0xabcd,转步骤s202。

步骤s202:sr-iov网卡的从物理端口pf或者vf网卡接收到以太网报文,转至步骤s203。

步骤s203:解析以太网报文,根据tpid是否等于0xabcd判断是否是vlantag报文,如果是转步骤s204;如果不是转步骤s205。

步骤s204:sr-iov网卡解析报文判断是vlantag报文,走vlantag报文处理流程。

步骤s205:sr-iov网卡解析报文判断不是vlantag报文,走非vlantag报文处理流程。

流程结束。

场景2:sr-iov网卡vf设置vlan非vlantag报文的转发过程。

图3是根据本发明实施例的一种sr-iov网卡vf设置vlan非vlantag报文转发流程示意图。

如图3所示sr-iov网卡vf设置vlanx并且tpid为0xabcd,非vlantag报文转发处理流程如下:

步骤s301:在宿主机上加载sr-iov网卡驱动程序,基于sr-iov网卡创建多个vf网卡,设置sr-iov网卡vlanx并且tpid为0xabcd,转步骤s302。

步骤s302:sr-iov网卡的从物理端口pf或者vf网卡接收到以太网报文,转至步骤s303。

步骤s303:解析以太网报文,根据tpid是否等于0xabcd判断是否是vlantag报文,如果是转步骤s304。

步骤s304:如果不带vlantag,则对该报文附加vf端口vlanidx,并且tpid为0xabcd,使之成为vlantag报文,转步骤s305。

步骤s305:sr-iov网卡对该以太网报文在该vlanx内进行二层转发到相应的端口出去。

流程结束。

场景3:sr-iov网卡vf设置vlan带vlantag报文的转发过程。

图4根据本发明实施例的一种sr-iov网卡vf设置vlan带vlantag报文转发流程示意图。

如图4所示sr-iov网卡vf设置vlanx并且tpid为0xabcd,带多层ynvlantag报文转发处理流程如下:

步骤s401:在宿主机上加载sr-iov网卡驱动程序,基于sr-iov网卡创建多个vf网卡,设置sr-iov网卡vlanx并且tpid为0xabcd,转步骤s402。

步骤s402:sr-iov网卡的从物理端口pf或者vf网卡接收到以太网报文,转至步骤s403。

步骤s403:解析以太网报文,根据tpid是否等于0xabcd判断是否是vlantag报文,转步骤s404。

步骤s404:如果带vlantag,则sr-iov网卡对该以太网报文在该vlanx内进行二层转发到相应的端口出去。

流程结束。

场景4:sr-iov网卡vf不设置vlan的报文转发过程。

图5根据本发明实施例的一种sr-iov网卡vf不设置vlan的报文转发处理流程示意图。

如图5所示sr-iov网卡vf不设置vlan,非vlantag和vlantag报文根据报文的源mac和目的mac进行二层转发处理流程如下:

步骤s501:在宿主机上加载sr-iov网卡驱动程序,基于sr-iov网卡创建多个vf网卡,默认sr-iov网卡不设置vlan,转步骤s502。

步骤s502:sr-iov网卡的从物理端口pf或者vf网卡接收到以太网报文,转至步骤s503。

步骤s503:以太网报文基于sr-iov网卡所有vf网卡端口,包括物理端口pf,基于报文的源mac和目的mac进行二层转发到相应端口出去。

流程结束。

实施例2

在本实施例中还提供一种报文的转发装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图6是根据本发明实施例的一种报文的转发装置的结构框图,如图6所示,该装置包括:

转发模块62,用于对接收到的以太网报文进行二层转发至相应的端口。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。

实施例3

本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:

s1,sr-iov网卡对接收到的以太网报文进行二层转发至相应的端口。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-onlymemory,简称为rom)、随机存取存储器(randomaccessmemory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。

本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。

s1,sr-iov网卡对接收到的以太网报文进行二层转发至相应的端口。

可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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