在开始之前,我们先明确几个问题
一、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的工作原理。