动态路由协议OSPF介绍

文章目录

  • OSPF知识点汇总
    • OSPF特性以及相关术语
      • RID生成方式以及DR/BDR选举规则
    • OSPF四种网络类型
    • OSPF六种LSA类型介绍
    • OSPF特殊区域
    • OSPF五种报文分析
      • OSPF报文结构
    • OSPF工作原理
      • OSPF八种状态机
      • OSPF原理详细过程

OSPF知识点汇总

主要内容包括:OSPF相关术语、OSPF网络类型、常见LSA介绍、OSPF特殊区域、OSPF报文介绍和报文结构、OSPF状态机以及状态机迁移、OSPF工作原理。

OSPF特性以及相关术语

OSPF(Open Shorts Path Frist,开放式最短路径优先):是一种内部动态路由协议,用于解决RIP不能是用于大型网络,存在环路的问题;

OSPF的特性:

  • 使用SPF算法、支持汇总和认证、支持CIDR和VLSM、是无类路由协议;
  • 协议号89、管理距离(华为10,思科110)、触发更新、增量更新、周期更新和组播更新,绝对无环路;

OSPF常见术语:

  • IR(Internal Routers,区域内路由器):设备所有接口都在同一个区内;
  • ABR(Area Border Routers,边界区域路由器):设备的接口属于两个或两个以上的区域,其中必有骨干区域。ABR用于连接普通区域和骨干区域,与骨干区域的连接,可以是物理上的连接,也可以是逻辑上的连接(虚链路);
  • ASBR(AS Boundary Routers,自制系统边界路由器):设备接口至少一个接收了其他AS系统的路由信息。ASBR通常是在AS系统边界,但也可以在区域间,只要引进了外部路由(直连路由、静态路由、RIP路由、BGP路由等)就是ASBR;
    注:ABR和ASBR与物理地址无关,只要能实现相关功能就是ABR或ASBR;
  • BR(Backbone Routers,骨干路由器):设备接口至少有一个连接骨干区域。ABR和骨干区域内的路由器均是BR;
  • 第一类外部路由(Type1 External):经过ASBR引进的内部路由,计算方式为:开销=本设备到达ASBR的开销+ASBR到达目的路由的开销(OSPF区域内部的路由器到ASBR的开销+ASBR达到其他AS系统目的路由的开销)
  • 第二类外部路由(Type2 External):经过ASBR引进的内部路由,计算方式为:开销=ASBR到达目的路由的开销(只计算其他AS区域内路由的开销,不计算OSPF区域内到达ASBR的开销)

RID生成方式以及DR/BDR选举规则

RID(Router ID,路由ID):用于唯一标识OSPF内的路由器;

RID的生成方式(生成方式按照优先级依次往下):

  • 手动配置;
  • 如果没有手动配置,就使用路由器环回口的最大IP地址;
  • 如果没有配置环回口,就使用路由器物理接口的最大IP地址;

DR/BDR(Designated Router/Back-up Designated Router,指定路由器/指定备份路由器):在广播网络和NBMA网络环境中的角色,用于减少报文在环境中的传输,收集网络环境中的拓扑情况,发送给非DR/BDR,进行路由条目同步;

DR/BDR的选举:

  • 比较路由器的接口优先级,优先级最高的为DR,次之为BDR,缺省优先级为1
  • 如果优先级相同,就比较RID,最大的为DR,次之为BDR;
注:在广播网络和NBMA网络中,每个网段都会选举出DR/BDR;优先级为0表示不参与选举;DR与BDR为邻接关系,DR/BDR与Dother为邻接关系,Dother与Dother为邻居关系;

OSPF四种网络类型

OSPF协议定义了四种网络环境:广播网络、NBMA(非广播网络)、P2P(点到点网络)和P2MP(点到多点网络);

  • 广播网络:选举DR/BDR,接口优先级默认为1,hello时间10s,自动发现邻居;组播发送hello、LSU和LSAck报文,单播发送DD和LSR报文;
  • NBMA:选举DR/BDR,接口优先级默认为1,hello时间30s,手动设置邻居;单播发送Hello、DD、LSR、LSU和LSAck报文;
  • P2P不选举DR/BDR,接口优先级默认为1,hello时间10s,自动发现邻居;组播发送Hello、DD、LSR、LSU和LSAck报文;
  • P2MP不选举DR/BDR,几口优先级默认为1,hello时间30s,自动发现邻居,组播发送Hello报文,单播发送DD、LSR、LSU和LSAck报文;
注:缺省下,Dead Time(Hello死亡时间)是Hello时间的四倍;在邻接关系建立过程中两端的Hello时间不一致会造成邻居关系建立不成功;

OSPF六种LSA类型介绍

**LSA(Link State Advertisement,链路状态通告)**用于交换和保存整个网络的链路状态信息,从而掌握整个网络的拓扑结构,独立计算路由。

LSA常见的类型有6类:1类、2类、3类、5类、4类和7类;

  • Type1 LSA(Router LSA,路由LSA):

    • 描述对应设备的物理接口所连接的链路或接口(宣告设备存在),指明本设备接口信息(IP、子网掩码、MTU等信息);向邻居发送本设备的链路状态信息
    • 传播范围:本地OSPf区域,不穿透ABR;
    • 发送者:所有路由器;
      动态路由协议OSPF介绍_第1张图片
  • Type2 LSA(Network LSA,网络LSA):

    • 描述DR/BDR所在的网络拓扑结构
    • 传播范围:本地OSPf区域,不穿透ABR;
    • 发送者:DR/BDR路由器;
      动态路由协议OSPF介绍_第2张图片
  • Type3 LSA(Network Summary LSA,网络汇聚LSA):

    • 描述所连接区域的整个区域拓扑结构,用于告知同AS内其他OSPf区域,本区域的拓扑结构和链路信息
    • 传播范围:所有OSPF区域(Totally stub和Totally NSSA区域除外);
    • 发送者:ABR;
      动态路由协议OSPF介绍_第3张图片
  • Type5 LSA(AS External LSA,自治系统外部LSA):

    • 描述AS外部路由进入OSPF区域的路由(即向所有OSPF区域描述到达非OSPF区域内设备的状态信息);
    • 传播范围:所有OSPF区域(NSSA/Totally NSSA特殊区域除外);
    • 发送者:ASBR;
      动态路由协议OSPF介绍_第4张图片
  • Type4 LSA(ASBR Summary LSA,ASBR聚合LSA):

    • 描述其他OSPF区域到达该ASBR的路径,由于第五类LSA在OSPF区域传播时不会修改下一跳,因此需要第四类LSA指明到达ASBR的路径
    • 传播范围:所有OSPF区域(NSSA/Totally NSSA特殊区域除外);
    • 发送者:ABR;
      动态路由协议OSPF介绍_第5张图片
      注:ASBR所在的区域内路由器都知道通往ASBR所在的外部路由器,因此该区域不会存在去往本ASBR的第四类LSA,会存在去往其他区域ASBR的第四类LSA;
  • Type7 LSA(NSSA External LSA,NSSA外部LSA):

    • NSSA/Totally NSSA特殊区域内存在的路由,内容与第5类LSA基本相同
    • 传播范围:NSSA区域;
    • 发送者:ASBR;

OSPF特殊区域

OSPF为了使某些性能较低的路由器也能够划入OSPF并减小这些路由的负担,划分了四种特殊区域:stub、Totally stub、NSSA和Totally NSSA区域;

  • 末节区域(Stub Area):为某些性能较低并处于AS边界的路由器设置的优化策略;

    • 前提条件:

      • 位于AS边界并且只有一个ABR;
      • 没有ASBR;
      • 无虚链路穿越的非骨干区域;
      • 特殊区域内的路由器都需要配置(区域内路由器均知道);
    • 存在的LSA:将Type4 LSA和Type5 LSA过滤,并由ABR生成一条Type3 LSA默认路由并通告给本区域内的所有路由器,使得本区域能够通过默认路由访问其他其余的路由器;

  • 完全末节区域(Totally Stub Area):stub区域的优化版,过滤的更加彻底,有效的减少路由数量;

    • 前提条件

      • 位于AS边界并且只有一个ABR;
      • 没有ASBR;
      • 无虚链路穿越的非骨干区域;
      • 特殊区域内的路由器都需要配置(区域内路由器均知道);
    • 存在的LSA:将Type3、Type4 LSA和Type5 LSA过滤,并由ABR生成一条Type3 LSA默认路由并通告给本区域内的所有路由器,使得本区域能够通过默认路由访问其他其余的路由器;

动态路由协议OSPF介绍_第6张图片

  • NSSA区域:上述两种区域的升级版,降低了特殊区域所需的前提条件;

    • 前提条件

      • 可以位于非AS边界区域,允许多个ABR和多个ASBR;
      • 无虚链路穿越的非骨干区域;
      • 特殊区域内的路由器都需要配置(区域内路由器均知道);
    • 存在的LSA:将Type4 LSA和外部Type5 LSA过滤并在ASBR上将本区域的Type5 LSA转化为Type7 LSA,然后在ABR上将本区域Type7 LSA转化为Type 5 LSA发送给其他区域,并由ABR生成一条Type7 LSA默认路由并通告给本区域内的所有路由器,使得本区域能够通过默认路由访问其他区域的AS路由;

  • 完全NSSA区域(Totally NSSA Area):NSSA区域的优化版

    • 前提条件

      • 可以位于非AS边界区域,允许多个ABR和多个ASBR;
      • 无虚链路穿越的非骨干区域;
      • 特殊区域内的路由器都需要配置(区域内路由器均知道);
    • 存在的LSA:将Type3 LSA、Type4 LSA和外部Type5 LSA过滤并在ASBR上将本区域的Type5 LSA转化为Type7 LSA,然后在ABR上将本区域Type7 LSA转化为Type 5 LSA发送给其他区域,并由ABR生成一条Type7 LSA默认路由和一条Type3 LSA默认路由并通告给本区域内的所有路由器,使得本区域能够通过默认路由访问其他区域的AS路由和其他区域的路由器;

动态路由协议OSPF介绍_第7张图片

注:OSPF骨干区域也是一种特殊区域,OSPF骨干区域是Area ID为0,不同区域之间的报文交换都必须经过骨干区域,并且其他非骨干区域必须直接或间接与骨干区域相连,因此OSPF网络必须要有骨干区域。

OSPF五种报文分析

OSPF五种报文包括:Hello报文、DD报文、LSR报文、LSU报文和LSAck报文;

五种报文的作用如下:

  • Hello报文:建立和维护路由器之间的邻接关系,用于向邻居证明自己的存在;
  • DD报文(Database Description,数据库描述):包含有LSDB(链路状态数据库)信息的LSA摘要,用于比对LSDB(链路状态数据库)是否存在缺少的LSA;
  • LSR报文(Link State Request,链路状态请求):向邻居请求本设备缺少的LSA信息;
  • LSU报文(Link State Update,链路状态更新):按照LSR发送对方缺少的LSA详细信息;
  • LSAck报文(Link State Acknowledge,链路状态应答):表明收到了本设备所缺少的LSA详细信息;

OSPF报文结构

OSPF的五种报文(hello、DD、LSR、LSU和LSAck)采用的都是相同的OSPF报头;

注:OSPF报文解析在没有特殊说明的情况下,默认为广播网络环境=

OSPF报头格式:
动态路由协议OSPF介绍_第8张图片

报文字段 说明
Version 版本字段,指定当前OSPF协议使用的版本号,OSPFv2版本值为2;
Packet Type 报文类型字段,标识报文类型,数值为1-5,分别对应五种报文;
Packet Length 包长度字段,标识整个报文的字节长度(OSPF报头和各报文内容);
Router ID 路由器ID字段,指定发送者的源路由器ID;
Area ID 区域ID字段,指定发送报文的路由器接口所在的OPSF区域ID
Checksum 校验和字段,对整个报文(不包含验证字段)的校验和,用于对端路由器确定报文的完整性和正确性;
Auth Type 验证类型字段,0为不认证、1为简单认证、2为MD5认证
Authentication 验证字段,不认证时没有该字段无数据;简单认证时此字段为验证密码;MD5认证时此字段为MD5摘要信息;

Hello报文结构:
动态路由协议OSPF介绍_第9张图片

报文字段 说明
Network Mask 子网掩码字段,指定发送报文的路由器接口的子网掩码
Hello Interval Hello发送时间间隔字段,指定路由器发送报文的时间间隔,缺省为10s;
Options 可选项字段,置“0”代表没有相应特性,置“1”代表具有相应特性,特性包括:E 是否允许泛洪AS-external-LSA;MC 是否允许转发IP组播报文;N 是否允许处理Type7 LSA;DC 是否允许处理按需链路;
Rtr Pri 优先级值字段,指定本路由器的DR优先级值,默认为1;
Router DeadInterval Hello死亡时间间隔字段,指定本地路由器失效时间,默认为40s;如果在该时间内没有收到Hello报文,就表明邻居失效;
Designated Router DR路由器IP地址字段,指明本路由器的DR接口的IP地址;
Backup Designated Router BDR路由器IP地址字段,指明本路由器的BDR接口的IP地址;
Neighbor 邻居路由ID字段,指明邻居路由器的RID,可以有多个邻居;

DD报文结构:
动态路由协议OSPF介绍_第10张图片

报文字段 说明
Interface MTU 接口MTU字段,指明发送报文的接口在不分段的情况下,可发送的最大值
Options 可选项字段,置“0”代表没有相应特性,置“1”代表具有相应特性,特性包括:E 是否允许泛洪AS-external-LSA;MC 是否允许转发IP组播报文;N 是否允许处理Type7 LSA;DC 是否允许处理按需链路;
I 指定连续发送多个DD报文所处的位置,置“1”代表第一个报文,置“0”代表其他报文;
M 指定连续发送多个DD报文所处的位置,置“0”代表最后一个报文,置“1”代表其他报文;
M/S 主从关系字段,本端为Master设备就置为“1”,为Salve就置为“0”;
DD Sequence Number 序列号字段,指定发送报文使用的序列号,保证报文的正确性和可靠性;
LSA Header 摘要字段,指定报文中包含的LSA头部,可以同时包含多个LSA摘要;

注:MTU值不一致会导致状态机一直停留在Exstart状态

LSR博文结构:
动态路由协议OSPF介绍_第11张图片

报文字段 说明
LSA Type LSA类型字段,指明请求的LSA类型,取值为1-5,对应相应类型;
Link State ID 指定OSPF所描述的部分区域,该字段根据LSA类型不同而不同,Type1 LSA时,该字段为产生该LSA的路由器ID;Type2 LSA时,该字段为DR;Type3 LSA时,该字段为目的网络地址;Type4 LSA时,该字段为ASBR的RID;Type5 LSA和Type7 LSA时,该字段为目的IP地址;
Advertising Router 通告路由类型,指定发送LSR报文的路由器ID;

LSU 报文结构:

动态路由协议OSPF介绍_第12张图片

报文字段 说明
Number of LSA 指定报文中LSA的数量
LSAs 包含完整详细的LSA信息,同一个报文可以有多条详细LSA

LSAck报文结构:
动态路由协议OSPF介绍_第13张图片

报文字段 说明
LSA Age LSA时间字段,指明LSA产生后经过的时间,单位为秒。LSA在本地LSDB会随时间老化,当泛洪扩散时,路由器会将LSA的老化增加一个Trans-delay时间;
Options 可选项字段,置“0”代表具有相应特性,置“1”代表具有相应特性,特性包括:E 是否允许泛洪AS-external-LSA;MC 是否允许转发IP组播报文;N 是否允许处理Type7 LSA;DC 是否允许处理按需链路;
LSA Type LSA类型字段,指明应答的LSA类型,取值为1-5,对应相应类型;
Link State ID 指定OSPF所描述的部分区域,该字段根据LSA类型不同而不同,Type1 LSA时,该字段为产生该LSA的路由器ID;Type2 LSA时,该字段为DR;Type3 LSA时,该字段为目的网络地址;Type4 LSA时,该字段为ASBR的RID;Type5 LSA和Type7 LSA时,该字段为目的IP地址;
Advertising Router 通告路由字段,指定发送LSAck报文的RID;
LSA Sequence Number LSA序列号字段,指定发送报文使用的序列号,保证报文的正确性和可靠性;
LSA Checksum 校验和字段,对LSAck报文进行校验,确保接收方收到该报文是可靠的,安全的;
Length 长度字段,标识LSAck的字节大小;

OSPF工作原理

介绍各个状态机的作用以及迁移过程。

OSPF八种状态机

  • Down:所有OSPF设备的初始状态,发送包含有自己RID等信息的Hello请求报文;
  • Attempt:在NBMA网络中,邻居失效时间超时后,仍没收到hello应答报文,然后不断轮询发送hello报文
  • Init:收到不包含有自己DR的hello报文就跳转到Init;
  • 2-way:收到包含有自己DR的hello报文就跳转到2-way;
  • Exstart进行DR/BDR选举,建立邻居关系。发送空的DD报文,用于选举Master/Salve设备,并确定序列号
  • Exchange:发送带有LSA摘要的DD报文并接收邻居发送的DD报文,用于比较本设备LSDB(链路状态数据库)里所缺失的LSA;
  • Loading:向其他设备发送LSR报文请求缺少的LSA,其他设备按照LSR报文回复LSU报文;
  • Full:两端设备的LSDB同步完成后,相互发送LSAck报文;
注:状态机的切换不一定要依次切换,只要符合某个状态机的工作情况就会切换到该状态;

OSPF原理详细过程

动态路由协议OSPF介绍_第14张图片
在初始阶段,两端设备都处于Down状态,假定在广播网络且R1首先发送只包含有自己DR的Hello请求报文,R2收到对端发送hello报文时,发现该报文不包含有自己的RID,就从Down切换到Init状态,然后发送包含有自己和邻居RID的hello应答报文;

R1收到对端发送hello应答报文后,发现该报文中包含有自己的RID,就会从Down切换到2-way状态,然后将对端的RID加入到本地的邻居表里,再次发送包含有自己和R2路由器ID的hello应答报文,当R2收到包含有自己RID的hello报文,就会从Init切换到2-way状态;

R1和R2都进入2-way状态后,根据先前交互的Hello报文信息,共同进入Exstart状态。在Exstart状态下,R1和R2会选举出DR/BDR(比较优先级和RID),DR/BDR选举完成后,就会发送不含有LSA摘要的DD报文,用于选举出主设备和从设备(RID大的为主设备),并以主设备DD报文的序列号为基础(R1为主设备),主从确定后,从设备R2以主设备的序列号向主设备R1发送LSA Header字段为空,M/S为0(表明自己为从设备)的DD报文并切换至Exchange状态,主设备R1收到R1发送的空DD报文,也从Exstart切换至Exchange状态;

主设备R1开始不断的向从设备R2发送LSA Header不为空的DD报文(LSDB包含有很多的LSA,因此会拆分发送),从设备R2依次收到R1发送的DD报文后,都会按照主设备DD报文的序列号进行响应,当R1发送送完所有的不为空的DD报文就会从Exchange切换到Loading状态,当R2发送完LSA Header为空的DD响应报文后,也会从Exchange切换到Loading;

主设备发送完LSA摘要后,从设备R2根据这些LSA摘要信息查看本地LSDB发现有部分主设备的LSA没有包含,就会向R1发送LSR报文请求自己缺少的LSA,主设备R1收到LSR就会按照要求发送LSU报文(包含有LSR请求的LSA详细信息),R2收到LSU报文后,会将LSU报文包含的LSA详细信息添加进本地LSDB,然后回复LSAck报文,表明自己收到了LSU报文,如果从设备R2发现自己的部分LSA信息主设备R1没有,R2就会变为主设备向R1发送LSA Header不为空的DD报文,R1再发送LSA Header为空的DD应答报文(全部发送完毕),R1就会向R2发送LSR报文,R2收到LSR报文后发送相应的LSU报文,R1回复LSAck报文,至此R1和R2的LSDB同步完成,就切换进Full状态;

注:两端路由的MTU值不同就会一直处于Exstart状态;由于双发都有可能没有对方的LSA,故在DD报文交互的过程中主从关系不是固定的;

上述过程,如下图:

路由器A状态机 路由器A 路由器B 路由器B状态机 Down 以组播方式向邻居发送包含有本地设备的RID的Hello报文 Init 以组播方式向邻居发送包含有路由器A和B的RID的Hello报文 2-Way 以组播方式向邻居发送包含有路由器A和B的RID的Hello报文 2-Way 进行DR/BDR选举 Exstart Exstart 交互空的DD报文,确定主从设备关系 Exchange Exchange 发送DD报文,比较确实的LSA 发送LSR报文,请求进行LSDB更新 发送LSU,应答LSR请求报文 Loading Loading 相互进行LSDB同步直至LSA重传列表为空(建立邻接关系) Full Full 路由器A状态机 路由器A 路由器B 路由器B状态机

注:“进行DR/BDR选举”、“交互空的DD报文,确定主从设备关系”和"相互进行LSDB同步直至LSA重传列表为空(建立邻接关系)"均为双向交互的过程

你可能感兴趣的:(网络基础知识)