R1到达R2有两条路径,我们将上面的路径称链1,下面为链2
链1为高速链路,链2为低速链路
最好的效果是优先走高速,高速有故障,再走低速,高速恢复正常,走高速
实现:写两条静态,优先让链2加表,通过修改优先级(不能修改开销值,针对直连和静态,开销值恒为0,无法修改),将R2的接口shutdown,链2自动加表
我们做两个实验,来显示区别:
- 将链1备份,链2做主
- 将链2备份,链1做主
先配置好环境:
R1:
bash
<Huawei>sy
[Huawei]sy r1
[r1]int g0/0/0
[r1-GigabitEthernet0/0/0]ip add 10.1.1.1 24
[r1-GigabitEthernet0/0/0]q
[r1]int s4/0/0
[r1-Serial4/0/0]ip add 20.1.1.1 24
[r1-Serial4/0/0]q
R2:
bash
<Huawei>sy
[Huawei]sy r2
[r2]int g0/0/0
[r2-GigabitEthernet0/0/0]ip add 10.1.1.2 24
[r2-GigabitEthernet0/0/0]q
[r2]int s4/0/0
[r2-Serial4/0/0]ip add 20.1.1.2 24
[r2-Serial4/0/0]q
[r2]int lo0
[r2-LoopBack0]ip add 2.2.2.2 24
实验一
配静态:
bash
[r1]ip route-static 2.2.2.0 24 20.1.1.2 preference 10
[r1]ip route-static 2.2.2.0 24 10.1.1.2 preference 20
[r1]dis ip ro 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
2.2.2.0/24 Static 10 0 RD 20.1.1.2 Serial4/0/0
Static routing table status : <Inactive>
Destinations : 1 Routes : 1
Destination/Mask Proto Pre Cost Flags NextHop Interface
2.2.2.0/24 Static 20 0 R 10.1.1.2 GigabitEthernet
0/0/0
[r1]ping 2.2.2.2
PING 2.2.2.2: 56 data bytes, press CTRL_C to break
Reply from 2.2.2.2: bytes=56 Sequence=1 ttl=255 time=30 ms
Reply from 2.2.2.2: bytes=56 Sequence=2 ttl=255 time=20 ms
Reply from 2.2.2.2: bytes=56 Sequence=3 ttl=255 time=20 ms
Reply from 2.2.2.2: bytes=56 Sequence=4 ttl=255 time=30 ms
Reply from 2.2.2.2: bytes=56 Sequence=5 ttl=255 time=20 ms
--- 2.2.2.2 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 20/24/30 ms
[r1]
让R1pingR2,再断开R2接口,看R1的表
如图可知,链1加表,实验一成功
实验二
修改链1优先级
bash
[r1]undo ip route-static 2.2.2.0 24 10.1.1.2
[r1]
[r1]ip route-s
[r1]ip route-static 2.2.2.0 24 10.1.1.2 pre
[r1]ip route-static 2.2.2.0 24 10.1.1.2 preference 5
链1加表
断r2接口
bash
[r2-Serial4/0/0]undo shut
[r2-Serial4/0/0]undo shutdown
显示不可达
实验2中,链2加表失败,数据不可达
实验一成功之处在于:
由于链2是点对点网络结果,r1发数据,只能由R2接收,当R2接口故障,R1感知,将接口变up down,物理状态起来,协议接口关闭,不满足直连的要求(1.接口有合法ip 2.接口双up),所以直连消失,直连是产生一切路由的前提,所以静态消失,链1加表,数据恢复转发
分析实验二原因:
跟接口属性有关,由于链1是MA网络,即多路访问网络,R2的g0口断开,交换机接口感知,但是R1的接口无法感知接口双up,静态仍存在,备份无法加表,数据转发失败
问:若链1没有交换机,数据还能恢复转发吗?
不能,即使R1感知,但因为是多路访问网络,可能网络中还有其他用户存在,R1不可能舍100求1
实验改进:改进实验2,实现真正的浮动静态路由
主要方向:R1监测到R2接口
思科做法:SLA
SLA是一种协议,用于测量网络性能和可靠性。它可以测量延迟、丢包率、带宽和可用性等方面,从而帮助网络管理员确定最佳的数据传输路径。
bash
1.定义sla
ip sla 1 #定义一个sla会话编号
icmp-echo 10.1.1.2 source-ip 10.1.1.1 #定义发送流量的类型
frequency 5 #定义频率
ip sla schedule 1 start-time now #定义sla会话启动时间,没写终止时间,默认3600s
通过sla,监测对方接口状态,若是up,发送ping包,对方回复,反之不回复
bash
2.定义track跟踪(把ip的sla流量传递过程进行匹配)
track 10 ip sla 1 reachability
#定义track跟踪,调用sla 1 会话,定义reachabiity是否可达
3.设置条件静态路由
ip route 2.2.2.0 24 10.1.1.2 10 track 10
sla检测太慢,默认60s发送一次,我们修改成5s还是慢,但频率低,占用资源少
华为做法:BFD(双方检测转发)
基于UPD发送,速度是ms级,并且是一个独立的BFD会话
BFD只进行双方通信检测,里面发送的就是BFD包,对资源占用少,速率高
BFD除此以外,还可以在ospf(解决邻居挂了,死亡时间太长),vrrp,bgp等中做
bash
[r1]
[r1]bfd #启动功能
[r1-bfd]q
[r1]bfd 1 bind ? #选择监听普通ip
ldp-lsp Information about LDP LSP
mpls-te Information about MPLS TE
peer-ip Set peer IP address
static-lsp Information about static LSP
[r1]bfd 1 bind pee
[r1]bfd 1 bind peer-ip 10.1.1.2 so
[r1]bfd 1 bind peer-ip 10.1.1.2 source-ip 10.1.1.1 #定义bfd会话
[r1-bfd-session-1]dis
[r1-bfd-session-1]discriminator lo
[r1-bfd-session-1]discriminator local ? #定义一条会话的本地编号,可自动生成,可手动
INTEGER<1-8191> Discriminator value
[r1-bfd-session-1]discriminator local 1
[r1-bfd-session-1]discriminator remote 2
[r1-bfd-session-1]commit #提交保存
[r1]undo ip route-static 2.2.2.0 24 10.1.1.2 preference 5
[r1]ip route-static 2.2.2.0 24 10.1.1.2 preference 5 track bfd-session 1
[r2]bfd
[r2-bfd]q
[r2]bfd 2 bind p
[r2]bfd 2 bind peer-ip 10.1.1.1 so
[r2]bfd 2 bind peer-ip 10.1.1.1 source-ip 10.1.1.2
[r2-bfd-session-2]dis
[r2-bfd-session-2]discriminator lo
[r2-bfd-session-2]discriminator local 2
[r2-bfd-session-2]dis
[r2-bfd-session-2]discriminator re
[r2-bfd-session-2]discriminator remote 1
[r2-bfd-session-2]com
[r2-bfd-session-2]commit
[r2-bfd-session-2]
[r2-bfd-session-2]q
重复试验2
查看路由表
链2成功加表
BFD缺点:两端都要做,也有特殊情况,但是要有硬件设备支持