OSPF知识

OSPF简介

OSPF开放式最短路径优先。工作在IP层之上,协议号为89,OSPF以组播方式发送协议包,使用SPF最短路径优先算法计算和选择路由。

工作过程可分为:建立邻居---同步链路状态---计算路由三个阶段。其中会有八种状态机的改变,五个报文的产生、十类LSA(这里我们只讲其中六个)以及五个不同区域。形成三张表(邻居表、拓扑表、路由表)。

LSDB:数据库,设备所有的链路信息集合,由LSA组成。

LSA:一条链路信息,多个可以组成LSDB数据库。

OSPF工作过程

1、建立邻居

以两个直连路由器为例,两台路由器开始时他们的状态为Down,R1开始发送第一个带有自己信息的Hello包,当R2接收到R1的Hello包时发现没有自己的路由信息,此时R2的状态转变为Init,此时R2发送携带自己路由信息和R1信息的Hello包。R1接收到后发现上面有自己的路由,状态转变为2-way后再想R2发送最后一个Hello包,携带自己和R2的路由信息。当R2收到后也将自己的状态转换为2-way。

2、同步链路状态

邻居建立完成后。状态从2-way转换为EX-start。开始发送DBD报文建立主从关系。RID大的为主否则为从。随后从的状态转变为exchange,向主发送一个携带拓扑描述信息的DBD报文,主收到后状态转换为exchange,并向从发送携带拓扑的DBD报文,从回复DBD做确认。

3、计算路由

当同步链路状态最后一个DBD发送后。R1状态从exchange变为loading,发送LSR请求完整拓扑信息LSA,对方R2收到消息后状态也变为loading,并发送LSU携带LSA信息回应R1的请求。R1收到后回复确认,通过多个LSR和LSU的交换,两个路由器的LSDB数据库同步完毕。形成拓扑表,这个过程中使用SPF算法计算出路由表。

4、得出OSPF路由

状态机总结

标题

邻居关系的状态

Down:邻居会话初始阶段,在邻居失效时间内未收到邻居路由的Hello数据包。

Attempt:没有收到邻居的任何信息,但是已经周期性向邻居发送报文,发送间隔HelloInterval

Init:从邻居收到hello报文,但报文中并没有自己的Router-id。

2-way:收到的Hello表中有自己的Router-id。DRother之间最终稳定状态下会是2-way状态。

邻接关系的状态

Exstart:开始协商主从关系,并确定DD的序列号。

Exchange:主从关系协商完成,交换DD报文(携带自己LSDB中的LSA)。

loading:使用LSR请求自己所需LSA信,LSU携带LSA信息对LSR做应答,LSack对LSU做确认。

DR/BDR

当多台OSPF路由器连到同一个多路访问网段时,如果每两台路由器之间都相互交换LSA,那么该网段将充满着众多LSA条目,为了能够尽量减少LSA的传播数量,通过在多路访问网段中选择出一个核心路由器,称为DR(Designated Router),网段中所有的OSPF路由器都和DR互换LSA,这样一来,DR就会拥有所有的LSA,并且将所有的LSA转发给每一台路由器;DR就像是该网段的LSA中转站,所有的路由器都与该中转站互换LSA,如果DR失效后,那么就会造成LSA的丢失与不完整,所以在多路访问网络中除了选举出DR之外,还会选举出一台路由器作为DR的备份,称为BDR(Backup Designated Router),BDR在DR不可用时,代替DR的工作,而既不是DR,也不是BDR的路由器称为Drother,事实上,Dother除了和DR互换LSA之外,同时还会和BDR互换LSA。

DR为了系统稳定性不支持抢占
DR的选举规则:
1.接口优先级,优先级大的越优。
2.优先级相同,ROuter-id 大的越优。(优先级为0,不参与选举。默认是1)
查OSPF DR优先级
dis ospf int g0/0/0
修改DR的优先级
ospf dr-priority

DR的选举时间是从hello时间开始,到hello的死亡时间结束。
MA网络中,DR的选举时间是40S

DR BDR选举是基于网段 而不是网络。如一个网络中有多个网段则会有多个DR BDR

DR选举

OSPF有三大表项:

1. OSPF邻居表 dis ospf peer brief 通过hello 报文建立邻居关系。
2.LSDB链路状态数据库 dis ospf lsdb 先建立邻接关系。
3.OSPF路由表, dis ospf routing 通过SPF算法计算后得到的最优路由。 

OSPF网络类型(Network Type)

OSPF是一个在各方面都考虑比较周全的路由协议,也会因此将该协议变得更为复杂化,OSPF并不像RIP与EIGRP那样,RIP与EIGRP在运行时,并不考虑OSI模型在二层所定义的内容,即并不关心二层的链路介质类型,而OSPF在运行时,必须考虑链路层的类型,称为OSPF网络类型(Network Type),对于不同二层介质类型,OSPF将有不同的操作和运行过程,网络类型,可分为如下几种:

  • 点到点(Point-To-Point)
  • 点到多点(Point-To-Multipoint )
  • 广播(Broadcast )
  • 非广播(Non-Broadcast )
  • 点到多点非广播(Point-To-Multipoint Non-Broadcast)

    对于不同的网络类型,将会影响到OSPF的Hello时间与Dead时间,关系到DR与BDR的选举与否,影响到OSPF邻居是自动建立还是手工建立,总结如下:

    网络类型 Hello时间 Dead时间 选举DR/BDR 邻居建立方式 报文发送方式
    点到点(p2p) 10s 40s 自动 224.0.0.5(组播)
    点到多点(p2mp) 30s 120S 自动 组播:hello  单播:其他报文
     
    广播(Boradcast) 10s 40s 自动 224.0.0.5 (组播,hello,LSU,LSack))
    非广播(Non-B) 30s 120S 手工 所有的报文都是单播发送
    点到多点非广播(p2mp-Non-B) 30s 手工

OSPF报文

  • Hello:建立和维护OSPF邻居关系。
  • DD:在Exstart时协商主从关系,并确定DD的序列号链路状态数据库描述信息,(LSDB数据库中的LSA头部列表,目录)
  • LSR:链路状态请求,向OSPF邻居请求链路状态信息请求发送所需的LSA头部标识。
  • LSU:链路状态更新。主动时(在路由信息或拓扑信息发生变化时)。被动时(针对缺少详细LSA信息进行回应,携带详细的LSA信息)。周期更新,防止LSA老化。
  • LSAck:对LSU中LSA进行确认的报文。

六类常用LSA类型

总共有11类

  • Router-LSA(Type1):每个设备都会产生,描述设备的链路状态和开销,在所属区域内传播
  • Network-LSA(Type2):由DR产生,描述本网段的链路状态,在所属的区域内传播。
  • Network-summery-LSA(Type3):由ABR产生,描述该区域内某个网段的路由,并通告给发布或接收此LSA的非Totally STUB或NSSA区域。
  • ASBR-summary-LSA(Type4):由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。
  • AS-external-LSA(Type5):由ASBR产生,描述到AS外部的路由,通告到所有的区域(除了STUB区域和NSSA区域)。
  • NSSA LSA(Type7):由ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。

OSPF五个区域

普通区域:缺省情况下,OSPF区域被定为普通区域。普通区域包括标准区域和骨干区域。

  • 标准区域时最通用的区域。他传输区域内路由,区域间路由和外部路由。
  • 骨干区域是连接所有其他OSPF区域的中央区域。骨干区域通常用Area 0 表示。

STUB区域:不允许发布自治系统外部路由,只允许发送区域内路由和区域间路由。为了保证自治系统外路由可达,由该区域ABR发布Type3缺省路由传播到区域内。

Totally STUB区域:不允许发布自治系统外部路由和区域间路由,只允许发布区域间路由。为了保证自治系统和其他区域路由可达由该区域的ABR发布Type3缺省路由传播到区域内,所有自治系统外部和其他区域路由都必须经过ABR才能发布。

NSSA区域:允许引入自治系统外部路由。由ASBR发布Type7给本区域。Type7在ABR上转换为Type5并泛红到整个OSPF域中。所有域都必须通过ABR才能发布。

Totally NSSA区域:允许引入自治系统外部路由。由SABR发布Type7给本区域。在ABR上转换成Type5并泛洪到整个OSPF域。该区域的ABR发布Type3和Type7缺省路由传播到区域内。所有域间路由必须通过ABR才能发布。

相关推荐

  1. 03 OSPF

    2023-12-16 00:08:01       29 阅读
  2. 04. <span style='color:red;'>OSPF</span>

    04. OSPF

    2023-12-16 00:08:01      29 阅读
  3. OSPF认证

    2023-12-16 00:08:01       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-16 00:08:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-16 00:08:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-16 00:08:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-16 00:08:01       18 阅读

热门阅读

  1. Android 13 - Media框架(22)- MediaCodec(三)

    2023-12-16 00:08:01       38 阅读
  2. 【数据结构】——查找、散列表简答题模板

    2023-12-16 00:08:01       23 阅读
  3. JIS-CTF

    JIS-CTF

    2023-12-16 00:08:01      36 阅读
  4. LINQ简述

    2023-12-16 00:08:01       41 阅读
  5. 将0x06(16进制)转换为二进制

    2023-12-16 00:08:01       47 阅读
  6. 基于SpringBoot在线电子购物平台网的设计与实现

    2023-12-16 00:08:01       43 阅读
  7. 飞天使-docker知识点2-dockerfile构建镜像

    2023-12-16 00:08:01       35 阅读
  8. Python: any()函数

    2023-12-16 00:08:01       40 阅读
  9. RTC外设

    RTC外设

    2023-12-16 00:08:01      41 阅读