静态路由

一、静态路由概述

路由基础提到路由条目是指为数据包指明去往目标网络的一个具体的路径选择。网络设备的路由条目学习可以是静态的,也可以是动态的。所谓静态的是指工程师通过ip route命令手动写入到网络设备的RIB中,这种方式形成的路由条目也叫静态路由条目,简称静态路由;动态的是指网络设备之间通过动态路由协议互相发布和学习的路由条目,,这种方式形成的路由条目也叫动态路由条目,简称动态路由。只要去往某个目标网络沿途任意一台网络设备上没有相关路由,则会返回给主机一条目标网络不可达信息。

静态路由在不同厂商的AD(Administrative Distance,管理距离)并不相同。典型的思科设备中静态路由的AD=1,华为设备中静态路由的AD=60,飞塔设备中静态路由的AD=10……在混杂静态路由和动态路由的RIB中,需要额外注意这些区别,因为一旦思考错误或者忽略,则会导致路由条目被覆盖,业务宕机。

静态路由无论是在哪种级别的网络都会存在。曾经我有个明显的错误认知就是静态路由只有小型网络才会使用,中大型网络都会使用动态路由,当然这种错误认知从理论层面来说也站不住脚。现网中静态路由和动态路由往往配合使用,同时在一些场景下例如交换机与防火墙互联架构基本都会采用静态路由互指,这是为了降低消耗防火墙非安全性性能。静态路由和动态路由相互补充使用时,强烈建议将路由域隔开。

通常RIB中除了静态路由和动态路由外,还有直连路由。直连路由分为本地直连和链路直连。当接口Up且拥有三层地址,就会自动形成本地直连路由;接口所处的直连网段/互联网段,自动形成链路直连路由。因此RIB中的静态路由和动态路由一般也被统称为非直连路由。路由通过某种方式添加进路由表的行为称之为加表

二、静态路由应用

静态路由概述中明确的提到了静态路由的特点。即静态路由是人为配置的、静态路由降低了性能消耗。总结延申静态路由的特点:

  • 人为配置,所以灵活度不够;

  • 人为配置,所以网络自感知能力差;

  • 静态路由单向性;

  • 降低性能消耗;

  • 精确控制路径;

1、出接口&下一跳

思科配置静态路由时的动作可以是出接口下一跳,通常建议配置下一跳。仅采用出接口时思科设备会认为该路由是直连路由,因此会消耗更多内存;采用下一跳时思科设备会认为该路由是非直连路由,降低内存消耗。以下是配置案例:

#ip route 网络地址 子网掩码 下一跳IP地址 (推荐)   
S 10.1.0.0 255.255.0.0 [1/0] via 192.168.1.2

#ip route 网络地址 子网掩码 出接口
S 10.1.0.0 255.255.0.0 is directly connected, E0/0 

#ip route 网络地址 子网掩码 下一跳IP地址 出接口 (推荐)

图2-1

静态路由使用下一跳,那么路由器不会认为目标网络是直连网络,当且仅当第一个去往10.1.0.0的数据包才会触发ARP表中增加一条ARP条目(下一跳MAC)!减少了ARP数据包在广播链路上的传播!

图2-2

静态路由仅使用了出接口的配置方式,会让路由器认为10.1.0.0/16是直连网络,当路由器向10.1.0.0/16网络中的目标主机转发数据包时,路由器会发送ARP请求以便获取目标主机的MAC地址。R3默认开启的ARP代理,会代表10.1.0.0/16的网络回复ARP RequestARP Response中的MAC地址为接收到ARP Request的接口MAC地址),实际上这是一种ARP欺骗行为,那么不管R2 ping 10.1.0.0/16网络中存在的IP还是不存在的IP,都会触发并增加一个ARP条目在ARP表中,这就很耗路由器的内存了!

2、路径控制

静态路由的一个特点就是可以精确的控制路径。如下图案例,所有路由器上配置完静态路由后,达到了全网互通的状态。

图2-3

R1未做更加精细化的选择:

ip route 10.0.0.0 255.0.0.0 192.168.1.34(优选R3)
ip route 10.4.7.25 255.255.255.255 192.168.1.66(优选R2)
ip route 192.168.1.192 255.255.255.224 192.168.1.66(优选R2)

图2-4

如果R1收到一个数据包去往10.1.0.0/16,那么下一跳会选择R3,到达R2,再到R4的loopback0,这样就会产生次优路径,所以需要对路由做更加精细化的处理。

R1做完更加精细化的选择:

ip route 10.1.0.0 255.255.0.0 192.168.1.66
ip route 10.0.0.0 255.0.0.0 192.168.1.34
ip route 10.4.7.25 255.255.255.255 192.168.1.66
ip route 192.168.1.192 255.255.255.224 192.168.1.66

图2-5

3、汇总静态

路由汇总/聚合(Summary Route)是指通过静态或者动态的方式将一组有规律的路由合并成一条超网路由的行为,汇总路由则就具体指超网路由。路由汇总有利于最大限度的减少网络设备向邻居通告的路由条目数(节省链路带宽的目的)、减少网络设备的路由规模(节省内存等资源消耗)、加速网络设备执行数据转发。

图2-6

例如上图案例,不执行路由汇总的时候,Route需要发送所有可达路由(即172.16.64.0/24、172.16.65.0/24、172.16.66.0/24、172.16.67.0/24、172.16.68.0/24、172.16.69.0/24、172.16.70.0/24、172.16.71.0/24)给邻居。执行路由汇总后,Route仅需要通告汇总路由(即172.16.64.0/21)给邻居即可。

前面提到路由汇总可以通过静态和动态的方式将多个路由汇聚成超网路由。动态路由协议均支持自动的路由汇总(在RIB中生成一条指向NULL0的汇总路由,以防止环路的产生),静态路由则需要手动的进行路由汇总。

图2-7

静态路由汇总如果不精确可能会导致路由黑洞的产生。例如路由器存在一条汇总路由192.168.0.0/16 192.168.254.1,假设192.168.254.1下只有1.0、2.0、3.0网段,现在有一个数据报去往192.168.4.23,将会被扔到192.168.254.1上,但是该网元不存在该网段,则会丢弃该数据报。假设三层交换机存在默认路由,指向出口路由器,这会导致数据报在出口路由器和三层交换机之间来回扔,造成环路(通过traceroute来定位环路)。因此一般会在本地加上一条指向NULL0的路由,以避免环路问题。

通常在边界上进行汇总,汇总路由下一跳指向外部,明细路由下一跳指向内部。

4、浮动静态

将相同静态路由设置不同的AD的两条路由称之为浮动静态路由。浮动静态路由的原理是通过修改同一条路由的AD以实现。根据路由选路规则,相同路由,AD小的加表。浮动静态路由主要用于应付高可用场景,当因为接口失效而导致主用静态路由无法加表时,备用静态路由将自动加表。

另一种利用最长掩码匹配原则,掩码长的路由优先,使得两条不同的路由充当主备路由。这种方式有别于浮动静态路由,即两条路由是不相同的,所以均会加载进RIB,容易占用网络设备资源,通常不推荐通过这种方式用于主备路由。

图2-8

R2#
ip route 10.1.0.0 255.255.0.0 192.168.1.194(主用静态路由)
ip route 10.1.0.0 255.255.0.0 192.168.2.194 5
ip route 10.4.7.0 255.255.255.0 10.4.6.2
ip route 192.168.1.0 255.255.255.224 192.168.1.65
ip route 192.168.1.32 255.255.255.224 192.168.1.65

R4#
ip route 10.4.0.0 255.255.0.0 192.168.1.193(主用静态路由)
ip route 10.4.0.0 255.255.0.0 192.168.2.193 5
ip route 192.168.1.0 255.255.255.0 192.168.1.193(主用静态路由)
ip route 192.168.1.0 255.255.255.0 192.168.2.193 5

主链路断开前:

图2-9

主链路断开后:

图2-10

值得注意的是,R2和R4之间的e0/2口必须全部sh,才能使得两者的浮动静态路由加表,换句话说,目前没有配置R2和R4之间的链路感知功能(Cisco SLA、Huawei NQA、BFD)!

5、负载静态

浮动静态路由的优点是提供了冗余性,缺点就是链路利用率低,备份链路的可用带宽被浪费了。如果两条链路都能传输数据,那么就不会造成资源浪费。在两台网络设备之间采用多条数据链路,那么这种叫做负载路由,对应的通过静态的方式配置的负载路由叫负载静态路由

负载又分为等价负载非等价负载静态路由只能执行等价负载,因为静态路由不存在所谓的代价!但是动态路由几乎都有着代价,所以动态路由支持等价和不等价负载。这里所指的代价是一种路由衡量链路优劣的度量(即Metric)。

不等价负载和链路代价有关,代价越低的流量占比更大。

配置静态路由等价负载均衡(全局)#
ip route 192.168.1.0 255.255.255.0 12.1.1.2
ip route 192.168.1.0 255.255.255.0 13.1.1.3

浮动静态路由和负载静态路由的区别就是浮动静态路由更改了AD,主路由加入路由表,备路由未加入路由表;等价负载均衡的静态路由都加入路由表。

图2-11

R2(config)#ip route 10.1.0.0 255.255.0.0 192.168.1.194
R2(config)#ip route 10.1.0.0 255.255.0.0 192.168.2.194
R2#show ip route
	10.0.0.0/8 is variably subnetted, 4 subnets, 3 masks
S     10.1.0.0/16 [1/0] via 192.168.2.194
                  [1/0] via 192.168.1.194

R4(config)#ip route 10.4.0.0 255.255.0.0 192.168.1.193
R4(config)#ip route 10.4.0.0 255.255.0.0 192.168.2.193
R4(config)#ip route 192.168.1.0 255.255.255.0 192.168.1.193
R4(config)#ip route 192.168.1.0 255.255.255.0 192.168.2.193
R4#show ip route
S     10.4.0.0/16 [1/0] via 192.168.2.193
                  [1/0] via 192.168.1.193
	192.168.1.0/24 is variably subnetted, 3 subnets, 3 masks
S     192.168.1.0/24 [1/0] via 192.168.2.193
                     [1/0] via 192.168.1.193

从R2执行traceroute进行路径跟踪后,查看到R2去往10.1.5.1的数据流被分担到两条链路上了。

R2#traceroute 10.1.5.1 source e0/0 numeric
Type escape sequence to abort.
Tracing the route to 10.1.5.1
VRF info: (vrf in name/id, vrf out name/id)
 1  192.168.2.194 0 msec
    192.168.1.194 1 msec *