OSPF——开放最短路径优先协议

简述:

与RIP协议一样,OSPF协议也是一种IGP(内部网关协议)通常,将一个以OSPF协议作为其IGP的自治系统的一个OSPF网络。

OSPF协议中引入了Area(区域)的概念。

一。OSPF的基本原理

(1)在RIP协议中,路由器会将自己所知道的关于整个网络的路由信息周期性的发送给所有的邻居路由器;

(2)在OSPF协议中,路由器会将自己的链路状态信息一次性的泛洪(Flooding)给所有其他的路由器。

二。OSPF与RIP的比较

(1)OSPF协议是一种基于链路状态的路由协议RIP协议是一种基于距离向量的路由协议

(2)在RIP协议中,路由器之间是以一种“传话”的形式来传递有关路由的信息的OSPF协议中,路由器之间会以一种“宣告”的形式来传递有关路由的信息,OSPF网络的路由收敛时间明显小于RIP网络的路由收敛时间。

(3)RIP是一种“嘈杂”的路由协议:路由收敛之后,RIP网络中仍然会持续性的存在大量的RIP协议报文的流量。OSPF是一种“安静”的路由协议:路由收敛之后,OSPF网络中的OSPF协议报文的流量很少。协议报文的流量越小,对网络带宽资源的占用就越少。

(4)RIP协议是以UDP作为传输层协议的,RIP报文是封装在UDP报文中的OSPF没有传输层协议,OSPF报文是直接封装在IP报文中的。UDP通信或者IPI通信都是一种无连接的、不可靠的通信方式,不管是两个协议中的哪个,它的协议报文传输的可靠性机制都是由协议本身提供的。

(5)RIP报文只有两种:RIP请求报文、RIP响应报文;OSPF报文有5种:Hello报文、数据库描述报文、链路状态请求报文、链路状态更新报文、链路状态确认报文。

(6)RIP协议只能以“跳数”作为路由开销的定义在OSPF协议中,理论上是可以采用任何参量,或者若干参量的组合来作为路由开销的定义的在实际中,最常见的是采用链路的带宽来定义路由开销。

(7)RIP协议和OSPF协议都是由IETF制定的开放性标准协议。OSPF同样也有两个版本,但是在目前实际网络中所使用的都是OSPFv2(因为OSPFv1在开始之前就失败了);与RIPv2一样,OSPF也是一种无类路由协议,支持VLSM、CIDR等特性,与RIPv2一样,OSPF也同样支持认证功能。

(8)OSPF网络具有区域化结构RIP网络没有这样的功能结构OSPF网络中,路由器有角色的区分,同时不同的角色的路由器具有的功能和作用是不同的;RIP网络中的路由器是没有角色之分的OSPF网络中,每台路由器都有一个唯一的路由器IDRIP网络中,路由器是没有路由器ID的

(9)虽然RIP协议和OSPF协议在实际中的应用都是和广泛的。但是,RIP协议只适合于小型的网络中OSPF则适合于任何规模的网络。

三。OSPF的区域化结构

(1)一个OSPF网络可以被划分成多个区域(Area)。如果一个OSPF网络只包含一个区域,则这样的OSPF网络被称为单区域OSPF网络如果一个OSPF网络包含了多个区域,这样的OSPF网络称为多区域OSPF网络

(2)在OSPF网络中,每一个区域都有一个编号,称为Area-ID。该区域ID是一个32bit的二进制数,但是通常也可以用十进制的数来表示。区域ID为0的区域被称为骨干区域,否则称为非骨干区域

(3)单区域OSPF网络只包含一个区域,这个区域必须是骨干区域多区域OSPF网络中,除了有一个骨干区域外,还有若干个非骨干区域,并且每一个非骨干区域都需要和骨干区域直接相连(采用Virtual Link技术时,非骨干区域虽然没有与骨干区域直接相连,但是在逻辑上仍然是与骨干区域直接相连的),但是非骨干区域之间是不允许直接相连的非骨干区域之间的通信必须通过骨干区域中转才能进行。

(4)OSPF网络中,如果一台路由器的所有接口都属于同一个区域,这样的路由器被称为内部路由器

(5)OSPF网络中,如果一台路由器的某些接口属于Area 0,其他的接口属于别的区域,则这样的路由器被称为ABR(区域边界路由器)。

(6)OSPF网络中,如果一台路由器是与本OSPF网络(本自治系统)之外的网络相连的,并且可以将外部网络的路由信息一如到本OSPF网络(本自治系统),则这样的路由器被称为ASBR(自治系统边界路由器)

四。OSPF支持的网络类型(二层网络的类型)

(1)广播网络,也称为Broadcast网络。以太网便是一种典型的Broadcast 网络。

(2)NBMA——非广播多路访问网络。

(3)点到点网络,也称为Point-to-Point网络或者P2P网络。

(4)点到多点网络,也称为Point-to-Mutipoint网络或者P2MP网络。

强调:OPSF路由器的某个接口的类型,是与该接口直接相连的二层网络的类型一致。若OSPF路由器的某个接口连接的是一个广播网络,则该接口就是一个广播网络接口(或者该接口的类型是广播型的);OSPF路由器的某个接口连接的是一个P2P网络,该接口的类型是P2P类型的(或者该接口是一个P2P网络接口)。

在广播网络和NBMA网络中,需要选举DR(指定路由)和BDR(备份指定路由);在另外的两个类型网络中,是不需要DR和BDR的。

五。链路状态和LSA

链路状态:指的就是路由器的接口状态。

1. 路由器的接口状态包括:

(1)该接口的IP地址和掩码;

(2)该接口所属区域Area-ID;

(3)该接口所属的路由器的Router-ID;

(4)该接口的接口类型(如:广播型、NBMA型、点到点型、点到多点型);

(5)该接口的开销(通常会以接口带宽来定义接口开销;带宽越大,开销越小);

等等。

OSPF是一种基于链路状态的路由协议,核心思想:每台路由器都将自己的各个接口的接口状态(即链路状态)共享给其他路由器。在这样的条件基础下,每台路由器就可以根据自己的各个接口的接口状态及其他路由器各个接口的接口状态来计算出从自己去往各个目的地的路由。

2. LSA——链路状态通告

LSA:Link-State Advertisement的缩写。LSA是链路状态信息的主要载体,链路状态信息主要是包含在LSA中并通过LSA的通告(泛洪)来实现共享的。

不同类型的LSA中包含的链路状态的内容是不同的;不同类型的LSA的功能和作用也是不同的;不同类型的LSA的通告(泛洪)范围也是不同的;不同角色的路由器能够产生的LSA的类型也是不同的。

(1)Type-1  LSA也称为Router  LSA每台路由器都会产生Type-1  LSA用来描述路由器各个接口的接口类型、IP地址、开销值等信息一个Type-1  LSA只能在产生它的Area内泛洪,不能泛洪到其他Area。

(2)Type-2  LSA:也称为Network  LSA它是由DR(指定路由)产生的主要用来描述该DR所在的二层网络的网络掩码以及该二层网络中共包含了哪些路由器一个Type-2  LSA只能在产生它的Area内泛洪,不能泛洪带其他的Area。

(3)Type-3  LSA:也称为Network  Summary  LSA它是由ABR(区域边界路由)产生的ABR路由器将自己所在的多个Area中的Type-1  LSA和Type-2 LSA转换成Type-3 LSA,这些Type-3 LSA描述了Area之间的路由信息Type-3 LSA可以泛洪到整个自治系统(整个OSPF网络)内部,但是不能泛洪到Totally  Stub Area 和Totally Not-So-Stubby  Area

(4)Type-4  LSA:也称为ASBR Summary LSA,它是由ASBR所在的Area的ABR产生的用来描述去往ASBR的路由信息Type-4 LSA可以泛洪到整个自治系统(整个OSPF网络)内部,但是不能泛洪到Stub Area、Totally Stub Area、Not-So-Stubby Area和Totally Not-So-stubby Area。

(5)Type-5  LSA:也称为AS External  LSA,它是由ASBR产生的用来描述去往自治系统外部的路由Type-5 LSA可以泛洪到整个自治系统(整个OSPF网络)内部,但是不能泛洪到Stub Area、Totally Stub Area、Not-So-Stubby Area和Totally Not-So-stubby Area。

.........等等。

六。OSPF报文的类型

(1)OSPF的协议报文(OSPF报文)是直接封装在IP报文中的,IP报文头部中的协议字段的值必须是89。

(2)OSPF报文本身有5中类型:Hello报文DD报文(数据库描述报文)LSR报文(链路状态请求报文)LSU报文(链路状态更新报文)LSAck报文(链路状态确认报文)

各种不同类型的LSA只包含在LSU报文(链路状态更新报文)中。其他类型的OSPF报文虽然没有携带LSA,但是仍然会携带一些链路状态信息,当然也会携带一些其他的协议信息。

1.  Hello报文:用来发现和维持邻站的可达性。

包含下面的一些信息:

(1)OSPF的版本号;(2)该接口所属的路由器的Router-ID;(3)该接口所属区域的Area-ID;(4)该接口的认证类型;(5)该接口的密钥;(6)该接口的IP地址的子网掩码;(7)该接口发送Hello报文的间隔时间;.......等等。

2.  DD报文:向邻站给出自己的链路状态数据库中的所有的链路状态项目的摘要信息。

3.  LSR报文:向对方请求发送某些链路状态项目的详细信息。

4. LSU报文:用泛洪法对全网更新链路状态。

5.  LSAck报文:对链路更新报文的确认。

七。单区域OSPF网络

在一个单区域OSPF网络中,整个网络只有Area 0,该Area 0页就是整个自治系统。在这个OSPF网络中,没有ABR。

(1)链路状态数据库

在上面的图片中,每台路由器都会产生Type-1 LSA,并向整个Area 0中泛洪。还有,具有DR(指定路由)角色的路由器还会产生Type-2 LSA,并向整个Area 0泛洪。所以,整个Area 0内只包含这两种类型的LSA,不存在其他类型的LSA。

每台路由器将所有接收到的LSA以及自己产生的LSA集中在一起,便会得到一个数据库,也就是链路状态数据库——LSDB。一个LSDB其实就是若干条LSA的集合。

因为LSA是以泛洪的方式在Area 0内进行通告的,所以Area 0中的每台路由器都能够接收到所有其他路由器产生的LSA,那么不同路由器上的LSDB的内容是完全一样的。

(2)最短路径树

由于环路的存在,路由器时可以通过不同的路径从自己的位置去往同一个目的地的。在这样的情况下,路由器必须要根据路径开销的情况从不同的路径中选择出最优的路径,这个过程就是最短路径树(SPT)生成的过程

 

每台路由器会使用SPF算法作用于自己的链路状态数据库上,从而产生一棵属于自己的SPT。

SPF算法:由Edsger  W.Dijkstra提出的,也称为Dijkstra算法。

SPT具有无环结构,其树根就是生成这棵STP的路由器,并且从树根出发沿树干的指引去往某个目的地时,所经过的路径一定是最优路径。

(3)OSPF路由表

OSPF路由器在生成了自己的SPT后,可以根据自己的SPF计算出从自己的位置去往各个目的地的路由。而这些路由信息的集合,就是OSPF路由表(包含:目的地、出接口、下一跳IP地址、Cost值)。

八。多区域OSPF网络

在多区域OSPF网络中,由于ABR和ASBR的存在,整个OSPF网络中除了有Type-1 LSA和Type-2 LSA之外,还有Type-3 LSA、Type-4 LSA、Type-5 LSA等类型的LSA。就是指,一台路由器的LSDB(链路状态数据库)中,既有Type-1 LSA、Type-2 LSA,也有其他类型的LSA。

(1)根据自己的LSDB中的Type-1 LSA和Type-2 LSA路由器可以使用SPF算法计算出自己的、关于本Area的SPT,并根据SPT计算出自己去往本Area中各个目的地的路由(该过程与单区域OSPF网络的一样);

(2)根据自己的LSDB中的Type-3 LSA路由器可以使用DV算法计算出自己去往其他Area中各个目的地的路由

(3)根据自己的LSDB中的Type-4 LSA和Type-5 LSA路由器可以使用DV算法计算出自己去往本OSPF网络(本自治系统)之外的目的地的路由

九。邻居关系与邻接关系

在OSPF协议中,如果路由器A的某个接口和路由器B的某个接口位于同一个二层网络中,那么A和B就存在“相邻”的关系。但是“相邻”并不等于“邻居”关系,也不等于“邻接”关系

(1)在OSPF协议中,每台路由器都会通过自己的每个接口以HelloInterval为周期向外发送Hello报文。如果两台相邻路由器彼此发送给对方的Hello报文的内容完全一样,则该两台相邻路由器就会成为彼此的邻居路由器;否则,这两台相邻路由器就不能成为彼此的邻居路由器。

强调:两台路由器之间存在相邻关系,但并不一定存在邻居关系,只有彼此发送给对方的Hello报文的内容完全一样,它们之间才存在邻居关系。

(2)若两台邻居路由器之间的二层网络类型是P2P网络或者P2MP网络,则这两台邻居路由器一定会进入彼此之间的LSDB同步过程。当这两台邻居路由器成功的完成了LSDB同步之后,它们之间便建立了邻接关系,及彼此成为对方的邻接路由器LSDB同步过程的目的是:要保证参与LSDB同步过程的两台邻居路由器最终能够拥有内容完全一致的LSDB

LSDB同步的过程是通过交互OSPF  DD报文(数据库描述报文)、OSPF LSR报文(链路状态请求报文)、OSPF LSU报文(链路状态更新报文)来实现的。

(3)若两台邻居路由器之间的二层网络类型是Broadcast网络或者NBMA网络,并且其中一台路由器时这个二层网络的DR或者BDR,则该两台邻居路由器一定会进入彼此之间的LSDB同步过程。当这两台邻居路由器成功的完成了LSDB同步之后,它们之间便建立了邻接关系。如果两台邻居路由器都不是这个二层网络中的DR或者BDR,则这两台邻居路由器便不会进入彼此之间的LSDB同步过程,及彼此之间是不能建立起邻接关系的

(4)如果两台路由器之间存在邻接关系,则它们之间一定存在邻居关系;如果两台路由器之间存在邻居关系,则它们之间可能存在邻接关系,也可能不存在邻接关系。

(5)一个OSPF网络中,邻接关系的数量总是等于或小于邻居关系的数量的

(6)在OSPF网络中,LSA的泛洪过程只可能在具有邻接关系的路由器之间进行LSA的泛洪过程是通过交互LSU报文和LSAck报文而实现的。

(7)邻接关系的数量越少,网络中OSPF协议报文的数量就会越少,OSPF协议占用的网络带宽资源以及路由器处理资源就会越少。

十。DR与BDR

(1)在P2P网络或者P2MP网络中是不存在DR和BDR的概念的;DR与BDR的概念只适合于Broadcast网络或者NBMA网络。

(2)在Broadcast网络或者NBMA网络中,DR及BDR时通过选举而产生的

(3)选举DR及BDR的目的:1.让DR来产生针对Broadcast网络或者NBMA网络的Type-2 LSA;2. 减少这个Broadcast网络或NBMA网络中邻接关系的数量。   此外,BDR的作用是:当DR出现故障时,BDR能够迅速替代DR的角色

(4)在一个Broadcast网络或者NBMA网络中,DR会与所有其他的路由器(包含BDR在内)建立邻接关系,BDR也会与所有其他的路由器(包含DR在内)建立邻接关系,此外,不能再有其他的邻接关系。

例如:在这个以太网中,如果任何两个邻居路由器之间都建立邻接关系,则总会有6*(6-1)/2=15个邻接关系。

在选举出DR和BDR之后,邻接关系的数量会从原来的15个减少为9个。所以,如果该以太网中的路由器的数量越多,则邻接关系数量减少的效果就会越明显。

(5)DR的选举过程

在一个Broadcast网络或者NBMA网络中,路由器之间会进行Hello报文的交互,而每个Hello报文中总会携带发送该Hello报文的路由器的Router-ID 和Router Priority。Router Priority是一个8bit的二进制数,也可表示为十进制数,取值范围是从0到255,并且取值越大,代表优先级越高。

一个Broadcast网络或者NBMA网络中的若干路由器在选举DR时,首先会比较各个路由器的Router Priority的值,Router Priority的值最大者将会被选举称为DR;若遇到Router Priority的值相等的情况,则Router-ID的值最大者将会被选举为DR。

补充:如果一个路由器的Router Priority的值为0,则表明该路由器不会参加DR或者BDR的选举过程

**如果一个Broadcast网络或者NBMA网络中只存在DR而不存在BDR,那么当DR出现故障后,就需要重新选举DR,当然在选举过程是需要耗费一定的时间的。

**如果网络中既有DR,又有BDR,则当DR出现故障后,BDR就能迅速替代DR的角色。所以,BDR存在的意义就是充当DR的备份,随时准备着迅速替代DR的角色。

BDR的选举规则与DR的选举规则和过程完全一样。但是,BDR的选举是在选举出DR之后进行的。选举BDR时,Router Priority的值最大者将会被选举称为DR;若遇到Router Priority的值相等的情况,则Router-ID的值最大者将会被选举为DR。

强调:同一个Broadcast网络或者NBMA网络中,BDR和DR不能是同一个路由器。

实质上,DR或者BDR只是路由器的某个接口的属性,而不是路由器本身的属性。完全可能出现这样的情况:同一个路由器,在他相连的某个二层网络中它是DR,但在它相连的另一个二层网络中它却不是DR。

 

 

 

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小柒憨憨吖~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值