工作原理
两个相邻的Router通过Hello报文建立邻区关系, 然后通过交换链路状态信息建立邻接关系,之后根据SPF算法计算出目的路由的最短路径加入路由表中。
过程中使用了5种报文,3个阶段,4张表和7种状态。
5种报文:
- Hello 报文: 建立并维护邻居。
- DBD报文: 发送链路状态头部信息。
- LSR 报文: 发送需要的路由的请求。
- LSU报文: 需要的信息 返回去邻区。
- LSAck: 确认收到的LSU.
3个阶段:
- 邻区发现:通过Hello报文建立邻居关系。
- 路由通告:邻区之间发送链路状态数据库形成邻接关系。
- 路由计算:根据SPF算法去计算中全路由表中的最佳路由(路径最短的)
4张表:
- 邻居表:记录邻居关系的路由器.[1]
- 拓扑表:记录链路状态信息。[1]
- 路由表: 记录链路状态数据库中的最佳路由。[1]
- 全局路由:跟其他路由比较得出。
[1] 查看OSPF命令:
show ip ospf neighbor # 查看邻居表
show ip ospf database # 查看LSDB数据库
show ip ospf route # 查看路由表
7种状态:
- Down: 未检测到活动邻居
- Initi: 发出Hello包
- Two-way: 收到互发的hello包
- Exstart: 确认主从关系(DR/BDR)[2]
- Exchange: 交换链路数据信息
- Loading: LSR和LSU的交换
- Full: 邻居关系完全邻接
[2] DR和 BDR的选举规则:
*不参与选举的Router称为DRother, 成员*
1. 根据路由器优先级确定,默认为1(范围0~255,0不参与选举),优先级越大越优先
2. 根据Router-ID确定,一般手动命令“Router-ID”
3. 如果没有Router-ID,选举环回口地址最大的
4. 如果没有环回口,选举接口地址最大的
OSPF网络优点:
- 适用于中大型网络
- 组播触发更新: 最大生存1小时,30 分钟更新一次。
- 收敛速度快: 如果网络结构改变,将会以最快速度发送更新。采用周期短的hello维护邻居关系
- 开销作为度量值: 开销跟带宽有关, 带宽越大开销越小,带宽越小开销越大
- 避免环路:最短路径算法避免环路
OSPF设计原则
所有非骨干区域要连接骨干区域 area 0;
非骨干区域无法连接area 0, 采用虚链路技术解决;
建议多出口网络,避免单一故障。
OSPF 数据包格式
进行单个数据包调试: Debug ip osfp packet
OSPF网络类型
OSPF LSA类型
- LSA 1 Router
最准确的LSA
每个路由器都会产生, 在本区域内传播
承载本地Router所有直连网段的信息,前缀,掩码,OSPF网络类型
查看类型1的LSA:
show ip ospf database router adv-router ROUTER-ID
- LSA 2 Network
只要广播网或NBMA的DR产生, 在本区域内传播
承载区域内所有成员路由器的直连网段信息,前缀,掩码,OSPF网络类型
LSA1和LSA2只在本区域内传播,不会穿越ABR
查看类型2的LSA:
show ip ospf database network adv-router ROUTER-ID
- LSA 3 Summary
始发区域的ABR产生域间路由 O IA
在OSPF区域内传播, 穿越一个区域,下一跳改为此区域的ABR的Router-ID
承载区域内所有ospf成员路由器的直连网段信息,前缀,掩码,OSPF网络类型默认LSA3是不汇总的,有多少路由,本区域就宣告多少给其他区域
查看类型3的LSA:
show ip ospf database summary adv-router ROUTER-ID
- LSA 4 ASB
始发区域的ABR产生,在OSPF区域内传播, 穿越一个区域,下一跳改为此区域的ABR的Router-ID
承载ASBR的Router-ID,给其他路由器指明了ASBR的位置有几个ASBR,就有几个LSA4// 有4 就有5
查看类型4的LSA:
show ip ospf database asbr-summary adv-router ROUTER-ID
- LSA 5 外部LSA
始发区域的ASBR产生,在OSPF区域内传播,AS内宣告,下一跳不变就是ASBR的Router-ID,
宣告外部网络网段给AS内部。默认不汇总,几个外部网络,就几条LSA5
查看类型5的LSA:
show ip ospf database external adv-router ROUTER-ID
- LSA 7 NSSA
NSSA 非纯末梢区域:必须是非骨干区域,并且具有ASBR出口的区域
LSA 7和LSA 5格式是相同的
区别: LSA7是NSSA区域传递的外部路由; LSA 5是骨干区域传递的外部路由
由NSSA区域的始发ASBR产生,NSSA区域的ABR将LSA 7转成LSA 5传递给Area 0, LSA 7 转 LSA 5是自动转化的,不可逆的转换。下一条是NSSA区域的ABR router-id, 只在NSSA区域内传播路由标志:O N1/N2
查看类型7的LSA:
show ip ospf database nssa-external adv-router ROUTER-ID
OSPF 路由标志
路由标志及说明:
O
: 域内路由,由LSA 1和LSA 2产生并通告O IA
: 域间路由,由LSA 3通告O E1/E2
[3] : 外部路由,由LSA 5 通告或者来自AS外的网络
[3]外部路由O E1/E2的区别:
O E1是要计算域内路径开销的
O E2是不计算域内路径开销,默认为O E2(重分布时可以手动指定为 E1)
两个都出现的时候,优先选择O E1,路由开销会更加精确。
OSPF 过载保护、被动接口
过载保护:
如果其他Rrouter的LSA条目众多会很消耗路由器资源,此时可以通过限制LSA数目来达到保护的目的
R1(config-router) max-lsa 12000 --- ? 可以查看有哪些限制条件
定义一个百分比值,当收到LSA的条数超过我指定的值,进行相应的操作,用于限定路由器所能收到的LSA条数
maximum-number 所允许收到LSA的最大条数
[threshold-percentage] 所允许收到LSA的百分比,maximum-number的百分比,默认75%
[warning-only] 只发送警告,不做其它动作,默认是关闭的
[ignore-time] 超过最大值后进入ignore状态的时间,默认5分钟,5分钟后恢复
[ignore-count] 超过多少次后,一直进入ignore状态
[reset-time] 一直进入ignore状态后多长时间重置所有邻居
被动接口
通过设置被动接口来禁用路由器更新和建立邻居关系。多用于末节区域
命令:
passive- interface default ** 默认全部接口为被动接口
passive-interface s0/1 **设置s0/1为被动接口,不收也不发hello包