路由协议初始

所属等级: H3CNE

一、何为路由:

A、路由介绍:

网络的基本功能,是使得处于网络中的两个 IP 节点能够进行通信,而通信实际上就是数据交互的过程,数据交互则需要网络设备帮助我们来将数据在两通信节点之间传输。

当路由器(或者其他三层设备)收到一个IP数据包,路由器会找出IP包三层头中的目的IP地址,然后拿着目的IP地址到自己的路由表中进行查找,找到“最匹配”的条目后,将数据包根据路由条目所指示的出接口或下一跳IP转发出去,如果没有任何“匹配”表项,那就继续看有没有默认路由,如果也没有默认路由,这个数据包就会被丢弃,并向这个数据包的起源发送ICMP报错消息,这就是IP 路由( Routing ) 。

而每台路由器都会在本地维护一个路由表( Routing Table ) ,路由表中装载着路由器获知的路由条目(Routes),路由条目由路由前缀(路有所关联的目的地)、路由信息来源、出接口或下一跳 IP等元素构成。路由器通过静态的或者动态的方式获取路由条目并维护自己的路由表。

B、路由表(RIB):

1、路由表介绍:

一个路由器能够正常工作,大前提就是路由表是稳定的,而且要知道到达网络各个角落的路标,所以路由表是路由器正常工作的非常重要的东西。

路由表有很多行(Rows),每行标识一个表项或一条路由。路由表至少有三样东西,分别是目标网络号,路由信息的来源,出站接口。

初始情况下路由器只知道直连网段的信息,这个接口的物理状态和协议状态都是 UP,才会被写入路由表中,路由信息来源标记为Direct。如果物理状态和协议状态其中一个为down,那就无法写入路由表中,即使之前写入路由表中也会被擦除。

Untitled
Untitled

1、任何一台具有三层功能的设备都有路由表。每个条目都指向着一个目的地。

2、路由前缀是网络号+掩码的格式,这才是一个完整的路由前缀,两者缺一不可。

3、协议字段表示这一行表项是通过什么途径获得的(直连的,静态的,RIP,OSPF,ISIS, BGP)。

4、优先级字段指的是各个路由协议类型对应的路由优先级,优先级值越小越优,一般用于通过两种不同路由协议发现去往同一目的地的两条路径,会优先采用哪一条,这些优先级值都是约定好的。

5、开销字段就是从我本地到达左侧的目标网络所付出的代价。

6、标志字段D述路由表条目的特性和状态的标志,不同的标志值可以组合在一起,以指示路由表条目的不同属性

7、下一跳和出接口表示匹配的某一条表项后会按照表项指示的下一跳和出接口转发。

2、路由表来源和优先级:

路由条目的来源有三种:

  • 直连路由:直连路由就是直接在设备上接口所属网段的路由,他的优点是什么呢,配置非常简单,直接在设备上配置即可。比如配置一个路由器的两个接口地址配置了,且物理状态为UP、 且协议也为UP,那么系统就会自动生成一条路由条目。直连路由优先级不可手动修改。如果接口down了,原先的直连路由会被路由器删除掉。

  • 静态路由:如果目的地址不在直连的链路上的话,一个数据包过来岂不是找不到目的IP了?所以这个时候就可以手工配置路由上去,就是静态路由。配置静态路由一定要确认数据是否有去有回。静态路由的 Null0 口永远UP,下一跳水远可达,因此路由不会消失。

    • 在配置了不同优先级的静态路由时:不同优先级的静态路由条目都会写入路由表。只有行政距离较小的静态路由会被用作主要路由。行政距离较大的静态路由会作为备份路由存在,在主路由失效时激活。对于静态路由来说,如果下一跳不可达,则该路由不会写入路由表

    • 当到同一目的地址:

      • 下一跳和优先级都不同时,优选优先级高的加入路由表,低的作为备份的,这是路由备份;

      • 下一跳不同而优先级相同时,cost 值相同(因为度量值都为 0)则都会加入路由表,到目的地的流量将会均匀分担。这是负载分担。

      • Cost 值不同则优选 cost 值小的加入路由表,作为备份查找路由表中的路由: 掩码最长匹配

    • 只有在下一跳所属接口是 P2P 接口时(PPP/HDLC),才可以使用本地出接口作为下一跳。所属接口是 broadcast 接口时(Ethernet/vlan 接口),必须指定下一条地址是本地出接口地址

  • 动态路由:就是各个设备启动动态路由协议程序,然后各个设备自动根据网络中获取到的路由信息写到自己的路由表中,以达到更新路由表的作用。

  • 注意: Ethernet 是二层接口不能配置 IP 地址。

路由器可以通过多种途径获知路由条目。当路由器从两种不同的途径获知去往同一个目的地且下一跳不相同的路由时,路由器首先会比较这两条路由的优先级,优选Pre值小的路由。如果Pre值相等,例如是同种路由协议,则进一步比较开销值。

Untitled

C、路由、路由器、路由表:

对于路由表需要注意以下三点:

  1. 路由器上的路由表反映的是该路由器与相邻路由器之间的连接关系,以及任何一个可达网络与某个邻接路由器之间的“目标—经过”关系

  2. 一个路由器上的路由表从来不会反映该路由器与任何非相邻路由器之间的连接关系

  3. 路由表每个表项中的IP默认为目标网段的IP地址,而不是目标计算机的IP地址,这样能够最大限度地提高路由的效率

这里有三个概念:路由,路由器,路由表。对于小白可能容易混淆,注意路由既可以指计算机之间的传输路径,又可以指传输这一动态过程,而路由器是设备,即完成路由这一动态过程的设备,路由表是信息。是储存在路由器中的用来路由的信息

D、默认路由(缺省路由):

当路由表中没有与报文的目的地址匹配的表项时,设备可以选择缺省路由作为报文的转发路径。在路由表中,缺省路由的目的网络地址为0.0.0.0,掩码也为0.0.0.0。

在本示例中,RTA使用缺省路由转发到达未知目的地址的报文。缺省静态路由的默认优先级也是60。在路由选择过程中,缺省路由会被最后匹配。

Untitled

二、路由解析:

A、路由汇总:

1、什么是路由汇总:

路由器的数据存储在动态存储器,也就是路由器需要耗费资源来存储维护这些数据,而且路由表是要计算的,如果路由器路由表非常多,去付出很多资源,如果拓扑发生变化还要做收敛等。确保路由器路由表能通的情况下,尽量减小路由表规模,从而提高网络资源利用率。到达每一个远端网络都要配置一条明细路由,最终导致路由条目过多,路由表太庞大,增加了路由器的负担。可以将多条表项利用科学的方法汇总成一条,从而达到效果。

路由汇总是一个非常重要的网络设计思想,一个可汇总的网络设计方案将使得我们的网络更加优化、路由条目更加精简、网络管理更加简单……在网络设计及部署中应时刻保有路由汇总的意识。不仅仅静态路由能够部署路由汇总,动态路由协议也都支持路由汇总功能。

2、路由汇总的计算:

Untitled

路由的汇总实际上是通过对子网掩码的操作来完成的。在R2上,为了到达R1下联的网络,R2使用路由汇总的工具,指了一条汇总路由: [R2] ip route-static 172.16.0.0 16 10.1.12.1 #12.1 为 R1 的接口 IP。

虽然这确实起到了网络优化的目的,但是,这条汇总路由太“粗犷”了,它甚至将R3这一侧的网段也囊括在内,我们称这种路由汇总行为不够精确。因此,一种理想的方式是,使用一个“刚刚好”囊括这些明细路由的汇总路由,这样一来就可以避免汇总不够精确的问题。

这里不得不强调一点,网络可以部署路由汇总的前提是我们网络中IP子网及网络模型设计具备一定的科学性和合理性,因此路由汇总和网络的IP子网及网络模型的设计是息息相关的。如果你的网络规划的杂乱无章,路由汇总部署起来就相当的困难了。

以右图为例做路由汇总:

1、将这些IP地址写成二进制形式,实际上,我们只要考虑第三个8位组即可,因为只有它是在变化的。

2、现在,我们要画一根竖线,这根线的左侧,每一个列的二进制数都是一样的,线的右侧则无所谓,可以是变化的,这根线的最终位置,就是汇总路由的掩码长度。注意这根竖线可以从默认的掩码长度,也就是/24开始,一格一格的往左移,直到你观察到线的左端每一列数值都相等,即可停下,这时候,这根线,所处的位置就刚刚好。

3、如上图,线的位置是16+3=19,所以我们得到汇总地址:172.16.0.0/19,这就是一个最精确的汇总地址。

Untitled

3、汇总路由存在的问题:

Untitled

路由汇总它可以保证网络的可达性去减小路由器的路由表规模,从而减少资源的损耗,然而如果使用不当,会带来环路问题。如果发现网络突然变的很卡,网络中充斥的大量广播,通过抓包发现网路中充斥着大量数据,数据的目的地址是未知名的单播地址,可以定位这个网络出现了环路,导致设备卡顿,CPU资源占用率高。虽然说三层头部有TTL值可以防环,那也得等TTL值为0时才会把数据包丢弃,路由器之间的数据量特别大,容易搞伤设备。

IP route-static 192.168.0.0 16 null 0,称为“黑洞路由”,null 0是一个保留的接口,相当于路由器的回收站,但凡是被此路由表项匹配都会丢到null 0(回收站)去。

如果有目的地址为192.168.5.0/24的数据包,则会匹配住“IP route-static 192.168.0.0 16 null 0”这条路由表项,这种思想就是解决汇总路由引发的环路问题。静态路由只能手工的创建一个防环机制,而动态路由协议(OSPF,ISIS,BGP)都有自己的路由汇总机制,当你在一台三层设备上运行了动态路由协议以及路由汇总,那这些动态协议就会自动产生一条黑洞路由来防环。

B、路由选择原理解析**:**

路由有了,那当一条路由到达路由器的时候,路由器如何进行转发呢。路由表转发原则分为三个,总结为:最长匹配原则,迭代查询以及默认转发原则。

1、最长匹配原则:

PC发一个目的地址到40.0.0.2的单播包,首先此IP包会到达第一台路由器,为R某公司,R某公司会查询本身路由表,发现目的地址为40.0.0.0的路由条目有两条,此时看两条路由条目的掩码长度,匹配掩码长的路由条目,因为掩码越长、范围越小、匹配越精确,所以匹配40.0.0.0/24的这条,下一跳是20.0.0.2,出接口E0/2,所以此数据包会从R某公司的E0/2出去转发给RTB的20.0.0.2这个接口地址。RTB再查找路由表,将此数据包转发给40.0.0.2.这就是掩码最长原则。

优先级如下所示:

Untitled
Untitled

2、迭代查询原则:

PC发往一个目的地址去往50.0.0.2的数据包,首先到达第一台路由器R某公司,到达R某公司之后,目的地址找到50.0.0.0/24这条路由,下一跳40.0.0.2,发现40.0.0.2不在直连链路上,则以下一跳地址做为目的地址重新查找,此时目的地址是40.0.0.2,重复第一个原则。从ETH2出去,下一跳交给RTB的20.0.0.2,RTB查找路由表转发数据。这叫做迭代查询。

Untitled

3、默认匹配原则:

PC发送一个去往30.0.0.2段的数据包,R某公司查找路由表,但是目的地址并没有30.0.0.0段的,如果有0.0.0.0的,则匹配0.0.0.0的,因为0.0.0.0为任意地址,没有明细路由的时候匹配默认的路由转发。这个就是为什么咱们部署防火墙的时候,在某公司公司的AF的配置中,写一条0.0.0.0/0的路由让内网能够找到去往外网的路由。

Untitled

4、路由转发选择流程**:**

路由表出现有去往同一目的地址但是有不同的下一跳时,会根据下列规则进行选择最优路径。
一,路由优先级越小的越优先,在路由表里每条学习到的路由,都会有优先级标注,为了更方便后续的路由转发,若此比对优先级是一样的话,继续按照第二条进行比对。每个厂家的对于不同路由协议的优先级的定义不一样,例如华为设备的静态路由的优先级是60,OSPF路由协议是10,RIP路由协议是100。而思科设备分别对应的优先级是1、110、120。
二、内部协议优先当优先级相同时,会根据路由协议的内部协议优先转发,路由协议分外部协议和内部协议。在后面的网络协议中会学到AS自治系统,内部外部的区分就是在AS内和AS外的区分,这里简单提及,比如简单的RIP、OSPF路由协议是内部路由协议,BGP、MPLS就是外部路由协议。若比对还是相同,则按照第三条比对。
三、度量值越小越优先在路由表中度量值代表的是去往每条路径的路线开销。路径开销最小路由器会直接通过这条路由转发。若度量值开销比对依旧相同,那么会形成链路负载又称等价路由,也就是多条线路同时转发这个数据包的流量。

若没有匹配到路由表的路由条目,路由器就会直接丢弃数据包,这里跟交换机接收未知数据包时做的操作不一样,交换机是继续进行广播。当一个网络环境比较大的时候,有几百条甚至上千条的路由信息时,他是会把整个表进行查找一遍,路由表越大查找时间越长,对设备的性能也消耗较大。

路由器分别定义了外部优先级和内部优先级,先比较外部优先级,当不同的路由协议配置了相同的外部优先级后,系统会通过内部优先级决定哪个路由协议发现的路由将成为最优路由。
注意:优先级是用于不同协议之间的比对,度量值是用于相同协议之间的比对。这并不影响你按照这三条比对规则来选举最优路由。

C、路由备份和负载分担:

1、路由备份:

在配置多条静态路由时,可以修改静态路由的优先级,使一条静态路由的优先级高于其他静态路由,从而实现静态路由的备份,也叫浮动静态路由。

在本示例中,RTB上配置了两条静态路由。正常情况下,这两条静态路由是等价的。通过配置preference 100,使第二条静态路由的优先级要低于第一条(值越大优先级越低)。

路由器只把优先级最高的静态路由加入到路由表中。当加入到路由表中的静态路由出现故障时,优先级低的静态路由才会加入到路由表并承担数据转发业务。

当主用静态路由出现物理链路故障或者接口故障时,该静态路由不能再提供到达目的地的路径,所以在路由表中会被删除。此时,浮动静态路由会被加入到路由表,以保证报文能够从备份链路成功转发到目的地。在主用静态路由的物理链路恢复正常后,主用静态路由会重新被加入到路由表,并且数据转发业务会从浮动静态路由切换到主用静态路由,而浮动静态路由会在路由表中再次被隐藏。

Untitled

2、负载分担:

当源网络和目的网络之间存在多条链路时,可以通过等价路由来实现流量负载分担。这些等价路由具有相同的目的网络和掩码、优先级和度量值。负载分担华为设备提供两种方式,一种是逐包、一种是逐流。

  • 逐包负载分担:是通过对于数据包的发送进行负载,当每个数据包转发时会依据上一个数据包的不同下一跳地址进行转发来进行负载。

  • 逐流负载分担:而逐流负载分担是根据数据包五元组(源地址、目的地址、源端口、目地端口、协议),当数据包的五元组相同的时候,数据包会参照第一个数据包通过的下一跳地址进行转发,不同的五元组就随机下一跳进行转发。逐流负载是华为设备默认的负载路由的方式。

本示例中RTA和RTB之间有两条链路相连,通过使用等价的静态路由来实现流量负载分担。

在RTB上配置了两条静态路由,它们具有相同的目的IP地址和子网掩码、优先级(都为60)、路由开销(都为0),但下一跳不同。在RTB需要转发数据给RTA时,就会使用这两条等价静态路由将数据进行负载分担。在RTA上也应该配置对应的两条等价的静态路由

Untitled

三、VLAN间路由解析:

A、什么叫单臂路由:

咱们应该都知道,路由器和交换机之间最直观,从设备上可以看到的就是接口的不同,交换机上面的接口非常多,但是路由器嘞,接口比较少,如果这样去进行接线的话,会造成路由器接口的浪费(此处某公司公司图),所以提出了使用子接口来跟下面的不同VLAN间进行通信,如下图,这个图非常直观的说明了什么叫做单臂路由

Untitled

B、为什么要使用交换机实现VLAN间路由

很简单,因为路由器基本上是软件转发的,数据量多的时候容易造成网络瓶颈,三层交换机使用内置的三层路由转发功能转发路由,所以现在一般是在交换机上直接做VLAN间路由,如下图

Untitled

四、动态路由协议分类**:**

A、动态路由概述:

1、优缺点:

路由器要转发数据必须先配置路由数据,通常根据网络规模的大小可设置静态路由或设置动态路由。静态路由配置方便,对系统要求低,适用于拓扑结构简单并且稳定的小型网络。缺点是不能自动适应网络拓扑的变化,需要人工干预。

动态路由协议有自己的路由算法,能够自动适应网络拓扑的变化,适用于具有一定数量三层设备的网络。缺点是配置对用户要求比较高,对系统的要求高于静态路由,并将占用一定的网络资源。路由协议具备:邻居发现、路由协议、路由计算、路由维护功能。

通过动态路由协议,路由器采用邻居间交换路由或链路状态信息通告的方式学习远方的路由,并保持动态更新。相比于静态路由配置,采用动态路由协议生成路由表信息的方式具有如下几点优势:

  • 网络管理员只需要对动态路由协议执行配置和维护工作即可,相比于静态配置,工作量大大减少。

  • 当网络拓扑结构发生变更时,动态路由协议会自适应地更新路由表信息。

  • 配置过程不容易出现差错。

  • 网络中出现链路故障时,动态路由协议将重新规划路线,绕开出错的网络。

2、工作原理:

动态路由工作步骤如下:

  1. 向其他路由器传递路由信息

  2. 接受其他路由器的路由信息

  3. 根据收到的路由信息计算出每个目标网络的最佳到达路径 并写入路由表

  4. 根据网络拓扑的变化及时做出调整

动态路由协议中判断最佳路径的依据是:度量值 metrics;度量值可以是:跳数(就是经过多少各路由器)、带宽、负载(就是路径上所承担的压力或者承担的数据有多少)、可靠性、成本

B、动态路由分类:

常见的动态路由协议包括RIP、OSPF、IS-IS、IGRP、EIGRP、BGP等。

按照路由计算算法分类:

  • 距离矢量路由协议(D-V算法):就是依据跳数和多经过的路径长短决定最佳路径,协议包括BGP和RIP。

  • 链路状态路由协议(SPF算法):依据链路的带宽负载和成本来判断最佳路径,协议包括OSPF和IS-IS。

按照作用范围分类:

  • IGP(内部网关协议):在一个AS(自治系统)内运行的协议,包括RIP,OSPF和IS-IS。距离矢量 D-V 算法Ospf 链路状态 SPF 算法

  • EGP(外部网关协议):在不同AS间运行的协议,有BGP。

Untitled

关于AS的传统定义是,由一个单一的机构或组织所管理的一系列IP网络及其设备所构成的集合,我们可以简单地将AS理解 为一个独立的机构或者企业所管理的网络,例如一家网络运营商的网络等。

Untitled

协议特性

RIP(路由信息协议)

OSPF(开放式最短路径优先)

IS-IS(中间系统到中间系统)

BGP(边界网关协议)

协议类型

IGP、距离矢量型

IGP、链路状态型

IGP、链路状态型

EGP、路径矢量型(跨 AS)

作用范围

同一 AS 内部(小型网络)

同一 AS 内部(中大型网络)

同一 AS 内部(超大型网络)

不同 AS 之间(跨 AS 大型网络)

核心算法

Bellman-Ford(贝尔曼 - 福特)

Dijkstra(迪杰斯特拉)

Dijkstra(迪杰斯特拉)

路径矢量算法(基于 AS 路径选路)

度量值(Metric)

跳数(最大 15 跳,16 跳不可达)

接口开销(Cost,默认与带宽成反比)

开销(Cost,默认 10,可自定义)

多属性综合选路(AS 路径长度、本地优先级、MED 等)

更新方式

周期性广播(默认 30 秒)

触发更新(拓扑变化)+ 定期 Hello 保活

触发更新(拓扑变化)+ 定期 Hello 保活

触发更新(路由变化)+ 定期 Keepalive 保活

更新内容

完整路由表(仅向邻居发送)

链路状态通告(LSA,描述拓扑)

链路状态 PDU(LSP,描述拓扑)

路由条目(含 AS 路径等属性)

防环机制

水平分割、毒性逆转、触发更新

无环路(基于最短路径树计算)

无环路(Level 1/2 隔离 + 最短路径树)

AS 路径防环、水平分割、路由聚合

VLSM 支持

不支持(仅固定子网掩码)

支持(精确路由聚合)

支持(精确路由聚合)

支持(灵活路由聚合)

认证功能

仅简单明文认证(安全性低)

明文、MD5 加密认证(安全性高)

明文、MD5 加密认证(安全性高)

TCP 认证、MD5 加密认证(安全性高)

资源占用

低(无需复杂计算,仅广播路由表)

中(需计算最短路径树,LSA 泛洪)

低 - 中(报文结构简单,Level 分层控制)

高(需维护大量路由属性,选路计算复杂)

收敛速度

慢(周期性更新,最大 180 秒超时)

快(触发更新,毫秒级收敛)

快(触发更新,毫秒级收敛)

中(依赖更新策略,可配置优化)

最大网络规模

小型(≤15 跳,适合 SOHO / 简单局域网)

中大型(企业网、园区网核心)

超大型(运营商骨干网、跨国网络)

无限制(互联网骨干、跨 AS 互联)

典型应用场景

小型办公室 / 家庭网络、 legacy 系统

企业总部 - 分支互联、园区网核心层

运营商骨干网、大型数据中心互联

ISP 间路由交换、企业跨地域多 AS 互联

配置复杂度

低(仅需启用协议、宣告网络)

中(需规划区域、DR/BDR、认证)

中 - 高(需规划 Level 1/2、认证)

高(需配置邻居、路由策略、选路属性)

协议号 / 传输层协议

RIPv1:UDP 520;RIPv2:UDP 520

无 TCP/UDP 端口,使用 IP 协议号 89

无 TCP/UDP 端口,使用 CLNP(协议号 170)或 IP(协议号 171)

使用 TCP 协议,端口号 179

版本差异

RIPv1(有类路由,广播更新);RIPv2(无类路由,组播更新)

OSPFv2(IPv4);OSPFv3(IPv6,独立于 IPv4)

IS-ISv4(IPv4);IS-ISv6(IPv6,与 IPv4 共享拓扑)

BGP-4(当前主流,支持 IPv4/IPv6;BGP-4+(专门支持 IPv6))