ensp 实验 – bfd 与静态路由联动配置

BFD 双向转发侦测,是一种轻量级、快速的网络链路检测协议。通常用来检测两台网络设备的通信状态。独立于具体的传输协议(比如支持 ip, mpls, 以太网), 可与其他路由协议比如 ospf, bgp, is-is, 静态路由进行联动,实现故障的快速切换。

BFD 的工作过程和原理

  1. 两台设备建立会话,可以通过 UDP (3784和3785)建立会话。同时可以设置发送间隔和超时时间。
  2. 两台设备建立连接后,进行持续探测,简单点说就是 周期的发送报文(类似心跳)
  3. 触发更新,在约定的时间未收到回应,判定故障,触发其他协议进行更新,比如静态路由协议进行切换,或者通知ospf 从新计算路由。

通过 BFD 实现静态路由备用链路进行切换

拓扑图中交换机不用配置。首先通过配置静态路由,让AR1 可以 通过 环回地址(1.1.1.1) ping 通 pc1 (2.0.0.4)的地。这里配置的结果是 1.1.1.1 ping 2.0.0.1 ,去的路径是 AR1 -> LSW1 -> AR3 -> LSW2 ->PC1。回程的路径是 PC1->LSW2->AR4->AR1。简单的说去路由走上面,回来的路走下面。

具体的配置(基础配置保证可以ping通)

R1 -- 基础配置

system-view
sysname R1

int loopback 100
ip address 1.1.1.1 24

int g0/0/0
ip address 13.0.0.1 24
int g0/0/1
ip address 14.0.0.1 24
quit

ip route-static 0.0.0.0 0 13.0.0.3 preference 50
ip route-static 0.0.0.0 0 14.0.0.4 preference 100
R3 -- 基础配置

system-view
sysname R3


int g0/0/0
ip address 13.0.0.3 24
int g0/0/1
ip address 2.0.0.3 24
quit

ip route-static 0.0.0.0 0 12.0.0.1 preference 60
R4 -- 基础配置

system-view
sysname R3

int g0/0/0
ip address 14.0.0.4 24
int g0/0/1
ip address 2.0.0.4 24
quit

ip route-static 0.0.0.0 0 14.0.0.1 preference 60

bfd 配置

# R1 -- bfd 配置

bfd
quit

bfd R1toR3 bind peer-ip 13.0.0.3 source-ip 13.0.0.1
discriminator local 1
discriminator remote 2
commit
quit

ip route-static 0.0.0.0 0 13.0.0.3 preference 50 track bfd-session r1tor3
# R3 -- bfd 配置

bfd
quit

bfd R1toR3 bind peer-ip 13.0.0.1 source-ip 13.0.0.3
discriminator local 2
discriminator remote  1
commit
quit
 

bfd 配置需要注意的地方

  1. bfd 后面无需加enble, 表示已经启用
  2. 本地和远程的标识符取值范围是 1到8191
  3. 可以跨网段,进行会话的绑定。前提是网络要通
  4. min-tx-interval 100 ; 100 毫秒发送一次
  5. min-rx-interval 100 ; 期望 100号码接受一次
  6. detect-multiplier 3 ; 连续丢失 3 个 BFD 报文后判定故障。

如何检测

首先在 AR1 上 ping -a 1.1.1.1 2.0.0.1
在 AR4 的g0/0/0 抓包查看结果

可以看到全部都是回来的包,符合预期。ping 的时候去的包走上面的链路,回来的包走下面的链路。

在AR1 上查看路由表

[R1]display ip routing-table protocol static 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : Static
         Destinations : 1        Routes : 2        Configured Routes : 2

Static routing table status : <Active>
         Destinations : 1        Routes : 1

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

        0.0.0.0/0   Static  50   0          RD   13.0.0.3        GigabitEthernet
0/0/0

Static routing table status : <Inactive>
         Destinations : 1        Routes : 1

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

        0.0.0.0/0   Static  100  0          R    14.0.0.4        GigabitEthernet
0/0/1

可以看到路由器走的上面的路, 到 13.0.0.3。

通过关闭 R3的 g0/0/0 ,看结果。

# R3
int g0/0/0
shutdown

再次查看路由表已经切换到 14.0.0.4

[R1]display ip routing-table protocol static
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : Static
         Destinations : 1        Routes : 2        Configured Routes : 2

Static routing table status : <Active>
         Destinations : 1        Routes : 1

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

        0.0.0.0/0   Static  100  0          RD   14.0.0.4        GigabitEthernet
0/0/1

Static routing table status : <Inactive>
         Destinations : 1        Routes : 1

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

        0.0.0.0/0   Static  50   0          R    13.0.0.3        GigabitEthernet
0/0/0

注意:在模拟器上做实验可能要等几秒钟才能看到结果。

同时在 AR4 的G0/0/0上可以看大来去的数据包。


bfd-static-route下载