OSPF基础
OSPF协议
背景
静态路由的缺点:
1、随着设备数量、配置量的增加,静态路由无法适应规模较大的网络
2、随着网络发生的变化、静态路由无法自动收敛网络,需要管理员手动修改配置
动态路由协议的分类
距离矢量路由协议:
路由器周期性防洪自己的路由表。通过路由的交互,每台路由器从相邻的路由器学习路由,并加到自己的路由表中。
网络中的路由器并不清楚网络的拓扑,只知道去往目的地的方向和距离
链路状态路由协议:
路由器通告的链路状态而不再是路由表,路由器之间首先建立一个邻居关系,交互链路状态,路由器将收到链路状态加到自己的链路状态数据库中,路由器通过链路状态数据库知道全网拓扑,每台路由通过基于链路状态数据,使用SFP算法计算已自己为根、无环路且最短的路径,路由器将计算出最优的路由,加到自己的全局路由表中
OSPF基础术语
Router-ID(Router Identifier,路由器标识符):用于在区域内唯一标识一台路由器
Area(区域):用于标识一个OSPF区域,区域0为骨干区域,其他区域为非骨干区域
Cost(度量值):用于计算路由的优劣,cost=100 Mbit/接口带宽,带宽越大开销越小,也可以手工指定接口开销
LSA(Link State Advertisement,链路状态信息通告):是链路状态信息的载体
LSDB(Link State DataBase,链路状态数据库):保存所有的LSA
报文类型
Hello:周期性发送,用于建立和维护邻居关系
DD:描述Lsa摘要信息,用于路由器之间进行数据库同步
LSR:用于请求自己需要的LSA
LSU:用于发送对方需要的LSA
LSAck:用于对接收到的LSU做确认
OSPF报文格式:OSPF基于IP之上,协议高89,封装在IP头部中
Version:版本号:值为2,表示OSPFv2;值为3,表示OSPFv3,长度8bit
Type:报文类型,1-Hello,2-DD,,3-LSR,4-LSU,5-LSAck,长度8bit
Packet Length:OSPF报文长度,长度16bit
Route ID:路由器标识符,发送OSPF报文设备的路由器标识符,长度32bit
Area ID:区域ID,发送OSPF报文设备所属的区域ID,长度32bit
Checksum:校验和,长度16bit
Auth Type:认证类型,0-不验证,1-简单认证,2-MD5认证,长度16比特
Authentication:认证数据,0-不对该字段作定义,1-该字段为密码信息,2-该字段包括Key ID、MD5验证数据长度和序列号信息
Hello报文格式
Network Mask:发送Hello报文接口的子网掩码,长度32bit
Hello Interval:Hello时间,发送Hello报文的时间间隔,广播和P2P网络类型为10s,NBMA和P2MP网络类型为30s,长度16bit
Options:可选项,E-是否支持外部路由,MC-是否支持转发组播数据包,N/P-是否为NSSA区域,长度8bit
Router Priority:DR优先级,默认为1,为0,则表示不参与DR或BDR选举,长度8bit
RouterDeaInterval:邻居失效时间,默认是Hello时间的4倍,在该时间内未收到邻居发送的Hello报文,则认为邻居失效,长度32bit
Designated Router:DR的接口地址,长度32bit
Backup Designated Router:BDR的接口地址,长度32bit
Neighbor:邻居的RID,长度32bit
DD报文格式
Interface MTU:接口MTU,在不分片的情况下,该接口最大可发出的IP报文长度,默认为0,长度16bit
Options:可选项,(和Hello报文类似),长度8bit
I:值为1表示是第一个DD报文,值为0表示不是第一个DD报文,长度1bit
M(More):值为0表示是最后一个DD报文,值为1表示后面还有其他DD报文,长度1bit
M/S(Master/Slave):确定双方主从关系,Router ID大的一方为Master,值为1表示发送方为Master,长度1bit
DD Sequence number:DD报文序列号,用于主从双方保证DD报文的可靠性和完整性
LSA Header:LSA的头部信息
LSR报文格式:
LS type:LSA的类型号,长度32bit
Link State ID:和LS Type一起描述域内唯一一个LSA,长度32bit
Advertising Router:产生此LSA的设备Router ID,长度32bit
LSU报文格式
Number of LSAs:LSA的数量,长度32bit
LSAck报文格式
LSAs Headers:通过LSA头部信息确认收到该LSA,长度由需要确认的LSA Header长度决定
OSPF表项
邻居表:描述已经建立关系的邻居
LSDB表:保存自己产生和邻居发来的LSA信息
OSPF路由表:存放所有的OSPF路由信息
OSPF工作原理
1、OSPF邻居建立
- R1和R2都发送一个只携带自己RID和Hello报文给对方
- 收到对方的报文后,回复一个携带自己+邻居RID的Hello报文
- 收到对方发送的携带自己+邻居的RID后,认为邻居关系建立成功
- 后续设备每隔10s发送一次Hello,用于维护邻居关系
2、同步LSDB
-
R1和R2相互发送一个没有携带LSA摘要的DD报文,携带自己RID,MS bit置位,认为自己是 Master,其中R1的DD序列号为x,R2的DD序列号为y
-
收到对方报文后通过RID计算出主从,从设备会发送一个携带LSA摘要的DD,序列号为y
-
从设备收到带由LSA摘要信息的DD后,回复一个携带LSA摘要的DD,序列号为y+1,通过序列号机制,实现隐式确认
-
双方交互完DD报文后知道对方由哪些LSA,然后相互发送LSR请求自己需要的LSA,LSR报文中携带了自己需要的LSA摘要信息
-
收到对方发送的LSR后,会回复一个LSU携带了对方需要的LSA完整信息
-
收到对方发送的LSU后,会回复一个LSAck,表示确认收到,LSAck报文中携带了自己收到的LSA摘要信息
3、使用SPF算法计算出最优路径
4、把最优的OSPF路由放入IP路由表中
OSPF网络类型
OSPF网络类型:为了适配不同的链路层协议设计了多种网络类型,将影响OSPF在接口上的操作,接口默认的OSPF网络类型取决接口所使用的数据链路层封装,OSPF网络类型有四种:Broadcast、NBMA、P2MP、P2P
P2P网络类型(Point-to-point,点对点)
在一段链路上只能有两台路由器,对应PPP协议
BMA(Broadcast Multiple Access,广播式多路访问)
也称为Broadcast,指一个运许多台路由器设备接入的广播环境,对应以太网协议
NBMA(Non-Broadcast Multiple Access,非广播式多路访问)
指一个允许多台路由器设备接入且不支持广播的环境,对应帧中继(FR)
P2MP(Point to Multi-Point,点到多点)
相当于将多条P2P链路的一端进行捆绑得到的网络,只能由其他网络类型手动更改,一般是NBMA网络类型修改称为P2MP网络类型
DR与BDR
DR/BDR的背景
MA(Multi-Access)多路访问网络由两种类型:广播性多路访问网络(BMA)和非广播性多路访问网络(NBMA)。
在MA网络中,每台OSPF路由器之间都建立邻接关系,会增加设备负担,也增加了网络中泛洪的OSPF报文数量
DR/BDR
为了减少MA网络中的OSPF邻接关系,指定了三种OSPF路由器身份,DR(Designated Router,指定路由)、BDR(Backup Designated Router,备用指定路由器)、DRouter路由器
在BMA和NBMA网络中才有DR/BDR,只允许DR、BDR与其他OSPF路由器建立邻接关系,DRouter之间不会建立邻接关系
DR/BDR选举规则
- 比较优先级,值大优先,默认为1 ,0表示不参与选举
- 比较RID,值大有限
- DR/BDR不可抢占
OSPF域与单区域
OSPF域(Domain):指一系列使用相同策略的连续OSPF网络设备组成的网络
单区域(Area):OSPF路由器在同一个区域内泛洪,为了确保每台路由器都拥有对网络拓扑的一致性,LSDB需要在区域内进行同步
单区域带来的缺点:
- LSDB越来越大,导致OSPF路由表规模增加,资源消耗多,设备性能下降,影响数据转发
- 基于庞大的LSDB进行路由同步计算变得困难
- 当网络拓扑发送变化是,LSA全域泛洪和全网SPF重计算带来的巨大负担
多区域
OSPF引入区域的概念,将一个OSPF区域划分成多个区域,减小了LSA的泛洪范围,有效的把拓扑变化的影响控制在区域内,在区域边界路由器可以做路由汇总,减小了路由表的规模,提高了网络扩展性,有利于组建大规模的网络
OSPF路由器的类型
区域内路由器(Internal Router):路由器的所有接口都属于同一个OSPF区域
骨干路由器(Backbone Router,BR):路由器至少有一个接口属于骨干区域
区域边界路由器(Area Area Border Brouter,ABR):路由器的接口同时属于两个以上的区域,但至少有一个接口属于骨干区域
自治系统边界路由器(AS Border Brouter,ASBR):路由器和其他AS交换路由信息,只要一台OSPF路由器引入了外部路由,它就是成为ASBR