Chinaunix首页 | 论坛 | 博客
  • 博客访问: 667619
  • 博文数量: 87
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2022
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-23 11:16
个人简介

西邮大三狗!!!

文章分类

全部博文(87)

文章存档

2015年(47)

2014年(40)

分类: 系统运维

2015-02-09 21:02:15

IP Tunneling的拓扑图
tune.png 

IP Tunneling的工作过程

1> client 发送request包到LVS服务器的VIP上。
2> VIP按照算法选择后端的一个Real-server,并将记录一条消息到hash表中,然后将client的request包封装到一个新的IP包里,新IP包的目的IP是Real-server的IP,然后转发给Real-server。
3> Real-server收到包后,解封装,取出client的request包,发现他的目的地址是VIP,而Real-server发现在自己的lo:0口上有这个IP地址,于是处理client的请求,然后将relpy这个request包直接发给client。
4> 该client的后面的request包,LVS直接按照hash表中的记录直接转发给Real-server,当传输完毕或者连接超时,那么将删除hash表中的记录。
IP Tunneling的几个细节问题
IP封包的过程:(如图)
tunne.png 

LVS和Real-server不需要在一个网段:

由于通过IP Tunneling 封装后,封装后的IP包的目的地址为Real-server的IP地址,那么只要Real-server的地址能路由可达,Real-server在什么网络里都可以,这样可以减少对于公网IP地址的消耗,但是因为要处理IP Tunneling封装和解封装的开销,那么效率不如DR模式。
Real-server的系统设置:

由于需要Real-server支持IP Tunneling,所以设置与DR模式不太一样,LVS不需要设置tunl设备,LVS本身可以进行封装 i) 需要配置VIP在tunl设备上:(VIP:172.16.1.254)


shell> ifconfig tunl0 172.16.1.254 netmask 255.255.255.255
shell> ifconfig tunl0
tunl0 Link encap:IPIP Tunnel HWaddr
inet addr:172.16.1.254 Mask:255.255.255.255
UP RUNNING NOARP MTU:1480 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
当添加tunl0设备时,自动载入需要的模块:


shell> lsmod |grep ipip
ipip 7516 0
tunnel4 2700 1 ipip
其中,ipip依赖于tunnel4,假如现在删除tunnel4的话:


shell> rmmod tunnel4
ERROR: Module tunnel4 is in use by ipip
如果添加tunl0失败,那么可能是内核没有开启tunneling功能,默认是以模块形式,加载到内核里的:
QQ截图20140219165526.png 

ARP问题:

如果LVS和Real-server不在一个网络内,不需要处理ARP问题,如果在相同网络,那么处理方法和DR模式一样,但是如果一样,我就不知道选择tun模式有什么好理由了,DR似乎效率更高些吧。
内核的包转发:
IP Tunneling模式不需要开启ip_forward功能。
转自:
阅读(2271) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~