前言
从本文开始介绍路由选择协议,也就是讨论路由表中的路由是怎么形成的。
本文内容
1 路由算法分类
从路由算法能否随网络的通信量或拓扑自适应地进行调整变化来划分,可以分为:静态路由选择策略和动态路由选择策略。
(1) 静态路由选择策略:即手工配每一条置路由。
优点:简单,开销小。
缺点:只适用小网络,难以适应网络状态的变化。
(2) 动态路由选择策略:又叫自适应路由选择。
优点:能较好适应网络状态的变化,适用于大网络。
缺点:实现复杂,开销大。
2 分层次的路由协议
由于互联网规模非常大,可以把互联网划分为许多较小的自治系统(autonomous system),记为AS。每个自治系统通常在相同管理控制下的路由器组成,在一个AS中的路由器都全部运行在同样的路由算法。各个AS之间彼此是互联的,因此一个AS中有一个或多个路由器用于不同AS之间的通信,即负责将本AS之外的目的地址转发分组,这些路由器称为网关路由器。
根据上面描述,可以将路由选择协议划分为两个大类:内部网关协议和外部网关协议。
(1) 内部网关协议IGP(Interior Gateway Protocol):即在一个自治系统内不使用的路由选择协议,常见的协议有RIP、OSPF协议。
(2) 外部网关协议EGP(External Gateway Protocol):用于实现不同自治系统之间通信的传递,这样的协议就是EGP协议,目前使用最多的就是BGP的版本4(BGP-4)。
自治系统之间的路由选择也叫域间路由选择,在自治系统之内的路由选择也叫域内路由选择。
3 内部网关协议RIP
RIP(Routing Information Protocol)协议——路由信息协议,是一种分布式的基于距离向量的路由选择协议,最大的优点是简单。
RIP协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录(距离向量)。RIP协议对距离的定义如下:
(1) 从一路由器到直接连接的网络的距离定义为1。
(2) 从一路由器到非直接连接的网络的距离定义为所经过的路由器数加1。
RIP协议的距离也称为跳数,RIP协议允许一条路径最多只能包含15个路由器。因此,距离等于16时即相当于不可达。
上图表示路由器R2的转发表,R2与网络Net2和Net3直接相连,所以距离为1,下一跳不需要经过任何路由器,所以是直接交付。R2到达网络Net1需要经过一个路由器即R1,所以距离为经过的路由器个数加1,即2。所以R2路由器维护的到各个网络的距离向量为(2,1,1,2)。
4 RIP协议特点
RIP协议是通过每个路由器要不断的和其他路由器交换路由信息,从而达到自治系统中所有节点都得到正确的路由信息。
RIP协议考虑了和哪些路由器交换信息、交换什么信息以及什么时候交换信息这三个问题,RIP协议特点:
(1) 仅和相邻路由器交换信息。
(2) 交换的信息是当前本路由器所知道的全部信息,即自己现在路由表。
(3) 按固定的时间间隔交换信息,如每隔30s或网络拓扑发生变化时。
路由器在刚开始工作时,它的路由表是空的,然后路由器就得出到直接相连的几个网络的距离(这些距离为1),接着每个络器也只是和自己相邻的路由器交换并更新信息。经过若干次交换后,所有路由器都会知道到达本自治系统汇总任何一个网络的最短距离和下一跳地址。
在上图的自治系统中,假设三个路由器都是刚开始工作,刚开始R1只有到网络1和2的距离信息,R2有网络2和3的距离信息,R3有网络3和4的距离信息。
第一轮交换:R1和R2交换,R2和R3交换,交换后R2从R1得到了到网络1的距离信息,从R3得到了到网络4的距离信息,即第一轮交换后R2得到了到本自治系统所有网络的距离信息。
第二轮交换:同样R1和R2交换,R2和R3交换,由于R2已经包含了所有的信息,所以经过此次交换后,R1和R3也就得到了到本自治系统所有网络的到达信息。
注:RIP协议不能在两个网络之间同时使用多条路由,只能有一条最短距离的路由。
4 距离向量算法
对每一个相邻路由器发送过来的RIP报文,会进行一下步骤:
(1) 路由器R1接收到其相邻路由器R2发送过来的报文,先修改此报文的所有项目:把“下一条”字段中的地址都改为R2,并把所有的“距离”字段的值加1。每个项目都有三个关键字段:到目的网络N,距离是d,下一跳路由器是X。
假设R1接收到R2的报文中某一项是:Net2,2,Y,意思是从R2到Net2的距离是2,并且下一步应该走Y路由器,那么对于R1来说,到Net2的最短走法是先到R2,在按照R2的走法,即从R1到Net2的距离是2 + 1 = 3,下一步走R2,即将 Net2,2,Y 下一跳字段改为R2,将距离字段加1。
(2) 对修改后的RIP报文中的每一项,进行以下步骤:
1) 若原来的路由表中没有网络N,则把该项目添加到路由表中。
还是上例,如果R1路由表中没有到Net2的路由,表明这是新的目的网络,应当加入到自己的路由表中。
2) 如果R1路由表中已经有目的网络N,这时查看下一跳的地址,如果下一跳地址是R2,则把收到的项目替换原路由表中的项目。
这里要替换的原因是:因为网络拓扑可能发生变化或新的节点加入网络,现在接收到的是最新的消息,要以最新的消息为准。
如果下一跳的地址不是R2,那么如果收到项目中距离小于路由表中的距离,则进行替换,否则什么也不做。
如果收到的项目距离小于路由表中的距离,说明有更短的路径,所有更换为更短的路径,如果比路由表中的路径还长,那么显然不用更新,如果距离相同,也没必要更新。
(3) 若3分钟还没有收到相邻路由器的更新路由表,则把此路由器记为不可达的距离,即把距离设置为16。
(4) 返回。
举个例子说明,已经路由器R6有以下的路由表,现在收到相邻的路由器R4发来的更新信息,试更新R6路由表。
第一步:修改R4发来的更新路由表,将所有的下一跳修改为R4,所有的距离加1,得出下表
第二步:将上表的每一项和R6路由器的转发表进行对比
(1) 第一行,目的网络为Net1,R6路由器转发表没有这个目的网路,因此需要把这一行添加到转发表。
(2) 第二行,转发表中有Net2,并且下一跳地址就是R4,所以需要更新。
(3) 第三行,转发表有Net3,并且下一跳地址不是R4,但是距离2小于转发表中的距离4,所以也需要更新。
5 RIP缺点
RIP存在一个问题是当网络出现故障时,要经过比较长的时间才能将磁信息传送到所有的路由器。这一特点叫做:好消息传得快,坏消息传得慢。
如下图所示,在正常的情况下,R1和R2交换信息,其中只画出了达到的网络1的表项。
如果路由器R1到网1的链路出现了故障,R1无法达到网1,于是路由器R1把到网1的距离改为16(表示网1不可达),因而R1路由表响应的项目变为 “1,16,直接交付”。但是,可能需要经过30s后R1,才能把更新信息发送给R2,,然而R2可能已经先把自己的路由表发送给了R1,其中有到达网1的这一项 “1,2,R1”。
R1收到R2的更新报文后,会误认为自己无法直接到达网1,但是可经过R2到达网1,于是把收到的路由信息 “1,2,R1” 修改为 “1,3,R2”,表明“我到网1的距离是3,下一跳的R2”。
同理,R2接收到又会更新自己的路由表为 “1,4,R1”,以为“我到网1的距离为4,下一跳为R1”....就这样一直更新下去,知道R1和R2到网1的距离为16时,R1和R2才知道网1是不可达的。所以,这就是:好消息传得快,坏消息传得慢的原因。
网友评论