2010年(20)
分类: LINUX
2010-03-24 19:24:08
--------------------------------主备路由
编写脚本思路(管理主备路由):
while true
do
(1)检查 A_IP(192.168.0.3)
通:不动
不通:删 A_IP
加 B_IP(192.168.0.2)
(2)检查 A_IP
通:删 B_IP
加 A_IP
不通:不动
done
开始编写脚本:
vim route.sh
#!/bin/bash
A_route=192.168.0.3
B_route=192.168.0.2
while true
do
while ping $A_route -c1 &> /dev/null #ping通的时候设置一个返回值为空,只看到返回是否正确
do
sleep 3 #设置一个休眠时间
done
route del default #当A路由ping不通的时候,把它删掉,添加一个B路由
route add default gw $B_route
until ping $A_route -c1 &> /dev/null #这里是until循环,与while循环正好相反
do
sleep 3
done
route del default #当A路由正常了,这时需要切换回来,所以把B路由删掉,添加A路由
route add default gw $A_route
done
---------------------------------------------------------------
---------------------------ECMP路由(等值多重路由)
• 在 Linux 核心中叫做 equal cost multipath(CONFIG_IP_ROUTE_MULTIPATH) 比较正确的说法应该是 "destination address-based load balancing". 一般 Linux 想要为某个 IP 位址找到路由, 会因为效能的问题去查验暂存(cache) 中的资料,
• 如果目标 IP 并没有在暂存空间中, 那麼他便会去查 routing table 来决定该 IP 位址的路由, 并将该路由放进 cache 中.
• 基于session连接的分配
配置
• routeA 192.168.0.1
• routeB 192.168.0.2
• ip ro add default nexthop dev eth0 via 192.168.0.1 weight 1 nexthop dev eth1 via 192.168.0.2 weight 1
三台机器作实验:
ip route add default mpath rr nexthop via 192.168.0.1 dev eth0 weight 10 nexthop via 192.168.0.2 dev eth0 weight 20 nexthop via 192.168.0.3 dev eth0 weight 30
**********************mpath rr(这是算法) weight 30(权重)
ip route show -----可查看路由
********************使用tracepath、traceroute、mtr 观察变化
注意
• 因为Route Cache所以不能100%达到公平
• 解决办法:
编译内核增加Route Cache模式下的ecmp支持
• 编译内核流程回顾:
• 1、下载新版内核
• 2、cp 原版内核.config 到源码目录树中
• 3、make oldconfig 补充选项
• 4、make menuconfig
• 5、make
• 6、make modules_install
• 7、make install
• 8、重新启动更换内核