OSPF基本概述
定义
链路状态协议
链路:运行ospf路由协议的节点的接口,ospf称为基于接口状态的路由协议
状态:链路的参数,是一个可变化的。例如:我有哪些邻居,到邻居的距离,以及接口IP,掩码等
IR:路由器的所有接口都发布进了同一个区域
BR:路由器至少有一个接口发布进了区域0
ABR:路由器的不同接口发布进了不同的区域,并且有一个区域属于区域0
ASBR:引入了其他路由协议或者引入了其他ospf进程的路由器(有引入动作)
报文的封装:
L2 | IPv6 PRO=89 | OSPFv3
ip不可靠,IP是非面向连接的协议,没有重传机制没有确认机制
L2 IP PRO=89 OSPF HEADER PACKET
OSPF的头部
version ospf的版本
type:报文的类型
RID:在ospf的网络标识一台设备
AID:描述接口属于的区域号
chenscksum:用于对ospf包括身体部分的一个效验
auth-type
packet
ospf的报文
1、hello报文-建立和维护邻居关系,周期性发送
2、DD报文-定义:描述本地LSDB的摘要信息
第一个DD报文:空的DD报文
后续的DD报文
3、LDR报文-定义:根据对端的DD报文,对比自己的LSDB,请求自己缺失的LSA或者失效的LSA
4、LSU报文(LSA)定义:根据对端的LSR报文,传递LSA
5、LSACK报文:对LSU里面的LSA做确认
RID
定义:用于描述ospf网络标识一台设备的,32位无符号整数
选举机制:手工最优;如果没有手工配置,那么环回口IP地址最大的,如果没有环回口,选择物理ip地址最大的
注意:RID不能是0.0.0.0,建议在整个ospf域不能出现重复的RID
ospf的基本框架
邻居表
通过hello报文来发现和维持邻居关系
- 状态机:
- [ ] 第一种、Down 失效状态:
这是邻居的初始状态,表示路由器还没有从邻居收到任何信息。也是最开始的状态。
• 停滞于此状态表明路由器没有从邻居处接收到Hello报文。
- [ ] 第二种、Attempt 尝试状态:
此状态只在NBMA网络上存在,表示路由器没有收到邻居的任何信息,但是已经周期性地向邻居发送了Hello报文;如果在Router Dead Interval的时间间隔内未收到邻居的Hello报文,则转为Down状态。
• 停滞于此状态表明路由器向已配置的邻居发送了单播Hello报文,但没有收到该邻居的Hello报文。
- [ ] 第三种、Init 初始状态:
表示路由器已经从邻居收到了Hello报文,但是自己不在所收到的Hello报文的邻居列表中。这说明自己尚未与邻居建立起双向通信关系。
• 停滞于此状态表明路由器收到了邻居的Hello报文,但Hello报文中没有包含接收路由器的OSPF RID(Router ID)。
- [ ] 第四种、2-Way 双向通信状态:
表示路由器与邻居的双向通信关系已经建立(即已经建立起了邻居关系),但是尚未建立起邻接关系。
• 停滞于此状态表明路由器彼此都收到了对方的Hello报文,并且都从Hello报文中发现了自己的OSPF RID。对于以太网链路上的非DR/BDR路由器来说,这种状态是可以接受的。
- [ ] 第五种、ExStart 信息交换初始状态:
邻居状态变成此状态以后,路由器开始向邻居发送DD报文。Master/Slave关系是在此状态下形成的,初始DD序列号也是在此状态下确定的。在此状态下发送的DD报文不包含链路状态描述。
• 停滞于此状态表明邻居路由器之间的MTU不匹配或OSPF RID重复。
- [ ] 第六种、Exchange 信息交换状态:
在此状态下,路由器与邻居之间相互发送包含链路状态信息摘要的DD报文。
• 停滞于此状态表明邻居路由器之间的MTU不匹配。
- [ ] 第七种、Loading 信息加载状态:
在此状态下,路由器与邻居之间相互发送LSR报文、LSU报文、LSAck报文。
• 停滞于此状态表明可能存在硬件故障或硬件故障或MTU不匹配。
- [ ] 第八种、Full 完全邻接状态
表示LSDB同步过程完成,路由器与邻居之间形成了完全的邻接关系。
• Full状态是OSPF路由器的一个最常见的状态。如果一个路由器停留在另外一个状态,那么就说明了在路由器建立临接关系的过程中是存在问题的。唯一的例外是2-way状态,是在广播网络中常见的。在广播网络中,邻居之间(除了和DR,BDR之外)会最终处于2-way状态
————————————————
面试1:建立邻接关系的条件
邻居关系建立的状态机(hello报文)
建立邻居的必要条件:
1、RID:不能一样
2、区域ID:需要一样
3、Authentication-type(验证类型)和Authentication-key(验证口令)相同
4、hello/dead的interval相同10s/40S
5、option字段相同(特殊区域区域类型)
6、instance在ospfv3必需一样(实例只在链路上有效)
7、MA网路DR的优先级两边不能都是0
8、broadcast/NBMA 网段和掩码必需一样
9、接口MTU必需一致,需要双发都开启mtu检查,ospf mtu-enable:发送的DD的报文携带mTU,检查对端的DD报文中的接口MTU字段;如果主的MTU大,两边都卡在exstart,如果从的MTU大,那么从卡在exchange,主卡在exstart状态。
必要条件:(和网络类型有关)
P2P通杀 网段信息和掩码信息都可以不一样
broadcast/NBMA 网段和掩码必需一样
P2MP 网段一样,掩码可以不一样
面试2:RID的配置错误会怎么样
如果手工没有指定RID,华为设备会使用设备上配置的第一个接口IP作为RID。
作用:
用于标识运行ospf的设备,在ospf的所有报文都会携带
hello报文中,active neighbor会携带邻居的RID
DD报文中,RID协商主从关系
LSR报文中,使用唯一描述一条LSA里面包含的advertising router 标识哪台路由器产生的lsa
1、直连:邻接关系建立不起来
2、没直连但是在同一个区域:各自的直连设备都能到FULL,lsa1中是冲突RID的设备会不停的序列号不停的+1发送LSU,华为设备反复几次后会使用接口IP作为RID(因为三元素一模一样);lsa2中,两端设备都为自己MA上的DR时,由于三元素中的linkstand-id是DR的接口ID,三元素不一样所以RID相同不影响lsa2
3、没直连且没在同一个区域:lsa3没有问题,因为ABR会做一个12转3的动作,改变通告路由器的RID;但是lsa5有问题,一端做了路由引入时,通告RID是ASBR的RID,RID不会发生改变,收到的路由器发现有一条lsa5的路由,但是自己并没有产生,就会序列号不变,age变为3600(路由撤销)的lsa5发送给ASBR,ASBR又会序列号+1发送给内部,如此反复。
如果一端为P2P,一端为MA,会发生什么?
邻居关系可以到FULL(hello包不携带网络类型)
LSDB也可以同步(DD报文不携带网络类型)
但是路由计算不出来:R1MA网络认为自己连着伪节点,p2p网络认为自己连着R2,导致两端对网络拓扑的认知不一致,路由计算不出来。R2认为R1是DR(P2P点也会发送DR的优先级),但是R1是点到点根本不会产生伪节点;R2认为自己是DR,
NBMA不能和类型不一样的建立邻居,因为只有NBMA的hello是单播的,其他都是组播的hello。
1、NBMA+其他:不可以建立,只有NBMA的hello是单播;
2、P2MP+