+ -
当前位置:首页 → 问答吧 → 一个网络层实现的NAT方式的负载均衡模块

一个网络层实现的NAT方式的负载均衡模块

时间:2010-07-19

来源:互联网

本帖最后由 @sky 于 2010-07-19 14:40 编辑

一个网络层实现的NAT方式的负载均衡模块,和LVS的NAT方式的区别是,LVS的NAT方式只更改
dip,dport,没有更改sip,sport,所以LVS需要配置real server的默认网关为vs,而我的
更改dip,dport的同时也更改了sip,sport,并且实现了tcp 3次握手功能,可以保证只有有效的连接才发送到real server.
也不需要配置real server 的默认网关。
程序初始版本,难免有BUG,但思路应该是正确的。

版主给个精华吧! [attach]243172[/attach][attach]243173[/attach]

vs.tar.bz2 (6.04 KB)

下载次数:5

2010-07-19 14:40

作者: @sky   发布时间: 2010-07-19

看了一下代码,有几个问题想探讨一下
1、在 read 代码中使用了 copy_to_user,这个是做什么用的?
2、在保护链表 vssvc_lock 时使用了 spin_lock 而不是 spin_lock_bh,proc 是进程上下文吗,如果是,这里没有使用底半锁定,不会出问题吗?

作者: platinum   发布时间: 2010-07-19

copy_to_user copy_from_user就添加vs和real server用了一下

作者: @sky   发布时间: 2010-07-19

3、inconnlocks 和 outconnlocks 是使用在 netfilter hook 里的,属于底半调用,这里是不是要加 _bh 锁避免重入?

作者: platinum   发布时间: 2010-07-19

回复 platinum


这地方用吗?我觉得不用吧?我也不太确定

作者: @sky   发布时间: 2010-07-19



QUOTE:
回复  platinum


这地方用吗?我觉得不用吧?我也不太确定
@sky 发表于 2010-07-19 15:10



另外,“2” 你是不是也不太确定?我看你没有回复我的那个问题

作者: platinum   发布时间: 2010-07-19

2 那个问题我觉得就不需要禁止底半部了

作者: @sky   发布时间: 2010-07-19

还有几个附件是不是没显示出来。
BTW,给出一些测试结果吧。

作者: Godbach   发布时间: 2010-07-19



QUOTE:
2 那个问题我觉得就不需要禁止底半部了
@sky 发表于 2010-07-19 15:21



我说可能需要的原因是因为我不清楚 proc 是否属于进程上下文,如果是,那么必须使用 _bh 锁
你说不需要理由是…………?

作者: platinum   发布时间: 2010-07-19

回复 platinum


    你的意思是如果/proc是进程上下文的话,需要用spin_lock_bh()??

作者: @sky   发布时间: 2010-07-19

热门下载

更多