进击的野草

XCNP学习笔记之静态路由

#静态路由

路由概念

路由是指导IP报文转发的路径信息。

路由器转发数据包的关键是路由表。每个路由器中都保存着一张路由表,表中每条路由项都指明了数据包要到达某网络或某主机应通过路由器的哪个物理接口发送,以及可到达该路径的哪个下一个路由器,或者不再经过别的路由器而直接可以到达目的地。

路由表中包含了下列关键项:

目的地址(Destination):用来标识IP包的目的地址或目的网络。
网络掩码(Mask):在IP编址课程中已经介绍了网络掩码的结构和作用。同样,在路由表中网络掩码也具有重要的意义。IP地址和网络掩码进行“逻辑与”便可得到相应的网段信息。
输出接口(Interface):指明IP包将从该路由器的哪个接口转发出去。
下一跳IP地址(NextHop):指明IP包所经由的下一个路由器的接口地址。

控制层面与数据层面

学习各种路由协议的时候,需要基于控制层面和数据层面进行分析和理解。

控制层面:

针对路由协议而言,路由器通过路由协议学习路由形成路由表,为数据层面转发数据提供各种必要的信息。

控制层面的两个重要参数:

  1. 管理距离(AD),通过不同的路由协议学习到同一条路由(网络地址和掩码一致)时,选择AD小的放到路由表里。

    1540308529785.png

  2. 度量值(Metric),它用来衡量一条路径的好坏,当路由器学习到同一条路由具有相同AD时候,选择度量值小的放进路由表里。不通的路由协议,度量值的计算方法不一样。

数据层面:

针对发送数据而言,控制层面构建路由表,为数据层面转发数据提供服务。网络设备,对数据的各种具体的处理、转发过程都属于数据层面。

在数据层面,路由选路遵循最长匹配原则:路由器在转发数据时,需要选择路由表中的最优路由。当数据报文到达路由器时,路由器首先提取出报文的目的IP地址,然后查找路由表,将报文的目的IP地址与路由表中某表项的掩码字段做“与”操作,“与”操作后的结果跟路由表该表项的目的IP地址比较,相同则匹配上,否则就没有匹配上。 当与所有的路由表项都进行匹配后,路由器会选择一个掩码最长的匹配项。

路由分类

静态路由:通过手工配置的路由。

直连路由:直接连到路由器上网络,设备自动加入路由表的路由。

动态路由:路由器学习到非直连网络的路由。

静态路由出现在路由表中的条件

  1. 路由条目包含出接口,出接口的状态必须是UP UP状态,出接口必须有IP地址。
  2. 路由条目包含下一跳地址,下一跳地址要可达。

路由的递归表查询

使用静态路由时,只配置了下一跳地址没有出接口时,路由器会先查找路由表,匹配了这条静态之后,再进行二次查表,确定出接口之后才能进行数据转发,这就是递归查询 。

路由的递归查询针对静态路由来讲,对于动态路由就没必要了。之所以要使用递归路由,目的是绕开那些经常变动的链路,可以使静态路由的配置工作量减小。

使用递归路由的一个条件:到达目标网络的链路在途中可以汇聚成比目标网络数量更少的链路。

路由器逐跳将数据包发送到目的地,静态路由可以指定到目的地的每一跳,但是如果路径上某个节点出现问题,整条静态路由就不能工作了,如果真的能用到静态路由,则需要管理员重新指定一条可以到达目的地的静态路由。

1540311112843.png

R1若想跟R4通信,R1必须拥有去往R4的静态路由,若简单的拓扑,若干条静态路由即可,若去往R4的链路有很多条,或者经常变动,则需要管理员经常写大量的静态路由来保证通信。此时为了减少工作量,就可以使用递归路由。

浮动静态路由

在配置多条静态路由时,可以修改静态路由的管理距离,使一条静态路由的管理距离高于其他静态路由,从而实现静态路由的备份,也叫浮动静态路由。
RTB上配置了两条静态路由。正常情况下,这两条静态路由是等价的。通过配置路由的管理距离,使第二条静态路由的管理距离要高于第一条。路由器只把管理距离低的静态路由加入到路由表中。当加入到路由表中静态路由出现故障时,优先级高的静态路由才会加入到路由表并承担数据转发。

1540311806083.png

IP地址可以按照自己的想法规划,以下内容是按照拓扑图进行配置的。为了实现双链路备份冗余,先将两条链路的静态路由配好,然后通过修改R2和R3两条链路路由管理距离,实现R2-R1-R3为主链路,R2-R4-3为备份链路。在R1和R3之间使用SLA来监测链路的连通性,在R2与R3的路由使用track跟踪机制,从而使R2-R1-R3链路不通时候,R2和R3的会在路路由表里删除主链路路由,从而使备份链路路由在R2和R3的路由加表,从实现数据转发切换到备份路径R2-R4-R3。

R2接口配置:

1540311841847.png

R1接口配置:

1540311877887.png

R3接口配置:

1540311907896.png

R4接口配置:

1540311953933.png

PC5配置:

1540311974240.png

PC6配置:

1540311988600.png

各个路由器的静态路由如下:

R2:

1
2
3
4
ip route 192.168.35.0 255.255.255.0 Ethernet0/0 12.1.1.1 track 22
ip route 13.1.1.0 255.255.255.0 Ethernet0/0 12.1.1.1
ip route 34.1.1.0 255.255.255.0 Serial1/0 24.1.1.4
ip route 192.168.35.0 255.255.255.0 Serial1/0 24.1.1.4 100

R1 :

1
2
ip route 172.16.24.0 255.255.255.0 Ethernet0/0 12.1.1.2
ip route 192.168.35.0 255.255.255.0 Ethernet0/1 13.1.1.3

R3:

1
2
3
4
ip route 172.16.24.0 255.255.255.0 Ethernet0/0 13.1.1.1 track 33
ip route 12.1.1.0 255.255.255.0 Ethernet0/0 13.1.1.1
ip route 24.1.1.0 255.255.255.0 Serial1/1 34.1.1.4
ip route 172.16.24.0 255.255.255.0 Serial1/1 34.1.1.4 100

R4:

1
2
ip route 172.16.24.0 255.255.255.0 Serial1/1 24.1.1.2
ip route 192.168.35.0 255.255.255.0 Serial1/0 34.1.1.3

在PC5到PC6用ping测试一下联通性(这里需要测试两次分别是主路径和备份路径的连通性):

1540312077460.png

R2和R3的lsa和track配置如下:

R2:

1
2
3
4
5
6
7
8
9
track 22 ip sla 12 reachability
ip sla auto discovery
ip sla 12
icmp-echo 13.1.1.3 source-ip 12.1.1.2
threshold 1000
timeout 2000
frequency 3
ip sla schedule 12 life forever start-time now
ip sla responder

R3:

1
2
3
4
5
6
7
8
9
track 33 ip sla 13 reachability
ip sla auto discovery
ip sla 13
icmp-echo 12.1.1.2 source-ip 13.1.1.3
threshold 1000
timeout 2000
frequency 3
ip sla schedule 13 life forever start-time now
ip sla responder

测试一下LSA和track的运行状态:

R1一个接口不shutdown的时候(也就是R2-R1-R3主链路通的时候):

1540312115600.png

当R1一个接口shutdown的时候(也就是R2-R1-R3主链路不通的时候):

1540312180587.png

此时说明这部分配置没问题,接着就可以接下来路径切换实验了

主链路R2-R1-R3运行正常的时候:

1540312219007.png

主链路不通,备份链路R2-R4-R3运行:

1540312273324.png