在我前段時間實施的一個項目中,客戶的服務器是放在移動機房的,在辦公區域和服務器區域之間租用一條移動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和路由信息,又恢復正常,如下圖:
做到這一步就完全可以實現客戶要求的雙線路負載均衡的功能了,是不是也很簡單。