首页 > 学院 > 网络通信 > 正文

理解RFC2328OSPF,版本2

2019-11-04 11:15:39
字体:
来源:转载
供稿:网友

在20世纪80年代即将结束时,距离-向量路由协议的不足变得越来越明显。一种试图改善网络可扩展性的努力是使用基于链路-状态来计算路由,而不是靠跳步数或其他的距离向量。链路是网络中两个路由器之间的连接。链路状态包括传输速度和延迟级等属性。

这一章深入考查了Internet工程任务组(IETF)的链路-状态,内部网关路由协议类型:开放式最短路径优先(OpenShortestPathFirst,OSPF)。OSPF最先体现在RFC1131中。这个暂时的规范很快被RFC1247淘汰。两个OSPF之间有实质性差别以至于RFC1247OSPF称为OSPF版本2。OSPF版本2不断成熟和演进。之后的一些改变出现在RFC1583,2178和2328(最新版本)中。由于Internet和ip都是高度动态的,因此OSPF很可能会继续发展以跟上Internet和IP的进步。

1OSPF起源

IETF—为了满足建造越来越大基于IP网络的需要,形成了一个工作组,专门用于开发开放式的、链路-状态路由协议,以便用在大型、异构的IP网络中。新的路由协议以已经取得一些成功的一系列私人的、和生产商相关的、最短路径优先(SPF)路由协议为基础,SPF在市场上广泛使用。包括OSPF在内,所有的SPF路由协议基于一个数学算法—Dijkstra算法。这个算法能使路由选择基于链路-状态,而不是距离向量。

OSPF由IETF在20世纪80年代末期开发,OSPF是SPF类路由协议中的开放式版本。最初的OSPF规范体现在RFC1131中。这个第1版(OSPF版本1)很快被进行了重大改进的版本所代替,这个新版本体现在RFC1247文档中。RFC1247OSPF称为OSPF版本2是为了明确指出其在稳定性和功能性方面的实质性改进。这个OSPF版本有许多更新文档,每一个更新都是对开放标准的精心改进。接下来的一些规范出现在RFC1583、2178和2328中。

OSPF版本2的最新版体现在RFC2328中。最新版只会和由RFC2138、1583和1247所规范的版本进行互操作。本章对当前开放式OSPF标准的循环开发过程不作讨论,而是集中于讨论RFC2328中规范的最新版OSPF的功能、特点及使用。

2理解RFC2328OSPF,版本2

OSPF是专门设计用于自治系统之内的IP路由协议。如此看来,它不能传输其他可路由网络如IPX或AppleTalk的报文。假如用户的网络必须适用多种可路由协议,就要考虑使用别的路由协议而不是OSPF。SPF基于IP数据报头中的目的IP地址来计算路由,并不提供对非一IP目的地的路由计算。而且,各种OSPF信息直接封装在IP中:无需其他协议(TCP、UDP等)来传输。

OSPF也被设计用于快速地检测自治系统内的拓扑变化,并且在发现变化之后收敛到新的拓扑。路由决定以自治系统内互联的路由器之间的链路状态为基础。这些路由器各自都维护一个相同的数据库,其中记录了网络的链路状态。这个数据库中包含的是路由器状态,其中有可用的接口、可以到达的相邻路由器及链路、状态信息。

路由表更新,也就是链路-状态广播(Link-stateadvertisement,LSA),直接发送给路由器区内的所有相邻路由器。这种更新过程的技术术语称为洪泛(flood),这个术语会给人负面印象,造成对OSPF性能特点的错误熟悉。

实际上,OSPF网络可以非常快地收敛。网络中的所有路由器运行相同的路由算法并且直接在彼此之间传送路由表更新报文。这些信息用于建立网络和链路的视图。每个路由器的网络视图使用类-UNIX的树结构,并以自身作为根。这个树称为最短路径树(shortest-pathtree),记录了到达自治系统内每个目的地的最短路径。自治系统之外的目的地可以通过到外部网络的边界网关来获得,边界网关出现在最短路径树结构的叶上。这样的目的地和/或网络的链路-状态数据不被维护,因为它们位于OSPF网络之外。因此,它们不能出现在最短路径树的枝上。

2.1OSPF区

OSPF快速收敛的一个要害原因是它使用了区。记住,IETF使用OSPF想达到的两个主要目标是:

•改善网络的可扩展性。

•快速收敛。

取得两个目标的要害是把网络分成更小的区。一个区是一些网络端系统、路由器以及传输线路的集合体。每个区由一个惟一的区号定义,这个区号配置在每一个路由器内。定义了相同区号的路由器接口成为相同区的组成部分。理想情况下,这些区号不是任意定义的。相反,应该选择区的边界以使不同区之间的流量最小。每个区应反映实际的交通模式而非地理或政治边界。当然,这是理论上的理想情况,在特定环境下可能是不实用的。

OSPF网络中能支持的区数量受限于区ID的大小。这个域是32位的二进制数。因此,32位二进制数的理论最大值应是每一位置为1,其对应的十进制数为4294967295。显然,能支持的实际最大数比这个理论上的最大数小得多。实际上,网络设计的好坏将决定能在其中支持的最大区数。图1显示了一个相当简单的OSPF网络,其中只有3个区,编号为0、1和2。

1.路由器类型

需要重点记住的是OSPF是一个链路-状态协议。因此,链路以及与链路相接的路由器端口定义为区号。基于区成员关系,OSPF网络中有三种不同类型的路由器:

•内部路由器。

•区边界路由器。

•骨干路由器。
图2使用图1给出的网络图来标识三种不同类型的路由器。

理解RFC2328OSPF,版本2(图一)


图1具有3个区的小型OSPF网络


理解RFC2328OSPF,版本2(图二)



图2OSPF网络中的区边界路由器、内部路由器、骨干路由器

如图2所示,具有多个接口的路由器可以属于两个或多个区。这样的路由器成为区边界路由器。也就是说,它们把自身的区号与骨干互联起来。骨干路由器是至少有一个接口定义为属于区0的路由器。一个区边界路由器也可能是一个骨干路由器。任何一个与区0互联的区边界路由器也将成为骨干路由器。

内部路由器使其所有定义接口属于同一区,但这个区不是0区。使用这三种基本的路由器,可以建造高效且可扩展的OSPF网络。

2.路由类型

考虑图13-2中显示的三种不同类型的OSPF路由器,需要重点注重的是OSPF支持两种不同类型的路由:

•区内路由

•区间路由它们的名字含义相当明显。区内路由是自含的,只限于一个区内部的路由器之间的路由。使用显示在图13-1中的例子网络,图13-3给出了OSPF网络内中的区内通信。

区间路由需要在不同的区之间交换数据。所有的区间路由必须经过区0传输,不答应非0区直接和其他区通信。这个层次限制确保了OSPF具有良好的可扩展性,而不会导致链路和路由器的混乱。图4显示了恰当地使用区0能使OSPF网络中的区间通信轻易进行。

理解RFC2328OSPF,版本2(图三)


图3OSPF网络中的区内通信


理解RFC2328OSPF,版本2(图四)


图4OSPF网络中的区间路由



前面的例子显示了在高层,一个OSPF网络中通信是如何工作的。然而,OSPF也能用于在OSPF网络之间交流路由信息,而不仅仅在一个网络的区之间。下面将讨论OSPF的这一用法。

3.网络之间路由

OSPF可以用于互联不同的网络。这个网络可以是另一个完整的OSPF网络或是一个实现了完全不同路由协议的网络。把OSPF网络与其他不同的路由协议相互联是一项复杂的工作,并要使用一种称为路由再分配的技术。这个术语描述了从一个网络到另一个网络路由信息的汇总和重新分布。从非OSPF网络来的路由信息汇总和重新分布到OSPF网络内。

OSPF网络把所有以这种方式学习来的路由标记为外部的。互联两个不同的OSPF网络更简单一些,因为无需把一种路由信息耗费转变为另一协议能理解的形式。而且,OSPF使建造自治系统成为可能,一个自治系统(AS)是一个自含网络。字面上讲,AS是一个网络治理员或一组网络治理员使用一个路由协议的系统。

AS的实际定义有些不固定。这其实没有关系。真正重要的是OSPF答应为一个网络分配自治系统号。一个非常大的OSPF网络能分成两个或多个自治系统。这些系统可以通过第四种类型的OSPF路由器—自治系统边界路由器(autonomoussystemborderrouterASBR)来进行互联。ASBR汇总所有自身AS的路由信息并把汇总情况转发给对应相邻的ASBR。ASBR的作用非常类似于一个区边界路由器。显然,二者的区别是它们组成了自治系统之间的边界而不是一个自治系统或网络内的区边界。

图5显示了利用ASBR进行自治系统互联的情形。

理解RFC2328OSPF,版本2(图五)


图5互联OSPF自治系统



2.2路由更新

OSPF具有如此可扩展性的一个原因是它的路由更新机制。OSPF使用LSA在OSPF节点之中共享路由信息。这些广播信息会在整个区中进行传播但不会超越一个区。

因此,区中的每一个路由器都知道本区的拓扑。然而,一个区的拓扑对区外是不可知的。考虑到实际上有四种不同类型的OSPF路由器—区内路由器、区边界路由器、自治系统边界路由器、骨干路由器—很明显每种路由器类型有不同的对等实体集,路由器与这些对等实体交换LSA。

1.内部区路由器

内部的区路由器必须直接和区中的其他路由器交换LSA,其中包括每一个区内部路由器,

也包括作为区成员的区边界路由器。图6显示了本章前面提及的OSPF例子网络中,在整个区1中转发或洪泛LSA的情形。需要重点注重的是相同区中的OSPF路由器无需彼此直接相连就能共享LSA信息。OSPF路由器直接把LSA报文发送到区中每一个知道的路由器,并且使用任何可用的链路来转发那些报文。

蕴含在图5中不太被注重的一点是收敛能够相当快地发生。其中有两个原因,第一个原因是OSPF路由器能同时直接寻址并发送LSA至区中所有的路由器(洪泛),这和RIP使用的“邻居至邻居”的收敛方法完全不同。这样的结果是区内的路由器几乎同时收敛到新拓扑结构。

理解RFC2328OSPF,版本2(图六)


图6在区1内的洪泛



收敛通过区的定义和使用而得到加速。拓扑数据不被传输到区边界之外。因此,收敛不必在自治系统中的所有路由器上发生,而只发生在受影响的区中。这个特点既加速了收敛又增加了网络的稳定性,因为只有自治系统中的一个子网经历不稳定性,这种不稳定性是收敛过程自身带来的。

2.区边界路由器

区边界路由器负责在数据库中为它们接口所连的每个区维护拓扑信息。因此,假如一个区边界路由器互联了两个不同的区,它必须和两个网络中的对等实体交换LSA。和区内部路由器一样,这些LSA直接寻址并传输到区中的对等实体。图7显示了这一点。

理解RFC2328OSPF,版本2(图七)



图7在OSPF网络中由区边界路由器引起的区内LSA洪泛



OSPF加强性能的另一个特点是路由汇总。关于一个区的拓扑信息,并不和区外的路由器共享。相反,区边界路由器汇总了所有与其相连的所有区中的地址。这个汇总的路由数据通过LSA报文与其相互联的每个区中的对等路由器实现共享。OSPF使用几种不同类型的LSA:每种有不同的功能。

用于共享汇总路由数据的LSA为类型3LSA。所有OSPFLSA类型会在本章的剩余部分中描述。

在图7中,区边界路由器直接把汇总的数据广播给区0中的所有路由器。OSPF不答应大于或等于1的区之间相互连接。所有这样的互联必须通过区0。因此,其含义是区边界路由器把一个非0编号的区来与区0互联。

3.骨干路由器

骨干路由器负责维护骨干拓扑信息,并且为自治系统中的每个其他区传播汇总的拓扑信息。

图8显示了由骨干路由器交换LSA的情形。

理解RFC2328OSPF,版本2(图八)


图8在OSPF网络中由骨干路由器引起的区内LSA洪泛



虽然骨干路由器、区边界路由器和区内部路由器之间的差别看起来是清楚的,但由于路由器能支持到其他路由器的多I/O端口连接,三者还是会引起混淆。理论上讲,每个端口可以连至一个不同的区。所以,路由器可以在其连接的不同区之间形成边界。



发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表