OSPF详解

OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),其核心思想是SPF,使用著名的迪克斯彻(Dijkstra)算法来计算最短路径树。OSPF支持负载均衡和基于服务类型的选路,也支持多种路由形式,如特定主机路由和子网路由等。
在OSI模型中工作于网络层,在TCP/IP层中工作于应用层。IP协议89。

工作过程

在这里插入图片描述

  1. 每台路由器向邻居发送Hello包形成邻居关系,邻居之间还会定时发送Hello数据包来维护邻居关系,当没有再收到邻居的响应包,就认为关系破裂。
  2. 每个路由器都会创建一个链路状态数据包 LSP,数据包中包含该路由器直连的每条链路的状态,并只向已经建立邻居关系的路由器发送LSP。
  3. 每台路由器将LSP泛洪到所有邻居,路由器会立即将这个LSP从除接收该LSP的接口以外的所有接口发出,邻居会将LSP存储到数据库中。
  4. 在使用链路状态泛洪过程将自身的LSP传播出去后,每台路由器都将拥有来自整个路由区域内所有链路状态路由器的LSP,都可以使用SPF算法来构建SPF树。这些LSP存储在链路状态数据库LSDB中。有了完整的链路状态数据库,即可使用该数据库和最短路径优先(SPF)算法来计算通向每个网络的首选(即最短)路径。

工作原理

组播

OSPF是以组播方式发送LSA包,IANA(Internet Assigned Number Authority)规定将D类地址从224.0.0.0到239.255.255.255分配给IP组播。其中224.0.0.5、224.0.0.6分别分配给OSPF路由器(运行OSPF进程的接口)和OSPF DR(Designated Router)。只要在OSPF区域内的接口都会接收和发送OSPF数据。

三张表

邻居表(Peer table):
OSPF是一种可靠的路由协议,要求在路由器之间传递链路状态通告之前,需先建立OSPF邻居关系,hello报文用于发现直连链路上的其他OSPF路由器,再经过一系列的OSPF消息交互最终建立起全毗邻的邻居关系,其中两者之间需要经历几个邻居关系状态,这也是一个重要的知识点。路由器在各个激活的OSPF的接口上维护的邻居都列在邻居表中,通过观察邻居表,能够进一步了解OSPF路由器之间的邻居状态。

链路状态数据库LSDB(Link-state database):
在这里插入图片描述
OSPF用LSA(link state Advertisement 链路状态通告)来描述网络拓扑信息,然后OSPF路由器用链路状态数据库来存储网络的这些LSA,LSA中包含接口上的IP、子网掩码、cost等等。OSPF将自己产生的以及邻居通告的LSA搜集并存储在链路状态数据库LSDB中。同一区域内的路由器的LSDB是一样的,也就是说每一个路由器拥有当前区域内整个网络拓扑的信息。

OSPF路由表(Routing table):
根据LSDB以自己为起点,计算出最短路径。进行SPF(Dijkstra)计算,而得出的OSPF路由表。

五种报文

Hello报文:建立并维护邻居关系。
DBD报文:发送链路状态头部信息。
LSR报文:把从DBD中找出需要的链路状态头部信息传给邻居,请求完整信息。
LSU报文:将LSR请求的头部信息对应的完整信息发给邻居。
LSACK:收到LSU报文后确认该报文。

网络类型

OSPF需要考虑链路层的介质类型,如NBMA用来描述如X.25和帧中继这类本身并不具有支持广播和多播能力的多路访问网络。OSPF定义了四种网络类型:

  1. 点到点(Point-To-Point):此类型网络不需要进行OSPF的DR、BDR选举。
  2. 非广播-多路访问网络(Non-Broadcast Multiple Access,NBMA):虽然从一个接口可以到达多个目的节点,但是网络本身不支持广播功能,当链路层协议是帧中继、ATM或X.25时,OSPF缺省认为网络类型是NBMA。此时OSPF的邻居需要管理员手工指定。在该类型的网络中,以单播方式发送协议报文。
  3. 点对多点(Point-To-Multipoint ):P2MP型网络比较特殊,没有一种链路层协议会被缺省地认为是点到多点类型。点到多点必须是由其他网络类型强制更改而来。常用做法是将NBMA改为点到多点的网络。
  4. 广播(Broadcast):当链路层协议是Ethernet、FDDI时,OSPF缺省认为网络类型是广播型。此类型网络需要进行OSPF的DR、BDR选举。在该类型的网络中,OSPF通常以组播方式(224.0.0.5和224.0.0.6)发送协议报文。
    在这里插入图片描述

状态过程

在这里插入图片描述

  1. Down:路由器刚刚启动OSPF进程,还没有从任何路由器收到任何数据包,Hello包也没有收到,在此进程,可以向外发送Hello包,以试图发现邻居。
  2. Attempt:在NBMA网络中组播不能够传递,在这种情况下,就需要指定OSPF使用单播向邻居发送Hello包,以此试图和指定的邻居建立OSPF邻居关系,在此状态下,OSPF称为Attempt状态。
  3. Init:只是OSPF路由器一方收到了另一方的Hello,但并没有双方都交换Hello,也就是对方的Hello中还没有将自己列为邻居。
  4. 2-way:双方都已经交换了Hello信息,并且从Hello中看到对方已经将自己列为邻居,此状态,就表示OSPF邻居关系已经建立,并且如果是需要选举DR和BDR的话,也已经选举出来,但OSPF邻居之间并不一定就会交换LSA,如果不需要交换LSA,则永远停留在此状态,如果需要形成邻接并互相交换LSA,则状态继续往下进行。
  5. Exstart:因为在OSPF邻居之间交换完整的LSA之前,会先发送Database Description Packets (DBD),Link-state Request (LSR)等数据包,邻居之间是谁先发,谁后发,需要确定顺序,在Exstart状态,就是确定邻居之间的主从关系(Master—Slave关系),Router-ID数字大的为主路由器,另一端为从路由器,由主路由器先向从路由器发送信息。在选举DR与BDR的网络环境中,并不一定DR就是主路由器,BDR就是从路由器,因为DR和BDR可以通过调整接口优先级来控制,所以DR也许是因为优先级比BDR高,而Router-ID并不比BDR高。
  6. Exchange:就是交换Database Description Packets (DBD)的过程,DBD只是LSA的简单描述,只包含LSA的一些头部信息,收到DBD的路由器会和自己的链路状态数据库作对比,确定需要哪些LSA的完整信息,就会发送LSR请求给邻居。
  7. Loading:邻居根据收到的LSR(Link-State Request),向对方回复Link-state update(LSU)。
  8. Full:等到OSPF都收到了邻居回复的所有Link-state update(LSU),那么此时的数据库状态就变成了收敛状态,此状态就是Full状态,但此时只是数据库已经同步,但路由表却还在计算当中。

DR/BDR

如果在一区域内所有的路由器都交换LSA,这样会产生大量开销。于是指定一个成为DR的路由器,以及作为备份的BDR路由器,其他路由器将数据发送到224.0.0.6(只于DR建立邻居关系),DR会汇总所有的LSA,并发送将LSA发送到224.0.0.5。

而关于DR的一个重要问题就是,在网络中只有一台 DR的话,如果他失效,那么所有的邻接关系都会失效,与此同时,所有路由器都要重新选举DR,并且重新与DR同步数据库,再重新建立邻接关系,当这个情况发生时,网络是瘫痪的,是无法传递数据包的,当DR失效时,BDR会晋升成为DR,因为DRother在之前就和BDR保持着邻接关系,所以这样一来的话可以把网络影响降到最低
在这里插入图片描述
选举规则
每个接口都有一个优先级(0-255),优先级为0的不参与选举,默认为1,优先级越大越优先,在hello包中含优先级字段。

在2-way后,路由器就会检查priority,以此宣称自己为DR/BDR,接着路由器将检查所有收到的Hello包,并列出具有选举资格的接口的列表,OSPF priority 最高者为DR(缺省所有OSPF路由器为1,通过ip ospf priority 接口配置命令更改),如果priority相同,则具有最高的Router-ID的路由器被选举为DR。仅次于DR的选举为BDR。

区域

在这里插入图片描述
骨干区域area0
在这里插入图片描述
在部署OSPF时,要求全OSPF域,必须有且只能有一个Area0,Area 0为骨干区域,骨干区域负责在非骨干区域之间发布由区域边界路由器汇总的路由信息(并非详细的链路状态信息),为避免区域间路由环路,非骨干区域之间不允许直接相互发布区域间路由。因此,所有区域边界路由器都至少有一个接口属于Area 0,即每个区域都必须连接到骨干区域。
在这里插入图片描述

LSDB更新

在这里插入图片描述
如果LSA在LSDB中一个小时都没有更新,此条LSA就会被清除。LSDB每隔30分钟会刷新所有LSA,这些的LSA序号加1,序号越大表示LSA越新,路由器就会使用更新的LSA。

OSPF优点

(1)OSPF 适合在大范围的网络:OSPF 协议当中对于路由的跳数,它是没有限制的,所以 OSPF 协议能用在许多场合,同时也支持更加广泛的网络规模。只要是在组播的网络中,OSPF协议能够支持数十台路由器一起运作。
(2)组播触发式更新:OSPF 协议在收敛完成后,会以触发方式发送拓扑变化的信息给其他路由器,这样就可以减少网络宽带的利用率;同时,可以减小干扰,特别是在使用组播网络结构,对外发出信息时,它对其他设备不构成其他影响
(3)收敛速度快:如果网络结构出现改变,OSPF 协议的系统会以最快的速度发出新的报文,从而使新的拓扑情况很快扩散到整个网络;而且,OSPF 采用周期较短的 HELLO 报文来维护邻居状态。
(4)以开销作为度量值:OSPF 协议在设计时,就考虑到了链路带宽对路由度量值的影响。OSPF 协议是以开销值作为标准,而链路开销和链路带宽,正好形成了反比的关系,带宽越是高,开销就会越小,这样一来,OSPF 选路主要基于带宽因素。
(5)OSPF 协议的设计是为了避免路由环路:在使用最短路径的算法下,收到路由中的链路状态,然后生成路径,这样不会产生环路。

  • 1
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OSPF(Open Shortest Path First)协议使用LSA(Link State Advertisement)来传递路由信息和拓扑信息。了解LSA的内容和功能对于理解OSPF协议的路由形成非常重要。一条LSA包含三个要素:ADV Router(产生者路由器)、link-ID(链路标识符)和LSA类型。\[1\] 在OSPF中,每个路由器接口被宣告进入OSPF进程时,都会产生一条一类LSA。除了ABR(Area Border Router)连接多个区域,它会向多个区域传递一类LSA。\[2\] LSA的更新顺序是根据以下几个因素来确定的: 1. Seq(序列号)越大表示越新。 2. 如果Seq相同,则比较Checksum(校验和),Checksum越大表示越新。 3. 如果Checksum相同,则判断LSA age(年龄),age为3600秒表示最新(用于删除此LSA)。 4. 如果LSA age都不为3600秒,则判断LSA age的差值。差值大于900秒,较小的LSA为最新。差值小于等于900秒,LSA的新旧相同,不需要交换。\[3\] 综上所述,LSA在OSPF协议中扮演着重要的角色,通过LSA的传递,路由器可以了解到网络的拓扑信息,并根据这些信息进行路由计算和路径选择。 #### 引用[.reference_title] - *1* [OSPF中常见的六种LSA详解](https://blog.csdn.net/qq_50929489/article/details/126121937)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [OSPF LSA详解](https://blog.csdn.net/weixin_56601690/article/details/117084378)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [OSPF-LSA详解](https://blog.csdn.net/weixin_52644459/article/details/127102791)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值