OSPF原理
1、建立邻居表,先互相发送HELLO报文,每个设备产生自己的链路状态Link-state(可以理解为设备的自我介绍),LSA(通告信息)中包含自己的直连接口信息和邻居信息,将LSA打包后命名为设备的router ID,router ID为IPv4格式,之后每个设备同步LSA信息
2、同步所有的LSA建立链路状态数据库LSDB
3、使用SPF算法算出最优路径
OSPF报文
OSPF报文封装在IP报文的上层,协议号为89。(RIP协议封装在UDP协议中,端口号为520。TCP的协议号是6,UDP协议号是17)
OSPF报文有5种类型:
HELLO报文
DD(Database Description)报文(描述报文)
LSR(LAS Request)报文(请求报文)
LSU(LAS Update)报文(更新报文)
LASCK(Link State Acknowledgment)报文(确认报文)
HELLO报文
HELLO报文是一种组播报文,组播目标地址为224.0.0.5
组播包需要周期发送,周期为10s,目的让邻居发现自己,并告诉邻居我存活
也称作心跳协议,或者保活机制
超时时间为40s,如果超过40s再没有收到邻居的HELLO报文,则认为邻居故障或者关闭
HELLO包中包含自己的router ID
router ID最优为手动配置
如果没有手动配置则选择环回口最大的IP地址作为自己的router ID
如果没有环回口则选择物理口最大的IP地址作为自己的router ID
如果手动修改router ID,需要重启OSPF
同步LSA
首先设备通过交换DD报文(数据库描述信息:包含每条LSA,包含LSA的版本号等,用于设备的LSA更新),得知自己需要更新的LSA是哪些
然后通过LSR报文说明自己需要更新的LSA
收到LSR报文后,向对方发送LSU报文,报文中包含对方需要的LSA信息
当自己收到LSU报文后,向对方发送LSACK报文,告诉对方我已经收到需要更新的LSA信息了
后四种报文都是用来同步LSA,目的是建立LSDB数据库
此方式为触发式,自带确认机制,比如路由器内部有更新,比如突然多加了个接口,此时设备会直接将LSU发于邻居,用于更新,不用等请求,邻居会回复确认报文。
邻居状态
从无邻居到有邻居再到LSA同步状态分为2个步骤,为邻居状态与领接状态。
首先通过HELLO包建立邻居表,在建立邻居状态的过程中有4种状态:
Down状态:没有邻居,指的是没有收到任何邻居的HELLO包
Attempt尝试状态,特殊情况使用单播方式,尝试寻找特定的邻居,但是这个邻居没有回复我,会出现此状态(也是没有邻居的状态)
Init初始化状态:已经发现了邻居
2-Way双向通信状态:两个邻居之间已经互相接收到对方的HELLO包,称为邻居关系建立成功
领接状态
ExStart预启动状态,Exchange预交换状态:这两个状态在交换DD描述信息
Loading加载状态:在交换LSR,LSU,LSACK
Full交换信息完成状态
DR:指定路由器
BDR为备份指定路由器
DR可以减少同广播域中的LSA泛洪
选取DR后,设备的LSA发送到组播224.0.0.6
所有设备将自己的LSA发送给DR,DR将收集到的所有信息建立LSDB,再发送给各个设备
DR和BDR与广播域中其余设备建立领接关系,其余设备相互之间只建立邻居关系
DR是广播域中的某个接口,而不是某个设备
每一个广播域中都需要选举一个DR,点到点类型网络(如串口相连,后期不会有第三台设备)中不需要选举DR
DR是基于端口的优先级(Priority)的值进行选举,优先级的范围为0-255,默认为1,值最大的将选举为DR,优先级为0时表示不参与选举,如果优先级相同,将比较router ID,最大的为DR
DR被选定后不能轻易的变更,需要变更需要区域内全部重启OSPF,或者将DR优先级修改为0使其退出选举,使新设置的DR生效,命令:接口下ospf dr-priority 0
设备启动OSPF之后(宣告之后),设备之间会在40s选出DR,超过40s不能抢占DR
OSPF区域
Area 0区域0为骨干区域,其余的区域都必须与此区域相连
区域0中的路由器被称为骨干路由器,这些路由器可以连接其他区域,这台路由器被称为ABR(区域边界路由器),被用来连接普通区域与骨干区域
每个区域都维护一个独立的LSDB
ABR拥有两套LSDB数据库,一套是Area 0的数据库,一套为所在普通区域的数据库
OSPF开销
OSPF的cost值(参考值)计算公式为带宽参考值(十的八次方)除以当前带宽
cost值没有小数,全部取整
带宽计算:百兆为100*10的6次方,千兆为1000*10的6次方,万兆为10000*10的6次方
可以通过bandwidth-reference命令来设置带宽参考值:bandwidth-reference 10000(单位为兆)
也可以在接口视图下直接修改cost值,命令为ospf cost 20,cost值将影响设备对路由的cost的评价,会影响选路
OSPF认证
分为2种:区域认证和接口认证
接口认证与RIP认证同理,只在邻居间生效
接口认证命令:接口视图下ospf authentication-mode md5 1(此为认证口令编号,需要双方一致) huawei
区域认证是整个区域所有设备都要认证,在区域间生效
以接口命令的key为先