单播路由选择协议(RIP、OSPF和BGP)

代价和度量

通过每一个网络指派一个代价。我们称这个代价为度量。

路由选择协议

由于需要动态的路由表,因此就产生了路由选择协议。路由选择协议是一些规则和过程的集合,使得在互联网中的各个路由器能够彼此互相通知变化信息,路由选择协议使路由器能够共享它们所知道的有关互联网或邻站的情况。这种信息的共享使得在旧金山的路由器能够知道得克萨斯的网络故障情况。路由选择协议还包括一些过程,用来合并从其他路由器收到的信息。

域内和域问路由选择

今天的互联网可以是非常庞大的,以至于仅使用一种路由选择协议还无法处理更新所有路由器的路由表的任务。为此,互联网斋要戈1J分为多个自治系统。一个自治系统Cautonomoussystem,AS)就是在一个管理机构管辖下的一组网络和路由器。在自治系统内部的路由选择称为域内路由选择。在自治系统之间的路由选择称为域间路由选择。每一个自治系统可以选择一个或多个域内路由选择协议来处理本自治系统内部的路由选择。但是,处理自治系统之间的路由选择只能使用一种域间路由选择协议。

距离向量路由选择—— bellman-ford算法

算法介绍:
虽然Bellman-Ford算法的原理非常简单且容易理解,但是算法本身看起来却是循环的,那些邻站又是怎样计算出它们与终点之间的最短路径的呢?为了解决这个问题,要使用循环语句。

从第4行到第10行是开始时的初始化过程。路由器创建一个初始的路由表,它只能用于将分组转发到与它的接口直接相连的网络。对于路由表中的每一个表项,它都要向每一个邻站发送一个记录,这个记录中只有两个字段:目的地址和代价。
每当路由表收到来自邻站的一个记录,就要更新自己的路由表。在更新之后,路由器又要将路由表中的每一个表项发送给它的每一个邻站,以便这些邻站各自完成更新。

图解:
下图所示为一个AS的初始路由表。请注意,这幅图并不是说所有的路由表都是在同一时间创建的,每个路由器会在启动时各建各的路由表,

现在假设路由器A发送了四个记录到它的邻站:路由器B、D和C。下图所示为路由器B在接收到这些记录后它的路由表的变化情况。我们把其他两个邻站的路由表的变化情况留作练习。

路由信息协议 RIP

RIP协议是一种内部网关协议(IGP),是一种动态路由选择协议,用于自治系统(AS)内的路由信息的传递。RIP协议基于距离矢量算法(DistanceVectorAlgorithms),使用“跳数”(即metric)来衡量到达目标地址的路由距离。这种协议的路由器只关心自己周围的世界,只与自己相邻的路由器交换信息,范围限制在15跳(15度)之内,再远,它就不关心了。RIP应用于OSI网络七层模型的网络层。各厂家定义的管理距离(AD,即优先级)如下:华为定义的优先级是100,思科定义的优先级是120。
RIP协议采用距离向量算法,在实际使用中已经较少适用。在默认情况下,RIP使用一种非常简单的度量制度:距离就是通往目的站点所需经过的链路数,取值为1~15,数值16表示无穷大。RIP进程使用UDP的520端口来发送和接收RIP分组。RIP分组每隔30s以广播的形式发送一次,为了防止出现“广播风暴”,其后续的的分组将做随机延时后发送。在RIP中,如果一个路由在180s内未被刷,则相应的距离就被设定成无穷大,并从路由表中删除该表项。RIP分组分为两种:请求分组和响应分组。

开放最短路径优先 OSPF

链路状态路由选择

链路状态路由选择的原理与距离向量路由选择的原理不同。使用链路状态路由选择时,如果某个域的每一个结点都有这个域的完整拓扑,也就是说具有这个域的结点和链路的列表并知道它们是怎样连接起来的,包括类型、代价(度翟)和链路的状态(正常工作或故障),那么这个结点就能够使用Dijkstra算法构造一个路由表。

OSPF协议简介

OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部。著名的迪克斯加算法(Dijkstra)被用来计算最短路径树。OSPF分为OSPFv2和OSPFv3两个版本,其中OSPFv2用在IPv4网络,OSPFv3用在IPv6网络。OSPFv2是由RFC 2328定义的,OSPFv3是由RFC 5340定义的。与RIP相比,OSPF是链路状态协议,而RIP是距离矢量协议。

RIP协议和OSPF协议对比

RIP协议使用的是Bellman-Ford算法,和Dijkstra算法(OSPF协议)一样,都是用来求最短路径树的,如果仅仅在算法层面比较的话,RIP和OSPF只是一棵最短路径树的不同实现,但是它们的区别不止这些,RIP中,路由通告的过程就是Bellman-Ford算法执行的过程,算法是分布式执行的,所有的路由器参与了算法的执行,最终的结果也是所有机器一起参与计算的结果,而OSPF中,通告的仅仅是链路状态,算法执行是在每一台机器上完成的,并不是分布式的。不论哪种算法,算法的执行过程都被认为是无干扰的,Bellman-Ford算法和Dijkstra算法在这一点上是一样的,最短路径树生成的过程中,节点不能增加,减少,权值不能变更…在路由计算的过程中虽然同样也要求这些但是却无法保证这些,因此OSPF的方式带来了很大的稳定性,因为它采用类似触发更新的机制第一时间报告任何变化,然后各个路由器在得到链路变更通知并且更新了自己的LSDB之后,用CPU的速度快速计算出一棵新的最短路径树,而RIP却完全不是这样,链路的变更平摊在周期性的路由信息通知之中,因此算法全部执行完的周期特别长,甚至根本就没有执行完的那一天,如此长的周期内网络任意一个位置链路变化的可能性都很大,因为算法的不稳定性增加,虽然单独为链路崩溃等严重问题设计了毒性逆转,触发更新以及水平分割等机制,但是对于一般的链路变更还是需要等到路由信息通告周期的到来,但是,如果网络理想化,RIP最终也会在每台路由器中生成一棵最短路径树。

边界网关协议 BGP

边界网关协议(Border Gateway Protocol, BGP)是一个使用路径向量路由选择的域间路由选择协议。它于1989年首次出现,目前已经有四个版本.连接不同的AS自治系统。

边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓朴图并由此清除了路由环路,同时在 AS 级别上可实施策略决策。

总结

度量是对分组途经的网络通路指派的一个代价,路由器通过咨询其路由表来为分组决定一条最佳路径。

自治系统(AS)是在一个管理机构管辖之下的一组网络和路由器。RIP和OSPF都是流行的域内路由选择协议(也称为内部路由选择协议),用来在自治系统内部更新路由表.RIP基于距离向量路由选择,即每一个路由器定期与它的邻站共享关于整个自治系统的知识。OSPF则把AS划分为一些区域,区域的定义是一些网络、主机和路由器的集合。OSPF基于链路状态路由选择,即每一个路由器向区域内的其他所有路由器发送其邻站的状态。

BGP是用来更新路由表的域间路由选择协议(也称为外部路由选择协议)。BGP所基于的路由选择方法称为路径向量路由选择。在这个协议中,分组必须经过的一些自治系统应当显式列出。路径向璧路由选择没有距离向量路由选择的不稳定性,也 没有环路问题。共有匹种类型的BGP报文:打开、更新、保活以及通知。

参考

《TCP/IP协议族》第十一章:单播路由选择协议(RIP、OSPF和BGP)

欢迎大家关注:huazi's微信公众号