OSPF:开放式最短路径优先协议
- 标准的链路状态型路由协议----拓扑状态。
- 无类别协议,更新时携带子网掩码;组播更新224.0.0.5/6。
- 需要结构化部署的协议-----区域划分(区域之间传路由)、地址规划。
- 触发更新、周期更新(30min)。
- 链路状态型路由协议的距离矢量特征--------区域之内传拓扑,区域之间传路由;
【1】OSPF的数据包:
1、hello包 用于发现、建立、周期保活邻居关系 , 存在router ID----RID (全网唯一的编号,使用ip地址)。
2、DBD包 数据库描述包 所有LSA目录信息 , 对比lsa
3、LSR 链路状态请求
4、LSU 链路状态更新 —用于携带各种LSA(12种)
5、LSack 链路状态确认
【2】OSPF的状态机:
- Down:一旦本地发出hello包就进入下一个状态
- Init初始化:如果收到的hello包中携带自己的RID,则和邻居一起进入下一状态
- 2way双向通信:邻居关系建立的标志 条件匹配:若成功,进入下一状态,若失败,保持邻居关系,仅hello包10s周期保活即可;
点到点网络直接进入下一状态;MA网络中将进行DR/BDR选举(40s),DR非抢占性,只有DRother与DRother之间为邻居关系,其余均为邻接关系,DRother即非DR/BDR间不得进入下一状态,因为为邻居关系。 - Exstart预启动:类hello的DBD(只含有RID),进行主从关系选举,(先比较优先级,大优,默认为1,再比较RID),RID数字大者为主即DR,优先进入下一状态,选举的目的是为了减少重复更新量,不同网段内选举不同的DR与BDR。
- Exchange准交换:使用真正的DBD包,进行数据库目录的共享,需要ACK确认;
- Loading 加载:使用LSR/LSU/LSack来获取未知的LSA信息;
- Full转发:邻接关系建立的标志----收敛完成,实际的邻接关系在条件匹配完成后建立
【3】OSPF的工作过程:
- 启动配置完成后,本地使用组播(224.0.0.5)发送hello包到所有邻居处,若收集到其他邻居的hello包中携带自己的RID,那么建立邻居关系,生成邻居表;
- 之后和所有邻居间进行条件匹配,若失败将停留于邻居关系,仅hello包10s周期保活即可;
- 若匹配成功,将建立邻接(毗邻)关系;RID大者优先发送DBD报文,交换之后进入加载状态,邻接关系间将使用DBD/LSR/LSU/LSack来获取未知的LSA信息;当收集齐所有的LSA信息(路由与拓扑)后,本地生成LSDB–链路状态数据库—数据库表;
- 再本地基于LSDB,使用SPF算法计算到达所有未知网段的最佳路径,然后将其加载到路由表中,收敛完成。
收敛完成后,hello包(10秒)周期保活邻居、邻接关系;30min周期DBD比对数据库;
若结构突变:
1、新增、断开网段—直连设备使DBD/LSR/LSU/LSACK获取新增LSA信息或删除断开网段;
2、设备断电或无法沟通—dead time(40秒)到时后断开邻接关系,同时删除所有从邻居出学到的信息;
LSA–链路状态通告–拓扑或路由;
LSDB–链路状态数据库–所有LSA的集合;
Ospf协议的收敛被称为----LSA洪泛、LSDB同步;
【4】OSPF的配置:
r1(config)#router ospf 1
//启动时需要配置进程号,仅具有本地意义
r1(config-router)#router-id 1.1.1.1
配置RID,要求为全网唯一;
推荐手工---默认环回接口ip地址最大数字---物理接口IP地址最大数字
宣告: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
反掩码:精确匹配
OSPF反掩码宣告:
若反掩码为1,代表此为可以变化;
反掩码为0,代表此为固定。
ospf必须结构化部署:
1.区域划分;
2.IP地址规划-------最好的划分为一个区域内可以汇总为一条路由;
OSPF区域划分规则:
1、必须为星型结构----区域0为骨干,中心站点,所有的非骨干区域必须和骨干区域相连接,必须存在骨干区域;
2、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
邻居的RID 不小于30秒 邻居的 本地的入接口
倒计时
邻居关系建立后,邻居间进行条件匹配,匹配成功者间进入邻接关系;基于DBD/LSR/LSU/LSack获取未知LSA信息,生成LSDB–数据库表;
r2#show ip ospf database
LSDB同步完成后,本地使用SPF最短路径选路规则,将到达未知网段的路由加载路由表:
使用字母O标识通过OSPF学习的路由;
O 本地区域内的路由,是本地通过拓扑计算所得;
O IA 域间路由,其他区域的路由,通过ABR共享进入的;
cost值为源到目的所有出接口的累加开销值
管理距离为110;
度量为cost值=开销值=参考带宽/接口带宽
默认参考带宽为100M;查看接口带宽 (show interfaces f0/0), 默认带宽(百兆接口),串口带宽为1.544兆;
整段路径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
切记:整个网络所有设备均需要修改一致;
【5】OSPF建立成为邻接关系的条件----关注网络类型
点到点–在一个网段内只能存在两个节点
MA网络—在一个网段内节点数量不限制
在点到点网络ospf只能直接建立邻接关系;
在MA网络中为避免重复的更新,将进行DR/BDR选举,所有的非DR/BDR间仅建立邻居关系;DR/BDR与其他非DR/BDR建立邻接关系,基于224.0.0.6沟通;
选举规则:
1、比较接口优先级 ,0-255 大优 ,默认为1;
2、接口优先级若相同,比较RID;大者为DR,次大为BDR;
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,----不参选,直接为Drother;但至少留一台设备参选,否则将无DR,网络无法通行;
【6】OSPF的扩展配置
1)认证–直接在连接邻居的接口上配置
r1(config)#interface s1/1
r1(config-if)#ip ospf authentication message-digest
//先开启认证服务
r1(config-if)#ip ospf message-digest-key 1 md5 cisco123
//再配置认证的秘钥和模式、编号
明文认证
r1 (config-if)#ip ospf authentication-key 1 cisco
区域认证:
区域的明文认证
Router(config)#router ospf 100
Router(config-router)#area 0 authentication
区域的密文认证
Router(config)#router ospf 100
Router(config-router)#area 0 authentication message-digest
2)加快收敛 hello time10s、 dead time 40s
在直连邻居的接口上修改,且邻居间time 必须完全一致,否则无法保持邻居关系;
r1(config)#interface s1/1
r1(config-if)#ip ospf hello-interval 5
//修改本端的hello time,本端的dead time自动4倍关系匹配;
3)被动接口----仅接收不发送路由协议信息,用于连接用户的接口,不得用于连接邻居的接口;
r2(config)#router ospf 1
r2(config-router)#passive-interface loopback 0
4)缺省路由–在边界路由器上配置缺省信息后,向内网发送缺省路由
r4(config)#router ospf 1
r4(config-router)#default-information originate always
// 强制下放缺省