down:没有启用OSPF的状态
邻居失效后变为该状态,本地一旦发出hello包,进入下一状态;若卡在此状态,原因是ospf没有运行,互相不发包
Init:初始化状态
第一次收到对端发来的hello包(包含对端route-id)时,将对端的状态设置为init; 若卡在此状态,原因是一方收不到另一方的hello包,比如认证出了问题
2-way:邻居状态
相互间周期发送hello的状态(双方建立会话);点到点网络直接进入下一状态;MA网络将进行DR/BDR选举(40S),非DR/BDR间不能进入下一状态;若卡在此状态,原因是没有成功选举
Exstart:交换信息的初始化状态
发送DBD(包含本地的LSA的摘要信息)报文,选举主从路由器(利用HELLO报文中的ID和优先权来进行选举,不允许抢占,RID数值大为主,主优先进入下一状态);若卡在此状态,原因是MTU值不匹配。
Exchange:交换信息的状态
该状态下,相互间发送DBD,告知对端本地所有的LSA的目录,需要ACK;若卡在此状态,原因是包的交互有问题。
Loading:加载状态(没有学习完的状态)
发送LSR,LSU,LSACK,专门学习对端的LSA的详细信息;若卡在此状态,原因是LSA加载不完全。
Full:邻接状态(学习完的状态)
彼此的LSDB同步,即所有的LSA相同,邻接关系建立的标志;
r1(config)#router ospf 1 启动时需要配置进程号,仅具有本地意义
r1(config-router)#router-id 1.1.1.1
router-id全网唯一:1.手工 > 2.环回接口上最大数值的ip地址 > 3.物理接口最大数值 > 4.无进程
宣告:1、激活 2、拓扑 3、区域划分
r1(config-router)#network 1.1.1.1 0.0.0.0 area 0
r1(config-router)#network 12.1.1.1 0.0.0.0 area 0
在宣告时必须携带反掩码
启动配置完成后,本地收发hello包,建立邻居关系,生成邻居表;
r2#show ip ospf neighbor 查看邻居表
Neighbor ID Pri State Dead Time Address Interface
1.1.1.1 0 FULL/ - 00:00:32 12.1.1.1 Serial1/0
3.3.3.3 0 FULL/ - 00:00:36 23.1.1.2 Serial1/1
状态机
再进行条件的匹配,匹配失败将停留于邻居关系,仅hello包周期保活即可;
匹配成功者间可以建立邻接(毗邻)关系,需要DBD共享数据库目录,LSR/LSU/LSack来获取未知的LSA信息,该过程被称为 LSA洪泛或LSDB同步,当收集完网络中所有的LSA后,生成数据库表(LSDB)
r2#show ip ospf database 查看数据库的目录
r2#show ip ospf database router 1.1.1.1 具体查看某条LSA
类别 番号
LSDB建立完成后,本地基于SPF选路规则,计算本地到达所有未知网段的最短路径,然后将其加载到路由表中,完成收敛
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
使用O标识OSPF本区域内通过拓扑计算所得路由
使用O IA标识其他区域路由器通过ABR导入所得
使用O E1/2标识其他协议或其他进程产生后,通过ASBR重发布进入
使用O N1/2标识其他协议或其他进程产生后,通过ASBR重发布进入,同时本地处于NSSA特殊区域;
收敛完成后–hello包周期保活
30min周期的DBD比对,若不一致将使用LSR/LSU/LSack重新获取(周期更新)
新增网段—直连新增网段的设备使用DBD告知邻居,邻居再使用LSR/LSU/LSack来获取
断开网段—直连断开网段的设备使用DBD告知邻居,邻居再使用LSR/LSU/LSack来获取
无法沟通—dead time 计时到后,邻居关系断开,删除所有从该邻接处学习到的所有LSA信息;
作用:邻居的发现、关系的建立和保活
网络类型 | NBMA | 其它 |
---|---|---|
hello time | 30s | 10s |
dead time | 120s(4*30s) | 40s(4*10s) |
作用:
出现在exstart和exchange阶段
exstart状态时,没有携带目录信息,仅用于主从关系选举
在exstart状态的DBD时,使用隐型确认(基于序列号);从使用主的DBD序号来确认主的信息
标记位 I 为1标识本地发出的第一个DBD 包,M为0标识本地的发出最后一个DBD包,MS为1标识主,为0标识从
在点到点网络中,邻居关系必须成为邻接关系,否则无法正常收敛
在MA网络若全网均为邻接关系,那么将可能出现大量重复性的LSA洪泛;
为避免该现象,将进行DR/BDR的选举;
所有的非DR/BDR间不得建立成为邻接关系;
r1(config)#interface fastEthernet 0/0
r1(config-if)#ip ospf priority 3
注:DR选举非抢占,故修改优先级后必须重启设备的OSPF进程
r1#clear ip ospf process
Reset ALL OSPF processes? [no]: yes
r1#show ip ospf interface lo0 查看OSPF协议在某个接口上的工作方式
网络类型 | OSPF接口工作方式 | hello time | 选举 | 备注 |
---|---|---|---|---|
环回 | LOOPBACK | 无hello包 | 以32位主机掩码发送路由 | |
点到点(HDLC/PPP) | POINT_TO_POINT | 10s | 不选DR | 缺点:会占用较多的子网,并且在hub上会开启较多的tunnel ,配置繁琐,改动不方便 |
点到多点(不完全相连的FR网络) | 不选DR | |||
BMA (以太网) | BROADCAST | 10s | 选DR | |
NBMA (MGRE) | POINT_TO_POINT | 10s | 选DR | 优点:方便通信 缺点:不稳定参数多,断开恢复慢 |
注:点到点的工作方式,仅适用于一个网段两个节点的网络;
在普通GRE中,点到点的工作方式没有任何问题;
但在MGRE这种NBMA网络中,若依然使用tunnel口默认的点到点工作方式,将由于点到点仅支持一个邻居关系,而出现邻居关系翻滚现象;
r1(config)#interface tunnel 0
r1(config-if)#ip ospf network broadcast
注1:若MGRE环境下,不同接口处于不同的网络类型;若hello time一致将建立邻居关系,当工作机制的不同导致LSA更新出现问题;必须所有节点处于相同的工作方式
注2:MGRE环境下,若构建的OSPF工作环境不是一个全连结构(网段内所有设备间均建立邻居关系),那么一旦使用broadcast工作方式,就必须将DR固定在中心站点位置,否则将出现DR位置混乱,导致网络无法正常收敛;
r1(config)#interface tunnel 0
r1(config-if)#ip ospf network point-to-multipoint
点到多点的工作:1. hello time30;2. 无DR选举;3. 生成访问各个节点的精确路由;
注:在全连网状结构中若接口工作方式为点到多点,将由于不进行DR/BDR选举,导致重复更新;
远离骨干的非骨干区域
ABR必须同时工作于区域0,才能进行区域间的路由共享
不连续骨干
从X区域获取到的路由信息不得发往编号为X的区域;即便X区域连接了本区域不同的ABR;(OSPF水平分割)
在两台ABR上建立隧道,然后将其宣告于OSPF协议中
ospf虚链路两种作用:
r2(config)#router ospf 1
r2(config-router)#area 1 virtual-link 4.4.4.4
中间的穿越区域 对端的ABR的RID
一台设备上若同时运行多个进程,那么不同进程拥有不同的RID,生成各自的数据库,当数据库不共享;仅将各自计算所得路由加载于同一张路由表内;若多个进程工作于同一个接口上,仅最新启动的进程生效;
在解决不规则区域时,让连接两个非骨干区域的ABR设备,将不同区域宣告到本地的不同进程下,之后使用重发布技术,进行路由共享即可;
r4(config)#router ospf 1
r4(config-router)#redistribute ospf 2 subnets
r4(config-router)#exit
r4(config)#router ospf 2
r4(config-router)#redistribute ospf 1 subnets
参数 | 意义 |
---|---|
LS age: 142 | 老化时间,周期1800归0,也可触发归0;最大老化3609s |
Options: (No TOS-capability, DC) | |
LS Type: Router Links | 类别名,此处为1类 |
Link State ID: 1.1.1.1 | link-ID,在目录中的编号 |
Advertising Router: 1.1.1.1 | 通告者的RID |
LS Seq Number: 80000004 | 序列号 |
Checksum: 0x65F9 | |
Length: 60 | |
Number of Links: 3 |
类别 | LSA | Link-ID | 传播范围 | 通告者 | 携带信息 |
---|---|---|---|---|---|
LSA1 | router | 通告者的RID | 本区域 | 本地区域所有设备 | 本地的直连拓扑 |
LSA2 | network | DR的接口IP地址 | 本区域 | DR | MA网段部分的拓扑 |
LSA3 | Summary | O IA路由,目标网络号 | 整个OSPF域 | ABR 在经过下一跳ABR时,修改为本地 |
O IA 域间路由 |
LSA4 | asbr-summary | ASBR的RID | 除ASBR所在区域外的整个OSPF域 | ABR 在经过下一跳ABR时,修改为本地 |
ASBR位置 |
LSA5 | External | O E 路由,目标网络号 | 整个OSPF域 | ASBR(不修改) | O E 域外路由 |
LSA7 | nssa-external | O N路由,目标网络号 | NSSA区域内 离开该区域后转换回5类 |
ASBR(不修改) | O N 域外路由 |
有向图为:
拿上面的例子来说一类LSA只能说明我连了谁,所以在MA中他只知道连了哪个网段,不能说明是否连了其他路由器,
二类是用来解决这个问题,用二类来说明这个网段连着谁,都有谁,这个网段就相当于DR。
r1(config)#router ospf 1
r1(config-router)#area 2 range 5.5.4.0 255.255.252.0
通过该区域的1/2类LSA计算所得路由才能汇总成功
r4(config)#router ospf 1
r4(config-router)#summary-address 99.1.0.0 255.255.252.0
将5/7汇总后发向OSPF域内
注:以上汇总均会自动生成空接口防环路由;
特殊区域:不能为骨干区域、不能存在虚链路
拒绝4/5的LSA,ABR自动产生3类缺省发向该区域
r5(config)#router ospf 1
r5(config-router)#area 1 stub 该区域所有的设备均需要配置
在末梢区域的基础上进一步拒绝3的LSA,仅保留一条3类的缺省
先将该区域配置为末梢区域,然后仅在ABR上定义完全即可
r1(config-router)#area 2 stub no-summary
该区域拒绝4/5类LSA;不自动产生3类缺省;本地的5类LSA基于7类转发,通过NSSA区域后转回5类;
该特殊区域的意义在于拒绝其他区域的ASBR产生的4/5数据,又为了避免环路的出现,默认不自动产生缺省路由,导致无法访问其他的域外网段;故在管理员确定无环的情况下,可以手工添加缺省路由
r4(config)#router ospf 1
r4(config-router)#area 1 nssa 该区域所有设备配置
在NSSA的基础上进一步拒绝3的LSA,自动产生3类缺省
先将该区域配置为NSSA,然后仅在ABR上定义完全即可
r3(config)#router ospf 1
r3(config-router)#area 1 nssa no-summary
切记:ISP所在位置的非骨干区域不得配置为任何的特殊区域;
若ISP连接在其他的协议时,连接该协议的非骨干区域也不得配置为任何特殊区域;
Forward Address:出现在5类或7类LSA中
全0或非0
其他路由器在收到5类LSA时,必须在数据库中存在关于产生该5类LSA的ASBR信息
ASBR信息不是值路由表中存在ASBR Router-id 的路由信息,而是数据库中存在ASBR产生的1类LSA
当接收到5类LSA的路由器R5与产生该5类LSA的ASBR不在同一区域内,R1产生的1类LSA将不会洪泛进Area 1
R5的数据库中不存在R1产生的1类LSA,因此将无法加载5类LSA进路由表
(必要产生条件,FA的接口必须是MA类型)
FA会引起路由表的递归查找,若递归到不是O或OA的,此5类路由会无效(该现象被称之为路由不加表现象,有LSA没有路由)
r1(config)#interface s1/1 连接邻居的接口上配置
r1(config-if)#ip ospf authentication 开启接口明文认证需要,开启后本地hello包中认证类型字段被修改,若邻居间不一致,将无法建立邻居关系
r1(config-if)#ip ospf authentication-key cisco 定义明文认证的秘钥
r2(config)#interface s1/1
r2(config-if)#ip ospf authentication message-digest 开启密文认证需要
r2(config-if)#ip ospf message-digest-key 1 md5 cisco123 配置秘钥及编号
例:在R1上开启关于区域0的明文或密文认证;实际就是在R1上所有的区域0接口配置了明文或密文的认证需求,修改了认证类型字段而已
接口的秘钥还需要到各个接口上逐一匹配
r2(config)#router ospf 1
r2(config-router)#area 1 authentication 区域明文
r2(config-router)#area 1 authentication message-digest 区域密文
r2(config-router)#area 1 virtual-link 4.4.4.4 authentication 先开启明文认证需求
r2(config-router)#area 1 virtual-link 4.4.4.4 authentication-key cisco 在配明文认证密码
r2(config-router)#area 1 virtual-link 4.4.4.4 authentication message-digest
r2(config-router)#area 1 virtual-link 4.4.4.4 message-digest-key 1 md5 cisco123
只接收不发送路由协议信息,仅用于连接用户的接口,不得用于连接邻居的接口
r2(config)#router ospf 1
r2(config-router)#passive-interface fastEthernet 0/0
修改计时器,修改时尽量为原有倍数关系,且不易修改过小;
r2(config)#interface s1/1
r2(config-if)#ip ospf hello-interval 10 修改hello time
r2(config-if)#ip ospf dead-interval 40 修改dead time
切记:修改本端的hello time,本端的dead time将自动4倍关系匹配;
邻居间hello 和 dead time必须一致;
由特殊区域自动产生------末梢、完全末梢、完全NSSA产生;普通NSSA区域不产生
本地路由表若存在缺省路由,无论什么方法获取的;将可以使用重发布技术将其导入OSPF域内
r2(config)#router ospf 1
r2(config-router)#default-information originate
默认进入的缺省路由,为类型2,种子度量为1;度量在内部传递时不叠加;类型1的话,度量会叠加;
类型1主要用于存在多个ASBR时;
r2(config-router)#default-information originate metric-type 1
若本地路由表没有缺省,但希望向内网强制发布缺省路由
r2(config-router)#default-information originate always 强制向内网发缺省路由
将域外的缺省路由重发布到NSSA区域;切记:若为NSSA区域可以导入,但为完全NSSA时,导入7类缺省必然出环;
r4(config)#router ospf 1
r4(config-router)#area 1 nssa default-information-originate
默认进入路由为类型2,种子度量为1;
r4(config-router)#area 1 nssa default-information-originate ?
metric OSPF default metric
metric-type OSPF metric type for default routes
总结:若同时学习到不同类别的缺省路由;
内部优于外部-----3类优于5/7类
若5/7类相遇,先比度量,小优;若度量一致,5类优于7类;
bgp与ospf左右两边收敛速度不同导致
解决:设置stub router
max-metric router-lsa on-starup wait-for-bgp //等待bgp收敛完成
max-metric router-lsa //经过的lsa永远最大metric
启时不清空FIB表,也就是重启协议时不影响数据转发
Graceful restart