计算机网络:网络层与IP协议(3)

路由选择协议

路由选择协议的核心是路由算法,即获得路由表中各项目的算法。

1.理想路由算法

一个理想的路由选择算法具有如下特点:

  1. 算法必须是正确的完整的。分组沿着路由表指引的路由,一定能达到目的网络和目的主机。
  2. 算法应当在计算上是简单的。路由选择算法不应使网络通信量增加太多的额外开销
  3. 算法能够适应通信量和网络拓扑的变化,要有自适应性。当通信量变化或链路发生故障时,算法能均衡负载、改变路由。
  4. 算法应当具有稳定性。在通信量和拓扑相对稳定的情况下,路由算法应收敛于一个可以接受的解,而不是路由不停变化。
  5. 算法应当是公平的。路由选择算法对所有用户(除少数高优先级用户)都是平等的
  6. 算法应当是最佳的。算法应当使分组平均时延最小、而网络吞吐量最大
    但最佳并不总是最重要的,有时也要兼顾可靠性等其它性能。最佳是相对于某一种特定要求下得出较为合理的选择。

一个实际的路由算法,应尽可能接近理想路由算法。在不同条件下,对这六个方面有不同的侧重。

2.路由表的由来

根据路由算法的自适应性可以将算法分为静态路由选择策略动态路由选择策略
静态路由选择策略的特点是简单、开销较小,但不能及时适应网络状态的变化
动态路由选择策略的特点是可以较好地适应网络状态的变化实现起来较为复杂、开销较大
一个路由表的由来有如下步骤:

  1. 静态配置:将电脑与路由器的console端口连接,利用软件对路由器进行配置
  2. 动态学习:每个路由器定时将自己的路由表广播给邻居,交换路由表,以根据通信量和拓扑状态更新路由表;

通常,使用静态配置设置直接连接路由器的网段的表项;再通过动态学习获取间接连接的表项。

3.分层次的路由选择协议

互联网采用的路由选择协议主要是自适应的分布式路由选择协议,因为:
● 互联网的规模非常大,如果不进行分层,每个路由器的路由表将变得非常大。
● 很多单位不希望外界了解本单位网络的布局细节和使用协议。

因此,可以将互联网划分为多个较小的自治系统AS。自治系统是在单一技术管理下的一组路由器,这些路由器使用一种自治系统内部的路由协议和共同度量。一个自治系统对外表现出一个单一的、一致的路由选择策略
目前的互联网中,一个大的ISP就是一个自治系统。互联网将路由选择协议划分为:

  1. 内部网关协议IGP:在一个自治系统内部使用的路由选择协议,常用的有RIP协议OSPF协议
  2. 外部网关协议EGP:一个数据报传递到自治系统边界,在自治系统之间使用的路由选择协议。常用的是BGP-4协议

自治系统内部的路由选择叫做域内路由选择;自治系统之间的路由选择叫做域间路由选择

4.内部网关协议RIP

RIP协议是IGP中最先得到广泛使用的协议,中文名为路由信息协议
RIP协议是一种分布式的,基于距离向量的路由选择协议,最大的优点是简单

● 工作原理

RIP协议要求路由器维护一个从自身到其它每一个目的网络的距离记录,这一组距离称为距离向量距离定义如下:
● 与路由器直接相连的网络,距离定为1;
● 与路由器不直接相连的网络,距离为经过的路由器数再加1。
因此,距离也叫做跳数。RIP协议允许的最大距离为15,即路径中最多有15个路由器(包括源路由器)。距离等于16时,相当于不可达。因此RIP协议只适用于小型互联网
此外,RIP协议不能在两个网络间同时使用多个路由。当前使用的路由必须是最佳路由,即距离最短的路由。

RIP协议的特点是:

  1. 仅和相邻路由器交换信息
  2. 路由器交换的信息是当前本路由器所知道的全部信息,即自己当前的路由表
  3. 固定的时间间隔交换路由信息

路由器刚开始工作时,路由表是空的。随后,路由表得到几个直接相连的网络信息,距离为1。接着,每一个路由器和相邻的路由器交换并更新路由信息。经过若干次的更新后,路由器最终会知道到达本自治系统任意一个网络的最短路径下一跳地址
RIP协议一般情况下可以收敛,且收敛较快。收敛是指自治系统中所有结点都得到正确的路由选择。

● 距离向量算法

路由表中最重要的信息就是到某个网络的最短距离经过的下一跳地址。路由表更新的原则是找出最短路径,这种更新算法又称为距离向量算法。下面是RIP协议使用的距离向量算法:

if 收到地址为X的路由器发来的RIP报文:
#1
	for 记录 in RIP报文:
		记录.下一跳地址 = X					#X可以到目的网络,本路由器经过X也可到目的网络
		记录.距离 += 1						#本路由器到X的距离为1,从X到目的网络距离加1,就等于本路由器到目的网络距离
#2
	for 记录 in RIP报文:
		if 记录.目标网络 not in self.路由表:	
			self.路由表.append(记录)			#新的目的网络,应该加入路由表中
		elif 原记录.下一跳地址 == X:
			self.路由表.replace(原记录,记录)	#最新的路由信息,因为网络状况可能发生改变,应以新信息为准,无论距离增大还是减小
		elif 记录.距离 < 原记录.距离:
			self.路由表.replace(原记录,记录)	#更短的距离,应当更新
		else:
			pass							#目标网络已经在路由表中,且既不是新信息,又不是更短距离,没有必要更新
#3
elif 没有收到路由器X发来的报文 and 时间超过3分钟:
	X.距离 = 16								#三分钟未收到相邻路由器的信息,可能该链路故障,将距离设置为16,即不可达
#4
return										#结束该路由器发来RIP报文的处理
● 报文格式

现在较新的RIP协议版本是RIP2。RIP2的报文格式如下:
RIP2报文由首部路由两部分组成。
首部占4字节,命令字段指出报文的意义,如1表示请求路由信息报文,2表示请求路由信息响应报文与路由更新报文。
版本字段指出当前的版本,目前使用的协议为RIP2,所以该字段为2。剩余的字段全为0,补齐4字节的首部。
路由部分占20字节,由若干路由信息组成。地址组标识符指明使用的地址协议,如IP地址就为2。路由标记填入自治系统号ASN,区别不同自治系统的报文。后面的字段指明网络地址子网掩码下一跳路由器地址以及到此网络的距离
一个RIP报文最多可包括25个路由部分,RIP报文的最大长度为504。
在这里插入图片描述

● 优缺点

RIP协议的最大优点:实现简单、开销较小,收敛较快。
RIP协议的缺点:

  1. 限制了网络的规模;
  2. 路由器交换的信息是完整的路由表,随着网络规模增大,开销也会增加;
  3. 坏消息传播的慢:当一个网络出现故障时,路由器之间互相交换旧消息,经过较长时间才能将信息传递给所所有路由器。
    在这里插入图片描述

5.内部网关协议OSPF

OSPF协议全称开放最短路径优先协议,OSPF协议的原理简单,但实现较为复杂。它使用了Dijkstra提出的最短路径算法SPF

● 基本特点

OSPF协议的主要特征就是使用分布式的链路状态协议。OSPF有三个要点:

  1. 向本自治网络的所有路由器发送信息,使用洪泛法
  2. 发送的信息是本路由器与相邻路由器的链路状态。链路状态说明本路由器与哪些路由器相邻,以及该链路的度量度量可以表示费用、距离、时延、带宽等信息,由网络管理人员决定。有时也称度量为代价
  3. 只有当链路状态发生变化时,才发送信息。

由于路由器之间交换链路状态信息,所有路由器都能建立一个链路状态数据库,其实际上就是全网拓扑结构图。拓扑结构图在本自治系统内是一致的,称为链路状态数据库的同步
每一个路由器都根据链路状态数据库,通过Dijkstra算法,构造自己的路由表
由于使用洪泛法所有路由器发送信息,OSPF的链路状态数据库的更新较快,各个路由器也能及时更新其路由表。OSPF的一个重要优点就是更新过程收敛的快
在这里插入图片描述
为了使OSPF能够应用于较大的自治系统,OSPF将一个自治系统划分为若干个更小的区域。每个区域都有一个32位的区域标识符,用点分十进制法表示。划分区域的好处就是将洪泛法的范围局限在一个区域内,减少了整个网络上的通信量。
OSPF使用层次结构的区域划分。一个区域内部的路由器只知道区域内部的完整网络拓扑。
在上层的区域叫主干区域,标识符为0.0.0.0;主干区域用于连通其它下层区域。从其它区域来的信息都来自区域边界路由器。每个区域都至少有一个区域边界路由器
在主干区域内的路由器叫主干路由器,一个主干路由器可以同时是区域边界路由器
主干区域内还有一个路由器专门和其它自治区域交换信息,叫做自治系统边界路由器

除此以外,OSPF还有以下特点:
● 允许管理员指派不同的代价,对不同类型的业务可计算出不同的路由
● 如果有多条代价相同的路径,可以将通信量分配给这几个路径,叫做多路径间的负载平衡
● 所有路由器间交换的OSPF分组都具有鉴别功能,保证仅在可信赖的路由器间交换链路状态信息;
● 支持可变长度的子网划分无分类编址CIDR
● 每一个链路状态都携带32位长的序号,序号越大状态越新。

● 数据报格式

OSPF协议不用UDP而直接使用IP数据报传送。OSPF构成的数据报很短,可减少通信量,且不必切片发送。
在这里插入图片描述
首部由24个字节组成,数据部分是五种类型分组的一种。首部各字段为:
版本字段:当前的版本为2;类型字段:指明数据部分的分组类型;分组长度字段:包括首部在内的分组长度,字节为单位。
路由器标识符:发送该分组的路由器IP地址;区域标识符:分组属于的区域标识符;校验和:检验整个OSPF数据报差错。
鉴别类型:目前只有两种,0为不用,1为口令;鉴别:鉴别类型为0时全为0;为1时填入8字符的口令。

● 分组类型

OSPF共有以下五种分组类型:

  1. 问候分组:发现和维持邻站的可达性;
  2. 数据库描述分组:向邻站给出自己的链路状态数据库中所有链路状态的摘要信息;
  3. 链路状态请求分组:请求对方发送某些链路状态项目的详细信息;
  4. 链路状态更新分组:用洪泛法对全网更新链路状态;
  5. 链路状态确认分组:对链路更新分组的确认。

OSPF规定相邻两个路由器每隔10秒交换一次问候分组,以知道哪些邻站是可达的。若40秒没有收到某个邻站的问候分组,认为该邻站不可达,立即修改并更新链路状态,重新构建路由表。
2-5这四个分组都是用于进行链路状态数据库的同步,即不同路由器间的链路状态数据库相同。两个同步的路由器是完全邻接的

6.外部网关协议BGP-4

● 外部网关协议的提出

在不同自治系统之间的路由选择不能使用前面的RIP或OSPF,原因主要是:

  1. 互联网的规模太大,自治系统间的路由选择非常困难。
  2. 自治系统间的路由选择必须考虑有关策略。

由于以上原因,我们需要单独的外部网关协议,目前使用较多的是BGP-4协议,也称边界网关协议

● BGP协议

BGP协议力求寻找一条能够到达目的网络且比较好的路由,而非寻找最佳路由;它使用路径向量路由选择协议
配置BGP时,每个自治系统都需要一个BGP发言人,一般两个BGP发言人连接在一起,往往是BGP边界路由器
在这里插入图片描述
BGP发言人想要交换信息,需要先建立TCP连接,然后在连接上交换BGP报文建立BGP会话,通过会话交换路由信息。
使用TCP连接能提供可靠服务,简化路由选择协议,两个BGP发言人彼此称为对方的邻站对等站
BGP发言人必须同时使用自治系统内部的内部网关协议。
BGP支持CIDR,因此BGP路由表也包括目的网络前缀,下一跳路由器,以及经过的自治系统序列。

● 交换可达性信息

BGP交换的网络可达性信息是要到达目的网络需要经过的一系列自治系统。BGP发言人在交换之后,需要从路由信息中选择到达各自治系统的较好的路由。
在这里插入图片描述
上图中,AS2发出通知:到达网络N1-4可经过AS2;主干网AS1再发出通知:到达N1-4可沿路径AS1,AS2。AS1也可发出另一通知:到达网络N5-7可沿路径AS1,AS3
BGP协议交换路由信息的结点数量级是自治系统个数的数量级,比自治系统中的网络数少很多。在自治系统之间找一条好的路径,就是要找一个正确的BGP发言人。每一个自治系统中BGP数量很少,使得自治系统间路径不至于过分复杂。
由于采用了路径向量信息,可以避免产生兜圈子的路由。

● 报文分类

RFC-4271标准规定了BGP的四种报文:

  1. OPEN报文:与相邻发言人建立关系,通信初始化;
  2. UPDATE报文:报告某一路由的信息,列出要撤销的多条路由;
  3. KEEPALIVE报文:周期性证实邻站连通性;
  4. NOTIFICATION报文:发送检测到的差错。
● 报文格式

四种BGP报文具有同样的通用首部,长度为19字节,分为三个字段:标记字段为16字节长,鉴别收到的BGP报文,不使用鉴别时全为1;长度字段指出包括首部在内的BGP报文长度,单位为字节,范围为19~4096;类型报文值的范围为1~4。
在这里插入图片描述
OPEN报文共6字段,为版本本自治系统号保持时间BGP标识符可选参数长度可选参数
UPDATE报文共5字段,为不可行路由长度撤销的路由路径属性总长度路径属性网络层可达性信息
KEEPALIVE报文只有19字节长的通用首部。
NOTIFICATION报文共3字段,为差错代码差错子代码差错数据

7.路由器的构成

● 路由器的结构

路由器是一个具有多个输入端口多个输出端口专用计算机,是互联网中的关键设备
路由器的任务是转发分组,将收到的分组按照目的地址,从输出端口转发到下一跳路由器。
下图是典型的路由器构成框图:
在这里插入图片描述
路由器的结构可以划分为两大部分:路由选择分组转发
路由选择部分又称控制部分,核心构件是路由选择处理机,其任务是根据路由选择协议构造出路由表,并定时与其它路由器交换路由信息,从而不断更新和维护路由表。
分组转发部分由三部分组成:交换结构输入端口输出端口
上图的输入和输出端口都有三个方框,其中1、2、3分别表示物理层、数据链路层和网络层的处理模块。物理层接收比特流,数据链路层接收传送分组的帧,去掉帧的首部和尾部后送入网络层。若分组是交换路由信息的分组,就交给路由选择处理机,否则根据目的地址查找转发表,根据得出的结果,分组经交换结构送到合适的输出端口。

下面的图片展示了分组在网络层处理中排队的过程:当网络层的处理速度低于分组的到达速度时,后到的分组必须在队列中排队等待,产生一定的时延。网络层的处理模块中必须要有一个缓冲区,供实质上是一个队列,供分组排队等待。
在这里插入图片描述
在输出端口中,当交换结构到达分组的速度大于分组发送的速度时,也会产生排队现象。
在这里插入图片描述
若分组处理的速率赶不上分组进入队列的速率,必然导致缓冲区的存储空间逐渐减少到0。后面再进入队列的分组由于没有空间存储,只能被丢弃,导致分组丢失

● 交换结构

交换结构是路由器的关键构件,他将分组从一个输入端口转移到某个合适的输出端口。有三种常用的交换方法:

  1. 通过存储器
    在这里插入图片描述
    当收到一个分组时,中断并通知路由选择处理机,并将分组从输入端口复制到存储器中;
    路由选择处理机提取目的地址并查找路由表;
    再将分组复制到合适的输出端口中。
    现代的存储器交换路由器采用了共享存储器的方法,目的地址的查找和分组在输入端口的缓存中进行。
  2. 通过总线
    在这里插入图片描述
    数据报从输入端口通过共享的总线直接传送到合适的输出端口,而不需要路由选择处理机的干涉。
    由于总线是共享的,同一时间只能有一个分组在总线上传送,若新到的分组发现总线忙,就会被阻塞,必须排队等待。
    该类路由器的转发带宽受总线带宽的限制。
    现代的总线带宽已经提高每秒吉比特的速率,因此现代的总线交换路由器很多也采用这种交换方式。
  3. 通过互联网络
    在这里插入图片描述
    又称为纵横交换结构,它有2N条总线,可以使N个输入端口和N个输出端口相连,取决于交叉节点是使水平总线垂直总线接通还是断开。
    当收到一个分组时,将它发送到该输入端口的水平总线上。
    若要转发的输出端口的垂直总线是空闲的,将水平总线和垂直总线接通,然后将分组转发到该输出端口;
    若垂直总线已被占用,后到的分组必须在输入端口排队。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章