路由基础

路由基础

Scroll Down

一、路由概述

网络的基本功能是使得处于网络中的两个IP节点能够进行通信(即数据交互的过程),数据交互则需要网络设备帮助我们将数据在两个通信节点之间传输。当路由器收到一个IP数据包,路由器会找出IP包三层头部中的dst IP,然后根据dst IP到自己的路由表中去查找,找到“最匹配”的路由条目后,将数据包根据路由条目所指示的出接口或下一跳IP转发出去,这就是IP路由所以路由的通俗理解就是路

路由器的两个功能:寻址和分组;路由器将接收信息分组,根据路由表将分组发送出去,路由器的转发是基于目标网络地址的,而不是目标的IP地址

简单通讯案例:当一台主机将数据发送给处于同一个子网的另一台主机时,不需要经过路由器,只需要在交换机中转发数据;但是,如果这台主机想要给不同子网的一台主机发数据,就必须通过路由器转发数据。

二、IP路由表

路由表又叫做路由选择信息库(即RIB),每台路由器都会在本地维护一个IP路由表(routing table),路由表中装载着路由器获知的路由条目,路由条目=路由前缀+路由信息来源+出接口/下一跳IP,路由器通过静态或者动态的方式获取路由条目并维护自己的路由表。

路由表内容

20200317135027.png

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

  • 路由表项:路由代码 + 目标网络 + 下一跳地址 + 出接口 一整行就是一个路由表项

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

  • [管理距离/metric]

路由表结构

20200317135303.png

路由表中为什么有的显示成一行,有的显示成多行?这涉及到了路由表结构,路由表结构分为级别1路由、父路由、子路由(级别2路由)、最终路由

级别1路由:指一条路由使用子网掩码≤有类网络的默认子网掩码。在路由表中只显示一行,级别1路由包括:

  • 网络路由:一条路由使用的子网掩码等于有类网络的子网掩码,比如172.20.0.0/16
  • 超网路由:一条路由使用的子网掩码小于有类网络的子网掩码,比如172.20.0.0/15
  • 默认路由:一条路由为0.0.0.0/0,比如0.0.0.0/0

父路由:指一条路由使用子网掩码>有类网络的默认子网掩码。父路由不包括下一跳地址或者出接口。比如4.0.0.0/32,该网络中有一个子网为4.4.4.4/32

子路由:子路由中明确标明了下一跳的IP地址或本路由的出接口,如果所有子路由的子网掩码相同,相同的子网掩码将在父路由中表示出来,子路由中就不再子网掩码长度了;如果子路由拥有不同的子网掩码长度,子网掩码将在每个子路由中单独表示出来,而父路由则使用默认主类网络掩码表示。比如父路由4.0.0.0/32和子路由4.4.4.4

最终路由:是指路由条目中包含下一跳路由器的IP地址或本路由的出接口,除父路由外,所有级别1的路由和子路由都是最终路由

三、管理距离和度量值

管理距离

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

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

不同路由信息获取方式主要分成三类:直连、静态路由、动态路由

20200317135459.png

度量值

如果通过相同的路由信息获取方式有多种去往同一目的地的方式,则需要一种新的标准来衡量——metric。

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

总结:

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

四、路由选路原则

20200317135555.png

所谓的命中路由即按顺序查找:主机地址、子网、一组子网、主类网络、一组主类网络、默认路由到了当中任何一个。

如果未命中任何路由,则丢弃数据包,同时一个“目标网络不可达”的ICMP消息被发回源地址。如果如果命中路由,按最长掩码匹配原则处理,选取最长的掩码。如果有多个相同路由,则比较AD,如果仍然相同,再比较metric,如果仍然相同则负载

最长掩码匹配原则

最长掩码匹配原则:当路由器收到一个IP数据包时,如果这个数据包的目标地址被路由表中多个网络覆盖,将会选择最长的子网掩码的路由。

20200317135700.png

最长匹配原则:现在存在172.16.0.0/16、172.16.10.0/30、172.16.10.1/32三个前缀,当需要找172.16.10.1,会找172.16.10.1/32,按照前缀长度最长的匹配

主机地址:唯一标识一台主机的IP地址

子网:在网络号所属类别的默认掩码长度的基础上,将掩码“拉长”或者向主机位借位从而得到的一个网络号。例如172.16.10.0/24是172.16.0.0/16这个主类网络的一个子网。当然,172.16.10.0/24可以进一步划分子网

一组子网:就是一条汇总了多个子网的汇总路由

主类网络号:主类网络号即A、B、C类的默认网络号;按照其所属的IP地址类别区分后,对应上的默认的子网掩码长度后得到的网络号。例如172.16.4.4属于B类地址,B类地址的默认子网掩码长度是16位,因此172.16.0.0/16就是172.16.4.4的主类网络号。再例如10.1.12.1,它的主类网络号为10.0.0.0/8

一组主类网络号(超网):172.0.0.0/8实际上就是将172.16.0.0/16这个B类地址的掩码向左移了8位,这样的网络号实际上是囊括了172.16.0.0/16在内的一个大的网络号,称其为超网

默认路由:0.0.0.0/0

管理距离优选

在命中路由、执行完最长掩码匹配原则之后,发现存在两个以上的相同最长掩码的路由后,需要执行最小AD的规则来选择最优路由。

比如:路由器收到两条192.168.0.1/24,一条是通过OSPF学习到的,一条是通过外部EIGRP学习到的。根据AD表,OSPF的AD值为110,外部EIGRP的AD值为170。所以会优选OSPF的192.168.0.1/24的路由,并加载进路由表!

度量值优选

在命中路由、执行完最长掩码匹配原则、执行完AD比较后,仍存在两个以上的路由时,优选metric最小的。如果有相同metric,那么执行负载均衡!如果没有相同metric,选择最小的。

五、有类与无类路由查找方式

当一个路由器收到一个IP报文时,检查目的IP地址,按照下面的步骤查找路由表:

1st. 路由器根据目的IP查找级别1路由,依次查找网络路由(包括父路由)、超网路由、默认路由,如果最长掩码匹配是级别1的最终路由,那么这条路由用来转发数据包

2nd. 如果最长掩码匹配的是级别1的父路由,继续下一步查找即查找该父路由的子路由,如果找到匹配的子路由,则这条子路由用来转发数据包

3rd. 如果子路由没有匹配,继续下一步查找,此时判断路由执行的是有类查找还是无类查找,如果是有类查找,则到第4步,如果是无类查找,则到第5步

4th. 有类路由行为:终止查找,丢弃数据包

5th. 无类路由行为:继续查找级别1的超网路由和默认路由,如果没有超网路由匹配,也没有默认路由匹配,则丢弃数据包;如果找到匹配,则按该路由条目转发

Tips:

  • 有类、无类路由查找方式和有类、无类路由选择协议区分开了,两者是不同的东西
  • 路由器的行为是逐跳的,到目标网络的沿路经每个路由器都必须有关于目的地的路由
  • 数据是双向的,考虑流量的时候,要关注流量的往返
  • 不同前缀(即网络号/掩码)在路由表中属于不同的路由