LVS源码剖析-init

本文作为技术博客的开端,探讨LVS负载均衡器的源码,特别是DR模式。介绍了LVS的NAT、DR和tunnel三种模式,并强调DR模式的优势。文章通过分析DR模式工作原理,提出了修改MAC地址的疑问,引出内核态执行和netfilter框架的重要性。同时讨论了如何确保请求先到均衡器的 ARP 设置问题,为后续深入源码分析埋下伏笔。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很早以前就准备开始写自己的技术博客,可惜迟迟没有动笔。今天就已LVS源码剖析来作为自己博客的开端吧。

之前写过一个负载均衡器,不过有点过于简单,决定来研究一下LVS。

首先去LVS官网下载了源码,然后用Source Insight 来阅读,还是很方便的。

先简单介绍一下LVS的工作模式。
LVS提供了三种负载均衡模式,NAT、direct routing(DR)和tunnel。
NAT模式中,所有数据必须通过均衡器,后两种是半连接的处理方式,请求通过均衡器来进行转发,之后服务器的返回包直接通过路由返回。DR和tunnel的区别是,前者的均衡器和服务器必须在同一网段,通过修改MAC地址来实现转发,而后者进行了IP封装,所以可路由。

NAT模式的缺点比较明显,大家用的比较多的是DR模式,这种模式可以有效节约公网IP,还能保护后端的服务器,所以,我们主要来分析分析DR模式。

下面给大家画一张图来了解DR模式
DR模式图解

图中的序号对应的解释:左边为源地址,右边为目的地址

首先,给均衡器和服务器配置同一个VIP,而且要确保请求必须先给均衡器。均衡器选取合适的服务器后,将对应的MAC填入目的MAC,让对应的服务器收到请求包。服务器处理完请求后,将源IP置为VIP,发送返回包。至此,客户机并不知道请求包经历了什么,因为对客户机来说,发送时的目的主机和接收时的目的主机是同一IP。

首先一个疑问就是,如何修改MAC?
对于Linux平台下的一个普通的程序来说,只能处理传输层以上的数据,所以,对于修改MAC来说简直无能为力。那么,就需要让我们的代码在内核态执行。

这里就需要了解一下net

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值