一、路由协议的分类

三种分类方式

1.按工作范围分类:

  • IGP(内部网关路由协议)
  • 一个自治系统(AS)内的必须运行同一个路由协议
  • 用于计算和发现路由
  • RIP、OSPF、ISIS
  • EGP(外部网关路由协议)
  • 用于传递和控制路由
  • BGP
  • IGP和EGP关系:

ospf的lsdb和路由表的关系 ospf路由类型1和2_ospf的lsdb和路由表的关系

2.按照算法分类

  • 距离矢量协议
  • 传言式路由协议
  • RIP、BGP
  • 链路状态路由协议
  • 基于链路状态还原拓扑
  • OSPF、ISIS

3.按照是否协议掩码分类

  • 有类;
  • 按A,B,C类的默认掩码进行计算路由
  • 传递路由时不携带掩码
  • RIPv1
  • 无类
  • 传递路由时携带掩码
  • RIPv2、OSPF、ISIS、BGP

一个协议可以根据以上三种分类对号入座、从而知道一个协议的大概工作方式

OSPF属于IGP、链路状态协议、无类

二、OSPF工作流程

1.基本流程:

  1. 发现建立邻居
  2. 泛洪LSA(链路状态信息)
  3. 同步LSA数据库,执行SPF算法,还原区域内拓扑
  4. 计算最优路由

2.router id

作用

用于唯一标识ospf设备

格式

点分十进制 X.X.X.X

生成方式:
(1):手工配置

全局下:

router id 1.1.1.1

进程下指定

ospf 1 router-id 1.1.1.1

后续修改router-id,需要重置ospf进程才会生效

reset ospf process //用户试图下

(2):自动选举

根据loopback接口IP地址大的生成

如果没有loopback接口,选择物理接口IP地址大的

IPv6下无法自动生成

优先级:

进程下 > 全局下 > 自动选举

检查命令:
display ospf lsdb		//查看ospf LSDB数据库
display ip routing-table protocol ospf		//查看ospf路由条目

3.OSPF报文

  • 基于IP层,协议号89
  • 格式:
  • OSPF头部+OSPF报文内容
OSPF协议报文头部

每一个OSPF报文都会携带OSPF头部信息

ospf的lsdb和路由表的关系 ospf路由类型1和2_链路_02

  • 字段说明
  • Version :对于当前所使用的OSPFv2,该字段的值为2。
  • Type:OSPF报文类型。
  • Packet length:表示整个OSPF报文的长度,单位是字节
  • Router ID:表示生成此报文的路由器的Router ID
  • Area ID:表示此报文需要被通告到的区域
  • Checksum:校验字段,其校验的范围是整个OSPF报文,包括OSPF报文头部
  • Auth Type:为0时表示不认证;为1时表示简单的明文密码认证;为2时表示加密(MD5)认证
  • Authentication:认证所需的信息。该字段的内容随AuType的值不同而不同

1.HELLO报文:

ospf的lsdb和路由表的关系 ospf路由类型1和2_ospf的lsdb和路由表的关系_03

  • 发现邻居关系:组播224.0.0.5发送hello报文
  • 建立邻居关系,协商参数
  • 维护邻居关系,周期发送hello报文(hello时间+dead时间)
  • 协商参数
  1. router id不能一致
  2. 区域ID必须一致
  3. 认证,认证类型和认证密钥必须一致
  4. 接口掩码,在MA网络中必须一致
  5. hello时间必须一致
  6. 区域类型(N位、E位)
  • N=0 E=1:普通区域
  • N=1 E=0:NSSA区域
  • N=0 E=0:STUB区域
  1. NBMA网络只能跟NBMA网络建立(单播建立邻居)
邻居建立过程:
  • DOWN:未启用OSPF协议
  • INIT:收到hello报文,邻居列表不存在自身router id
  • 2-way:收到hello报文,邻居列表存在自身router id
  • 邻居建立完成
display ospf error		//查看无法建立邻居关系的原因
2.DD报文
  1. 描述数据库报文
  • 不携带LSA头部,开头第一个报文,确定主从关系,保证后续DD报文可靠传输
  • 携带LSA头部,减少LSA泛洪,节省性能
  1. 详细内容
  1. MTU:默认填充为0,表示不协商
  2. Flag位(DB Description):
  1. I位:代表是否为第一份DD报文(第一份DD报文是用于选举主从)
  2. M位:代表后续是否还有DD报文
  3. M/S位:代表主从

I位等于0,标志状态由ExStart进入exchange状态

I位、M位等于0,标志着由exchange状态进入loading状态

  1. DD序列号(DB Sequence):用于隐形确认,有序传输
  1. LSA header
  • LS Type:LSA的类型
  • LS ID:LSA内容
  • ADV:LSA通告者

以上是唯一标识一条LSA的三要素(LSA Request报文中包含)

  • LS Age:LSA的老化时间,范围0~3600s ,越小越新
  • (LS sequence)序列号:越大越优,0x8000000–0x7FFFFFF
  • 这是一个闭环型的计数方式
  • 校验和:越大越优

标识一条LSA的新旧程度:序列号>校验和>LS Age

LSA的周期更新时间为1800s

收到LS Age为3600s的LSA,代表要删除该LSA

3.LSR报文

ospf的lsdb和路由表的关系 ospf路由类型1和2_OSPF_04


只包含LSA三要素

针对缺少的LSA进行请求

携带LSA三要素

4.LSU报文
  • 携带详细LSA信息
  • 用于承载LSA头部+LSA内容
  • LSU的发送时间
  • 收到LSR请求
  • LSA的周期1800s更新时
  • 触发更新(路由信息发生变化时发送)

ospf的lsdb和路由表的关系 ospf路由类型1和2_链路_05

ACK报文

用于对LSU报文的确认

携带LSA头部进行确认

ospf的lsdb和路由表的关系 ospf路由类型1和2_ospf的lsdb和路由表的关系_06

问:什么时候标志着一台设备已经完成数据库同步?

答:LSR的重传列表为空时

  • 一台设备LSR的重传列表中包含该设备对比完成其他设备发来的DD报文后,需要想其他设备请求的LSA信息,当收到对应的包含LSA信息的LSU报文,就会删除重传列表中相应的信息

②.OSPF网络类型

ospf的lsdb和路由表的关系 ospf路由类型1和2_链路_07

1.广播类型(BMA)

①底层链路为以太网链路,默认时BMA网络类型

一个接口下可以存在多个邻居

③hello报文时间:10s dead时间:40s

④支持广播、组播发送发送hello报文、ospf报文,以单播方式发送DD、LSR报文

⑤选举DR/BDR

⑥互联网接口需要在同一网段

2.点到点(P2P)

①底层链路为串行链路,底层协议为PPP,HDLC时,默认为P2P网络类型

②一个接口只能存在一个邻居

③hello报文时间:10s dead时间:40s

④支持广播、组播发送hello报文、ospf报文

⑤不选举DR/BDR

3.点到多点(P2MP)

①没有底层链路默认时P2MP网络类型

②一个接口只能存在一个邻居

③hello报文时间:30s dead时间:120s

④支持广播、组播发送hello报文、ospf报文

⑤不选举DR/BDR

⑥适用于中心到站点的网络

4.非广播多路访问网络(NBMA)

①底层链路为串行链路,底层协议为FR、ATM时,默认为NBMA网络类型

②一个接口下可以存在多个邻居

③hello报文时间:30s dead时间:120s

④不支持广播、组播发送hello报文、ospf报文,只能人工指定单播发送

⑤选举DR/BDR

通过peer命令手工建立邻居关系

ospf的lsdb和路由表的关系 ospf路由类型1和2_链路_08

修改命令
interface g0/0/2
ospf network-type p2p/NMBA
  • 问题:一边为BMA网络类型,一边为P2P网络类型
  • 是否可以建立邻居关系? -----可以 (hello报文中没有字段说明时属于什么网络类型
  • 是否可以同步数据库? -----可以
  • 路由计算是否正常? ------不正常(不同网络类型还原拓扑的结构不一样)

③.OSPF开销

两种方式确认开销

1.通过带宽参考值计算

默认参考带宽值=100Mbit/s
ospf的lsdb和路由表的关系 ospf路由类型1和2_网络类型_09
参考带宽值越大,开销越准确

修改带宽参考值:

bandwidth-reference 1000
2.直接指定接口开销

修改接口开销值

开销值范围是1~65535,默认为1

interface g0/0/2
ospf cost 20

开销只在路由接收时,进行累加(即只计算接收端口的路由开销)

ospf的lsdb和路由表的关系 ospf路由类型1和2_链路_10

④.DR/BDR

在MA网络中一个接口可以有多个邻居

1.作用:

减少MA网络的邻接关系

从而减少链路状态信息以及路由信息的交换次数,这样可以节省带宽,降低对路由器处理能力的压力。

在描述拓扑时,充当伪结点

还原拓扑:

ospf的lsdb和路由表的关系 ospf路由类型1和2_网络类型_11

实际拓扑:

ospf的lsdb和路由表的关系 ospf路由类型1和2_OSPF_12

2.选举规则:

先比较端口优先级,默认为1,可调范围0~255(优先级为0表示放弃选举),越大越优。

优先级一致则比较router-id,越大越优

  • 选举过程
  • 标准机制中,当邻居状态到达2-way时,开始选举,等待40s的while time时间
  • 华为机制中,当接口发出第一份hello报文时,开始选举,等待40s的while time时间
3.设备角色

①DR:和该MA网络下的所有设备建立FULL的邻接关系(监听224.0.0.6和224.0.0.5)

②BDR:和该MA网络下的所有设备建立FULL邻接关系(监听224.0.0.6和224.0.0.5)

③DR other:只和BR/BDR建立邻接关系,DR other和DR other之间只建立two way邻居关系(监听224.0.0.5)

ospf的lsdb和路由表的关系 ospf路由类型1和2_链路_13

一个拓扑中可以没有BDR,但是不能没有DR,有且只有一个

DR/BDR监听地址:224.0.0.6

注意
  • DR选举完成后、不允许抢占
  • 在two-way之后开始选举DR/BDR(华为设备是在第一个hello报文发出后开始选举)
  • DR监听224.0.0.6进行收集LSU信息,以224.0.0.5向外发布信息

三、OSPF区域内路由计算

  1. 还原区域内拓扑,需要使用:
  • 1类LSA(ROUTE-LSA)
  • 2类LSA(NETWORK LSA)

1.一类LSA (route LSA)

  • 产生者: 每台OSPF设备为每个区域产生一条1类LSA
  • 泛洪范围:在区域内泛洪
  • 描述内容: 描述区域内的拓扑信息和路由信息
  • 1类LSA存在4种 LINK TYPE(P2P,Stubnet、TransNet、Vritual)
  1. P2P链路类型(拓扑信息)
  • LINK ID : 对端的router id
  • LINK DATA:自身连接对端的接口IP地址
  • Link Type:链路类型
  • Metric:到对端的开销

ospf的lsdb和路由表的关系 ospf路由类型1和2_网络类型_14

  1. Stubnet链路类型(路由信息)
  • LINK ID:网络前缀
  • LINK DATA:掩码
  • Link Type:链路类型
  • Metric:到对端的开销

ospf的lsdb和路由表的关系 ospf路由类型1和2_OSPF_15

ospf的lsdb和路由表的关系 ospf路由类型1和2_OSPF_16

当接口被宣告,但是没有邻居关系时,也会采用stub net进行描述

P2P链路类型+STUB链路类型可以描述P2P的网络拓扑图

  1. TransNet (拓扑信息)
  • LINK ID:DR的接口IP(伪节点)
  • LINK DATA: 自身连接DR的接口IP地址
  • Link Type:链路类型
  • Metric:到对端的开销
dis ospf lsdb router X.X.X.X

/查看一类LSA的详细内容

2.二类LSA (network LSA)

  • 产生者:DR为一个MA网络产生一条
  • 泛洪范围:区域内
  • 描述内容:MA网络的路由信息和拓扑信息
  • 重要字段:
  • LS ID: DR的接口IP地址(伪节点)
  • LS ADV: DR的router ID
  • MASK: MA网络的掩码
  • Attcher router:MA网络下连接的路由器

ospf的lsdb和路由表的关系 ospf路由类型1和2_网络类型_17

  • LS ID +MASK = 路由信息
  • Attcher router=拓扑信息
dis ospf lsdb network X.X.X.X		     //查看二类LSA

问题

问题1:如果同区域的设备出现router-id一致时,能否建立邻居关系,会出现什么问题?

ospf的lsdb和路由表的关系 ospf路由类型1和2_OSPF_18

  • R1和R3会一直产生序列号+1的route—lsa 进行覆盖
  • 一段时间后,其中一台设备会修改自身的router-id

LSA1类在更新时,一般不会利用 3600s 进行删除,采用序列号+1进行覆盖

因为LSA1类包含路由和拓扑信息,不能轻易删除

问题2:设备什么时候会停留在一下状态

  • 2-way
  • DR other 之间
  • exstart
  • 开启MTU协商,但协商不通过
  • exchange
  • 没有开启MTU协商,并且MTU不匹配,发送的DD报文过大(带LSA头部信息)
  • loading
  • 没有开启MTU协商,并且MTU不匹配,发送的DD报文过大(带LSA头部信息)