一、OSPF的基本概念和工作过程
1.1 OSPF路由协议概述
1.1.1内部网关协议和外部网关协议
●自治系统(AS)
多个路由跑相同路由进程协议的区域 成为AS区域系统。
●内部网关协议(IGP)
在区域内部跑的进程协议,如:RIP,OSPF,ISIS等
●外部网关协议(EGP)
在区域外跑的进程协议,如:BGP等
1.1.2 OSPF是链路状态路由协议
1.2 OSPF的工作过程
●邻居列表
如图,A通过建立邻接关系,学习到所有的链路状态信息,即所有的网段信息。
●链路状态数据库
A将学习到的链路状态信息存储在自己的链路状态数据库中。
●路由表
A的链路状态数据库通过 Dijkstra算法 算出A到达每一个地点的最短路径,形成最短路径树。最终生成路由表。
1.3 OSPF的基本概念
1.3.1 OSPF区域
●为了适应大型的网络,OSPF在AS内划分多个区域
●每个OSPF路由器只维护所在区域的完整链路状态信息
●区域ID
•区域ID可以表示成一个十进制的数字
•也可以表示成一个IP
●骨干区域Area 0
•负责区域间路由信息传播
●非骨干区域
1.3.2 Router ID
•OSPF区域内唯一标识路由器的IP地址
●Router ID选取规则
•选取路由器looback接口上数值最高的IP地址
•如果没有looback接口,在物理端口中选取IP地址最高的
•也可以使用router-id命令指定Router ID
●Router-ID是网络上唯一用于标识的一台路由器,线网用路由器的环回口来配置Router-ID,这边的地址是32位的公网IP地址,如果没有标,通过物理口
来确认。
1.3.3 DR和BDR及选举方法
DR和BDR简介
●DR 、BDR 和其他路由中
• DR: 区域当中的主路由,有且仅有一个
• BDR:区域当中的备份路由,有且仅有一个
• 除了DR 和 BDR 都是其他路由
●其他路由器只和 DR 和 BDR 形成邻接关系。主路由负责通告信息,备份路由负责准备顶替 DR
●其他路由器发送信息只能到达DR 和BDR(一个组播) ,DR再发送通告信息(第二个组播)。其中存在两个组播信息。
●DR 和 BDR 负责监控其他路由发来的信息。
DR 和 BDR 的选举方法
●自动选举DR和BDR
•网段上Router ID最大的路由器被选举为DR,第二大将被选举为BDR
●手工选择DR和BDR
•优先级范围是0~255,数值越大,优先级越高,默认是1
•如果优先级相同,则需要比较Router ID
•如果路由器的优先级设置为0,它将不参与DR和BDR的选举
DR 和 BDR 的选举原则
●选举DR、BDR是为在广播多路访问中减少连接关系的建立,优化性能
●默认Router-ID最大是DR,第二大是BDR,其他是Drother
●DR一旦被选定就不会被抢占,
●Drother会通过224.0.0.6向DR和BDR通告网络状态信息,DR会通过224.0.0.5向所有邻居通告信息
DR和BDR的选举过程
●路由器的优先级可以影响一个选举过程,但是它不能强制更换已经存在的DR或BDR路由器。
1.3.4 OSPF组播地址
●224.0.0.5(DR和BDR发出的)
●224.0.0.6 (其他路由发出的)
1.3.5 OSPF的度量值为COST
●COST=10^8/BW BW(带宽)
COST 数制越小越好,说明带宽越高
COST越低,带宽越高,路径越短。
●最短路径是基于接口指定的代价(cost)计算的
接口类型 | 代价(108/BW) |
---|---|
Fast Ethernet | 1 |
Etherent | 10 |
56K | 1785 |
二、OSPF数据包类型
2.1 OSPF数据包
承载在IP数据包内,使用协议号89
2.2 OSPF的包类型
OSPF的包类型 | 描述 |
---|---|
Hello包 | 用于发现和维持邻居关系,选举DR和BDR |
数据库描述包(DBD,DataBase Description) | 用于向邻居发送摘要信息以同步链路状态数据库 |
链路状态请求包(LSR,Link-State Request) | 在路由器收到包含信息的DBD后发送,用于请求更详细的信息 |
链路状态更新包(LSU,Link-State Update) | 收到LSR后发送链路状态通告(LSA),一个LSU数据包可能包含几个LSA |
链路状态确认包(LSAck,Link-State Acknowledgment) | 确认已经收到LSU,每个LSA需要被分别确认 |
2.3 名词解释
1、传送的LSA(link status advertisement),链路状态通告,包括拓扑信息。
具体包括:网段的前缀、掩码、连接的路由器的哪些接口、直连哪些路由器。
2、LSDB,他是LSA的的集合,链路状态数据库,对此进行spf算法,得到spf 树(基于cost代价)再得出最优的路由,并将其加入到路由表中。
3、既支持vlsm 可变掩码、又支持 cidr(无类别域间选路)
4、封装
layer2| ip |ospf| fcs
直接封装到IP报头内 上层协议号为89 eigrp为88
2.4 详解
1、hello发送周期分为10s和30s两种,hello hold的时间为发送时间*4即40s或120s
2、dbd数据库描述报文,包含lsa的报头,即告诉邻居路由器,本地的lsdb中包含哪些LSA信息,同步lsdb过程中如果没有此描述可能会发送重复的LSA ,造成资源的浪费导致低效LSA中除了拓扑。或路由信息的载荷外还有LSA的报头也叫LSA的摘要,报头中包含此LSA的标识,从而避免发送重复的LSA信息
3、路由器请求邻居有但是本地没有的LSA,以保证lsdb一致,根据交互的dbd,将没有的LSA的报头放在LSAR中,表明需要的LSA
4、根据上面的一条,将邻居请求的LSA信息,放在LSU中由本地路由器发送给邻居,LSU包含完整的LSA信息
5、LSACK为确认机制,由OSPF定义的确认机制
,ospf定义了两类的确认,一种为显式的确认,另一类为隐式的确认(基于序列号的确认机制),
前者收到一个报文,针对此报文,生成一个单独的确认报文(只有ospf支持确认),后者收到一个报文,使用相同的报文再发送回来,序列号设置为一致,既传输了信息,又做了确认
三、OSPF协议7种状态分析
3.1 OSPF邻接关系的建立(7个状态)
1、Down状态:只知道自己的ID,不知道其他任何路由器。
2、Init状态(初始化状态):Down状态的端口接收到Hello信息后,自动激活init状态,此时,只能接收Hello包,不能发送Hello包。
3、2-Way状态:route系统加载完成后从Init状态进入2-Way状态。2-Way状态中既可以接收Hello包也可以发送Hello包(选举出两个最大的Router ID,但是并不会确定主从路由身份)。
4、ExStart状态(准启动状态):确定主从路由身份。即确定DR和BDR身份。
5、Exchange状态:交换DBD信息库,同时接收到后也会有LSACK包。
6、Loading状态:最繁忙状态,包的种类最多,有LSR,LSU(包含多个LSA),LSACK,形成的路由表。
7、Full 状态:稳定状态开始转发数据包。
3.2 OSPF的网络类型
●OSPF将网络划分为四种类型:
1、点到点网络
2、广播多路访问网络
3、非广播多路访问网络
4、点到多点网络
区别:有点选DR、有的不选DR
3.3 OSPF的应用环境
1、网络规模
2、网络拓扑
3、其他特殊要求
4、路由器自身要求
3.4 OSPF的特点
1、可适应大网络规模
2、路由变化收敛速度快(RIP协议收敛需要30S)
3、无路由环路
4、支持变长子网划分
5、支持区域划分
6、支持以组播地址发送协议报
四、OSPF协议6种LSA分析
类别 | 分析 |
---|---|
1类 | 所有OSPF路由器都会产生,只在区域内传播 |
2类 | DR产生,只在区域内传播 |
3类 | ABR产生,在相邻的两个区域相互传播 |
4类 | ABR产生,向和ASBR不在同一区域的其他区域传播,用于表示ASBR |
5类 | ASBR产生,向整个OSPF协议区传播,用于描述另一个协议域的路由信息 |
7类 | NSSA区域中的ASBR产生,用于向NSSA区域通告外部路由 |