路由表填充及准则


如果同一路由器从动态路由协议、手工配置的静态路由以及其他各种方式提供的路由中,有多条路径可达时,路由器选择前往目的地的最佳路径并放入路由表时将遵守如下准则:

  1. 有效的下一跳IP地址(Available Next Hop)

  2. 度量值(Metric)

  3. 管理距离(AD)

  4. 路由前缀(Prefix)

下面对上面4个原则进行详解:

有效的下一跳IP地址:路由进程收到更新和其他信息后,路由器首先检查路由的下一跳IP地址是否有效。这个还是比较好理解的,如果连“邻居”都不通,那么路由肯定不会选择原来的路径去目标网络要么就选择其他的“邻居”到达目标网络要么就不可达。所以就不可能放入路由表。

度量值:不同的路由协议在设计时选择的度量值可能不一样。如,RIPv1和RIPv2路由协议选用路由跳数(每经过一个路由算一跳)来确定最佳路径,它们不考虑带宽等其他因素来衡量传输路径因此它们不适应用于冗余路径传输速度相差太大的网络;EIGRP默认用链路带宽(整条路径中最小的带宽,木桶原理)和路径累积延迟作为度量值的参考值,同时还可以启用诸如MTU(DUAL算法的组成部分,但是不参与计算),可靠性和负载等如下接口参数来作为度量值。

Serial2/0 is up, line protocol is down
  Hardware is M4T
  MTU 1500 bytes(MTU-最大传输单元), BW 1544 Kbit/sec(带宽-链路上的参考带宽), DLY 20000 usec(延迟-数据包发出接口处理的时间), reliability 255/255(可靠性-链路的丢包率,百分比表示), txload 1/255, rxload 1/255(负载-链路带宽使用率,参考值)

OSPF和IS-IS等链路状态协议将“累积开销”用作度量值(选择开销最低的路径)。OSPF使用的开销通常反映了链路的带宽;而在CISCO路由器中,IS-IS接口的度量值默认为10,但是可以对其进行修改,使其反映带宽。BGP根据多个属性来选择最佳路径,其中最重要的一个属性是AS-path即自治系统路径,指的是前往目的地时必须穿越的自治系统数,这通常影响路径选择的因素之一。另外还有多出口鉴别器(MED)等其他路径属性并可以手工配置,关于详细的介绍会在BGP中介绍。

管理距离:路由其如果通过不同的路由协议获悉了多条前往同一个目的地的路由,Cisco路由器将根据管理距离来选择最佳路径。管理距离用来衡量路由协议的可信度(优先级)。对已Cisco所支持的每种路由协议,都设置了一个默认管理距离。可信度从高到低的顺序排列路由协议的优先级。管理距离的取值范围为0~255,管理距离越小,协议的可信度就越高,优先级也就越高。下面列出了Cisco路由器支持协议的默认管理距离。

路由来源

管理距离

直连接口

0

静态路由(使用本出站接口)

1

静态路由(使用下一条地址)

1

EIGRP汇总路由

5

外部BGP

20

内部EIGRP

90

IGRP(现已淘汰)

100

OSPF

110

IS-IS

115

RIPv1RIPv2

120

EGP(外部网关协议)

140

ODR(按需路由)

160

外部EIGRP

170

内部BGP

200

未知

255


注:

  1. 在配置静态路由时,如果采用参数address指定了前往目标网络的下一跳路由器地址的话,那么默认AD值为1。

  2. 如果使用参数interface指定了用于前往目标网络的出站接口,路由器将其视为直连路由,但实际上其默认管理距离位于0到1之间。

我们可以用一个实例来证明这一点:

我们在上图的R1上配置去往2.2.2.0/24目标网路的两条同一静态路由:

R1(config)#ip route 2.2.2.0 255.255.255.0 12.12.12.2 //指定下一跳路由的接口IP地址的静态路由配置

R1(config)#ip route 2.2.2.0 255.255.255.0 s0/2 //指定接口作为路由出口的静态路由配置

R1(config)#do show ip route //查看路由表

Gateway of last resort is not set

     2.0.0.0/24 is subnetted, 1 subnets
S       2.2.2.0 [1/0] via 12.12.12.2
                is directly connected, Serial0/2 //只有指定接口的路由出现在路由表中,而且被认为是一条直连路由。说明AD肯定比指定地址的静态路由(1)要小。
     12.0.0.0/24 is subnetted, 1 subnets
C       12.12.12.0 is directly connected, Serial0/2

在R1上添加环回口1设置其IP地址为2.2.2.2/24(把目标网络变成直连网络):

R1(config)#inter lo 1
*Mar  1 00:22:15.867: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback1, changed state to up
R1(config-if)#ip add 2.2.2.2 255.255.255.0
R1(config-if)#end
R1#sh ip route

Gateway of last resort is not set
     2.0.0.0/24 is subnetted, 1 subnets
C       2.2.2.0 is directly connected, Loopback1 //此时配置的两条静态路由都没有被添加到路由表,而是直连路由(AD=0)被添加进来
     12.0.0.0/24 is subnetted, 1 subnets
C       12.12.12.0 is directly connected, Serial0/2

从上面的实例可以证明:通过指定接口配置的静态路由其管理距离大于0(直连接口网络)小于1(通过下一跳的IP地址配置的静态路由)


如下图:如果R1通过RIPv2和OSPF分别获悉了一条到网络2.2.2.0/24的路由,R1将会比较RIPv2的管理距离(120)和OSPF的管理距离(110),经比较R1认为OSPF更佳可靠优先级更高,因此R1会将OSPF提供的前往网络2.2.2.0/24的路由条目(R1->R3->R4->R2)加入到路由表中。尽管R1到达R2只需要一跳就可以到达2.2.2.0/24。

以下是对R1的验证

R1#sh ip protocol
Routing Protocol is “ospf 1”
  Outgoing update filter list for all interfaces is not set
  Incoming update filter list for all interfaces is not set
  Router ID 1.1.1.1
  Number of areas in this router is 1. 1 normal 0 stub 0 nssa
  Maximum path: 4
  Routing for Networks:
    0.0.0.0 255.255.255.255 area 0
 Reference bandwidth unit is 100 mbps
  Routing Information Sources:
    Gateway         Distance      Last Update
    3.3.3.3              110      00:50:50
    4.4.4.4              110      00:46:54
    2.2.2.2              110      00:46:54
  Distance: (default is 110)

Routing Protocol is “rip”
  Outgoing update filter list for all interfaces is not set
  Incoming update filter list for all interfaces is not set
  Sending updates every 30 seconds, next due in 13 seconds
  Invalid after 180 seconds, hold down 180, flushed after 240
  Redistributing: rip
  Default version control: send version 2, receive version 2
    Interface             Send  Recv  Triggered RIP  Key-chain
    Ethernet2/0           2     2                                    
    FastEthernet3/0       2     2                                    
  Automatic network summarization is not in effect
  Maximum path: 4
  Routing for Networks:
    0.0.0.0
  Routing Information Sources:
    Gateway         Distance      Last Update
    13.13.13.3           120      00:00:06
    12.12.12.2           120      00:00:20
  Distance: (default is 120)

R1#sh ip route
Codes: C – connected, S – static, R – RIP, M – mobile, B – BGP
       D – EIGRP, EX – EIGRP external, O – OSPF, IA – OSPF inter area
       N1 – OSPF NSSA external type 1, N2 – OSPF NSSA external type 2
       E1 – OSPF external type 1, E2 – OSPF external type 2
       i – IS-IS, su – IS-IS summary, L1 – IS-IS level-1, L2 – IS-IS level-2
       ia – IS-IS inter area, * – candidate default, U – per-user static route
       o – ODR, P – periodic downloaded static route

Gateway of last resort is not set

     34.0.0.0/24 is subnetted, 1 subnets
O       34.34.34.0 [110/2] via 13.13.13.3, 00:44:39, FastEthernet3/0
     2.0.0.0/24 is subnetted, 1 subnets
O       2.2.2.0 [110/4] via 13.13.13.3, 00:44:39, FastEthernet3/0

     24.0.0.0/24 is subnetted, 1 subnets
O       24.24.24.0 [110/3] via 13.13.13.3, 00:44:39, FastEthernet3/0
     12.0.0.0/24 is subnetted, 1 subnets
C       12.12.12.0 is directly connected, Ethernet2/0
     13.0.0.0/24 is subnetted, 1 subnets
C       13.13.13.0 is directly connected, FastEthernet3/0

路由前缀:路由器查看通告的前缀。在路由表中,可以有前往同一网络但是前缀不同的路由。如下例子,假设路由器运行了3个路由进程,每个进程收到的路由如下:

  • RIPv2: 192.168.32.0/26

  • OSPF:192.168.32.0/24

  • EIGRP:192.168.32.0/19

由于上面的3条路由的前缀长度(子网掩码)各不相同,它们将被视为前往不同网络的路由,因此都可以被加入到路由表中,但是路由表中有多条去往同一个目的地的路由,路由器将使用前缀最长的那条。因此,在上面的例子中如果路由收到一个前往192.168.32.5的分组,路由器将使用RIPv2通过的路由192.168.32.0/26,因为它的前缀最长。

本文出自 “E网情深” 博客,请务必保留此出处http://jettcai.blog.51cto.com/1447637/1658967