一种智能网卡、云服务器和流量转发的方法与流程

文档序号:34855880发布日期:2023-07-22 19:57阅读:56来源:国知局
一种智能网卡、云服务器和流量转发的方法与流程

本发明涉及网络,特别涉及一种智能网卡、云服务器和流量转发的方法。


背景技术:

1、虚拟交换机(vswitch)是通过软件实现的用于转发vm到vm之间流量的虚拟交换机,为云上虚拟机提供网络虚拟化的核心组件,负责虚拟机之间的网络流量转发。

2、参照图1所示的数据流转发示意图,vswitch一方面需要把虚拟机虚拟网卡队列发出的数据流量根据转发规则转发到物理网卡,另一方面需要从物理网卡接收数据流量再从虚拟机的虚拟网卡发给虚拟机。

3、为了提升转发性能一般采用vswitch进程的每个cpu和对应的虚拟网卡和物理网卡队列绑定,每个cpu只处理特定的虚拟网卡和物理网卡队列。但这样的处理机制就会导致vm的同一个数据流(即源、目的端口,源、目的ip,协议号五元组相同的flow)的正向数据包和反向数据包可能由不同的cpu处理。所以就导致不同的cpu需要共享同一个会话(session)信息。这样session的创建和删除就不可避免的需要加锁来避免并发,会带来性能损失。

4、为了解决上述加锁带来性能损失的问题,当前一些实现将session限制在单一cpu去处理,其流程流转发过程可参照图2所示,每个flow从相应队列到达该队列对应的cpu后,由该cpu通过核间通信转发给被选中处理该session的cpu,反向的数据流(flow)同理,也通过核间通信的方式,被转发至该选中的cpu进行处理,这样,可保证将正反两个数据流都集中于一个cpu上处理,解决了加锁带来性能损失的问题,但核间通信同样消耗了系统资源,拉低整体性能。

5、随着云计算的发展,云厂商为云主机(虚拟机)提供计算虚拟化,网络虚拟机和存储虚拟化的开销越来越大,为了解决这些虚拟化开销带来的各种问题,当前云厂商普遍采用了智能网卡方案。与使用非智能网卡场景情况(例如前述图1和图2的情况)类似,在使用智能网卡的场景下,同样存在加锁降低系统资源或者核间通信带来的系统资源损耗的问题。


技术实现思路

1、鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种智能网卡、云服务器和流量转发的方法。

2、第一方面,本发明实施例提供一种智能网卡,包括:网络虚拟化组件和物理网卡,对称哈希模块和与所述对称哈希模块连接的多组数据流转发队列;网络虚拟化组件侧运行有多个软件cpu;

3、所述数据流转发队列被设置为与唯一的软件cpu对应;

4、所述对称哈希模块用于分别与物理网卡和虚拟机通信连接,对虚拟机发送的正向数据流的五元组信息和物理网卡发送的反向数据流的五元组信息分别进行对称哈希运算,并根据对称哈希运算结果,将属于同一个会话的正向数据流和反向数据流发送至所述对称哈希运算结果对应的所述数据流转发队列,以使得所述属于同一会话的正向数据流和反向数据流通过与所述数据流转发队列对应的软件cpu进行转发。

5、在一个实施例中,每组数据流转发队列包括:第一转发队列和第二转发队列;其中:

6、所述对称哈希模块,具体用于对所述正向数据流的五元组信息进行对称哈希运算,根据所述对称哈希运算得到的哈希值,将所述正向数据流发送至所述哈希值对应的第一转发队列中;以及对所述反向数据流的五元组信息进行对称哈希运算,根据对称哈希运算得到的哈希值,将反向数据流发送至所述哈希值对应的第二转发队列中。

7、在一个实施例中,所述网络虚拟化组件,进一步用于通过所述第一转发队列对应的软件cpu,将所述正向数据流转发至第二转发队列,以使得与第二转发队列连接的物理网卡从所述第二转发队列中获取所述正向数据流并向外发送。

8、在一个实施例中,所述网络虚拟化组件,进一步用于通过所述第二转发队列对应的软件cpu,将所述反向数据流转发至第一转发队列,以使得与所述第二转发队列连接的虚拟机的虚拟网卡,从所述第一转发队列中获取所述反向数据流并发送至所述虚拟机。

9、在一个实施例中,智能网卡还包括:虚拟网卡队列和物理网卡队列;

10、所述对称哈希模块,具体用于从所述虚拟网卡队列中获取虚拟机发送的所述正向数据流,以及从所述物理网卡队列中获取物理网卡发送的所述反向数据流。

11、在一个实施例中,所述对称哈希模块通过智能网卡上的硬件模块实现。

12、在一个实施例中,数据流转发队列为硬件转发队列,通过硬件通路与所述对称哈希模块通信连接。

13、第二方面,本发明实施例提供一种云服务器,所述云服务器上运行的至少一个虚拟机;以及与所述至少一个虚拟机通信连接的如前述的智能网卡;

14、所述智能网卡与所述至少一个虚拟机通信连接。

15、第三方面,本发明实施例提供一种采用如前述的智能网卡进行流量转发的方法,包括:

16、对虚拟机发送的正向数据流和物理网卡发送的反向数据流分别进行对称哈希运算;

17、根据对称哈希运算结果,将属于同一个会话的正向数据流和反向数据流发送至所述对称哈希运算结果对应的所述数据流转发队列,以使得所述属于同一会话的正向数据流和反向数据流通过与所述数据流转发队列对应的软件cpu进行转发。

18、在一个实施例中,所述根据对称哈希运算结果,将属于同一个会话的正向数据流和反向数据流发送至所述对称哈希运算结果对应的所述数据流转发队列,包括:

19、对所述正向数据流的五元组信息进行对称哈希运算,根据所述对称哈希运算得到的哈希值,将所述正向数据流发送至所述哈希值对应的第一转发队列中;以及对所述反向数据流的五元组信息进行对称哈希运算,根据对称哈希运算得到的哈希值,将反向数据流发送至所述哈希值对应的第二转发队列中。

20、本发明实施例提供的上述技术方案的有益效果至少包括:

21、本发明实施例中,从虚拟机出来的正向数据流,或者从物理网卡进入的反向数据流,先进入对称哈希模块进行对称哈希的处理,再根据哈希值进入对应的数据流转发队列,由于数据流转发队列与vswitch侧软件cpu具有唯一对应关系,一方面,经由对称哈希模块处理过的属于同一会话的正向数据流和反向数据流会根据对称哈希的hash结果,发送至同一组数据流转发队列,同一个session不会跨cpu处理,可以实现session的新建、删除无锁化,大大提升了网络虚拟化组件的新建链接性能,可以很好地解决现有技术加锁带来的系统性能损失的问题;另一方面,由于先由对称哈希模块处理,再将正向数据流或反向数据流转交给软件cpu处理的方式,也可以在保证正确转发的基础上,避免核间通信所带来的系统开销问题。

22、进一步地,上述对称哈希模块和数据流转发队列采用硬件模块而非软件实现,一方面,硬件转发的可靠性较高,另一方面,硬件实现的方式,也可以避免对cpu资源的占用导致系统性能降低的问题。

23、本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

24、下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

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