基于DPVS针对虚拟网卡多worker情形下进行非重定向的FNAT转发处理的方法与流程
- 国知局
- 2024-09-05 14:49:28
本发明涉及网络领域,尤其涉及dpvs领域,具体是指一种基于dpvs实现针对虚拟网卡多worker情形下进行非重定向的fnat转发处理的方法、装置、处理器及其计算机可读存储介质。
背景技术:
1、dpvs是一个基于dpdk的高性能四层负载均衡器(layer-4load balancer),dpvs的名字来源于dpdk+lvs。dpvs使用m/s模型,master处理控制平面,比如参数配置、统计获取等;worker实现核心负载均衡、调度、数据转发功能。dpvs使用多线程模型,每个线程绑定到一个cpu物理核心上,并且禁止这些cpu被调度。这些cpu只运行dpvs的master或者某个worker,以此避免上下文切换,别的进程不会被调度到这些cpu,worker也不会迁移到其他cpu造成缓存失效。
2、接下来介绍下rss(receive side scaling),这项技术能将网络流量分散到cpu的多个核上,降低单个核的利用率。主要是通过将收到的数据包的源与目的的ip以及port交由网卡计算出一个rss hash值,再根据这个值决定将数据包分到哪一个队列。四层负载均衡主要做的就是转发,那么这里存在一个转发模式的问题,这里考虑的是fullnat模式,这种模式是在nat模式的基础上做一次源地址转换,这样的好处是可以让应答流量经过正常的三层路由回到负载均衡上,这样负载均衡就不需要以网关的形式存在于网络中了,所以fullnat模式对网络环境要求较低,但应用服务器会丢失客户端的真实ip地址。
3、dpvs在fullnat模式下为了保证同一数据流的进出数据包让同一worker处理,需要网卡支持flow director技术。flow director技术是intel公司提出的根据包的字段精确匹配,将其分配到某个特定队列的技术。从client到dpvs的数据流一般根据rss均匀的分配到网卡的每个队列,dpvs flow filter核心作用在为这个数据流分配一个local ip以及端口。dpvs会将可用端口平均分给每个核,并在flow director中添加对应的规则来根据port号将包放到正确的队列。不难看出,dpvs在fullnat模式下依赖于网卡支持flowdirector技术,否则需要在配置文件中开启重定向,但是重定向可能导致cpu缓存失效等问题带来性能降级,而dpdk中的虚拟网卡驱动例如vmxnet3等目前暂不支持flow director技术,这给dpvs在云上的部署带来了困难。
技术实现思路
1、本发明的目的是克服了上述现有技术的缺点,提供了一种满足操作简便、适用范围较为广泛的基于dpvs实现针对虚拟网卡多worker情形下进行非重定向的fnat转发处理的方法、装置、处理器及其计算机可读存储介质。
2、为了实现上述目的,本发明的基于dpvs实现针对虚拟网卡多worker情形下进行非重定向的fnat转发处理的方法、装置、处理器及其计算机可读存储介质如下:
3、该基于dpvs实现针对虚拟网卡多worker情形下进行非重定向的fnat转发处理的方法,其主要特点是,所述的方法包括以下步骤:
4、(1)添加一个新的rs,或添加一个新的lip;
5、(2)根据lip找到对应的sa_pool;
6、(3)在sa_pool结构内部添加子pool;
7、(4)遍历所有可用端口,计算rss value,根据计算结果更新sa_entry_pool。
8、较佳地,所述的步骤(1)的添加一个新的rs,具体包括以下步骤:
9、在dp_vs_service结构中的lip列表中添加,并在对应的sa_pool中针对所有rs添加子pool。
10、较佳地,所述的步骤(1)的添加一个新的lip,具体包括以下步骤:
11、在dp_vs_service结构中的rs列表中添加,并在对应的sa_pool中添加对应子pool。
12、较佳地,所述的步骤(3)具体包括以下步骤:
13、(3.1)若步骤(1)时添加一个新的rs,则继续步骤(3.2);若步骤(1)时添加一个新的lip,则继续步骤(3.3);
14、(3.2)在哈希表中添加rs对应的sa_entry_pool;
15、(3.3)根据rs列表依次在sa_pool中添加对应的sa_entry_pool。
16、较佳地,所述的步骤(4)具体包括以下步骤:
17、(4.1)遍历所有可用端口,对每个端口通过rss计算端口归属;
18、(4.2)如果计算得出、不属于当前cpu核,则丢弃该端口;否则,将端口加入新创建的sa_entry_pool,并更新其中的倒排索引。
19、较佳地,所述的步骤(4.1)中计算端口归属,具体为:
20、将lip、rip、rport以及lport构成四元组,计算四元组对应的哈希值,并对worker数量取模得到端口所属cid。
21、较佳地,所述的步骤(4.2)中将端口加入新创建的sa_entry_pool,具体包括以下步骤:
22、取出sa_entries数组中的下一个空位,并在free_list中添加entry。
23、较佳地,所述的步骤(4.2)中更新其中的倒排索引,具体包括以下步骤:
24、在数组的当前端口号位置插入该端口对应entry实际插入的位置。
25、该实现基于dpvs针对虚拟网卡多worker情形下进行非重定向的fnat转发处理的装置,其主要特点是,所述的装置包括:
26、处理器,被配置成执行计算机可执行指令;
27、存储器,存储一个或多个计算机可执行指令,所述的计算机可执行指令被所述的处理器执行时,实现上述的基于dpvs实现针对虚拟网卡多worker情形下进行非重定向的fnat转发处理的方法的各个步骤。
28、该实现基于dpvs针对虚拟网卡多worker情形下进行非重定向的fnat转发处理的处理器,其主要特点是,所述的处理器被配置成执行计算机可执行指令,所述的计算机可执行指令被所述的处理器执行时,实现上述的基于dpvs实现针对虚拟网卡多worker情形下进行非重定向的fnat转发处理的方法的各个步骤。
29、该计算机可读存储介质,其主要特点是,其上存储有计算机程序,所述的计算机程序可被处理器执行以实现上述的基于dpvs实现针对虚拟网卡多worker情形下进行非重定向的fnat转发处理的方法的各个步骤。
30、采用了本发明的基于dpvs实现针对虚拟网卡多worker情形下进行非重定向的fnat转发处理的方法、装置、处理器及其计算机可读存储介质,通过软件预计算的方式在非重定向的条件下解决了fullnat模式下outbound包返回同一个核的需求,相较于重定向方式,更加的cpu缓存友好;利用链接式哈希表以及倒排索引加快了port分配的速度以及port释放的速度;对于端口pool的内存分配绑定到rs,从而使得内存分配更为合理;解决了dpvs在多worker条件下的fullnat转发无法在关闭重定向的情况下在不支持flow director技术的网卡上运行。
本文地址:https://www.jishuxx.com/zhuanli/20240905/288297.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表