一、OSPF的概念
版本:OSPFv2适用于IPv4网络
OSPFv3适用于ipv6网络
优点:1.基于SPF算法,以“累计链路开销”作为选路参考值
2.采用组播的形式收发部分协议报文,224.0.0.5是DR向所有路由器发送的,就是所有
的路由器都会接收的,224.0.0.6是非dr和bdr路由器有更新时向dr和bdr发送的,也就
时dr跟bdr才会接收
3.支持区域划分
4.支持等价路由进行负载分担
5.支持报文认证
基于ip协议封装,协议号是89
二、OSPF的基础术语
1.Router ID
什么是Router id?就是用于标识一个OSPF网络内唯一一台OSPF路由器,也是一个类似于ipv4地址一样的点分十进制的格式,但是与IP地址无关(手工配置下),可以自己随意指定,配置形式有两种,一种是手工指定,一种是自动选举,建议手动配置router id
手工配置:[Huawei]ospf router-id 2.2.2.2
自动配置:如果配有lo口地址,则lo口地址大的作为router id,
如果没有配置lo口,则比较物理接口的IP地址,ip地址大的作为router id
2.区域
区域是从逻辑上将设备划分为不同的组,每个组用区域号(Area ID)来标识,a 0(区域0)是ospf的骨干区域, 那其他的非骨干区域(非0区域)必须要连接着我们骨干区域才能通信,这是ospf的防环机制
3.度量值
OSPF使用Cost(开销)作为路由的度量值。每一个激活了OSPF的接口都会维护一个接口Cost值,缺省的接口Cost = "100 Mbit/s " /"接口带宽" 。其中100 "Mbit/s"为OSPF指定的缺省参考值,该值是可配置的。
4.OSPF的三大表项
1.邻居表:标识了这台路由器跟哪些路由器相连着
2.LSDB表:存储着自己的LSA,也存储着其他路由器的LSA
3.路由表:表示该路由器通过SPF算法计算出来的最佳路由
三、ospf报文
hello:用于发现和维护邻居关系
DD:用于判断需不需要同步LSDB,包含着简要的LSA报文
LSR:用于请求所需的LSA,当LSA不完整的时候就使用这个报文来请求更新,
LSU:当路由发生变化的时候(增加/减少)都会发送LSU报文,通常是用来响应LSR报文的,包含完整的LSA
LSACK:确认报文
四、ospf的七种状态
1.建立邻居关系
down:这是初始状态,表示没有从邻居收到任何的信息
init:路由器收到了hello报文,不管这个报文里面是什么。把状态从down迁移到init
2-way:如果路由器收到的hello报文里面标识了自己是对方的邻居,那么就把状态从init迁移到2way状态
2.建立邻接关系
字段解释:
l:在连续发送多个dd报文的同时(条件),如果是一个dd报文,则值为1,相反不是第一个dd报文值为0
m:在连续发送多个dd报文的同时(条件),如果为1的时候,表示后面还有其他的dd报文,相反如果为0则表示后面没有dd报文了
ms:刚开始没有选出主动关系的时候,路由时间的ms值都为1,因为还没有选出这个主动关系,路由器都会认为自己是主,交换了dd报文报文之后,选举出了主从关系的话,当值为1的时候表示是主发送的
dd:没有选出主从关系的时候随机产生一个,选出主动关系之后就在主的序列号上进行+1的叠加,保证了报文发送的一个时序性也增加了报文的完整性
exstart:开始发送dd报文,并且选择主从路由器,根据选举规则选举主从,router id大的直接成为主路由器
exchange:开始交换DD报文,并且DD报文里面包含着摘要的LSA
loading:DD报文交换完毕之后,LSA还是没有同步的,所以需要同步LSA。发送LSR报文请求同步LSA,邻居收到之后把所需的LSA封装在LSU报文里,路由器收到LSR报文之后,发送LSACK表示已经收到了发送过来的LSU报文
full:领接的最终状态
建立邻居关系不代表就建立了邻接关系,但是建立了邻接关系就一定就已经建立了邻居关系
五、DR与BDR
背景:在MA网络中,所有的路由器之间都可以和DR同步LSDB,但是路由器之间不可以自己同步,也就是说,路由只能从DR获取,如果DR故障了,会断网的。所以后面有个一个BDR,当DR出现故障的时候,BDR成为新的DR,然后再从剩下的路由器中,选举一个新的BDR
选举规则:首先先比较DR的优先级,默认是1,范围是0-255,优先级大的优先,但是优先级为0的时候表示不参与选举,如果优先级一样则比较router id,router id大的将成为dr
角色:DR:指定路由器,BDR:备份路由器,Drouter:不是指定也不是备份的路由器
六、网络类型
P2P:点对点链路,不需要选举dr,默认10s发送一次hello报文
BMA:广播网络,当数据链路层协议是以太网的时候,默认是BMA网络,默认10s发送一次hello报文
NBMA:帧中继网络,默认30s发送一次hello报文
P2MP: 没有任何一种数据链路层协议被默认认为是P2MP网络,只能是管理员手工更改的,30S发送一次hello报文