?路由器收到数据包后,会根据数据包中的目的IP地址选择一条最优的路径,并将数据包转发到下一个路由器,路径上最后的路由器负责将数据包送交目的主机。数据包在网络上的传输就好像是体育运动中的接力赛一样,每一个路由器负责将数据包按照最优的路径向下一跳路由器进行转发,通过多个路由器一站一站的接力,最终将数据包通过最优路径转发到目的地。
IP路由表
路由器转发数据包的关键是路由表。每个路由器中都保存着一张路由表,表中每条路由表项都指明了数据包要到达某网络或某主机应通过路由器的哪个物理接口发送,以及可到达该路径的哪个下一跳路由器,或者不再经过别的路由器而直接可以到达目的地。
路由表中包含了路由器可以到达的目的网络。目的网络在路由表中不存在的数据包会被丢弃。路由表中包含了下列关键项:
-
Destination:表示此路由的目的地址。用来标识IP包的目的地址或目的网络。 -
Mask:表示此目的地址的子网掩码长度。与目的地址一起来标识目的主机或路由器所在的网段的地址。 将目的地址和子网掩码“逻辑与”后可得到目的主机或路由器所在网段的地址。例如:目的地址为8.0.0.1,掩码为255.0.0.0,相与后便可得到一个A类的网段信息(8.0.0.0/8)。 网络掩码的另一个作用还表现在当路由表中有多条目的地址相同的路由信息时,路由器将选择其掩码最长的一项作为匹配项。 -
Proto:表示学习此路由的路由协议。 -
Pre:表示此路由的路由协议优先级。 -
Cost:路由开销。 -
NextHop:表示此路由的下一跳地址。指明数据转发的下一个设备。 -
Interface:表示此路由的出接口。指明数据将从本地路由器哪个接口转发出去。
路由优先级
对于相同的目的地,不同的路由协议,可能会发现不同的路由,但这些路由并不都是最优的。在某一时刻,到某一目的地的当前路由仅能由唯一的路由协议来决定。为了判断最优路由,各路由协议都被赋予了一个优先级,当存在多个路由信息源时,具有较高优先级(取值较小)的路由协议发现的路由将成为最优路由,并将最优路由放入本地路由表中。缺省情况华为设备各协议路由优先级如下表所示。
路由类型 | Direct | OSPF | Static | RIP | BGP | 路由协议优先级 | 0 | 10 | 60 | 100 | 255 |
如图所示,路由器通过两种路由协议学习到了网段10.1.1.0的路由。虽然RIP协议提供了一条看起来更加近的路线,但是由于OSPF具有更高的优先级,因而成为优选路由,并被加入路由表中。
路由度量
如果路由器无法用优先级来判断最优路由,则使用度量值(metric)来决定需要加入路由表的路由。当到达同一目的地的多条路由具有相同的路由优先级时,路由开销最小的将成为当前的最优路由。
如下图所示,metric=1+1=2的路由是到达目的地的最优路由,其表项可以在路由表中找到。
建立路由表
根据比较“路由优先级”和“路由度量”,设备可以产生最优路径的IP路由表。
根据来源的不同,路由表中的路由通常可分为以下三类:
最长匹配原则
路由器在转发数据时,需要选择路由表中的最优路由。当数据报文到达路由器时,路由器首先提取出报文的目的IP地址,然后查找路由表,将报文的目的IP地址与路由表中某表项的掩码字段做“与”操作,“与”操作后的结果跟路由表该表项的目的IP地址比较,相同则匹配上,否则就没有匹配上。如果路由表中有多个匹配目的网络的路由条目,则路由器会选择掩码最长的条目。
如图所示,路由表中有两个表项到达目的网段10.1.1.0,下一跳地址都是20.1.1.2。如果要将报文转发至网段10.1.1.1,则10.1.1.0/30符合最长匹配原则。
|