路由协议综述

这一生的挚爱 提交于 2020-02-04 21:01:47

diandian路由协议综述

简介

路由是数据通信网络中最基本的要素。路由信息就是指导报文发送的路径信息,路由的过程就是报文转发的过程。
根据路由目的地的不同,路由可划分为:

网段路由:目的地为网段,IPv4地址子网掩码长度小于32位或IPv6地址前缀长度小于128位。
主机路由:目的地为主机,IPv4地址子网掩码长度为32位或IPv6地址前缀长度为128位。

根据目的地与该路由器是否直接相连,路由又可划分为:

直连路由:目的地所在网络与路由器直接相连。
间接路由:目的地所在网络与路由器非直接相连。

根据目的地址类型的不同,路由还可以分为:

单播路由:表示将报文转发的目的地址是一个单播地址。
组播路由:表示将报文转发的目的地址是一个组播地址。

静态路由与动态路由

FW不仅支持静态路由,同时也支持RIP(Routing Information Protocol)、OSPF(Open Shortest Path First)、IS-IS(Intermedia System-Intermedia System)和BGP(Border Gateway Protocol)等动态路由协议。

静态路由与动态路由的区别

静态路由配置方便,对系统要求低,适用于拓扑结构简单并且稳定的小型网络。缺点是不能自动适应网络拓扑的变化,需要人工干预。
动态路由协议有自己的路由算法,能够自动适应网络拓扑的变化,适用于具有一定数量三层设备的网络。缺点是配置对用户要求比较高,对系统的要求高于静态路由,并将占用一定的网络资源和系统资源。

动态路由的分类

对动态路由协议的分类可以采用以下不同标准:
根据作用范围不同,路由协议可分为:

内部网关协议IGP(Interior Gateway Protocol):在一个自治系统内部运行。常见的IGP协议包括RIP、OSPF和IS-IS。
外部网关协议EGP(Exterior Gateway Protocol):运行于不同自治系统之间。BGP是目前最常用的EGP协议。

根据使用算法不同,路由协议可分为:

距离矢量协议(Distance-Vector Protocol):包括RIP和BGP。其中,BGP也被称为路径矢量协议(Path-Vector Protocol)。
链路状态协议(Link-State Protocol):包括OSPF和IS-IS。

以上两种算法的主要区别在于发现路由和计算路由的方法不同。

缺省路由

缺省路由是一种特殊的路由。通常情况下,管理员可以通过手工方式配置缺省静态路由;但有些时候,也可以使动态路由协议生成缺省路由,如OSPF和IS-IS。

简单来说,缺省路由是没有在路由表中找到匹配的路由表项时才使用的路由。在路由表中,缺省路由以到网络0.0.0.0(掩码也为0.0.0.0)的路由形式出现。可通过命令display ip routing-table查看当前是否设置了缺省路由。

如果报文的目的地址不能与路由表的任何目的地址相匹配,那么该报文将选取缺省路由。如果没有缺省路由且报文的目的地址不在路由表中,那么该报文将被丢弃,并向源端返回一个ICMP(Internet Control Message Protocol)报文,报告该目的地址或网络不可达。

路由表和FIB表

路由设备通过路由表选择路由,通过FIB(Forwarding Information Base)表指导报文转发。每个路由设备都至少保存着一张路由表和一张FIB表。
路由表中保存了各种路由协议发现的路由,根据来源不同,路由表中的路由通常可分为以下三类:

链路层协议发现的路由(也称为接口路由或直连路由)。
由网络管理员手工配置的静态路由。
动态路由协议发现的路由。

FIB表中每条转发项都指明到达某网段或某主机的报文应通过路由器的哪个物理接口或逻辑接口发送,然后就可到达该路径的下一个路由器,或者不再经过别的路由器而传送到直接相连的网络中的目的主机。

路由表

每台路由设备中都保存着一张本地核心(管理)路由表,同时各个路由协议也维护着自己的路由表。

协议路由表
协议路由表中存放着该协议发现的路由信息。
路由协议可以引入并发布其他协议生成的路由。例如,在路由器上运行OSPF(Open Shortest Path First)协议,需要使用OSPF协议通告直连路由、静态路由或者IS-IS(Intermediate System-Intermediate System)路由时,要将这些路由引入到OSPF协议的路由表中。

本地核心路由表
路由设备使用本地核心路由表用来保存协议路由和决策优选路由,并负责把优选路由下发到FIB,FIB进行指导转发。这张路由表依据各种路由协议的优先级和度量值来选取路由。可以使用display ip routing-table命令查看。

说明: 对于支持L3VPN(Layer 3 Virtual Private Network)的路由器,每一个VPN-Instance拥有一个自己的管理路由表(本地核心路由表)。

路由表中的内容

在FW中,通过执行命令display ip routing-table可以查看到路由器的路由表简表,如下:路由表中包含了下列关键项:Destination:目的地址。用来标识IP包的目的地址或目的网络。 Mask:网络掩码。与目的地址一起来标识目的主机或路由器所在的网段的地址。 将目的地址和网络掩码“逻辑与”后可得到目的主机或路由器所在网段的地址。例如:目的地址为10.1.1.1,掩码为255.255.255.0的主机或路由器所在网段的地址为10.1.1.0。 掩码由若干个连续“1”构成,既可以用点分十进制表示,也可以用掩码中连续“1”的个数来表示。例如掩码255.255.255.0长度为24,即可以表示为24。 Proto:用来学习路由的协议。 Pre:本条路由加入IP路由表的优先级。针对同一目的地,可能存在不同下一跳、出接口等的若干条路由,这些不同的路由可能是由不同的路由协议发现的,也可以是手工配置的静态路由。优先级高(数值小)者将成为当前的最优路由。Cost:路由开销。当到达同一目的地的多条路由具有相同的优先级时,路由开销最小的将成为当前的最优路由。
在这里插入图片描述
路由表中包含了下列关键项:

Destination:目的地址。用来标识IP包的目的地址或目的网络。
Mask:网络掩码。与目的地址一起来标识目的主机或路由器所在的网段的地址。
将目的地址和网络掩码“逻辑与”后可得到目的主机或路由器所在网段的地址。例如:目的地址为10.1.1.1,掩码为255.255.255.0的主机或路由器所在网段的地址为10.1.1.0。
掩码由若干个连续“1”构成,既可以用点分十进制表示,也可以用掩码中连续“1”的个数来表示。例如掩码255.255.255.0长度为24,即可以表示为24。
Proto:用来学习路由的协议。
Pre:本条路由加入IP路由表的优先级。针对同一目的地,可能存在不同下一跳、出接口等的若干条路由,这些不同的路由可能是由不同的路由协议发现的,也可以是手工配置的静态路由。优先级高(数值小)者将成为当前的最优路由。
Cost:路由开销。当到达同一目的地的多条路由具有相同的优先级时,路由开销最小的将成为当前的最优路由。

说明: Preference用于不同路由协议间路由优先级的比较,Cost用于同一种路由协议内部不同路由优先级的比较。

NextHop:下一跳IP地址。说明IP包所经由的下一个路由器。Interface:输出接口。说明IP包将从该路由器哪个接口转发。

根据路由的目的地不同,可以划分为:

网段路由:目的地为网段
主机路由:目的地为主机

另外,根据目的地与该路由器是否直接相连,又可分为:

直接路由:目的地所在网络与路由器直接相连
间接路由:目的地所在网络与路由器不是直接相连

为了不使路由表过于庞大,可以设置一条缺省路由。凡遇到查找路由表失败后的数据包,就选择缺省路由转发。例如上面路由表中目的地址是0.0.0.0/0的路由就是缺省路由。
在图1所示的网络中,FW_A与三个网络相连,因此有三个IP地址和三个出接口,其路由表如图所示。

图1 路由表示意图
在这里插入图片描述
FIB表的匹配

在路由表选择出路由后,路由表会将激活路由下发到FIB表中。当报文到达路由器时,会通过查找FIB表进行转发。
FIB表的匹配遵循最长匹配原则。查找FIB表时,报文的目的地址和FIB中各表项的掩码进行按位“逻辑与”,得到的地址符合FIB表项中的网络地址则匹配。最终选择一个最长匹配的FIB表项转发报文。
例如,一台路由器上的路由表简表如下:
在这里插入图片描述
说明: 完整的路由表中包含激活路由和未激活路由,路由表简表中只显示激活路由。完整的路由表可以通过命令display ip routing-table verbose查看。

一个目的地址是10.1.2.1的报文进入路由器,查找对应的FIB表。
在这里插入图片描述
首先,目的地址10.1.2.1与FIB表中各表项的掩码“0、8、16”作“逻辑与”运算,得到下面的网段地址:0.0.0.0/0、10.0.0.0/8、10.1.0.0/16。这三个结果可以匹配到FIB表中对应的三个表项:0.0.0.0/0匹配长度是0bit、10.0.0.0/8匹配长度是8bit、10.1.0.0/16匹配长度是16bit。
最终,FW会选择最长匹配10.1.0.0/16表项,从接口GigabitEthernet1/0/1转发这条目的地址是10.1.2.1的报文。

路由协议的优先级

介绍了各种路由协议的路由优先级。
对于相同的目的地,不同的路由协议(包括静态路由)可能会发现不同的路由,但这些路由并不都是最优的。事实上,在某一时刻,到某一目的地的当前路由仅能由唯一的路由协议来决定。为了判断最优路由,各路由协议(包括静态路由)都被赋予了一个优先级,当存在多个路由信息源时,具有较高优先级(取值较小)的路由协议发现的路由将成为最优路由。各种路由协议及其发现路由的缺省优先级如表1所示。
其中:0表示直接连接的路由,255表示任何来自不可信源端的路由;数值越小表明优先级越高。

表1 路由协议及缺省时的路由优先级

路由协议的类型 相应路由的优先级
DIRECT 0
OSPF 10
IS-IS 15
STATIC 60
UNR(User Network Route) DHCP(Dynamic Host Configuration Protocol):60,AAA-Download:60,IP Pool:61,Frame:62,Host:63,NAT(Network Address Translation):64,DSLite(Dual-Stack Lite):64,IPSec(IP Security):65,NHRP(Next Hop Resolution Protocol):65,PPPoE(Point-to-Point Protocol over Ethernet):65,SSL VPN(Secure Sockets Layer Virtual Private Network):66
RIP 100
OSPF ASE(AS-External) 150
OSPF NSSA(Not-So-Stubby Area) 150
IBGP 255
EBGP 255

除直连路由(DIRECT)外,各种路由协议的优先级都可由用户手工进行配置。另外,每条静态路由的优先级都可以不相同。
FW分别定义了外部优先级和内部优先级,外部优先级即前面提到的用户为各路由协议配置的优先级,缺省情况下如表1所示。
当不同的路由协议配置了相同的优先级后,系统会通过内部优先级决定哪个路由协议发现的路由将成为最优路由。路由协议的内部优先级如表2所示。

表2 路由协议内部优先级

路由协议的类型 相应路由的内部优先级
DIRECT 0
OSPF 10
IS-IS Level-1 15
IS-IS Level-21 18
STATIC 60
UNR 65
RIP 100
OSPF ASE 150
OSPF NSSA 150
IBGP 200
EBGP 20

例如,到达同一目的地10.1.1.0/24有两条路由可供选择,一条静态路由,另一条是OSPF路由,且这两条路由的协议优先级都被配置成5。这时FW系统将根据表2所示的内部优先级进行判断。因为OSPF协议的内部优先级是10,高于静态路由的内部优先级60,所以系统选择OSPF协议发现的路由作为可用路由。

不同路由协议的互相引入

不同的路由协议间可以相互引入路由,从而能够学习其他路由协议学习到的路由。由于采用的算法不同,不同的路由协议可以发现不同的路由。当网络规模比较大,使用多种路由协议时,不同的路由协议间通常需要发布其他路由协议发现的路由。 路由协议都可以引入其它路由协议的路由、直连路由和静态路由,每种路由协议都有相应的路由引入机制,具体内容请参见各路由协议模块有关引入外部路由的描述。

路由的度量

路由的度量标示出了这条路由到达指定的目的地址的代价。
通常以下因素会影响到路由的度量:

路径长度
路径长度是最常见的影响路由度量的因素。链路状态路由协议可以为每一条链路设置一个链路开销来标示此链路的路径长度。在这种情况下,路径长度是指经过的所有链路的链路开销的总和。距离矢量路由协议使用跳数来标示路径长度。跳数是指数据从源端到目的端所经过的设备数量。例如,路由器到与它直接相连网络的跳数为0,通过一台路由器可达的网络的跳数为1,其余以此类推。

网络带宽
网络带宽是一个链路实际的传输能力。例如,一个10千兆的链路要比1千兆的链路更优越。虽然带宽是指一个链路能达到的最大传输速率,但这不能说明在高带宽链路上路由要比低带宽链路上更优越。比如说,一个高带宽的链路正处于拥塞的状态下,那报文在这条链路上转发时将会花费更多的时间。

负载
负载是一个网络资源的使用程度。计算负载方法包括CPU的利用率和它每秒处理数据包的数量。持续监测这些参数可以及时了解网络的使用情况。

通信开销
通信开销衡量了一条链路的运营成本。尤其是只注重运营成本而不在乎网络性能的时候,通信开销则就成了一个重要的指标。

负载分担

当多条路由的路由优先级和路由度量都相同时,这几条路由就称为等价路由,多条等价路由可以实现负载分担。
FW支持多路由模式,即允许配置多条目的地相同且优先级也相同的路由。当到达同一目的地存在同一路由协议发现的多条路由时,且这几条路由的开销值也相同,那么就满足负载分担的条件。通过在各协议视图下,配置maximum load-balancing number实现负载分担。负载分担分为两种方式:

逐包
当配置负载分担的方式为逐包负载分担时,FW在转发去往同一目的地的报文时,由IP层依次通过各条路径发送,也就是总是选择与发上一个包时不同的下一跳地址发送报文,即逐包的负载分担。如图1所示。

图1 逐包负载分担组网图
在这里插入图片描述
FW转发报文到目的地10.1.1.0/24,待发送的报文为P1、P2、P3、P4、P5、P6。为了进行负载分担,FW的两个接口轮流发送到同一目的地址10.1.1.0/24的报文。报文发送的过程是:

从接口GE1/0/0发送第1个报文P1
从接口GE1/0/1发送第2个报文P2
从接口GE1/0/0发送第3个报文P3
从接口GE1/0/1发送第4个报文P4
从接口GE1/0/0发送第5个报文P5
从接口GE1/0/1发送第6个报文P6

逐流
当配置负载分担的方式为逐流负载分担时,FW默认根据源地址、目的地址进行hash选路,hash值相同时,FW总是选择与上一次相同的下一跳地址发送报文。如图2所示。

图2 逐流负载分担组网图
在这里插入图片描述
FW分别转发报文到目的地址10.1.1.0/24和10.2.1.0/24。逐流负载分担的选路原则是:同一流中的报文总是选择以前走过的路径。FW转发报文的过程如下:

到达10.1.1.0/24的第1个报文P1是从接口GE1/0/0转发出去的,所以之后到达该目的地的报文都从GE1/0/0转发。到达10.2.1.0/24的第1个报文P1是从接口GE1/0/1转发出去的,所以之后到达该目的地的报文都从GE1/0/1转发。

目前的实现中,支持负载分担的路由协议为RIP、RIPng、OSPF、OSPFv3、BGP、BGP4+、IS-IS和IPv6 IS-IS,静态路由也支持负载分担。

路由按优先级收敛

路由按优先级收敛是提高网络可靠性的一项重要技术,可为关键业务提供更快的路由收敛速度。

定义

按优先级收敛是指系统为路由设置不同的收敛优先级,分为critical、high、medium、low四种。系统根据这些路由的收敛优先级采用相对的优先收敛原则,即按照一定的调度比例进行路由收敛安装,指导业务的转发。

目的

随着网络的融合,区分服务的需求越来越强烈。某些路由可能指导关键业务的转发,如VoIP(Voice over IP)、视频会议等,对于用户而言,这些关键的业务路由需要尽快收敛,而非关键路由可以相对慢一点收敛。因此,系统需要对不同路由按不同的收敛优先级处理,来提高网络可靠性。

原理描述

缺省情况下的公网路由收敛优先级如下表所示。路由协议优先计算并下发高收敛优先级的路由给系统。缺省情况下,系统按照优先级调度的权重为critical: high: medium: low=8:4:2:1对路由进行收敛,用户也可以根据实际组网重新配置收敛优先级的调度权重。

表1 缺省时的公网路由收敛优先级

路由协议或路由种类 收敛优先级
DIRECT high
STATIC medium
OSPF和IS-IS的32位主机路由 medium
OSPF(除32位主机路由外) low
IS-IS(除32位主机路由外) low
RIP low
BGP low

说明: 对于私网路由,除了OSPF和IS-IS的32位主机路由标识为medium,其余路由统一标识为low。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!