OSPF理论
OSPF理论
路由:当路由器根据目的IP查找路由表进行转发
动态路由
动态路由协议基础
从路由器协议原理层面可以将动态路由分为两种
- 距离矢量路由协议:RIP,EIGRP,BGP
a.距离矢量路由协议特征为传递整张路由表
b.具有水平分割特点:一个就接口收到的一个路由,那么这条路由将不再从这个接口发出去(防环原则) - 链路聚合路由协议:OSPF,ISIS
a. 不在传递路由表,而是传递LSA(链路状态通告信息,类似于地图)
b.距离矢量路由协议直接给出结果,链路聚合路由协议则是根据算法自己算
从应用场景来区分
- IGP:内部网关路由协议
主要应用于局域网(企业网,园区网,家用网,物联网):RIP,EIGRP,OSPF,ISIS - EGP:外部网关协议
主要应用于全球global网络 BGP
OSPF
1.定义
OSPF:开放式最短路径优先协议,公有化,基于链路聚合的内部网关路由协议
OSPF路由器之间传递LSA,而不是路由表,先发送给其他邻居之后才计算LSA,因此收敛速度快
特点
- 无环路
天生无环路,算法的原因,树状算法 - 收敛快
RIP:先收 再算 再发(太慢)
OSPF:先收 再发 再算 - 扩展性好
RIP:最多15台路由器
OSPF:无限制 - 支持认证
如果打开了支持认证这个功能,必须互相对一下暗号才可以建立邻居关系
2.SPF算法
- LSDB(数据库)
- LSA:链路状态通告信息
运行了OSPF协议的路由器都会LSA泛洪,每台路由器会根据数据的LSA一自己为根计算出最短路径树,再根据SPF树的结果计算路由表
3.OSPF报文
- hello 用于发现 建立 维系邻居关系 10S发一次 老化时间为40S
- DD 数据库描述文件 database description:目录 摘要 大纲
第一次发送时没有目录,因为要比较主从关系 || router-id比较 || 谁大选谁 谁大谁先更新 || 不给发菜,给发菜谱(一个比较的过程) - LSR 链路状态请求报文 用于向邻居请求自身缺少是LSA || 发现自己没有的数据,请求发送
- LSU 链路转态更新报文 携带完成的LSA信息 || 给对方发数据
- LSACK 链路状态确认报文 用于确认收到的LSA报文 || 回复确认收到
4.router-id
配置了OSPF的路由器(华为官方文档说法)
可以手动配置router-id
OSPF 1 router-id x.x.x.x
自动选举router-id
当路由器自动选举router-id时,规则为:
- router-id和路由接口地址相关联,如果路由器没有配置IP地址,那么将无法选举router-id 显示为0.0.0.0
- 如果没有手动配置,则选举路由器环回接口最大的作为OSPF的router-id
- 如果没有配置环回接口,会使用路由器最大的物理接口地址作为OSPF的router-id
dis ospf peer br
优先级:手动配置>环回接口>物理接口
实际
-
如果没有手动配置router-id,那么路由器会使用路由器的全局IP作为OSPF的router-id
dis router id // 查看全局router-id -
路由器会选举第一个UP的接口IP作为路由全局router-id
-
作用:router-id作为运行了OSPF协议的路由器身份证,在OSPF网络中作为唯一的标识
5.邻居状态机
- down
- attempt (只存在NBMA网络中,特殊)
- init 初始化 收到hello包会进入init状态
- 2-way 邻居状态 (hello包发送两次才会交互LSA)
- exstart 发送DD报文 选举主从
- exchange 发送菜谱 交换状态
- loading 更新 请求 交互LSA
- full 领接状态 同步LSA 同步路由器 确认状态
注意:当路由器的邻居状态为2-way时是不会交互LSA学习的,只有邻居状态到达full才会交互LSA并且互相学习路由
6.接口状态机
- down 在接口没有宣告OSPF时,该接口的OSPF状态为down
- waiting 当接口宣告进OSPF进程后,该接口状态进入waiting,等待该网络中是否有其他邻居参与接口状态的选举
- DR 接口状态 老大 (选举的目的是减少LSA的泛洪)
- BDR 接口状态 老二
- DRother 接口状态 小弟
fullmesh 两两之间建立邻居
MA网络 多路
224.0.0.5
224.0.0.6
更新LSA
DR和BDR的选举
1.如果一个接口宣告了OSPF之后,在waiting时间内没有其他路由器接口参与选举,那么该接口直接成为DR
waiting的等待时间默认为hello时间的4倍,在广播网络中为40S
2.如果有多个接口同时参与选举
首先查看接口的DR优先级(优先级取值范围为0-255,0代表不参与选举直接成为DRother,默认为1,越大越优先)
如果接口DR优先级比较不出来,则比较两台路由器的router-id
注意:DR状态机一旦选举完成,将不具备抢占能力
如果想要新加入路由器接口选举为DR,需要重置以下现有路由器的OSPF进程,导致OSPF重新收敛
rest oospf process
dis ospf int // 查看DR
7.OSPF支持的网络类型
- 广播: 只有在以太网网络类型中才有MAC的说法 网线接入 默认广播类型 || 以太网组网时默认为广播
- 点到点: 串口链路(PPP HDLC)默认点到点 用于特别稳定的线路
- NBMA 帧中继 ATM时默认为NBMA 已淘汰
- 点到多点 没有任何一种数据链路层协议对应该类型,一般在DSVPN中使用
8.OSPF区域
OSPF的区域分为骨干区域和非骨干区域
- 其中区域0为骨干区域,非0区域为非骨干区域,骨干区域有且只能存在一个,那么OSPF组网要求所有非骨干区域必须和骨干区域相连接
- 注意:区域是基于接口的,只能说某路由器的某个接口属于那个区域,不能说路由器属于那个区域
ABR:区域边界路由器
ASBR:自治系统边界路由器 - 每个区域维护一个独立的LSDB
9.开销
开销值作为加表原则,需要在路由条目中携带
开销值的计算:
- 每一个宣告进入OSPF的路由器接口都会生成一个OSPF开销值
接口开销值 = 参考带宽/接口带宽 参考带宽值为100M
举例:G0/0/0接口的开销值为:100M/1000M=0.1 取整=1(对于取整来说,计算结果如果 大于0且小于2=1,大于2小于3=2) - 路由携带的开销值如何计算
两种算法:
路由传递方向上所有设备的入接口开销值累加
始发设备在数据传递方向上所有出接口开销值累加(环回接口开销值为0) - 开销值的修改
进入路由器的某个接口,然后 OSPF cost 开销值