OSPF学习笔记

概述

OSPF全称开放最短路径优先(Open Shortest Path First)是一种链路状态路由协议。v2版本的OSPF基于IPv4,v3版本的OSPF基于IPv6。在IPv4网络中OSPF应该是被使用最广泛的IGP了。

基本特点

  • OSPF属于IGP,是链路状态协议,基于IP协议号89
  • 采用分区域的设计,所有区域需要和骨干区域ar0相连
  • 区域内采用SPF(Dijkstra算法)计算最佳路径
  • 可以快速响应网络拓扑变化(触发更新)
  • 支持等价路径负载

三张表

OSPF的运行涉及三张表

  • 邻居表
    用于记录与opsf邻居之间的状态、参数等;
  • 拓扑表
    本质是LSDB,通过LSA来更新数据。用于记录接收的LSA信息,在区域内和ma网络中保持一致
  • 路由表
    通过DJ算法将最佳路由提交到路由表

OSPF路由器类型

路由器类型 功能
内部路由器 在一个普通区域内部的路由器
骨干路由器 在区域0的内部路由器
ABR 区域边界路由器,连接两个不通区域的路由器
ASBR 自治系统边界路由器,连接OSPF到另一个自治系统的路由器

OSPF报文类型

类型 内容
HELLO hello包,用于建立/维护邻居
DBD 数据库描述,用于同步自身LSDB摘要
LSR 链路状态请求,用于请求LSA
LSU 链路状态更新,用于传播LSA详细,可单播可组播
LSAck 用于确认收到LSU

OSPF邻居

OSPF通过hello报文来建立和维护邻居

OSPF HELLO

ospf邻居建立过程
down:周期性发送hello包;收到不带自己RID的hello包时进入init
init:继续正常周期性发送hello包;收到带自己RID的hello包进入2way
2way:通过hello包携带的DR/BDR信息(如有)选举DR/BDR;然后进入exstart
exstart: 双法开始单播发送第一个DBD;根据对方的第一个DBD选取主从;然后进入exchange
exchange: 开始交换DBD,以master序列号为基准,slave先发DBD,通过序列号隐式确认;发送完毕后进入Loading
loading: 双方开始根据DBD的LSA摘要,单播发送LSR请求详细的LSU,同步完成后进入full
full: 邻接完成

OSPF LSA内容

一个LSA可由{Type,LS ID,ADV Router}唯一描述

  • Type,LSA类型,常见有1,2,3,4,5,7
  • LS ID,链路状态ID,可理解为一个LSA的名称,每类LSA的该字段有不通含义
  • ADV Router,通告路由器
  • Age,老化时间,一般为3600s,每1800s会无触发更新
  • Seq,序列号,0x80000001开始计数,越大表示LSA越新
  • Checksum,校验和
  • Do Not Age Flag,不老化标识,虚链路LSA该位为1

OSPF LSU

OSPF LSA类型

类型 传播范围 产生与功能 LS ID字段 ADV字段
1类Router 区域内 每台路由器都会产生,传输本地链路状态 Router ID Router ID
2类Network 区域内,广播域内 DR产生,标识本MA网络中掩码和路由器 DR接口IP DR RouterID
3类Router Summary 泛洪整个AS(除totally stub区域) 由ABR重新产生(根据1、2类或其它3类),用于传递区域间路由 域间路由(网络号) ABR的Router ID,经过一个ABR就会变为该ABR的RID
4类ASBR Summary 除ASBR外的非stub区域 由ASBR所在区域的ABR产生并发出,用于告知ASBR的位置 ASBR的Router ID ABR的Router ID,经过一个ABR就会变为该ABR的RID
5类AS-External 全域泛洪,stub区域除外 ASBR产生,保持ADV不变,传递域外路由 域外路由(网络号) ASBR的Router ID
7类NSSA-External 只存在于NSSA区域内,NSSA的ABR会做7转5 由NSSA区域内ASBR产生,传递域外路由 域外路由(网络号) ASBR的Router ID

OSPF区域类型

ospf采用层次设计,用区域分割路由器;区域中路由器保存该区域中所有链路和路由器详细信息,但只保存其它区域路由器和链路的摘要信息

  • 骨干区域主要为高速快速传递数据,通常不接用户

  • 常规区域主要连接用户。所有数据需经过骨干区域中转。

    非骨干区域主要包含以下几种类型

区域 特点
普通区域 区域内泛洪1、2类LSA,也会传递3,4,5类LSA
Stub 不能配置外部重分发,阻止4,5类路由,ABR自动下发OIA默认路由
Totally Stub 不能外部重分发,不会传3,4,5类LSA,会传递1,2类和3类默认LSA,ABR自动下发OIA默认
NSSA 可以重分发外部路由作为7类LSA在ABR转成5类。允许1,2,3,7类LSA,ABR不会自动下发OIA默认
Totally NSSA 阻止3,4,5类LSA,允许1,2,7和3类默认LSA,ABR自动下发OIA默认

OSPF路由类型

OSPF的LSA类型较多,不同LSA传递的路由类型也不一样,共有一下几种类型

  • O路由
    区域内路由,由1类LSA和2类LSA通过DJ算法计算得出
  • O IA路由
    区域间路由,由3类LSA习得
  • O E1/N1路由
    1类外部路由/1类NSSA外部路由,由4/5/7类LSA习得;
  • O E2/N2路由
    2类外部路由/1类NSSA外部路由,由4/5/7类LSA习得;

OSPF选路

度量

OSPF路由管理距离(AD)默认是110 (CISCO), 度量单位是cost

cost=reference/interface bandwidth

reference默认是100000000 (10^8),其中每台路由器可以配置不一样,但建议全局一致。另外cost是分方向的,因为ospf区域内收敛算法(dj)需要画有向权重图,cost即为单向权重。

外部路由度量 /Forward Address

Forward Address 字段用于优化外部MA网络路由下一跳的问题。在ASBR产生LSA5时填充FA,若该外部路由下一跳接口是MA、且是有效ospf接口则FA填充为改路由实际下一跳地址。

Forward Metric 是本地到Forward Address 的cost,当forward
address=0.0.0.0时,forward metric是本路由器到ASBR的metric

OSPF外部路由type2(默认),默认种子metric为20,且metric不变
OSPF外部路由type1,metric是种子metric+forward metric

另外,在 NSSA 区域,协议规定不能发送为0的FA;
当把直连重分布进来,Forward Address:
1、加入 ospf 最新的回环口作为 Forward Address;
2、如果没有回环口,那么加入 ospf 最新的激活的接口地址;

如果把外部路由重分布进来,Forward Address:
1、外部接口没有运行 ospf,Forward Address 同上;
2、外部接口运行了 ospf,Forward Address 是外部路由的下一跳地址。

O 路由选路

  • 依次比较AD Metric 小的优先
  • 当收到来自不同的AR的1 2类LSA,计算的O路由,AD与Metric,先到的优先,不会负载
  • 当收到来自相同AR的LSA1 2类,计算的O路由,AD与Metric相同,负载

O IA 路由选路

  • O>OIA,不考虑AD、Metric
  • 当收到来自Area 0的3类LSA时,不考虑其它区域的3类LSA,优选Area 0的,不考虑AD、Metric。若均来自Area0,一次比较AD、Metric,若相同,则负载;
  • 当收到来自非Area0的3类LSA时,依次比较AD、Metric,小的有限,若相同,则负载

O E 选路

  • OIA>OE,不考虑AD、metric
  • OE1>OE2,不考虑AD、meitric
  • OE1路由,比较AD与Metric,相同则负载

OSPF路由汇总

3类LSA汇总

1
area 2 range 100.1.0.0 255.255.252.0
  • 含义:把区域2的1,2类转为3类时做汇总,即area 后面跟的区域。不能把本来就是OIA的路由做汇总;

5类LSA汇总

1
Summary-address 100.1.0.0 255.255.252.0
  • 含义:5类LSA的汇总,只能在ASBR上做,即对自己产生的5类路由汇总,对于别的路由器产生的5类路由,没有汇总能力

OSPF网络类型

网络物理连接可分为三种

  • POINT_TO_POINT
  • BROADCAST
  • NBMA

根据物理网络连接类型,OSPF网络类型分为以下几种:

类型 二层 Hello/Dead DR/BDR 手动邻居 /32路由
P2P HDLC\PPP\FRp2p 10/40 NO NO NO
BROADCAST Eth、令牌环、FDDI 10/40 YES NO NO
NBMA FR/X.25/ATM 30/120 YES YES NO
P2MP(Multi) HUB-SPOKE 30/120 NO NO YES
P2MP(NB) CISCO私有 30/120 NO YES YES
Loopback loopback 当作host处理

OSPF建立邻接关系与网络类型无关,与hello/dead有关,但不同的网络类型建立邻居后有可能学不到路由。

如果参与建邻的路由器都需要选举或都不需要选举DR/BDR,则可以学习到路由,否则学不到,具体关系如下:

p2p broadcast NBMA p2mp p2mp NB
p2p NO NO YES YES
broadcast YES NO NO
NBMA NO NO
p2mp YES
p2mp NB

OSPF虚链路

OSPF虚链路用于解决OSPF区域设计上的问题。

假设R0-R1-R2-R3互联,R0-R1之间,R1-R2之间,R2-R2之间区域分别为0,1,2。R3由于现实原因无法与R0互联,那么可以采用虚链路。在ABR R1和中转区域R2上配置虚链路,相当于R2与区域0相连。

OSPF Virtual Link

虚链路在使用上有一些限制:

  • 虚链路只在建立邻居的时候发送hello包,邻居建立后不再发送
  • 虚链路的LSA只会触发更新,并且不会老化
  • 虚拟链路cost继承物理链路
  • 虚链路不能跨区域建立(只能在‘被分割的’中转区域建立)
  • 不能建立再STUB区域

OSPF认证

OSPF认证是指在发送hello包时添加认证字段达到认证邻居的效果,可以保护自己的路由传给通过认证的邻居。

OSPF认证分接口认证和区域认证,区域认证本质就是所有属于该区域的接口都参与认证。同时配置接口认证和区域认证,以接口认证配置优先。

接口认证

接口明文认证

1
2
3
int s1/1
ip ospf authentication
ip ospf authentication-key cisco

接口md5认证

1
2
3
int s1/1
ip ospf authentication message-digest
ip ospf message-digest-key **1** md5 **cisco**

其中1是key-id,cisco是md5原文

区域认证

区域明文

1
2
router ospf 1
ar 0 authentication

区域md5

1
2
router ospf 1
ar 0 authentication message-digest

多 key md5 认证规则:

当配置了最新的 key,将最新 key 与旧 key 都发送到对端:

  • 若最新的 key,到对端没有找到对应的 key-id,则两端采用旧 key 完成认证。
  • 若最新的 key,到对端找到相同的key-id,比较密钥,密钥不一致,认证失败;密钥一致,则认证通