OSPF---开放式最短路径优先协议

目录

1. OSPF描述

1.1基本概念

1.2 优点

2. OSPF数据报文

2.1总体概述

2.2 OSPF头部信息

2.3 Hello包

 2.4 DBD包

2.5 LSA三元组

3. OSPF七种邻居状态机

 3.1条件匹配

 4. OSPF七种接口状态机

目录

1. OSPF描述

1.1基本概念

1.2 优点

2. OSPF数据报文

2.1总体概述

2.2 OSPF头部信息

2.3 Hello包

 2.4 DBD包

2.5 LSA三元组

3. OSPF七种邻居状态机

 3.1条件匹配

 4. OSPF七种接口状态机

 5. OSPF工作过程

6. OSPF基本配置

6.1 OSPF扩展配置

7. OSPF的接口网络类型

7.1 P2P(Point-to-Point 点对点)

7.2 P2MP(Point ti Multi-Point 点到多点)

7.3 BMA(Broadcast Multiple Access 广播多路访问)

7.4 NBMA(Non-Broadcast Multiple Access 非广播多路访问)

7.5 环回接口

7.6 扩展

总结:

8. OSPF区域化结构


1. OSPF描述

          OSPF协议是一种链路状态协议。每个路由器负责发现、维护与邻居的关系,并将已知的邻居列表和链路费用LSU报文描述,通过可靠的泛洪与自治系统AS内的其他路由器周期性交互,学习到整个自治系统的网络拓扑结构;并通过自治系统边界的路由器注入其他AS的路由信息,从而得到整个Internet的路由信息。每隔一个特定时间或当链路状态发生变化时,重新生成LSA,路由器通过泛洪机制将新LSA通告出去,以便实现路由的实时更新

          这样,每台路由器都收到了自制系统中所有路由器生成的LSA,这些LSA的集合组成了LSDB(链路状态数据库),这样所有的OSPF路由器都维护一个相同的描述自治系统内部结构的数据库。

1.1基本概念

  • 协议使用范围----IGP
  • 链路状态型协议----传递拓扑
  • 传递真实掩码信息----无类别路由协议
  • OSPF版本
    • OSPFv1
    • OSPFv2----IPv4
    • OSPFv3----IPv6
  • 使用SPF算法
  • OSPF传递的是LSA信息(链路状态通告)
  • OSPF更新方式
    • 触发更新
    • 周期链路状态刷新-----30min
  • OSPF更新地址---组播
    • 224.0.0.5/224.0.0.6
  • OSPF开销值===参考带宽/实际带宽(参考带宽默认为100Mbps)——针对于接口而言
  • OSPF进行跨层封装----基于IP协议进行封装,协议号89

1.2 优点

  • 支持在多条等代价路由之间的负载均衡;
  • 支持路由信息交换的认证;
  • 可用作大型自治系统的内部路由协议。
  • OSPF采用SPF算法计算路由,从算法上保证了不会产生路由环路
  • OSPF不限制网络规模,更新效率高,收敛速度快

2. OSPF数据报文

2.1总体概述

  •  Hello报文
    • 用来周期性发现、建立、保活OSPF邻居关系。
    • 进行DR、BDR选举
    • hello time:10S发送一次hello报文,来确认邻居的存在
    • 如果一个dead time时间没有收到邻居发送给自己的hello报文,则认为邻居不存在
    • time一般为hello时间的四倍,默认情况下为40S。
    • Router-ID------RID
      • 全域唯一,标识路由器的身份
      • 使用IP地址的表示形式
        • 配置方式:
          • 1、手工配置:满足上面两条规则即可。
            2、自动配置:路由器默认优选最大环回IP地址,没有环回则选择最大物理IP地址。
            注意:
                   启动OSPF进程前,必须有接口IP地址。若有,则在第一次启动OSPF进程时,选择第一个配置的IP地址作为RID值。
          • 在思科中,若没有IP,则OSPF启动失败。在华为中,RID会设定为0.0.0.0。
          • 华为逻辑:在第一次启动设备时,选择第一个UP的接口的IP作为全局RID。之后按照国际标准执行。
  • DBD报文
    • 数据库描述报文
    • 携带路径信息的摘要信息----为了避免重复更新和减少更新量。
  • LSR报文
    • 链路状态请求报文
    • 根据DBD中的信息,请求获取未知的链路信息(LSA信息)
  • LSU报文
    • 链路状态更新报文
    • 携带有真正的LSA信息的数据包
  • LSAck报文
    • 链路状态确认报文

2.2 OSPF头部信息

如果验证类型字段为0--不认证。则认证数据部分使用全0填充,保证首部大小为24字节

区域ID用于路由器双方进行验证,如果双方所属区域不同,则无法建立邻居关系

2.3 Hello包

作用:发现、建立以及周期性保活邻居关系、进行DR和BDR的选举

  • 网络掩码

    • 该报文被路由器的那一个接口发送,该字段填充该接口的掩码信息。

    • 两台OSPF路由器会检查该字段内容,如果该字段与收到该报文的接口的掩码信息不符,则会丢弃该hello报文。----网络掩码字段的检查仅在MA网络进行

    • 注意:OSPF建立邻居关系需要对比网络掩码字段是华为厂商独有的手段。

  • Hello时间

    • 两台直连路由器如果要建立邻居关系,则需要保证该参数取值一致,否则无法正常建立邻居。

  • 路由器失效时间

    • 两台直连路由器如果要建立邻居关系,则需要保证该参数取值一致,否则无法正常建立邻居。

  • 可选项

    • 8个标记位,每个标记位置为1,则代表该设备开启了某一种OSPF特性。

    • 可选项中有部分标记位被称为特殊区域标记,该标记在邻居关系建立时会被检查,如果不同则会影响到邻居关系建立。

  • DR/DRR

    • 填充的是网络中DR/BDR所在接口的IP地址。

    • 如果没有选举出,则填充0.0.0.0

所有224.0.0.X格式的组播IP地址被称为本地链路组播;
目标IP地址是本地链路组播的数据包中的TTL值被设定为1

所有的本地链路组播都存在与之对应的组播MAC地址。
01-00-5e-0+IP地址的后23位。

[r1-GigabitEthernet0/0/0]ospf timer hello 100  --修改hello时间
[r1-GigabitEthernet0/0/0]ospf timer dead 20  ---修改死亡时间

 2.4 DBD包

隐性确认机制:

  • 使用未携带数据的DBD报文进行主从关系选举

  • 使用携带数据的DBD报文进行LSA摘要信息共享

  • 使用未携带数据的DBD报文进行确认

  • 接口最大传输单元

    • OSPF在exstart状态需要进行MTU数值协商,如果双方数值不同,则会影响后续OSPF工作。

    • 该参数会影响OSPF邻接关系的建立,如果参数不同,则双方停留在exstart状态。

    • 华为默认情况不开启MTU检测机制。

      • 在华为体系下,无论接口的实际MTU数值为多少,该字段数值均为0。

      • [r1-GigabitEthernet0/0/0]ospf mtu-enable ---开启OSPF对MTU的检测机制,双方均需要开启。

  • 标记位

    • I位

      • 代表此时时候在进行主从关系选举。

      • 当该标记位置为1时,则代表此时在进行主从关系选举,且该报文不会携带LSA头部信息。

    • M位

      • 代表后续是否还存在别的DBD报文。

      • 该标记位置为1,则代表此时后续还有其他DBD报文。

    • MS位

      • 当该标记位置为1,则代表此时发送该报文的接口为主设备。

      • 在主从关系选举完成之前,所有DBD报文的MS位均为1

  • DD序列号

    • 用于确保DD报文在传输过程中的有序性和可靠性。DD报文的序列号在DD报文交互过程中逐次加一。

    • 只有主设备才可以规定DD序列号内容。

      • 如果从设备发送完数据,而主设备没有发送完毕。从设备也需要回复一个空的DD报文进行确认。

      • 如果主设备发送完毕,从设备没有发送完毕。主设备需要发送空的DD报文,目的是给从设备提供DD序列号使用。

    • 隐性确认---从设备必须根据主设备发送报文中的序列号来发送自己的DD报文

2.5 LSA三元组

LSA三元组可以通过这三个参数唯一的标识一条LSA信息

3. OSPF七种邻居状态机

  • down----关闭状态-----一旦启动了OSPF协议,则发出hello报文,进入下一状态
  • init-----初始化状态----当收到的hello报文中,存在本地RID值时,进入下一状态
  • 2-way-----双向通讯状态-----------邻居关系建立的标志
    • 条件匹配:匹配成功则进入下一阶段,失败则停留在邻居关系。
  • exstart----预启动状态-----使用未携带信息的DBD报文进行主从关系选举,RID大的为主
  • exchange-----准交换----使用携带目录信息的DBD包进行目录共享
  • loading-----加载状态-----邻居间使用LSR/LSU/LSACK三种报文来获取完整的拓扑信息
  • full----转发状态----拓扑信息交换完成后进入该状态-----邻接关系建立的标志

注:

Attempt状态---尝试状态---------仅在NBMA网络中会出现,当设备启动后,从down切换到该状态,尝试向外发送hello报文,当成功发送后,进入到init状态。

 3.1条件匹配

目的:减少网络中LSA信息的重复更新及资源消耗

  • 设备接口角色
    • 指定路由器------DR
    • 备份指定路由器-----BDR-----BDR是指备用的 DR
    • 其他路由器----DRother
      • 选举规则:
        • 1. 优先级,默认为1   范围:0-255,越大越优,当优先级为0时 放弃选举
        • 2. 对比设备RID,越大越优
      • 选举范围
        • 一个广播域,进行一次条件匹配。

组播地址:
1、DRother发送时使用
224.0.0.6

2、DR/BDR接收224.0.0.6,发送224.0.0.5

  • 角色之间的关系
    • DR与BDR----邻接
    • DR与DRother---邻接
    • BDR与DRother---邻接
    • DRother与DRother----邻居
  • OSPF条件匹配的情况
    • 在以太网网络中-----必须进行条件匹配
    • 在点到点网络中-----不需要进行条件匹配
  • 条件匹配是属于非抢占模式-------一旦选举成功,不会因为新加入的设备而重新选举,若需要                                                     重新选举,则重启OSPF

 4. OSPF七种接口状态机

  • Down:接口的初始状态。表明此时接口不可用,不能用于收发流量。
  • Loopback:设备到网络的接口处于环回状态。环回接口不能用于正常的数据传输,但可以通过Router-LSA进行通告。因此,进行连通性测试时能够发现到达这个接口的路径。
  • Waiting:设备正在判定网络上的DR和BDR。在设备参与DR和BDR选举前,接口上会启动Waiting定时器。在这个定时器超时前,设备发送的Hello报文不包含DR和BDR信息,设备不能被选举为DR或BDR。这样可以避免不必要地改变链路中已存在的DR和BDR。仅NBMA网络、广播网络有此状态。
  • P-2-P:接口连接到物理点对点网络或者是虚拟链路,这个时候设备会与链路连接的另一端设备建立邻接关系。仅P2P、P2MP网络有此状态。
  • DROther:设备没有被选为DR或BDR,但连接到广播网络或NBMA网络上的其他设备被选举为DR。它会与DR和BDR建立邻接关系。
  • BDR:设备是相连的网络中的BDR,并将在当前的DR失效时成为DR。该设备与接入该网络的所有其他设备建立邻接关系。
  • DR:设备是相连的网络中的DR。该设备与接入该网络的所有其他设备建立邻接关系。

 5. OSPF工作过程

  • OSPF协议启动后,路由器A向本地所有运行了OSPF协议的直连接口,使用组播地址224.0.0.5发送hello报文
    • 该hello报文中携带了本地的全域唯一的RID值
    • 以及自己已经知晓的邻居的RID(通过接收其他邻居的hello包来获取邻居的RID)
  • 当对端路由器B接收hello报文中存在本地RID数值(路由器A),则进入2-way状态,且将与邻居的关系加入到邻居表中
  • 此时,A与B建立邻居关系,并生成邻居表
  • 邻居关系建立后,邻居之间进行条件匹配匹配失败则停留在邻居关系仅使用hello报文保活
    • 若匹配成功,则可以开始建立邻接关系
  • 开始建立邻接关系,首先使用未携带数据的DBD报文进行主从关系选举,主设备先进入下一个状态,从设备先发送下一个报文。之后使用DBD报文来共享LSA摘要信息。之后双方通过LSR、LSU、LSAck报文完成未知LSA的获取过程
    • 完成本地数据库的搭建----LSDB
  • 基于本地数据库中的LSA信息,通过算法SPF计算出有向图和最短路径树,并计算所有到达所有节点的路由信息,将计算出的路由信息加载到OSPF路由表中
    • 此时,路由器完成路由收敛工作
  • 基于OSPF路由表以及其他协议路由表,共同选择出最优路由,并将最优路由加载到全局路由表中,以供后续指导数据包的转发过程
  • 最后,使用hello报文进行周期保活,并且每30min进行一次链路状态刷新

6. OSPF基本配置

1.启动OSPF协议,配置进程号(仅具有本地意义),手工配置RID值

  • 若没有配置RID值,则设备自动生成(环回接口最大IP>物理接口最大IP)
  • [r1]ospf 1 router-id 1.1.1.1

2.划分区域

  • [r1-ospf-1]area 0

3. 宣告:激活接口,发布拓扑或路由

  • 宣告网段
    • 范围宣告
      • [r1-ospf-1-area-0.0.0.0]network 12.0.0.0  0.0.0.255
        • 反掩码:32位二进制,使用点分十进制表示,由连续0+连续1
    • 精准宣告---推荐
      • [r1-ospf-1-area-0.0.0.0]network 12.0.0.1 0.0.0.0
  • OSPF邻居表
    • [r2]display ospf peer ---查看OSPF邻居
    • [r2]display ospf peer brief ----查看OSPF邻居简表
  • OSPF数据库表
    • [r2]display ospf lsdb -----查看OSPF数据库表
  • OSPF路由表
    • [r2]display ospf routing ---查看OSPF路由表
    • OSPF优先级====10
  • 重置OSPF进程
    • [r2]reset ospf 1 process

6.1 OSPF扩展配置

  • 修改OSPF默认参考带宽
    • [r2-ospf-1]bandwidth-reference 10000 -----修改参考带宽,两端均需要修改
  • 修改接口优先级,从而干涉条件匹配
    • [r1-GigabitEthernet0/0/0]ospf dr-priority 10 -----在接口修改优先级
    • [r1-GigabitEthernet0/0/0]ospf dr-priority 0 ---优先级修改为0,代表放弃选举
  • 手工汇总
    • [r2-ospf-1-area-0.0.0.0]abr-summary 192.168.0.0 255.255.252.0
    • 必须在ABR上配置
    • 汇总的明细路由来源在那个区域,进入那个区域进行配置
  • 缺省路由
    • 在边界设备上
    • [r1-ospf-1]default-route-advertise -----非强制性下发,要求边界路由器中存在缺省路由才可以下发
    • [r1-ospf-1]default-route-advertise always -----强制性下发,不要求本地存在缺省路由
  • 静默接口
    • 不接受也不发送OSPF报文,与RIP的静默接口不同。
    • [r3-ospf-1]silent-interface GigabitEthernet 0/0/1
  • 接口认证
    • [r1-GigabitEthernet0/0/0]ospf authentication-mode ?
      • md5 Use MD5 algorithm -----MD5认证
      • null Use null authentication -----不认证----OSPF默认情况
      • simple Simple authentication mode ------简单认证----明文认证
    • [r1-GigabitEthernet0/0/0]ospf authentication-mode md5 1(编号) cipher 123456
  • 加快收敛
    • [r3-GigabitEthernet0/0/0]ospf timer hello ? -------一端修改,另一端必须修改,若不修改,则会导致邻居关系无法建立。

                  INTEGER<1-65535> Second(s)

7. OSPF的接口网络类型

网络类型OSPF接口的工作方式
BMABroadcast
  • 可以建立多个邻居关系,需要进行DR选举
  • hello 10S;dead 40S
P2PP2P
  • 只能建立一个邻居关系,不需要进行DR选举
  • Hello 10S;dead 40S
环回接口(虚拟接口)P2P
  • 华为设备定义为P2P类型,而思科定义为loopback类型。
  • 环回接口默认学习32位主机路由
P2MP
  • 可以建立多个邻居关系,不需要进行DR选举
  • hello 30S,dead 120S
NBMA(帧中继)NBMA
  • 可以建立多个邻居关系,需要DR选举
  • 无法自动建立邻居关系
  • hello 30S,dead 120S
  • Vlink;hello 10S,dead 40S
  • 不需要DR选举
  • 以单播形式发送hello报文。

7.1 P2P(Point-to-Point 点对点)

  • 只能建立一个邻居关系,不需要进行DR选举。Hello 10S;dead 40S

    • ​​​​​​​​​​​​​不进行DR选举——加速收敛

  • P2P指的是在一段链路上只能连接两台网络设备的环境,一根网线,一左一右。

  • 该环境下只有2台设备,也只能是2台设备,链路中间不能加入其他设备。如,一条链路上不能加入交换机设备。

  • 典型的例子是PPP链路。当接口采用PPP封装时,OSPF在该接口上采用缺省网络类型是P2P

  • P2P类型中,所有报文使用组播形式发送

注:

  • Type:P2P---接口网络类型为P2P--此接口类型会将自己的邻居展示出来及--12.0.0.1
  • cost=参考带宽/真实带宽=100/2.048=48--计算结果大于1时,cost只取整数部分
    • 华为设备串口默认遵循E1标准=2.048Mbps

查看接口网络类型 

  •  Poll--->轮询时间间隔
    • 在NBMA网络上,当邻居失效后,路由器将按照设定好的轮询时间间隔定期发送hello报文。以检测邻居是否上线。
    • 该时间在修改时最少为hello时间的四倍
  • Retransmit--->邻居路由器重传LSA的间隔时间
  • Transmit Delay--->LSA延迟时间
    • 该字段是针对LSA设置的,因为OSPF网络需要保证全网的LSDB数据库相同,而LSDB数据库中的每一个LSA是具备一个老化时间参数的,该参数也需要统一。
    • 而LSA在链路中传递时,老化时间不会改变,导致最终数据不统一。

7.2 P2MP(Point ti Multi-Point 点到多点)

  • P2MP相当于将多条P2P链路的一段进行捆绑得到的网络。
  • 没有一种链路层协议会被缺省的认为是P2MP网络类型。该类型必须由其他网络类型手动更改。
  • 常用的做法是将非全连通的NBMA改为点到多点的网络
  • P2MP可以建立多个邻居关系,不需要进行DR选举
  • hello 30S,dead 120S。

7.3 BMA(Broadcast Multiple Access 广播多路访问)

  • BMA也被称为Broadcast,指的是一个允许多台设备接入的、支持广播的环境。
  • 需要进行DR选举   hello 10S;dead 40S
  • 典型的例子是Ethernet以太网。当接口采用Ethernet封装时,OSPF在该接口上采用的缺省网络类型为BMA。
  • BMA类型中,Hello、LSU、LSAck三种报文以组播形式通告,而其他报文以单播形式通告

7.4 NBMA(Non-Broadcast Multiple Access 非广播多路访问)

  • NBMA指的是一个允许多台网络设备接入且不支持广播的环境
  • 典型的例子是帧中继(Frame-Relay)网络
  • NBMA,可以建立多个邻居关系,需要DR选举
  • hello 30S,dead 120S
  • 无法自动建立邻居关系

7.5 环回接口

  • P2P
    • 华为设备定义为P2P类型,而思科定义为loopback类型
    • 环回接口默认学习32位主机路由
  • P2MP
    • 可以建立多个邻居关系,不需要进行DR选举
    • hello 30S,dead 120S。

所有通过OSPF学习到的环回接口的路由,掩码信息均为32位主机路由

------>因为环回接口是一个模拟的接口,实际上并没有连接用户,所以没有其余的IP地址存在于环回接口之下,只有一个可用IP地址,故而使用32位掩码来直接标识

------>避免了环路或者路由黑洞的产生

 在OSPF中,环回接口的开销值恒定为0

OSPF组播地址:224.0.0.5

7.6 其它

#查看可以修改的网络类型
[AR1-GigabitEthernet0/0/0]ospf network-type ?
  broadcast  Specify OSPF broadcast network
  nbma       Specify OSPF NBMA network
  p2mp       Specify OSPF point-to-multipoint network
  p2p        Specify OSPF point-to-point network

#修改为P2P,重新建立邻居关系
[AR1-GigabitEthernet0/0/0]ospf network-type p2p

      在条件匹配中,会存在一个waiting计时器,该计时器等于该接口的死亡时间,当该时间超时,则代表DR选举失败,此时接口认为自己为DR设备,并且进入exstart状态

中心

interface Tunnel0/0/0
 ip address 192.168.4.7 255.255.255.0 
 tunnel-protocol gre p2mp
 source 107.0.0.7

 

分支

interface Tunnel0/0/0
 ip address 192.168.4.8 255.255.255.0 
 tunnel-protocol gre p2mp
 source GigabitEthernet0/0/0
 nhrp entry 192.168.4.7 107.0.0.7 register

在公网中ISP设备中不需要运行OSPF

R7、8、9的物理出接口也需要宣告OSPF
 
[r7-Tunnel0/0/0]nhrp entry multicast dynamic 

 在点到点网络中,开销之为48(100/2.048)

华为将tunnel接口的传输速率定义为64Kbps

原因:这是因为华为想人为的将tunnel接口的开销值改大,从而让OSPF的选路尽量避开tunnel接口,而走其他接口。

  • 因为隧道接口会进行封装和解封装操作,导致资源消耗增加,数据转发效率降低。

hub节点无法和spoke节点建立邻居关系

原因:因为hub节点无法发送OSPF报文,其原因在于在MGRE环境下,不允许组播行为出现,且hub节点发送的是单播报文,而hub节点的nhrp映射表中存在多个映射关系,无法选择,故数据报文无法发送-

  • 解决方案:在hub节点开启伪广播功能,用单播实现组播行为

hub节点的tunnel接口此时在OSPF的工作模式为P2P,故只能存在一个邻居,而导致其他spoke节点无法与hub节点建立邻居关系

  • 解决方案:将hub节点的接口网络类型进行修改

DR选举失败指的是Waiting计时器超时。而条件匹配失败,指的是建立邻居的双方没有任何一方是DR或BDR的身份

hub节点此时只能与一个spoke节点建立邻接关系,其他节点处于邻居关系

原因:在于此时的所有spoke节点都不需要进行DR选举,而hub节点需要进行选举,最终导致选举失败

  • 解决方案:所有节点的接口网络类型均进行修改

在Hub-Spoke架构中,只有中心节点可以连接每一个分支,而如果DR角色选举在spoke节点,就会导致LSA信息学习和分发不完整,导致全网路由学习缺

  • 解决方案:干涉DR选举,将DR的位置固定在hub节点让spoke节点放弃选举

P2MP环境下,OSPF会主动学习邻居设备接口的IP地址,且自动生成该IP地址所对应的主机路由信息

OSPF接口的网络类型修改,是全局操作,所有设备均需要修改为相同类型

总结:

  • P2MP环境中,hello报文组播发送,其他报文单播发送。
  • NBMA环境中,所有的OSPF数据报文均以单播形式发送。该环境中不允许组播或广播行为
    • 故需要给每一台运行OSPF协议的设备手工指定其邻居IP地址,在OSPF进程中通过Peer IP命令,双方均需要配置。​​​​​​​​​​​​​​
  • 20
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值