路由基础

一、路由

TCP/IP网络的出现,使得在IP网上的任意两个节点都能即时传输和接收数据。IP网络的物理组成是网元和物理链路,但是仅仅有网元和物理链路是不行的,需要使用某种方式控制数据包选择最优的数据传输链路,而这种方式就是协议(准确的说是路由协议)。路由通俗的讲就是为数据包指明去往目标网络的一个具体的路径选择,一个好的路由协议具备指明最优路径,次最优路径,路径更新的能力。每个网元都会本地维护一个表(路由表)用于记录去往某个目的地路径,包括最优路径。当IP数据报到达某个网元时,网元通过对比IP数据报中的dst IP和路由表中的条目(路由条目),查找到最优的路径,根据该最优路径指导数据报发往下一跳地址或者从某个出接口转发出去的过程叫IP路由/寻址。

路由表=路由信息表=RIB

寻址根据RIB将数据报转发出去是基于目的网络地址,而不是目标IP,也就是RIB中保存的路由条目包含了目标网络地址。IP路由的简单表述:

  • 控制平面:路由器通过运行静态/动态路由协议,手动/自动学习路由器之间传递路由条目,记录路由条目进RIB,根据选路规则选出相同目的网络的最优路由条目。

  • 数据平面:IP数据报达到路由器后,根据dst IP和路由条目匹配,查找dst IP属于哪个网络,查找到后根据RIB中的下一跳地址或出接口,转发该IP数据报。

二、路由表

RIB是控制平面的实例,通过静态/动态路由协议学习路由并生成RIB,作为IP数据报的转发依据。RIB又叫路由选择信息库IP路由表,每台网元只要支持三层特性的都会本地维护一个RIB,RIB中存放着通过静态/动态路由协议学习到的路由表项/路由条目

RIB内容包括:

  • 详细路由代码表:记录了各种动态/静态路由协议的简化标识

  • 默认路由:gateway of last resort is not set

  • 路由表项/路由条目:路由代码 网络地址/子网掩码 [管理距离/metric] 下一跳地址/出接口

三、选路

路由选路其实还是管理平面的操作规则,当网元运行了静态路由、多个动态路由协议,所学习并形成的RIB是非常混乱的,且不同的动态路由协议学习到相同的目的网络地址,如何选择并形成最优RIB?路由选路规则选择出去往同一个目的地的最优路径,并加载入RIB中,为数据转发提供依据

路由选择的实质是命中路由,如果命中多条路由,就需要根据路由选路规则来选出最优路由,然后根据最优路由转发。如果未命中任何路由,一般不存在这种情况,但是如果网元没有默认路由,那就会存在该情况,网元会丢弃数据报同时发回一条“目标网络不可达”的ICMP报文给源。

路由选路规则:不管哪个步骤选出最优路由,则加载入RIB中,作为数据转发依据。

  1. 最长掩码匹配原则(越长越优),如果存在多个路由相同,则执行2nd

  2. AD比较(越小越优),如果AD相同,则执行3rd

  3. metric比较(越小越优),如果metric相同,则负载均衡(即ECMP)

相同路由是指网络地址和子网掩码都相同,只要有一个不相同就不是相同路由。比如192.168.1.0/24、192.168.1.0/25,尽管两者的网络地址相同,但是掩码长度不同,所以不是同一条路由。

ECMP是指等价路由;ECMP是指存在多条不同链路到达同一目的地址的网络环境中如果使用传统的路由技术,发往该目的地址的数据包只能利用其中的一条链路,其它链路处于备份状态或无效状态,并且在动态路由环境下相互的切换需要一定时间,而等值多路径路由协议可以在该网络环境下同时使用多条链路,不仅增加了传输带宽,并且可以无时延无丢包地备份失效链路的数据传输。ECMP最大的特点是实现了等值情况下,多路径负载均衡和链路备份的目的,在静态路由和OSPF中基本上都支持ECMP功能。但是实际情况是,各路径的带宽、时延和可靠性等不一样,把Cost认可成一样,不能很好地利用带宽,尤其在路径间差异大时,效果会非常不理想。例如,路由器两个出口,两路径,一个带宽是100M,一个是2M,如果部署是ECMP,则网络总带宽只能达到4M的利用率。

1、最长掩码匹配

最长掩码匹配是指如果IP数据报去往某个IP,匹配中多个路由,会选择拥有最长子网掩码的路由。根据最长掩码匹配规则:假设某个数据报目的地址为172.16.10.1:

  1. 默认路由:0.0.0.0/0;

  2. 超网:172.0.0.0/8;

  3. 主类网络:172.16.0.0/16;

  4. 一组子网:172.16.0.0/22;

  5. 子网:172.16.10.0/24;172.16.10.0/30;

  6. 主机:172.16.10.1/32;根据最长掩码匹配规则,该数据报最终命中主机路由。

2、管理距离

管理距离(Administrative Distance,AD值)是衡量不同的路由信息获取方式可信度标准(范围在0-255)。路由的AD值越小,则说明该路由的可信度越高(即路由协议的优先级)。

具象化描述:比如去从安徽到上海,有几种获取路径信息的方式,分别为GPS导航、路标指引、人工指路三种方式。那么根据可信度的排列,我们优先选择GPS导航,次选路标指引,没办法才选人工指路的方式,因为后两个可信度较低。比如人工指路,可能你喊了这个人“老头”,他可能会给你指向错误的路。所以路由器会衡量这几种获取方式的可信度,将可性度使用了AD值进行衡量。

当存在多条路由的子网掩码相同时,无法通过最长掩码匹配区分哪条路由最优,如果多条路由通过不同的路由协议学习到,就需要要用到AD来优选哪条更优。比如

  • O 172.16.10.0/24 [110/xxxxx]

  • D 172.16.10.0/24 [90/xxxxx]

根据AD值来区分哪个更优,D明显更优于O,所以会选择D路由作为去往172.16.10.0/24的最优路由。

3、度量值

如果通过相同的路由信息获取方式仍然有多种去往同一目的网络的方式,则需要一种新的标准来衡量Metric

度量值Metric)是衡量相同的路由信息获取方式下的去往同一目的地的多种方式。不同的路由协议,拥有不同的计算度量值的方法,比如RIP的度量值是靠跳数决定、EIGRP的度量值靠复合度量值决定,OSPF靠累计接口cost决定……metric值越小,说明路径越优

具象化描述:比如从安徽到上海,你选择了GPS导航这个可信度高的路径信息获取方式,可能会出现多个结果,比如走不同的高速,这时候你会衡量时间、路程最短这些因素来选择走哪条推荐的路,那么这里的因素就是用metric来衡量,总结:

  • 去往某个目的地的AD值不同,则优选AD小的。

  • 去往某个目的地的AD值相同,metric值不同,则优选metric值小的,如果metric相同则负载均衡。

当存在多条路由的子网掩码相同时,无法通过最长掩码匹配区分哪条路由最优,同时通过同一个动态路由协议学习到的,就需要要用到metric来优选哪条更优。比如:

  • O 172.16.10.0/24 [110/51]

  • O 172.16.10.0/24 [110/60]

根据metric值来区分哪个更优,51明显更优于60,所以会选择第一条路由作为去往172.16.10.0/24的最优路由。

四、路由查找&转发

路由查找则是数据平面的操作,cisco在路由的全局查找上分为有类无类查找方式。

  • 无类查找方式是默认的查找方式。当路由器执行无类别路由查找时,它不会注意目的地址的类别(比如10.x.x.x就知道是A类,172.x.x.x就知道是B类),它会在目的IP地址和所有已知路由之间逐位执行最长匹配

  • 有类查找方式已经淘汰。收到一个数据报时,先查找dst IP所属主类,RIB中是否有主类路由:

    • 有;是否有匹配子网。

      • 有则查询被限定在子网中,最长匹配并转发数据。

      • 没有则丢弃数据报,即使有默认路由存在。

    • 没有;查询是否有默认路由,有则匹配中默认路由,没有则丢弃数据报。

排错时记住的原则:先有路由、后有转发;路由方向与数据转发方向相反。

  1. 路由表项(必须通过)静态/动态路由协议(学习并存入)RIB中,并建立CEF(即Cisco Express Forwarding,思科特快转发)。

  2. 当有数据报要转发时(通过无类路由查找方式[执行最长匹配]查找)RIB中的路由表项,如果查找到多条相同路由,那么开始选路(先执行AD比较,后执行metric比较),最终两个结果:

    (1)选出最优路由,进行转发。

    (2)仍然存在两条相同的最优路由,那么执行负载均衡,负载均衡方式转发。

  3. 转发时因为分为两种结果,所以转发方式有所不同

  • 路由器的行为是逐跳的,到目标网络的沿路经每个路由器都必须有关于目的地的路由。

  • 数据是双向的,考虑流量的时候,要关注流量的往返。

参考文档:

Understand Cisco Express Forwarding