ospf协议基础详解

OSPF基础详解

  • OSPF概要
    • ospf的特点
    • ospf里的专业术语
  • OSPF原理
    • OSPF工作过程
    • OSPF协议关键要素
    • OSPF四张表
    • OSPF五种报文
      • Hello报文
      • DBD/DD报文(Database Description Packets)
      • LSR报文(Link-state Request)
      • LSU报文(Link-sate Update)
      • LSAck报文
      • DR和BDR
    • OSPF状态
      • Down
      • Init
      • Two-way
      • Ex-start
      • Ex-change
      • Loading
      • Full
      • 状态流程图
    • OSPF网路类型
    • OSPF多区域
      • 单区域有哪些问题
      • 多区域的优点
      • OSPF路由类型
      • 区域类型
      • 各区域特点
    • LSA(Link-State Advertisement)类型
      • LSA1-路由器LSA
      • LSA2-网络LSA
      • LSA3-网络汇总LSA
      • LSA4-ASBR汇总LSA
    • LSA5-自治系统外部LSA
      • OSPF外部路由
      • LSA7-NSSA-lsa
    • OSPF区域类型与LSA对照表
    • 链路通告类型
    • OSPF缺省路由发布汇总
    • OSPF路由选择优先级

OSPF概要

ospf (open shortest path first)开放式最短路径优先协议,是在多厂商设备下运行最多的设备,是由IETF工作小组制定的开放式协议,是采用一种SPF算法的路由协议。目前用的最多的是OSPFv2版本,OSPFv3支持ipv6。
ospf是基于ip协议来进行传输的协议号:89
SPF是ospf路由协议的基础,最短路径优先算法

ospf的特点

  1. 基于链路状态的IGP(内部网关路由协议)协议
  2. 支持CIDR/VLSM
  3. 区域内的路由器都具有相同的全局拓扑图
  4. 基于区域和层次划分
  5. 当网络发生变化时是触发时更新(triggered uodate)
  6. 每30分钟会周期性的更新(链路状态刷新)

ospf里的专业术语

AS(Autonomous System 自治系统):由同一个技术管理机构管理,使用同一选路策略的一些路由器的集合。
Router ID(路由器ID):用于在AS中唯一标识一台运行OSPF的路由器的32位整数,每个运行OSPF的路由器都必须有一个Router ID,简称RID。RID可以手动配置,如果未手动配置,则采用最高的loopback地址,如果未配置loopback地址,则采用最高的活动的物理接口地址
邻居(Neighbor):设备启动OSPF路由协议后,便会通过接口向外发送Hello报文。收到Hello报文的其他启动OSPF路由协议的设备会检查报文中所定义的一些参数,如果双方一致就会形成邻居关系。
邻接(Adjacency):形成邻居关系的双方不一定都能形成邻接关系,当两台路由器设备之间交换路由信息通告,并在此基础上建立了自己的链路状态数据库之后,才形成了邻接的关系
cost(开销):ospf使用接口的开销cost来作为Metric(度量值)

OSPF原理

OSPF工作过程

1,通过Hello包建立邻居关系,进而特定路由器之间建立邻接关系
2,运行ospf的路由器之间交互LSA报文同步LSDB(链路状态数据库)
3,每台路由器以自己为根,通过SPF算法为不同目的地址计算出最合理的去往路线
ospf协议基础详解_第1张图片

OSPF协议关键要素

三个阶段:邻居发现,路由通告,路由计算
四张表:邻居表,链路状态数据库,ospf路由表,全局路由表
五种报文:Hello,DBD,LSR,LSU,LSAck
六类LSA:LSA1,LSA2,LSA3,LSA4,LSA5,LSA7
七个状态机:Down,Init,Two-way,Ex-start,Ex-change,Loading,Full

OSPF四张表

邻居表:存储了邻居路由器的信息,如果一个OSPF路由器和它的邻居路由器失去联系,在几秒中的时间内,它会标记所有到达那条路由均为无效并且重新计算到达目标网络的路径
链路状态数据库:OSPF通过LSA学习其他的路由器和网络状况,LSA存储在LSDB中
ospf路由表:通过SPF计算出到达任一节点链路的所有路径
全局路由表:也就是路由表,根据ospf路由表,结合cost值计算得出到达目标网络的最佳路径信息

OSPF五种报文

ospf协议基础详解_第2张图片

Hello报文

Hello报文是用来建立和保持ospf邻居关系的,采用多播地址224.0.0.5。Hello报文里面包含路由器IDhello/dead时间邻居区域号(area id)路由优先级DR/BDR地址等等。
注意:hello/dead是定义了发送hello包频率,hello的间隔是10秒,dead间隔是4倍于hello包间隔。邻居之间要保持hello和dead的时间间隔是一样的,否则邻居建立不起来。
ospf协议基础详解_第3张图片

DBD/DD报文(Database Description Packets)

邻居建立之后,并不会立刻就将自己链路状态数据库中所有的LSA全部发给邻居,而是将LSA的基本描述信息发给邻居,这就是Database Description Packets (DBD),描述LSDB中LSA头部信息,就是LSA的目录信息,相当于书的目录,邻居在看完DBD之后,就能知道哪些LSA是需要邻居发送给自己的。
ospf协议基础详解_第4张图片

LSR报文(Link-state Request)

邻居在看完发来的LSA描述信息(DBD)之后,就知道哪些LSA是需要邻居发送给自己的,自己就会向邻居发送LSA请求(LSR),告诉邻居自己需要哪些LSA

LSU报文(Link-sate Update)

当邻居收到其它路由器发来的LSA请求(LSR)之后,就知道对方需要哪些LSA,然后根据LSR,将完整的LSA内容全部发给邻居,以供计算路由表。

LSAck报文

就是确认已经收到了所有需要邻居发给自己的LSA

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,优先级相等则比较route-id,route-id高的做DR
DR和BDR的选举会在建立邻居的过程中选举出来

OSPF状态

Down

路由器刚刚启动OSPF进程,还没有从任何路由器收到任何数据包,Hello包也没有收到,在此进程,可以向外发送Hello包,以试图发现邻居。

Init

只是OSPF路由器一方收到了另一方的Hello,但并没有双方都交换Hello,也就是对方的Hello中还没有将自己列为邻居

Two-way

双方都已经交换了Hello信息,并且从Hello中看到对方已经将自己列为邻居,此状态,就表示OSPF邻居关系已经建立,并且如果是需要选举DR和BDR的话,也已经选举出来,但OSPF邻居之间并不一定就会交换LSA,如果不需要交换LSA,则永远停留在此状态,如果需要形成邻接并互相交换LSA,则状态继续往下进行。(比如Drother与Drother之间将永远停留在Two-way状态,因为Drother与Drother之间不需要交换LSA。)

Ex-start

因为在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高。

Ex-change

就是交换Database Description Packets (DBD)的过程,DBD只是LSA的简单描述,只包含LSA的一些头部信息,收到DBD的路由器会和自己的链路状态数据库作对比,确定需要哪些LSA的完整信息,就会发送LSR请求给邻居。

Loading

邻居根据收到的LSR(Link-State Request),向对方回复Link-state update(LSU)。

Full

等到OSPF都收到了邻居回复的所有Link-state update(LSU),那么此时的数据库状态就变成了收敛状态,此状态就是Full状态,但此时只是数据库已经同步,但路由表却还在计算当中。

状态流程图

ospf协议基础详解_第5张图片
总结:
工作原理
在开始会在Down状态下, 这时尚未收到邻居的Hello报文,开始发送hello报文给邻居,收到邻居的hello报文检查里面有没有自己的route id,没有会处于init状态,有会建立邻居关系,生成邻居表,处于2-way状态(如果是多点网络会同时选举DR/BDR)
邻居关系建立成功之后会处在Exstart状态,DBD报文会协商邻居的主从关系,之后DBD报文会交互链路状态数据库的汇总信息,这时就处在Exchange状态, 通过LSR和LSU报文和Lsack报文的交互获取尚未发现的链路状态信息,处在Loading状态, 生成链路状态数据库 ,路由器之间完成数据库的同步就会处在Full状态, 之后使用最短路径算法,计算本地到达所有未知网段的最佳路由,然后将其加载路由表中

OSPF网路类型

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

  1. 点到点(Point-To-Point)
  2. 点到多点(Point-To-Multipoint )
  3. 广播(Broadcast )
  4. 非广播(Non-Broadcast )
  5. 点到多点非广播(Point-To-Multipoint Non-Broadcast)
    对于不同的网络类型,将会影响到OSPF的Hello时间与Dead时间,关系到DR与BDR的选举与否,影响到OSPF邻居是自动建立还是手工建立,总结如下:
网络类型 Hello时间 选举DR/BDR 邻居建立方式
点到点p2p 10s 自动
点到多点p2mp 30s 自动
广播Boradcast 10s 自动
非广播Non-B 30s 手工
点到多点非广播p2mp-Non-B 30s 手工

OSPF多区域

单区域有哪些问题

  1. 同一个区域内所有路由器LSDB完全相同
  2. 收到LSA通告太多
  3. 内部链路动荡会引起全网路由器的完全SPF计算
  4. 区域内路由无法汇总,需要维护的路由表越来越大,资源消耗过多,性能下降,影响数据转发

多区域的优点

  1. 把大型网络分割为多个较小,可管理的单元:区域 area
  2. 控制LSA只在区域内洪泛,有效地把拓扑变化控制在区域内,拓扑的变化影响限制在本区域
  3. 提高了网络的稳定性和扩展性,有利于组建大规模的网络
  4. 在区域边界可以做路由汇总,减小了路由表

OSPF路由类型

内部路由器:所有接口属于同一个区域
区域边界路由器:接口分布在多个区域,且至少有一个活动接口在骨干区域
骨干路由器:只要有接口在骨干区域的路由器
自治系统边界路由器:AS边界路由器
ospf协议基础详解_第6张图片

区域类型

骨干区域(Backone Area 0):负责连接非骨干区域,其他区域(非骨干区域)必须保证和骨干区域有直接的物理连接,骨干区域不能配置为特殊区域
标准区域(Standard Area):标准的OSPF区域,能发起也能接收区域内路由,区域间路由,外部路由,骨干区域也是一个标准区域
末节区域(Stub Area):不能重发布引入外部路由,也不能接收外部路由,ABR自动生成缺省路由(LSA3)通告stub区域内部
完全末节区域(Totally Stub Area):不能重发布引入外部路由,也不能接收外部路由,区域间路由,ABR自动生成缺省路由(LSA3)通告进stub区域内部
NSSA区域(Not-so-stubby Area):可存在ASBR的stub,通过LSA7在本区域引入外部路由LSA7在NSSA内洪泛,通过ABR时转换为LSA5
完全NSSA区域(Totally NSSA):进一步由NSSA ABR阻挡LSA3进入NSSA区域内,ABR自动生成缺省路由(LSA3)通告进完全NSSA区域

各区域特点

区域类型 接收区域间的路由 ABR是否发送默认路由 是否可以重发布引入外部路由
Stub Area
Totally Stub Area
Not-so-stubby Area
Totally NSSA

LSA(Link-State Advertisement)类型

OSPF由于有着多种区域类型,多种网络类型,多种链路类型,多种路由器身份,所以LSA(Link-State Advertisements)也是多样的。
在详细讲解LSA之前,需要重点说明,只有同一个区域内的LSA,才是精确的,区域外的LSA,并不一定包含所有必备的信息,因此,所有LSA知识信息,并不一定可以套用到每一类LSA。

OSPF中共有11类LSA,而在CCIE的要求中,只需要理解1、2、3、4、5、7共6类即可,这些LSA会因为区域类型,网络类型,链路类型,路由器身份的不同而不同,以下是详细介绍:

LSA1-路由器LSA

  1. 每个路由器针对它所在的区域产生LSA1,描述区域内部与路由器直连的链路的信息
  2. LSA1只在本区域内洪泛,不会跨越ABR
  3. LSA中会标识路由器是否是ABR(B比特置位),ASBR(E比特置位)或者是Virtual-link(V比特置位)的端点的身份信息
  4. LSA中会标识路由器所支持的Option功能(如E)
    ospf协议基础详解_第7张图片

LSA2-网络LSA

  1. 由DR生成,描述在该网络上连接的所有路由器以及子网信息,LSA2只在本区域内洪泛,不会跨越ABR
  2. 通过LSA1,LSA2在区域内洪泛,使区域内每个路由器LSDB达到同步,计算生成标识为“O”的区域内路由,解决区域内部的通信问题
    ospf协议基础详解_第8张图片

LSA3-网络汇总LSA

  1. 由ABR生成,将区域内部的拓扑信息以子网的形式通告出区域
  2. 先通告进骨干区域,再由骨干区域向其他区域通告
  3. LSA3的扩散本质属于DV行为
    ospf协议基础详解_第9张图片

LSA4-ASBR汇总LSA

  1. 由ABR生成,在阻拦LSA1的同时生成LSA4,描述到ASBR的可达性
  2. 格式与LSA3相同,描述的目标网络是一个ASBR的RouterID
  3. LSA4触发条件为:ABR收到一个Type5 LSA
    ospf协议基础详解_第10张图片

LSA5-自治系统外部LSA

  1. 由ASBR产生,描述到AS外部的路由,通告到所有的区域(除了Stub和NSSA两个特殊区域)
  2. 缺省情况下,LSA5生成路由用OE2表示,可强行指定为OE1
    ospf协议基础详解_第11张图片

OSPF外部路由

E1:成本为外部成本加上分组经过的每条链路的内部成本,当多台ASBR将同一条外部路由通告到同一个AS中时,应使用这类型避免次优路由选择
E2:成本总是只包含其外部成本路由到AS中时,全用这种类型
ospf协议基础详解_第12张图片

LSA7-NSSA-lsa

因为NSSA区域可以将外部路由重分布进OSPF进程,而NSSA不是一般的常规区域,所以在NSSA将外部路由重分布进OSPF时,路由信息使用类型7来表示,LSA 7由NSSA区域的ASBR产生,LSA 7也只能在NSSA区域内传递,如果要传递到NSSA之外的其它区域,需要同时连接NSSA与其它区域的ABR将LSA 7 转变成LSA 5后再转发。

OSPF区域类型与LSA对照表

ospf协议基础详解_第13张图片

链路通告类型

ospf协议基础详解_第14张图片

OSPF缺省路由发布汇总

ospf协议基础详解_第15张图片

OSPF路由选择优先级

  1. 区域内路由>区域间路由>E1外部路由>E2外部路由
  2. 同一类型的路由,优选cost小的;如果相同,产生等价路由
  3. 对E2路由,cost相同时,优选到ASBR路径短的

你可能感兴趣的:(路由,ospf,网络,网络协议)