图解各种路由协议

在互联网世界中,夹杂着复杂的LAN和广域网。然而,再复杂的网络结构中,也需要通过合理的路由将数据发送到目标主机。而决定这个路由的,正是路由控制模块。

路由控制的定义

IP地址与路由控制

互联网是由路由器连接的网络组合而成的。为了能让数据包正确到达目标主机,路由器必须在途中进行正确的转发。这种正确的方向转发数据所进行的处理就叫做路由控制或路由。

路由器根据路由控制表(Routing Table)转发数据包。它根据所收到的数据包中目标主机的IP地址与路由控制表的比较得出下一个应该接收的路由器。

静态路由与动态路由

路由控制分静态(Static Routing)和动态(Dynamic Routing)两种类型。

静态路由是指实现设置好路由器和主机并将路由信息固定的一种方法。而动态路由是指让路由协议在进行过程中自动的设置路由控制信息的一种方法。

静态路由的设置通常是由使用者手工操作完成的,静态路由给管理者带来了很大的负担,而且一旦路由器发生故障,基本上无法自动绕过发生故障的节点。

http://5b0988e595225.cdn.sohucs.com/images/20190103/b9d9ed9d359041c4b746e9bf30dfbb84.jpeg

使用动态路由的情况下,管理员必须设置好路由协议,其设定过程的复杂程度与具体要设置路由协议的类型有直接关系。例如在RIP情况下,基本上无需过多的设置。而根据OSPF进行较详细路由控制时,设置工作将会非常繁琐。

如果有一个新的网络被追加到原有的网络中时,只要在新增加网络的路由器上进行一个动态路由的设置即可。而不需要像静态路由那样,不得不在其他所有路由器上进行修改。对于路由器个数较多的网络,采用动态路由显然是一个能够减轻管理员负担的方法。

静态路由可以和动态路由组合起来使用。

动态路由的基础

动态路由如下图,会给相邻路由器发送自己已知的网络连接信息,而这些信息又像接力一样依次传递给洽谈路由器,直至整个网络都了解时,路由控制表也就制作完成了。而此时也就可以正确转发IP数据包了。

http://5b0988e595225.cdn.sohucs.com/images/20190103/10c01c97c47f482b9d82bc59acdba9a6.jpeg

路由控制范围

随着IP网路的发展,想要对所有网络统一管理时不可能的事。因此,人们根据路由控制的范围常使用IGPInterior Gateway Protocol)和EGPExterior Gateway Protocol)两种类型的路由协议。

自治系统与路由协议

制定自己的路由策略,并以此为准在一个或多个网络群体中采用的小型单位叫做自治系统(ASAutonomous System)或路由选择域(Routing Domain)。

http://5b0988e595225.cdn.sohucs.com/images/20190103/cb7fd876617e460ba0a7e63e89dbf133.jpeg

区域网络、ISP(互联网服务提供商)等都是典型的自治系统例子。在区域网络及ISP内部,由构造、管理和运维网络的管理员、运营者制定出路由控制相关方针,然后根据此方针进行具体路由控制的设定。

自治系统(路由选择域)内部动态路由采用的协议是域内路由协议,即IGP。而自治系统之间的路由控制采用的是域间路由协议,即EGP

IGPEGP

路由协议分为两大类。一类是外部网关协议EGP,另一类是内部网关协议IGPInterior Gateway Protocol)。

EGPIGP的关系与IP地址网络部分和主机部分的关系有相似之处。就像根据IP地址中的网络部分在网络之间进行路由选择、根据主机部分在链路内部进行主机识别一样,可以根据RGP在区域网络之间(或ISP之间)进行路由选择,也可以根据IGP在区域网络内部(或ISP内部)进行主机识别。

由此,路由协议被分为EGPIGP两个层次。没有EGP就不可能由世界上各个不同组织机构之间的通信。没有IGP机构内部也就不可能进行通信。

IGP中还可以使用RIPRouting Information Protocol,路由信息协议)、RIP2OSPFOpen Shortest Path First,开放式最短路径优先)等众多协议。与之相对,EGP使用的是BGPBorder Gateway Protocol,边界网关协议)协议。

路由算法

最有代表性的两种路由算法是:距离向量(Distance-Vector)算法和链路状态(Link-State)算法。

距离向量算法

距离向量算法(DV)是指根据距离(代价,相当于所要经过的路由器的个数)和方向决定目标网络或目标主机位置的一种方法。

http://5b0988e595225.cdn.sohucs.com/images/20190103/f217c08009bb4607a30c545421e6f5b7.jpeg

路由器之间可以互换目标网络的方向及其距离的相关信息,并以这些信息为基础制作路由控制表。这种方法在处理上比较简单,不过由于只有距离和方向的信息,所以当网络构造变得分外复杂时,在获得稳定的路由信息之前需要消耗一定时间(路由收敛),也极易发生路由循环等问题。

链路状态算法

链路状态算法是路由器在了解网络整体连接状态的基础上生成路由控制表的一种方法。该方法中,每个路由器必须保持同样的信息才能进行正确的路由选择。

距离向量算法中每个路由器掌握的信息都不相同。通往每个网络所耗的距离(代价)也根据路由器的不同而不同。因此,该算法的一个缺点不太容易判断每个路由器上的信息是否正确。

而链路状态算法中所有路由器持有相同的信息。对于任何一台路由器,网络拓扑都完全一样。因此,只要某一台路由器与其他路由器保持同样的路由控制信息,就意味着该路由器上的路由信息是正确的。只要每个路由器尽快地与其他路由器同步路由信息,就可以使路由信息达到一个稳定的状态。因此,即使网络结构变得复杂,每个路由器也能够保持正确的路由信息、进行稳定的路由选择。

链路状态算法付出的代价就是如何从网络代理获取路由信息表。这个国曾相当复杂,特别是在一个规模巨大又复杂的网络结构中,管理和处理代理信息需要高速CPU处理能力和大量的内存(为此,OSPF正致力于将网络分割为不同的区域,以减少路由控制信息)。

http://5b0988e595225.cdn.sohucs.com/images/20190103/c05ea158977a472496dd81fa92f90695.jpeg

主要路由协议

其中,由于RGP不支持CIDR,现在已经不再用作互联网的对外连接协议。

http://5b0988e595225.cdn.sohucs.com/images/20190103/933bc74388484f63b01649c4307ab28d.jpeg

RIP

RIPRouting Information Protocol)是距离向量的一种路由协议,广泛应用LAN。被BSD UNIX作为标准而提供的routedUNIX系统上的一个守护进程)采用了RIP,因此RIP得到了普及。

广播路由控制信息

RIP将路由控制信息定期(30秒一次)向全网广播。如果没有收到路由控制信息,连接就会被断开。不过,这有可能是由于丢包导致的,因此RIP规定等待5次。如果等了6次(180秒)仍未收到路由信息,才会真正关闭连接。

http://5b0988e595225.cdn.sohucs.com/images/20190103/25a9dfdfdca8461895fc477774a00dbd.jpeg

根据距离向量确定路由

RIP基于距离向量算法决定路径。距离(Metrics)的单位为跳数跳数是指所经过的路由器的个数。RIP希望尽可能少通过路由器将数据包转发到目标IP地址。如下图,根据距离向量生成距离向量表,再抽出较小的理由生成最终的路由控制表。如果距离相等,那么根据路由器的类型选择的路由也会不同,通常是随机酸则一个或是轮换使用。

http://5b0988e595225.cdn.sohucs.com/images/20190103/b46b52bb43494c50873d5ef39fbfab2b.jpeg

使用子网掩码时的RIP处理

RIP虽然不交换子网掩码信息,但可以用于使用子网掩码的网络环境。需要注意以下几点:

·         从接口的IP地址对应分类得出网络地址后,与根据路由控制信息流过此路由器的包中的IP地址对应的分类得出的网络地址进行比较。如果两者网络地址相同,那么就以接口的网络地址长度为准。

·         如果两者网络地址不同,那么以IP地址的分类所确定的网络地址长度为准。

http://5b0988e595225.cdn.sohucs.com/images/20190103/815003befae14fd38fb9f589ae1f5cf1.jpeg

RIP中路由变更时的处理

RIP的基本行为可归纳为:

·         将自己所知道的路由信息定期进行广播。

·         一旦认为网络被断开,数据将无法流过此路由器,其他路由器也就可以得知网络已经断开。

RIP2

RIP2是在RIP使用过程中改良的一种协议。增加了几个新的特点:使用多播、支持子网掩码、路由选择域、完毕路由标志、身份验证密钥。

OSPF

OSPFOpen Shortest Path First)是根据OSI IS-IS协议而提出的一种链路状态路由协议。由于采用链路状态类型,所以即使网络中有环路,也能够进行稳定路由控制。

OSPF支持子网掩码。由此,曾经在RIP中无法实现可变长度子网构造的网络路由控制称为实现。

为了减少网络流量,OSPF还引入了区域这一概念。区域是将一个自治网络划分为若干个更小的范围,可以减少路由协议之间不必要的交换。

OSPF可以针对IP首部中的区分服务(TOS)字段,生成多个路由控制表。

OSPF是链路状态型路由协议

OSPF为链路状态型路由器。路由器之间交换链路状态生成网络拓扑信息,然后再根据这个拓扑信息生成路由控制表。

RIP的路由选择,要求途中所经过的路由器个数越少越好。而OSPF可以给每条链路(实际上,可以为连到该数据链路[子网]的网卡设置一个代价,而这个代价只用于发送端,接收端不需要考虑)赋予一个权重(也叫代价),并始终选择一个权重最小的路径作为最终路由。就是说OSPF以每个链路上的代价作为度量标准,始终选择一个总的代价最小的一条路径。

RIP是选择路由器个数最少的路径,而OSPF是选择总的代价较小的路径

OSPF基础知识

OSPF中,把连接到同一个链路的路由器称为相邻路由器(Neighboring Router)。在一个相对简单的网络结构中,例如每个路由器仅跟一个路由器互连接时(在专线网络中,路由器之间采用PPP相连),相邻路由器之间可以交换路由信息。但是在一个比较复杂的网络中,例如在同一个链路中加入了以太网或FDDI等路由器时,就不需要在所有相邻的路由器之间都进行控制信息的交换,而是确定一个指定路由器(Designated Router)并以它为中心交换路由信息即可。邻接路由器中相互交换路由信息的关系叫做邻接(Adjancency)。

RIP中包的类型只有一种。它利用路由控制信息,一边确认是否连接了网络,一边传送网络信息。但是这种方式的缺点,网络的个数越多,每次所要交换的路由控制信息就越大。而且当网络已经处于比较稳定的、没有什么变化的状态时,还要定期交换相同的路由控制信息,这在一定程度上浪费了带宽。

而在OSPF中,根据作用的不同可以分为5种类型的包:

通过发送问候(HELLO)包确认是否连接。每个路由器为了同步路由控制信息,利用数据库描述(Database Deion包相互发送路由摘要信息和版本信息。如果版本比较老,则首先发出一个链路状态请求(Link State Request)包请求路由控制信息,然后由链路状态更新(Link State Update)包接收路由状态信息,最后再通过链路状态确认(Link State ACK packet包通知大家本地已经接收到路由控制信息。

这样的机制,OSPF可以减少网络流量,还可以达到迅速更新路由信息的目的。

OSPF工作原理概述

OSPF中进行连接确认的协议叫做HELLO协议。

LAN中每10秒发送一个HELLO包。如果没有HELLO包到达,则进行连接是否断开判断(可自定义)。具体为,允许空等3次,直到第4次(40秒后)仍无任何反馈就认为连接已经断开。之后在进行连接断开或者恢复连接操作时,由于链路状态发生了变化,路由器会发送一个链路状态更新包(Link State Update Packet)通知其他路由器网络状态的变化。

链路状态更新包所要传达的消息大致分为两类:一是网络LSANetwork Link State Adevertisement),另一个是路由器LSARouter Link State Adevertisement)。

网络LSA是以网络为中心生成的信息,表示这个网络与哪些路由器相连接。而路由器LSA是以路由器为中心生成的信息,表示这个路由器与哪些网络相连接。

如果这两种信息主要采用OSPF发送,每个路由器都可以生成一个可以表示网络结构的链路状态数据库。可以根据这个数据库、采用Digkstra算法(最短路径优先算法)生成相应的路由控制表。

相比距离向量,上述路由控制表更加清晰,还可以有效地减低无线循环问题的发生。不过,当网络规模逐渐越大时,最短路径优先算法的处理时间就会变得越长,对CPU和内存的消耗也就越大。

将区域分层化进行细分管理

链路状态型路由协议的潜在问题在于,当网络规模越来越大时,表示链路状态的拓扑数据库就变得越来越大,路由控制信息的计算就越困难。OSPF为了减少计算负荷,引入了区域的概念。

区域是指将连接在一起的网络和主机划分成小组,使一个自治系统(AS)内可以拥有多个区域。不过具有多个区域的自治系统必须要有一个主干区域(Backhome Area)(主干区域的ID0,逻辑上只允许它有1个,实际在物理上又可以划分为多个),并且所有其他区域都与这个主干区域相连接(如果网络的实际物理构造与此说明不符,需要采用OSPF的虚拟链路功能设置虚拟的主干或区域)。

连接区域与主干区域的路由器称作区域边界路由器;而区域内部的路由器叫做内部路由器;只与主干区域内连接的路由器叫做主干路由器;与外部相连接的路由器就是AS边界路由器。

每个区域内的路由器都持有本区域网络拓扑的数据库。然而,关于区域之外的路径信息,只能从区域边界路由器那里获知它们的距离。区域边界路由器也不会将区域内的链路状态信息全部原样发给其他区域,只会发送自己到达这些路由器的距离信息,内部路由器所持有的网络拓扑数据库就会明显变小。

话句话,就是指内部路由器只了解区域内部的链路状态信息,并在该信息的基础上计算出路由控制表。这种机制不仅可以有效地减少路由控制信息,还能减轻处理的负担。

BGP

BGPBorder Gateway Protocol),边界网关协议是连接不同组织机构(或者说连接不同自治系统)的一种协议。因此,它属于外部网关协议(EGP)。具体划分,它主要用于ISP之间相互连接的部分。只有BGPRIPOSPF共同进行路由控制,才能够进行整个互联网的路由控制。

BGPAS

RIPOSPF中利用IP的网络地址部分进行着路由控制,然而BGP则需要放眼整个互联网进行路由控制。BGP的最终路由控制表由网络地址和下一站的路由器组来表示,不过它会根据所要经过的AS个数进行路由控制。

ISP、区域网络等会将每个网络域配成一个个自治系统(ASAutonomous System)进行管理。它们为每个自治系统分配一个16比特的AS编号。BGP就是根据这个编号进行相应的路由控制。

BGP是路径向量协议

根据BGP交换路由控制信息的路由器叫做BGP扬声器。BGP扬声器为了在AS之间交换BGP信息,必须与所有AS建立对等的BGP连接。

BGP中数据包送达目标网络时,会生成一个中途经过所有AS的编号列表。这个表格也叫作AS路径信息访问列表(AS Path List)。如果针对同一个目标地址出现多条路径时,BGP会从AS路径信息访问列表中选择一个较短的路由。

在做路由选择时使用的度量,RIP中表示为路由器个数,OSPF中表示为每个子网的成本,而BGP则用AS进行度量标准。

MPLS

如今,在转发IP数据包的过程中除了使用路由技术外,还在使用标记交换技术。路由技术基于IP地址中最长匹配原则进行转发,而标记交换则对每个IP包都设定一个叫做标记的值,然后根据这个标记再进行转发。标记交换技术中最具代表的就是多协议标记交换技术,MPLSMulti Protocol Label Switching)。

MPLS的标记不像MAC地址直接对应到硬件设备。因此,MPLS不需要具备以太网或ATM等数据链路层协议的作用,而只需要关注它与下面一层IP层之间的功能和协议即可。

由于基于标记的转发通常无法在路由器上进行,所以MPLS也就无法被整个互联网采用。

MPLS的网络基本动作

MPLS网络中实现的MPLS功能的路由器叫做标记交换路由器(LSRLabel Switching Router)。MPLS正是在LER上对数据包进行追加标记和删除标记的操作。

MPLS的优点

第一个是转发速度快。通常,路由器转发IP数据包时,首先要对目标地址和路由控制表中可变长的网络地址进行比较,然后从中选出最长匹配的路径才能进行转发。MPLS使用固定长度的标记信息,可通过高速硬件实现转发。

第二个有时在于利用标记生成虚拟的路径,并在它的上面实现IP等数据包的通信。