dpvs源代码分析——简介

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haolipengzhanshen/article/details/82385907

在开始之前,我们先明确几个问题

一、dpvs是什么?

DPVS是基于DPDK的高性能第4层负载均衡器。基于阿里巴巴/ LVS修改而来,出于蓝而胜于蓝。

二、dpvs的优势是什么

为了达到高性能,使用了多种不同技术

  • 绕过内核(在用户空间实现)
  • 每个cpu的关键数据无共享(无锁)
  • RX控制和CPU亲合性绑定(避免上下文切换)
  • 批处理TX / RX
  • 零拷贝技术(避免数据包拷贝和系统调用)。
  • 轮询替换中断。
  • 高性能ICP的无锁信息。
  • 其他技术由DPDK加强

DPVS的主要特点包括:

L4负载均衡器,包括FNAT,DR模式等

不同的调度算法,如RR、WLC、WRR等

用户态轻量级IP网络栈栈(IPv4,路由,ARP,ICMP …)。

SNAT模式,用于从内部网络访问Internet。

针对不同IDC环境,支持KNI,VLAN,Bonding。

安全方面,支持TCP syn-proxy,Conn-Limit,黑名单。

QoS:流量控制

三、dpvs主要模块介绍

DPVS功能模块如下图所示:

 3.1 Control plane控制层

dpvs项目中keepalive,ipvsadm,dpip这些都是从lvs抄过来的,功能是一样的

keepalive:dpvs能够做负载均衡,但是不能做服务器健康检查,如果一台RS服务器挂了,dpvs仍然会将请求转发给有故障的服务器,导致请求无效性。keepalive做健康检查,在提升dpvs系统可用性的同时,避免dpvs单点故障。

ipvsadm:是DPVS在应用层的管理命令,我们可以通过这个命令去管理LVS的配置

dpip:用户设置RS ip,VIP,和相关的路由表的程序

具体指令和参数可以参照下面的链接

https://blog.csdn.net/l1902090/article/details/25660393

对应的源代码存储在tools文件夹下,如图所示

3.2 Load Balancer负载均衡器

位于src/ipvs文件夹中

3.3 轻量级IP网络栈

主要是进行ip,arp,icmp,inetaddr和路由转发的解析。

3.4 Net Devices网络设备

bonding设备,VLAN,KNI,TC流量控制,hw地址列表。

3.5 辅助功能组件

config:配置文件,对应cfgfile.c

stats:统计信息,对应netif.c

msg:无锁的结构体

sa-pool:待研究

timer:定时器

下一篇博客,将从主函数main入口开始分析,一步步带各位小伙伴探究dpvs的工作原理。

猜你喜欢

转载自blog.csdn.net/haolipengzhanshen/article/details/82385907