《TCP/IP详解》笔记——动态选路协议

本系列是针对《TCP/IP详解》的笔记总结,包含各章节的主要内容。有助于帮助你快速了解并掌握TCP/IP协议的相关内容。

目录

 1、定义
 2、RIP
 3、RIP版本2
 4、OSPF
 5、BGP

1、定义

 通过网络中各路由器之间相互传递路由信息,利用收到的路由信息动态更新路由器表的协议。 动态选路并不改变内核在IP层的选路方式(选路方式是由守护进程的程序决定的)。这种选路方式称为选路机制(routing mechanism)。内核搜索路由表,查找主机路由、网络路由以及默认路由的方式并没有改变。仅仅是放置到路由表中的信息改变了—当路由随时间变化时,路由是由路由守护程序动态地增加或删除,而不是来自于自引导程序文件中的route命令(查看路由信息)。
 动态选路协议主要包括RIP、OSPF和BGP协议。

2、RIP

2.1 概述

优点:协议简单,容易实现,网络拓扑稳定,其工作特性比较理想。
缺点:网络拓扑变化时,收敛较慢,可能出现路由不一致现象,从而导致数据包转发混乱。此外,链路度量较简单,不适合在大规模的网络中运行。

2.2 协议格式

这里写图片描述

 使用IP地址时RIP报文格式如下:
这里写图片描述

  • 令字段为1表示请求,2表示应答,还有两个舍弃不用的命令(3和4),两个非正式的命令:轮询(5)和轮询表项(6);
  • 请求表示要求其他系统发送其全部或部分路由表;
  • 应答则包含发送者全部或部分路由表;
  • 版本字段通常为1,而第2版RIP将此字段设置为2;
  • 紧跟在后面的20字节指定地址系列(address family)(对于I P地址来说,其值是2)、I
    P地址以及相应的度量;RIP的度量是以跳计数的。

 采用这种20字节格式的RIP报文可以通告多达25条路由;上限25是用来保证RIP报文的总长度为2 0×25 + 4 = 504,小于512字节;由于每个报文最多携带25个路由,因此为了发送整个路由表,经常需要多个报文;

2.3 工作原理

 RIP协议每30秒向相邻路由器发送一次路由更新信息,同时监听来自网络中的相邻路由器的路由更新信息,从而实现对本地路由表的动态维护,以确保IP层发送数据时选择正确的路由。针对路由表中某一条路由信息,如果180秒内没有接收到新的关于它的路由更新信息,则将其标记为失效,即跳数值标记为16;再经过120秒后,如果仍然没有收到更新信息,则将该条失效信息删除。
 RIP协议中对“距离”的定义为:从一个路由器到直接连接的网络的距离定义为1,从一个路由器到非直接连接的网络的距离定义为所经过的路由器数目加1。因此,这里的“距离”也称为“跳数”,因为每经过一个路由器,跳数就加1。
依据距离向量算法,当网络中的路由器收到相邻路由器的一个RIP报文后,执行如下操作:

  • 先修改RIP报文中的所有条目,将“下一跳”字段中的地址都改为发出该RIP报文的路由器的地址,并将所有的“距离”字段的值加1;
  • 对修改后的RIP报文中的每一个条目,重复以下步骤:若条目中的目的网络不在路由表中,则将该条目添加到路由表中。否则,若“下一跳”字段给出的路由器地址是相同的,则用收到的条目替换原路由表中的条目。否则,若收到的条目中的距离小于路由表中条目的距离,则进行更新。否则,什么都不做;
  • 若超过3分钟还没有收到相邻路由器更新路由表的信息,则将此相邻路由器记为不可达的路由器,即将距离置为16(距离16表示不可达)。

3、RIP版本2

这里写图片描述

  • RFC 1388 [Malkin1993a]中对RIP定义进行了扩充,通常称其结果为RIP-2;这些扩充并不改变协议本身,而是利用上图中的一些标注为“必须为0”的字段来传递一些额外的信息;如果RIP忽略这些必须为0的字段,那么,RIP和RIP-2可以互操作;
  • 选路域(routingdomain)是一个选路守护程序的标识符,它指出了这个数据报的所有者;在一个Unix实现中,它可以是选路守护程序的进程号;该域允许管理者在单个路由器上运行多个RIP实例,每个实例在一个选路域内运行;
  • 选路标记(routing tag)是为了支持外部网关协议而存在的,它携带着一个EGP和BGP的自治系统号;
  • 每个表项的子网掩码应用于相应的IP地址上;下一站IP地址指明发往目的IP地址的报文该发往哪里;该字段为0意味着发往目的地址的报文应该发给发送RIP报文的系统;
  • RIP-2提供了一种简单的鉴别机制:可以指定RIP报文的前20字节表项地址系列为0xffff,路由标记为2;表项中的其余16字节包含一个明文口令;
  • RIP-2除了广播外,还支持多播;这可以减少不收听RIP-2报文的主机的负载;

4、OSPF

这里写图片描述

工作原理:
 OSPF协议的基本思路如下:在自治系统中每一台运行OSPF的路由器收集各自的接口、邻接信息称为链路状态,通过Flooding算法在整个系统广播自己的链路状态,使得在整个系统内部维护一个同步的链路状态数据库,根据这一数据库,路由器计算出以自己为根,其它网络节点为叶的一根最短的路径树,从而计算出自己到达系统内部各可达的最佳路由。它处理在一个自治系统中,路由器的网络的路由表信息 。
 OSPF路由协议是一种典型的链路状态(Link—state)的路由协议,一般用于同一个路由域内。在这里,路由域是指一个自治系统(Autonomous System),即AS,它是指一组通过统一的路由政策或路由协议互相交换路由信息的网络。在这个As中,所有的OSPF路由器都维护一个相同的描述这个As结构的数据库,该数据库中存放的是路由域中相应链路的状态信息,OSPF路由器正是通过这个数据库计算出其OSPF路由表的。
 作为一种链路状态的路由协议,OSPF将链路状态广播数据包LSA(LinkStateAdvertisement)传送给在某一区域内的所有路由器,这一点与距离矢量路由协议不同。运行距离矢量路由协议的路由器是将部分或全部的路由表传递给与其相邻的路由器。

5、BGP

    BGP(Border Gateway Protoc01)边界网关协议是一种路由协议,用于交换因特网自治域系统间的路由信息,其主要功能是在系统之间交换网络可达信息(NetworkLayerReachableInformation,简称NLRI)。
  BGP协议是一种路径向量协议,在一定程度上综合了距离向量和链路状态算法的优点。BGP认为自治域内的路由选择由IGP完成,并不对自治域内的路由作任何假设。BGP不需要所有自治域都运行同样的内部路由协议,对底层的网络拓扑没有任何限制,通过BGP的Update消息交换的信息已经足够建立一个自治域连接图。有了自治域连接图,就能够消除路由环路,并在自治系统内应用路由策略
这里写图片描述
 BGP协议运行在TCP之上,使用TCP端口179作为它的传输端口。通过TCP建立可靠的传输机制,在BGP邻居(对等体)之间交换信息。在BGP的对等体交换信息之前,BGP首先建立邻居关系。BGP的对等体使用一个特殊的IP地址来配置,而不是动态发现BGP的邻居。建立邻居关系后,BGP使用周期的KeepAlive消息来确认BGP邻居的可访问性。BGP消息包括OPEN、UPDATE、NOTIFICATION和KEEPALIVE四种。

  • BGP处于Idle状态,当收到bgpStart件,初始化所有BGP资源,初始化到对端的TCP接。当侦听到远端连接请求,转到Connect状态;
  • Connect状态下,若TCP连接成功,发送EN消息到对端,转到OpenSent。如果TCP连接败,转到Active状态;
  • 在Active状态,BGP初始化TCP连接建立居关系,若连接成功,发送OPEN消息,转到enSent状态。若连接超时,到Connect状态;
  • 在OpenSent状态,若收到BGP对等体发来确的OPEN消息,发送KEEPALIVE消息,转到enConfirm状态。若收到不正确OPEN消息,转Idle状态。若TCP连接断开,转到Active状态;
  • 在OpenConfirm状态,若收到对端EPALIVE消息,到Established状态。若出现错,发送NOTIFICATION消息,改变状态到Idle;
  • 在Established状态,BGP和对等体之间交UPDATE、NOTIFICATION和KEEPALIVE消息。出现错误,发送NOTIFICATION消息,转到Idle。

 BGP邻居关系建立后开始交换完整的BGP由表,之后当路由有变化时发送路由更新操作即UPDATE消息。BGP不要求周期性地刷新路由,只有周期性的KEEPALIE信息在形成BGP邻关系的路由器之间发送,以保证BGP邻居关系维持。如果在。路由信息交换的过程中发生错误,其中的一台路由器向邻居发送NOTIFICATION消息指出错误的类型并关闭BGP连接。

猜你喜欢

转载自blog.csdn.net/xk7298/article/details/80560796