在我前段时间实施的一个项目中,客户的服务器是放在移动机房的,在办公区域和服务器区域之间租用一条移动100M专线和一条电信10M专线来进行通信。要使两条线路实现负载均衡的功能,不能简单的做静态路由来实现,因为运营商的线路断了,在自己的交换端口上是无法感知到DOWN的(运营商使用了光收接入)。于是我询问了相关技术人员得知是可以使用BFD技术来感知链路状态的,它和静态路由关联就可以实现客户要求的负载均衡功能。我使用实验拓扑来和大家做个说明,实验拓扑图如下:
拓扑图说明:
1、CE1为移动机房服务器核心交换机S7703,AR1为办公区域出口路由器
2、中间模拟运营商网络,上面为电信,下面为移动。SW3办公服务区接入交换机。
3、vlan40 172.16.4.0/24办公服务网段, vlan50 10.10.10.0/24服务器网段
4、PC1 10.10.10.2/24 PC2 172.16.4.2/24
5、CE1:1口 192.168.1.4/24 2口 172.16.1.4/24, AR1:2口 192.168.1.1/24 1口 172.16.1.1/24
6、中间的运营商网络专线不做任何配置,模拟专线线路裸纤,4台交换机模拟光纤收发器。
7、设置静态路由使vlan40和vlan50能够互通,双链路负载均衡.
8、使用BFD链路状态联动来检测运营商线路通断。
CE1的配置如下(只做关键配置介绍):
sysname ce1
#
vlan batch 10 20 30 40 50 //划分的vlan
#
bfd //开启bfd
#
interface Vlanif50
ip address 10.10.10.1 255.255.255.0 //设置ip地址,模拟服务器网关
#
interface MEth0/0/0
undo shutdown
#
interface GE1/0/0
undo shutdown
port default vlan 50 //把GE1/0/0端口划到vlan50下,和PC1通信
#
interface GE1/0/1
undo portswitch
undo shutdown
ip address 192.168.1.4 255.255.255.0 //直接启用三层口,写上IP地址,和对面AR1通信,电信网络
#
interface GE1/0/2
undo portswitch
undo shutdown
ip address 172.16.1.4 255.255.255.0 //直接启用三层口,写上IP地址,和对面AR1通信,移动网络
#
bfd 1 bind peer-ip 172.16.1.1 //配置bfd名称,检测对面链路IP地址,移动线路
discriminator local 20 //设置本地识别号
discriminator remote 10 //设置远端识别号
#
bfd 2 bind peer-ip 192.168.1.1 //配置bfd名称,检测对面链路IP地址,电信线路
discriminator local 40 //设置本地识别号
discriminator remote 30 //设置远端识别号
#
ip route-static 172.16.4.0 255.255.255.0 172.16.1.1 track bfd-session 1 //配置静态路由和BFD绑定,移动线路
ip route-static 172.16.4.0 255.255.255.0 192.168.1.1 track bfd-session 2 //配置静态路由和BFD绑定,电信线路
#
return
AR1的配置如下(只做关键配置介绍):
#
sysname r1
#
bfd //开启bfd
#
interface GigabitEthernet0/0/0
ip address 172.16.3.1 255.255.255.0 //设置端口IP,和下面办公交换机相连
#
interface GigabitEthernet0/0/1
ip address 172.16.1.1 255.255.255.0 //设置端口IP,和对面CEI通信,移动线路
#
interface GigabitEthernet0/0/2
ip address 192.168.1.1 255.255.255.0 //设置端口IP,和对面CEI通信,电信线路
#
interface NULL0
#
bfd 1 bind peer-ip 172.16.1.4 //配置bfd名称,检测对面链路IP地址,移动线路
discriminator local 10 //设置本地识别号
discriminator remote 20 //设置远端识别号
commit
#
bfd 2 bind peer-ip 192.168.1.4 //配置bfd名称,检测对面链路IP地址,电信线路
discriminator local 30 //设置本地识别号
discriminator remote 40 //设置远端识别号
commit
#
ip route-static 0.0.0.0 0.0.0.0 172.16.1.4 track bfd-session 1 //配置静态路由和BFD绑定,移动线路
ip route-static 0.0.0.0 0.0.0.0 192.168.1.4 track bfd-session 2 //配置静态路由和BFD绑定,电信线路
ip route-static 172.16.4.0 255.255.255.0 172.16.3.2 //配置静态路由到办公区域
#
return
SW3的配置如下(只做关键配置介绍):
#
sysname sw3
#
vlan batch 30 40 //配置相关vlan
#
interface Vlanif1
#
interface Vlanif30
ip address 172.16.3.2 255.255.255.0 //配置到路由器接口的IP
#
interface Vlanif40
ip address 172.16.4.1 255.255.255.0 //配置办公区域的网关IP
#
interface MEth0/0/1
#
interface Ethernet0/0/1
port link-type access
port default vlan 30 //把相应到路由端口划分到对应的vlan
#
interface Ethernet0/0/2
port link-type access
port default vlan 40 //把相应到办公区域端口划分到对应的vlan
#
interface Ethernet0/0/3
#
ip route-static 0.0.0.0 0.0.0.0 172.16.3.1 //配置到路由器AR1的路由
#
user-interface con 0
user-interface vty 0 4
#
return
把PC1和PC2的相应IP地址按规划设置好后,我们就可以做测试了,首先我们从PC1 ping PC2的地址是可以通信的,如下图:
然后我们断开移动的线路,如下图:
再从PC1 ping PC2的地址,中间断了两个包后也是可以通信的,如下图:
再来查看相关BFD信息,发现移动的BFD已经断开,如下图:
查看相关路由信息,发现只有电信的静态路由,如下图:
再连回线路后,我们再查看相关的BFD和路由信息,又恢复正常,如下图:
做到这一步就完全可以实现客户要求的双线路负载均衡的功能了,是不是也很简单。