既然要讲到OSPF的五种报文、七种状态,那我们就来看一下OSPF究竟是什么'鬼'吧。
OSPF是什么?
OSPF,Open Shortest Path First,一种链路状态路由协议,更是一种内部网关协议(如下图),封装在IP报文中,协议号为89。简单的理解,部署了该协议的网络会周期性收集拓扑和路由的所有信息,然后计算出到达目的网段的最短路径,并且通过周期更新机制实时监控网络的变化。
按区域自治与否,可分为:IGP(AS内部)、EGP(AS与AS之间)
按路由算法,可分为:
①链路状态路由协议
②距离矢量路由协议
IGP:工作在AS内,周期更新,收集运行了该协议的路由信息并实时监控网络的变化(如OSPF、ISIS、RIP);
EGP:工作在AS之间,不存在周期更新,存在触发更新,主要用于传递和选择AS间的路由(如BGP);
-
无环路
类似于STP生成树协议,每一个OSPF区域(每一朵“云”)相当于一个树干的枝杈,不会构成环路。 -
收敛快
这是作为动态路由所特有的特点,每当链路/设备出现故障时,该部署了OSPF的区域会动态的扫描并感知到链路状态异常,从而进行拓扑的链路的更新。 -
扩展性好
可以划分为多个OSPF区域,就像树干可以长出多个枝杈一样。 -
支持认证
认证,为了提高网络通信的安全性,ospf区域下所有设备接口之间的相互认可的一种口令/密钥方式。就像直播房间平台下,你输入对应的密码/房间号才可以进去一样。
OSPF的五种报文,你知道哪五个?
(1)Hello报文:发现、协商、维护(周期发送)OSPF邻居;
关于邻居的发现,有两种方式:
①自动发现:通过发送目的IP地址为224.0.0.5;
②手工指定(NBMA)
那怎么通过这个hello报文协商呢?
通过查看ospf报文的头部,我们可以知道影响OSPF邻居建立的因素:
①version必须要一致;
②router id不能一致;
③area ID要一致;
④authentication-mode要一致,password也要一致;
⑤netmask要一致(广播、NBMA网络中有这一要求的);
⑥hello/dead time要一致;
⑦option字段的N bit和E bit要一致;
N位/E位 | 代表的功能区域 |
---|---|
N=1 | 代表支持7类LSA |
E=1 | 代表支持5类LSA |
N=0,E=0 | 代表stub区域 |
N=0,E=1 | 代表普通区域 |
N=1,E=0 | 代表NSSA区域 |
(2)DD(Database Description)报文:数据库描述报文,携带LSA的摘要(就像快递单号,仅仅是对快递具体内容的简单描述标识而已);
注意:DD报文携带的LSA摘要有什么字段?
答:link state type、link state id、advertiser(简称ADV)。
(3)LSR(link state request)报文:请求本设备缺少的LSA信息(很容易理解,请求的东西一般是自己没有的),通过携带本设备所缺少的LSA的摘要信息来实现请求;
(4)LSU(link state update)报文:携带LSA信息的报文。(类似于报刊会按照你订阅所需要看、但又还没有收到的报纸的单号进行递送)
- ①收到了LSR请求报文后,LSU会进行回复;
- ②默认情况下,LSU报文会周期为1800s动态更新,dead time为3600s
- ③当网络发生变化时,也会发送出LSU更新链路状态(触发更新);
(5)LSACK(link state ACK)报文:用来确认收到了LSU的报文,携带了LSA的详细信息(而不仅是LSA摘要了);(快递员给你送完东西,这时候快递员会验收确认,我们这边也要验货看看有无缺损、符不符合当初买的标准和实际的需求)
PS:LS Ack报文携带的仅是LSA的摘要并不会携带完整的LSA,跟DD报文类似。
那OSPF协议是怎么通过这几个报文运作?
下图很好的描述了运作流程:
上图粗略的描述了ospf路由协议是怎么通过报文运作的。farthFarther,我建议各位可以亲自抓取OSPF报文来分析,理解会更深一点。
OSPF状态机是怎么运作的啊?
1、down:处于刚开机,随即发送第一个报文的状态。
2、init:发送hello报文,等待收到对方发来hello报文。
- attempt:跟init报文类似,但这只用于NBMA网络类型
3、2-way:双向连接,收到了邻居发来的hello报文(其中携带说明了本设备为邻居的route id等信息),在这个状态里完成DR和BDR的选举。
PS:
DR(Designated Router),指定路由器
BDR(Backup Designated Router),备份指定路由器
4、exstart:双方开始交换空的DD报文,根据DD报文中的序号协商并选举主从设备(保证数据传输有序、可靠)。
- 主设备:router id较大的设备,不一定是DR;
5、exchange:双方交换携带了LSA摘要DD报文,用于同步LSDB(可以说是双方各自存储着LSA报文的数据库)。
6、loading:用于加载exchange交换之后各自缺少的LSA报文。(此过程会发送LSR、LSU、LSAck报文)
7、**full:**同步LSDB完成。(此过程拓扑链路发生变化会发送HELLO、DD报文、LSR、LSU、LSAck报文,以进行动态刷新LSDB)
下面演示七种状态通过OSPF协议如何运作的一个状态机制:
下图进一步的描述了OSPF协议的状态机大致运作流程。
如果OSPF进程停留在某个状态,那问题出至哪里呢?
搞懂邻居关系、邻接关系及其区别
1、邻居关系?邻接关系?
邻居关系:邻居之间只能发送hello报文;
邻接关系:OSPF的五种报文都可以发送;
2、DR、BDR、DR other
在这之前我们先明白**DR、BDR、DR other是什么角色?**
DR:相当于一个班级(广播网络)里被选举出来的正班长。
BDR:相当于一个班级里选举出来的的副班长。
DR other:该班级学生里面除了上面的正班长、副班长之外的“臣子”了。
3、邻居关系和邻接关系区别?
理解了DR、BDR 和 DR other所扮演的角色,我们可以这样认为:邻居关系是简单的隔壁关系,邻接关系是更深层次的友好关系。
- DR/BDR以及DR other之间是邻接关系;(班长和班里的同学肯定友好啦)
- BDR和DR other之间是邻接关系;(班长和副班长肯定友好了)
- DR other和DR other之间邻居关系;(同学和同学就是毗邻而已,关系不一定友好)