OSPF协议进阶+ospf域内路由计算(一、二类LSA)
一、路由协议的分类
三种分类方式
1.按工作范围分类:
-
IGP(内部网关路由协议)
-
一个自治系统(AS)内的必须运行同一个路由协议
-
用于计算和发现路由
-
RIP、OSPF、ISIS
-
-
EGP(外部网关路由协议)
- 用于传递和控制路由
- BGP
-
IGP和EGP关系:
2.按照算法分类
-
距离矢量协议
- 传言式路由协议
- RIP、BGP
-
链路状态路由协议
- 基于链路状态还原拓扑
- OSPF、ISIS
3.按照是否协议掩码分类
- 有类;
- 按A,B,C类的默认掩码进行计算路由
- 传递路由时不携带掩码
- RIPv1
- 无类
- 传递路由时携带掩码
- RIPv2、OSPF、ISIS、BGP
一个协议可以根据以上三种分类对号入座、从而知道一个协议的大概工作方式
OSPF属于IGP、链路状态协议、无类
二、OSPF工作流程
1.基本流程:
- 发现建立邻居
- 泛洪LSA(链路状态信息)
- 同步LSA数据库,执行SPF算法,还原区域内拓扑
- 计算最优路由
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头部信息
- 字段说明
- 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报文:
-
发现邻居关系:组播224.0.0.5发送hello报文
-
建立邻居关系,协商参数
-
维护邻居关系,周期发送hello报文(hello时间+dead时间)
-
协商参数:
- router id不能一致
- 区域ID必须一致
- 认证,认证类型和认证密钥必须一致
- 接口掩码,在MA网络中必须一致
- hello时间必须一致
- 区域类型(N位、E位)
- N=0 E=1:普通区域
- N=1 E=0:NSSA区域
- N=0 E=0:STUB区域
- NBMA网络只能跟NBMA网络建立(单播建立邻居)
-
邻居建立过程:
- DOWN:未启用OSPF协议
- INIT:收到hello报文,邻居列表不存在自身router id
- 2-way:收到hello报文,邻居列表存在自身router id
- 邻居建立完成
display ospf error //查看无法建立邻居关系的原因
2.DD报文
-
描述数据库报文
- 不携带LSA头部,开头第一个报文,确定主从关系,保证后续DD报文可靠传输
- 携带LSA头部,减少LSA泛洪,节省性能
- 不携带LSA头部,开头第一个报文,确定主从关系,保证后续DD报文可靠传输
-
详细内容
-
MTU:默认填充为0,表示不协商
-
Flag位(DB Description):
- I位:代表是否为第一份DD报文(第一份DD报文是用于选举主从)
- M位:代表后续是否还有DD报文
- M/S位:代表主从
I位等于0,标志状态由ExStart进入exchange状态
I位、M位等于0,标志着由exchange状态进入loading状态
-
DD序列号(DB Sequence):用于隐形确认,有序传输
-
-
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报文
只包含LSA三要素
针对缺少的LSA进行请求
携带LSA三要素
4.LSU报文
- 携带详细LSA信息
- 用于承载LSA头部+LSA内容
- LSU的发送时间
- 收到LSR请求
- LSA的周期1800s更新时
- 触发更新(路由信息发生变化时发送)
5.LS ACK报文
用于对LSU报文的确认
携带LSA头部进行确认
问:什么时候标志着一台设备已经完成数据库同步?
答:LSR的重传列表为空时
- 一台设备LSR的重传列表中包含该设备对比完成其他设备发来的DD报文后,需要想其他设备请求的LSA信息,当收到对应的包含LSA信息的LSU报文,就会删除重传列表中相应的信息
②.OSPF网络类型
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命令手工建立邻居关系
修改命令
interface g0/0/2
ospf network-type p2p/NMBA
- 问题:一边为BMA网络类型,一边为P2P网络类型
- 是否可以建立邻居关系? -----可以 (hello报文中没有字段说明时属于什么网络类型
- 是否可以同步数据库? -----可以
- 路由计算是否正常? ------不正常(不同网络类型还原拓扑的结构不一样)
③.OSPF开销
两种方式确认开销
1.通过带宽参考值计算
默认参考带宽值=100Mbit/s
开
销
值
=
带
宽
参
考
值
/
带
宽
实
际
值
开销值=带宽参考值/带宽实际值
开销值=带宽参考值/带宽实际值
参考带宽值越大,开销越准确
修改带宽参考值:
bandwidth-reference 1000
2.直接指定接口开销
修改接口开销值
开销值范围是1~65535,默认为1
interface g0/0/2
ospf cost 20
开销只在路由接收时,进行累加(即只计算接收端口的路由开销)
④.DR/BDR
在MA网络中一个接口可以有多个邻居
1.作用:
减少MA网络的邻接关系
从而减少链路状态信息以及路由信息的交换次数,这样可以节省带宽,降低对路由器处理能力的压力。
在描述拓扑时,充当伪结点
还原拓扑:
实际拓扑:
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)
一个拓扑中可以没有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类LSA(ROUTE-LSA)
- 2类LSA(NETWORK LSA)
1.一类LSA (route LSA)
-
产生者: 每台OSPF设备为每个区域产生一条1类LSA
-
泛洪范围:在区域内泛洪
-
描述内容: 描述区域内的拓扑信息和路由信息
-
1类LSA存在4种 LINK TYPE(P2P,Stubnet、TransNet、Vritual)
- P2P链路类型(拓扑信息)
- LINK ID : 对端的router id
- LINK DATA:自身连接对端的接口IP地址
-
Link Type:链路类型
- Metric:到对端的开销
-
-
Stubnet链路类型(路由信息)
- LINK ID:网络前缀
- LINK DATA:掩码
- LINK ID:网络前缀
-
Link Type:链路类型
- Metric:到对端的开销
当接口被宣告,但是没有邻居关系时,也会采用stub net进行描述
P2P链路类型+STUB链路类型可以描述P2P的网络拓扑图
-
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网络下连接的路由器
-
LS ID +MASK = 路由信息
-
Attcher router=拓扑信息
dis ospf lsdb network X.X.X.X //查看二类LSA
问题
问题1:如果同区域的设备出现router-id一致时,能否建立邻居关系,会出现什么问题?
-
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头部信息)