目录
案例1:静态路由与BFD联动
实验1
主机的配置
R1的配置
R2的配置
R3的配置
验证(主机pingR3,R3ping主机)
BFD-R1的配置
BFD-R2的配置
实验2
主机PC1的配置
主机PC2的配置
BFD-R1的配置
R2的配置
BFD-R3的配置
本篇就是介绍静态的配置
在 实验1 中,我会将静态路由与BFD联动的东西讲解清楚。
静态路由配置起来非常方便、简单,然而其短板也是非常明显的——它无法根据拓 扑的变化作出动态响应。在图1-12中,R2通过以太网链路分别连接到出口路由器R1 及R3。在R1与R2之间隔着一台以太网交换机,这台以太网交换机不做任何配置,在 该网络中仅发挥数据帧透传的作用。
现在,网络的需求是R2能够访问10.9.9.0/24,而且在网络正常时,R2将到达 10.9.9.0/24的数据包转发给R1,而且当R1发生故障时,或者R1与R2之间的某段链路 发生故障时,R2自动将数据包的转发路径进行切换,将到达该网段的数据包转发给R3。 配置很简単:
[R2]ip route-static 10.9.9.0 24 10.1.12.1
[R2]ip route-static 10.9.9.0 24 10.1.23.3 preference 80
我模仿这个网络结构,制作了一个拓扑图,首先在使用BFD之前就要确保能够互通,(注意:我的拓扑图中R3的配置是上图的R2),相关的配置如下:
#
sysname R1#
interface Ethernet0/0/0
ip address 10.1.12.1 255.255.255.0
#
interface Ethernet0/0/1
ip address 10.9.9.1 255.255.255.0#
ip route-static 10.1.23.0 255.255.255.0 10.1.12.2
#
sysname R2#
interface Ethernet0/0/1
ip address 10.9.9.2 255.255.255.0#
interface GigabitEthernet0/0/1
ip address 10.1.23.3 255.255.255.0#
ip route-static 10.1.12.0 255.255.255.0 10.1.23.2
#
sysname R3#
interface GigabitEthernet0/0/0
ip address 10.1.12.2 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 10.1.23.2 255.255.255.0#
ip route-static 10.9.9.0 255.255.255.0 10.1.12.1
ip route-static 10.9.9.0 255.255.255.0 10.1.23.3 preference 80
主机PC1 能够ping 通R3,而R3 也可以ping 通主机PC1,这样整个网络就打通了。
然而仅仅依靠上述配置是不够的,经过测试您会发现,当R3的GE0/0/0接口发生(进入到GE0/0/0,shutdown就可以了) 故障或者SW与R3互联的链路发生故障时,R3都能够感知到,此时GE0/0/0接口的物 理状态会切换为Down,使用该接口作为出接口的静态路由ip route-static 10.9.9.0 24 10.1.12.1也就失效了,R3会将其从路由表中删除,随后备份路由ip route-static 10.9.9.0 24 10.1.23.3 preference 80将会浮现出来。在这个过程中,从R3发往10.9.9.0/24的数据 流量可以实现平滑切换。但是如果R1发生故障或者R1与SW互联的链路发生故障时, R3是无法感知的。在这种情况F, R3的路由表中10.9.9.0/24路由的下一跳依然是 10 .1 12.1 ,而其实10.1.12.1已经不可达。这么一来,备份路由ip route-static 10.9.9 0 24 10.12.3.3也就无法浮现,从R3到达10.9.9.0/24的数据流量当然就会中断。
造成上述问题的根本原因是,静态一路由无法感知到网络拓扑的变化并作出动态响 应。有些技术或机制可以改良静态路由以便解决上述问题,BFD (Bidirectional Forwarding Detection,双向转发检测)就是这类技术之一。实际上,BFD是一种实现网 络可靠性的机制,它可被用于快速检测网络中的链路状况、IP可达性等。BFD可以与多 种协议或机制进行联动,以确保它们更加可靠地工作,例如静态路由、OSPF、IS.IS、 BGP、VRRP、PIM 及 MPLS LSP 等。
可以在R1及R3上部署BFD来检测双方直连接口的IP连通性。BFD 在R1及R3之间开始工作后,两者便会周期性地交互BFD报文,当R1及R3之间的连 通性产生问题时,双方的BFD报文交互也将发生问题,此时R1及R3都能通过BFD感 知到网络的变化。而当我们在R2上配置静态路由时,可将下一跳为R1的静态路由与 BFD进行联动,当BFD的检测状态为Up时,这条静态路由能够正常工作.而当BFD 检测状态为Down时,与之关联的静态路由会立即失效,从而使得备份路由能够浮现。
#激活BFD功能:
[Rl]bfd
[Rl-bfd]quit
#创建一个BFD会话,会话名称为ab (该名称可自定义),对端IP地址为10.1.12.2:
[Rl]bfd ab bind peer-ip 10.1.12.2
[R1 -bfd-session-ab]^scriminator local 10 #该 BFD 会话的本地标识符
[R1 -bfd-session-ab]discriminator remote 20 #该 BFD 会话的远端标识符
[R1 -bfd-session-ab]commit #提交配置
需注意的是,在 R1 的 BFD 会话中,discriminator local 需与 R2 的 discriminator remote 相同,而它的 discriminator remote 需与 R2 的 discriminator local 相同。另外, BFD会话的名称只具有本地意义,双方无需相同。
[R2]bfd
[R2-bfd]quit
[R3-bfd] ba bind peer-ip 10.1.12.1
[R3-bfd-session bajdiscrimmator local 20
[R3-bfd-session-ba]discriminator remote 10
[R3-bfd-session-ba]commit
[R3-bfd-session-ba]quit
#其将下一跳为R1的静态路由与BFD会话ba进行联动:
[R3] ip route-static 10.9.9.0 255.255.255.0 10.1.12.1 track bfd-session ba
#配置浮动静态路由,下一跳为R3:
[R3] ip route-static 10.9.9.0 255.255.255.0 10.1.23.3 preference 80
完成上述配置后,R1 及 R2便会进行BFD报文的交互。首先看一下R3的BFD的状态:
BFD的状态是Up的,因此与该BFD联动的静态路由此时将出现在路由表中。R3的路由表如下:
现在将R1连接SW的接口关闭,以便模拟R1发生故障的情况,R3将会弹出如下日志:
由于R1 与 R3之间的连通性已经出现了问题,BFD很快便能感知到,从上述日志的输出可以看出,BFD的状态已经切换到Down,查看一下会话状态:
由于静态路由 ip route-static 10.9.9.0 24 10.1.12.1 track bfd-session ba 与该 BFD 会话 进行了联动,因此一旦会话状态为Down,该条静态路由立即失效,如此一来,浮动路由便会出现在路由表中:
此时,从R3发往10.9.9.0/24的数据被转发给了 R2,流量实现了平滑切换。
当R1连接SW的接口从故障中恢复后,R1与R3之间的BFD继续工作,并且状态 切换为Up,此时下一跳为R1的静态路由将重新出现在路由表中,从R2发往10.9.9.0/24的数据流量会切换回R1。
BFD是一种双向转发检测机制,可以提供毫秒级的检测,可以实现链路的快速检测,BFD通过与上层路由协议联动,可以实现路由的快速收敛,确保业务的永续性。
BFD Echo报文采用UDP封装,目的端口号为3784,源端口号在49152到65535的范围内。目的IP地址为发送接口的地址,源IP地址由配置产生(配置的源IP地址要避免产生ICMP重定向)。
静态路由与BFD联动可为静态路由绑定BFD会话,利用BFD会话来检测静态路由所在链路的状态,具体过程如下:
当某条静态路由上的BFD会话检测到链路故障时,BFD会将故障上报系统,促使该路由失效,使该路由在IP路由表中不可见。当某条静态路由上的BFD会话检测到故障的链路重新建立成功时,BFD会上报系统,激活该路由,使该路由重新出现在IP路由表中。
由于静态路由感知网络拓扑变化(只能知道直连网络的状况)并作出动态响应,而BFD(双向转发检测),能够快速检测网络中的链路状况。
#
sysname R1
#
bfd
#
interface Ethernet0/0/0
ip address 192.168.0.1 255.255.255.0
#
interface GigabitEthernet0/0/0
ip address 172.16.0.1 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 172.16.2.1 255.255.255.0
#
bfd tobeijing bind peer-ip 172.16.2.2
discriminator local 10
discriminator remote 20
commit
#
ip route-static 192.168.1.0 255.255.255.0 172.16.2.2 track bfd-session tobeijing
#
sysname R2
#
interface GigabitEthernet0/0/0
ip address 172.16.0.2 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 172.16.1.1 255.255.255.0
#
ip route-static 192.168.0.0 255.255.255.0 172.16.0.1
ip route-static 192.168.1.0 255.255.255.0 172.16.1.2
#
sysname R3
#
bfd
#
interface Ethernet0/0/0
ip address 192.168.1.1 255.255.255.0
#
interface GigabitEthernet0/0/0
ip address 172.16.1.2 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 172.16.2.2 255.255.255.0
#
bfd toshanghai bind peer-ip 172.16.2.1
discriminator local 20
discriminator remote 10
commit
#
ip route-static 192.168.0.0 255.255.255.0 172.16.2.1 track bfd-session toshanghai
(部分转载于https://www.cnblogs.com/lc24/p/11879045.html 和 https://www.cnblogs.com/Junewu/p/11823339.html)