摘要:
十分感谢yfydz老大发布ip_vs实现分析系列文章,这使我能尽快理解ipvs的工作原理与源码组成。不过yfydz的文章过于长,不便于后续检索。我计划逐步整理,发到blog上。1、ipvs分为三种负载均衡模式NAT、tunnel、direct routing(DR)NAT:所有交互数据必须通过均衡器tunnel:半连接处理方式,进行了IP封装DR:修改MAC地址,需要同一网段。2、ipvs支持的均衡调度算法轮叫调度(Round-Robin Scheduling)加权轮叫调度(Weighted Round-Robin Scheduling)最小连接调度(Least-Connection Sche 阅读全文
摘要:
本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。msn:yfydz_no1@hotmail.com来源:http://yfydz.cublog.cn13. IPVS控制IPVS控制包括定义IPVS提供的虚拟服务参数和实际的目的服务器等各种参数。IPVS的控制信息是通过setsockopt系统调用传递到内核的,IPVS在用户层的管理工具是ipvsadm。关于IPVS控制代码在net/ipv4/ipvs/ip_vs_ctl.c中。13.1 登记sockopt操作借用netfilter的struct nf_sockopt_ 阅读全文
摘要:
本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。msn:yfydz_no1@hotmail.com来源:http://yfydz.cublog.cn11. IPVS预估器IPVS预估器用的估算在一个短暂时间间隔内的连接率,可在用户空间开一个daemon定时读取预估器的值以实现较长时间的预估。预估算法为:取最后8秒钟内,每两秒取一个采样点进行平滑处理: avgrate = avgrate*(1-W) + rate*W 其中 W = 2^(-2) = 0.25,速率单位是KBytes/s预估代码在net/ipv4/ipv 阅读全文
摘要:
本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。msn:yfydz_no1@hotmail.com来源:http://yfydz.cublog.cn10. IPVS的同步IPVS支持对连接的同步,两台IPVS设备可分别以MASTER或BACKUP运行,MASTER进程可将连接信息备份到BACKUP设备上,这样主设备死机时从设备可以无缝切换。可以在IPVS设备上同时启动MASTER和BACKUP进程,使设备之间互为备份,实现IPVS设备的均衡。IPVS同步实现在net/ipv4/ipvs/ip_vs_sync.c中10 阅读全文
摘要:
本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。msn:yfydz_no1@hotmail.com来源:http://yfydz.cublog.cn9. IPVS的应用管理IPVS的应用是针对象FTP等的多连接协议处理的,由于多连接协议的特殊性,任何以连接为基础进行处理的模块如IPVS,netfilter等都必须对这些协议特别处理,不过IPVS相对没有netfilter那么完善,目前也仅仅支持FTP协议,而netfilter已经可以支持FTP、TFTP、IRC、AMANDA、MMS、SIP、H.323等多种多连接协议 阅读全文
摘要:
本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。msn:yfydz_no1@hotmail.com来源:http://yfydz.cublog.cn7. IPVS的协议管理7.0 基本处理IPVS协议的一些共用处理函数在net/ipv4/ipvs/ip_vs_proto.c中定义:登记IPVS服务,就是把服务结构挂接到IPVS服务链表中/**register an ipvs protocol*/static int register_ip_vs_protocol(struct ip_vs_protocol *pp){ 阅读全文
摘要:
本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。msn:yfydz_no1@hotmail.com来源:http://yfydz.cublog.cn8. IPVS的数据包发送IPVS连接中的数据包的发送方法是由ip_vs_bind_xmit()函数定义的,具体的发送数据包处理函数定义在net/ipv4/ipvs/ip_vs_xmit.c中。8.1 NAT发送NAT发送只发送请求方向的数据,因此是进行目的NAT/** NAT transmitter (only for outside-to-inside nat for 阅读全文
摘要:
本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。msn:yfydz_no1@hotmail.com来源:http://yfydz.cublog.cn6. IPVS的连接管理和netfilter的连接类似,IPVS的连接管理是IPVS的一个重要组成部分,但相对来说IPVS的连接比netfilter的连接要简单一些。6.1 连接五元组要实现面向连接的处理的基本功能就是根据数据包内容查找连接,IPVS区分每个连接的关键数据和netfilter一样是五元组,为IP协议、源地址、源端口、目的地址和目的端口,不过没定义方向的概念 阅读全文
摘要:
本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。msn:yfydz_no1@hotmail.com来源:http://yfydz.cublog.cn5. 均衡调度算法5.1 算法说明均衡调度算法是IPVS实现均衡功能的理论精髓,其他各种东西都只算是程序技巧,所以优先介绍。IPVS支持8种静态均衡算法,以下文字直接拷贝自IPVS网站:*************************quote start**********************************2. 内核中的连接调度算法IPVS在内核中的负载 阅读全文
摘要:
本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。msn:yfydz_no1@hotmail.com来源:http://yfydz.cublog.cn4. 模块初始化初始化函数先初始化ipvs的各种处理机制,然后将ipvs的处理函数挂接到netfilter架构中。/* net/ipv4/ipvs/ip_vs_core.c */static int __init ip_vs_init(void){int ret;// ioctl初始化ret = ip_vs_control_init();if (ret < 0) { 阅读全文