理论
OSPF:开放式最短路径优先协议
标准的链路状态路由协议----拓扑状态
无类别协议,更新时携带子网掩码;组播更新224.0.0.5/6;
需要结构化部署的协议-----区域划分、地址规划
触发更新、周期更新(30min)
OSPF的数据包
- hello包 用于发现、建立、周期保活邻居关系 存在router ID----RID 全网唯一的编号,使用ip地址
- DBD包 数据库描述包
- LSR 链路状态请求
- LSU 链路状态更新 ---用于携带各种LSA
- LSack 链路状态确认
OSPF的状态机
Down:一旦本地发出hello包就进入下一个状态
Init初始化:接收到的hello包中,若存在本地的RID,那么进入下一状态
2way双向通信:邻居关系建立的标志
条件匹配:点到点网络直接进入下一状态;MA网络中将进行DR/BDR选举(40s),DRother 非DR/BDR间不得进入下一状态;
Exstart预启动:类hello的DBD,进行主从关系选举,RID数字大者为主,优先进入下一状态
Exchange准交换:使用真正的DBD包,进行数据库目录的共享,需要ACK确认;
Loading 加载:使用LSR/LSU/LSack来获取未知的LSA信息;
Full转发:邻接关系建立的标志
OSPF的工作过程
启动配置完成后,本地使用组播发送hello包到所有邻居处,若收集到其他邻居的hello包,那么建立邻居关系,生成邻居表;
和所有邻居间进行条件匹配,若失败将停留于邻居关系,仅hello包周期保活即可;
若匹配成功,将建立邻接(毗邻)关系;邻接关系间将使用DBD/LSR/LSU/LSack来获取未知的LSA信息;当收集齐所有的LSA信息后,本地生成LSDB--链路状态数据库---数据库表
再本地基于LSDB计算到达所有未知网段的最佳路径,然后将其加载到路由表中;
收敛完成后,hello包周期保活邻居、邻接关系;30min周期DBD比对数据库;
若结构突变:1、新增、断开网段---直连设备使用DBD同步信息到所有的邻接处
2、设备断电或无法沟通---dead time到时后断开邻接关系
LSA--链路状态通告--拓扑或路由
LSDB--链路状态数据库--所有LSA的集合
Ospf协议的收敛被称为----LSA洪泛、LSDB同步
配置
OSPF的配置
r1(config)#router ospf 1 启动时需要配置进程号,仅具有本地意义
r1(config-router)#router-id 1.1.1.1 配置RID,要求为全网唯一;
手工---环回接口最大数字---物理接口最大数字
宣告:1、激活 2、路由或拓扑 3、区域划分
r1(config-router)#network 1.1.1.1 0.0.0.0 area 0
r1(config-router)#network 12.1.1.0 0.0.0.255 area 0
反掩码 区域
划分规则
- 必须为星型结构----区域0为骨干,中心站点
- ABR--区域边界路由器
邻居表
启动配置完成后,所有设备间使用hello包,发现并建立邻居关系,生成邻居表:
Hello time 为10s,dead time 为 hello time 的4倍;
r2#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
1.1.1.1 0 FULL/ - 00:00:34 12.1.1.1 Serial1/0
3.3.3.3 0 FULL/ - 00:00:39 23.1.1.2 Serial1/1
数据库表
邻居关系建立后,邻居间进行条件匹配,匹配成功者间进入邻接关系;基于DBD/LSR/LSU/LSack获取未知LSA信息,生成LSDB--数据库表;
r2#show ip ospf database
路由表
LSDB同步完成后,本地使用SPF最短路径选路规则,将到达未知网段的路由加载路由表:
使用字母O标识通过OSPF学习的路由;
O 本地区域内的路由,是本地通过拓扑计算所得
O IA 域间路由,其他区域的路由,通过ABR共享进入的
修改带宽
管理距离为110;度量为cost值=开销值=参考带宽/接口带宽
默认参考带宽为100M;整段路径cost值之和最小为最佳路径;
注:当接口带宽大于参考带宽时,cost值为1;将可能导致选路不佳,建议修改参考带宽
r1(config)#router ospf 1
r1(config-router)#auto-cost reference-bandwidth ?
<1-4294967> The reference bandwidth in terms of Mbits per second
r1(config-router)#auto-cost reference-bandwidth 1000
切记:整个网络所有设备均需要修改一致;
OSPF建立成为邻接关系的条件----关注网络类型
点到点--在一个网段内只能存在两个节点--在点到点网络ospf只能直接建立邻接关系;
MA网络---在一个网段内节点数量不限制--在MA网络中为避免重复的更新,将进行DR/BDR选举,所有的非DR/BDR间仅建立邻居关系;DR/BDR与其他非DR/BDR建立邻接关系,基于224.0.0.6沟通;
选举规则
- 比较接口优先级 0-255 大优 默认为1;
- 接口优先级若相同,比较RID;
r1(config)#interface fastEthernet 0/0
r1(config-if)#ip ospf priority 3 修改接口优先级
注:ospf选择非抢占的,因此在人为修改了优先级后,必须重启所有设备的OSPF进程
r1#clear ip ospf process
Reset ALL OSPF processes? [no]: yes
可以将设备的参选接口优先级修改为0,----不参选;但至少留一台设备参选,否则将无DR,网络无法通行;
OSPF的扩展配置
认证
认证--直接在连接邻居的接口上配置
明文认证
- r1(config)#interface s1/1 进接口
- r1(config-if)#ip ospf authentication message-digest 先开启认证服务
- r1 (config-if)#ip ospf authentication-key 1 *****(密码) 明文认证
密文认证
- r1(config)#interface s1/1 进接口
- r1(config-if)#ip ospf authentication message-digest 先开启认证服务
- r1(config-if)#ip ospf message-digest-key 1 md5 ****(密码) 密文认证
区域明文
Router(config)#router ospf 100
Router(config-router)#area 0 authentication
区域密文
- Router(config)#router ospf 100
- Router(config-router)#area 0 authentication message-digest
加快收敛
hello time10s dead time 40s
在直连邻居的接口上修改,且邻居间time 必须完全一致,否则无法保持邻居关系
r1(config)#interface s1/1
r1(config-if)#ip ospf hello-interval 5 修改本端的hello time,本端的dead time自动4倍关系匹配;
被动接口
被动接口----仅接收不发送路由协议信息,用于连接用户的接口,不得用于连接邻居的接口
r2(config)#router ospf 1
r2(config-router)#passive-interface loopback 0
缺省路由
缺省路由--在边界路由器上配置缺省信息后,向内网发送缺省路由
r4(config)#router ospf 1
r4(config-router)#default-information originate always