OSPF:Open Shortest Path First,最短路径优先
1)基本概念:
标准的LS型协议--共享拓扑
组播更新:224.0.0.5/6
触发更新,存在周期更新 30min
OSPF是跨层封装协议,协议号89
OSPF需要结构化部署:1、区域划分 2、IP地址规划
链路状态型路由协议的距离矢量特征:在OSPF中,区域之内传拓扑,区域之间传路由
管理距离110,使用COST值作为度量值,有计算公式
2)OSPF数据包
hello:用于发现、建立和保活(10s)邻居关系。存在全网唯一的Router-ID,表示路由器建立邻居关系所用的身份标识,使用
IP地址的方式表示
DbD:Database Description,携带着链路状态的目录
LSR:链路状态请求
LSU:链路状态更新--携带了真正的LSA
LSAck:确认
LSA:链路状态通告,就是OSPF中不同的拓扑或者路由信息
LSDB:链路状态数据库,是所有LSA的集合
3)OSPF状态机:
down:未开启OSPF协议。一旦启动协议并宣告之后,接口发出hello包,立即切换到下一状态
Init:初始化状态,若接收到的hello包中存在自己的Router-ID,则和对方一起进入下一状态
2-way:此状态表明邻居关系建立完成。
条件匹配:关注网络类型,点到点网络类型直接将进入邻接关系的建立,MA网络类型需要DR/BDR的选举,选举时间40s
Exstart:预启动,双方使用类hello的DBD包,进行主从关系选举-比较RID,大者优先进入下一状态
Exchange:准交换,交互真正的DBD报文,需要使用ACK确认
Loading:加载,使用LSR/LSU/LSAck获取未知的LSA信息
Full:邻接关系建立完成
4)OSPF的工作过程
启动配置完成后,本地基于224.0.0.5组播收发hello包,建立邻居关系,生成邻居表;
再进行条件的匹配,匹配失败将停留于邻居关系,仅hello包周期保活即可;
匹配成功者间可以建立邻接(毗邻)关系,需要DBD共享数据库目录,LSR/LSU/LSack来获取未知的LSA信息,当收集完网络中所有的LSA后,生成数据表--LSDB
LSDB建立完成后,本地基于SPF选路规则,计算本地到达所有未知网段的最短路径,然后将其加载到路由表中;完成收敛
收敛完成后--hello包周期保活
-- 30min周期的DBD比对,若不一致将使用LSR/LSU/LSack重新获取
网络结构发生变化:
1、新增
2、断开
3、设备无法通信:hello 10s保活 dead time 40s,dead time 计时到后,邻居关系断开,删除所有从该邻接处学习到的所有LSA信息;
OSPF配置:
R1(config)#router ospf 1 //启动协议时需要配置进程号,进程号仅具有本地意义
R1(config-router)#router-id 1.1.1.1 //手工配置RID。不配置时,环回最大>物理接口最大
宣告:1、激活接口 2、发布拓扑或路由 3、区域划分
R1(config-router)#network 12.1.1.0 0.0.0.255 area 0
反掩码
R1(config-router)#network 1.1.1.1 0.0.0.0 area 0
区域划分规则:
1、必须拥有骨干区域0,所有非骨干区域必须直连骨干区域
2、必须拥有ABR--区域边界路由器
反掩码:32位二进制,使用点分十进制的形式表示,由连续的0和连续的1构成;0表示固定位,1表示可变位
使用ACK数据包直接确认称为显式确认
R1#show ip route ospf
2.0.0.0/32 is subnetted, 1 subnets
O 2.2.2.2 [110/2] via 12.1.1.2, 00:08:20, FastEthernet1/0
3.0.0.0/32 is subnetted, 1 subnets
O IA 3.3.3.3 [110/66] via 12.1.1.2, 00:08:20, FastEthernet1/0
23.0.0.0/24 is subnetted, 1 subnets
O IA 23.1.1.0 [110/65] via 12.1.1.2, 00:08:20, FastEthernet1/0
字母问题:
O 本区域内通过LS计算所得的路径
O IA 区域之间通过ABR引入的
O E1/2 从其他路由协议或者其他OSPF进程通过重发布技术引入的路由
O N1/2 从其他路由协议或者其他OSPF进程通过重发布技术引入的路由同时本地是NSSA区域
管理距离110,使用COST值作为度量值,有计算公式
COST=参考带宽÷接口带宽 默认参考带宽位100M
当接口带宽大于参考带宽时,COST取1,会导致选路不佳
可以修改参考带宽--必须全网一致
5)成为邻接关系的条件--关注网络类型
基于网络类型------点到点 MA多路访问
在点到点网络中,邻居关系必须成为邻接关系,否则无法正常收敛
在MA网络若全网均为邻接关系,那么将可能出现大量重复性的LSA洪泛;
为避免该现象,将进行DR/BDR的选举;所有的非DR/BDR间不得建立成为邻接关系;
选举规则:1、先比较接口优先级----- 默认1;大优;0标识不参选,点到点接口默认为0;
2、优先级相同,比较设备的RID,数值大优;
角色关系:
DR与DROTHER之间是邻接关系
DR与BDR之间是邻接关系
DROTHER与DROTHER邻居关系(2WAY)
BDR与DROTHER之间是邻接关系
干涉选举的方法:
1、修改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
2、修改DR最大优先级,BDR次大;剩余所有设备优先级修改为0;
不需要重启设备的进程;切记不得将所有设备优先级修改为0,至少必须存在DR;
2、OSPF虚链路---非骨干区域间的ABR到骨干区域的ABR处授权--建立一条虚链路
r2(config)#router ospf 1
r2(config-router)#area 1 virtual-link 4.4.4.4
中间的穿越区域 对端的ABR的RID
因为没有新的网段出现,故选路正常;为了避免周期的信息对中间区域的影响,故停止虚链路间的所有周期行为-----不可靠
3、多进程双向重发布
一台设备上若同时运行多个进程,那么不同进程拥有不同的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
一、OSPF的数据库表
OSPF协议基于LSU来共享LSA信息;
LSA--链路状态通告----拓扑或者路由信息
在不同的条件下发出不同类别的LSA;
详细查看某条LSA:
r1#show ip ospf database router 1.1.1.1
类别名 link-id/番号
无论哪种类别的LSA均存在以下参数:
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
传播范围 通告者 携带信息
LSA1 router 本区域 本地区域所有设备 本地的直连拓扑
LSA2 network 本区域 DR MA网段部分的拓扑
LSA3 Summary 整个OSPF域 ABR O IA 域间路由
LSA4 asbr-summary 除ASBR所在区域外 ABR ASBR位置
的整个OSPF域
LSA5 External 整个OSPF域 ASBR O E 域外路由
LSA7 nssa-external NSSA区域内 ASBR O N 域外路由
离开该区域后转换回5类
Link-ID 通告者
LSA1 router 通告者的RID 本地区域所有设备
LSA2 network DR的接口IP地址 DR
LSA3 Summary O IA路由,目标网络号 ABR,在经过下一跳ABR时,修改为本地
LAS4 asbr-summary ASBR的RID ABR,在经过下一跳ABR时,修改为本地
LSA5 External O E 路由,目标网络号 ASBR(不修改)
LSA7 nssa-external O N路由,目标网络号 ASBR(不修改)
二、减少LSA的更新量
【1】手工汇总 ----减少骨干区域LSA量
【2】特殊区域 ----针对非骨干区域
【1】手工汇总
1)域间路由汇总---只能在ABR上配置
r1(config)#router ospf 1
r1(config-router)#area 2 range 5.5.4.0 255.255.252.0
通过该区域的1/2类LSA计算所得路由才能汇总成功
2)域外路由汇总---ASBR上配置
r4(config)#router ospf 1
r4(config-router)#summary-address 99.1.0.0 255.255.252.0
注:以上汇总均会自动生成空接口防环路由;
给各个路由器及接口配IP地址
R1路由器:
r2(config)#interface fastEthernet 0/0
r2(config-if)#ip address 172.16.1.1 255.255.255.0
r2(config-if)#no shutdown
r2(config-if)#exit
R2、R3...R12全部配完地址
注意:R4为ISP 使用公网地址
建立MGRE环境 在area0 里建立
注:点到点的工作方式,仅适用于一个网段两个节点的网络;
故在MGRE环境下若适用tunnel口默认的工作方式,那么一个网段内若存在两个以上节点将出现邻居关系翻滚;
解决:
1、所有节点修改 BROADCAST
r1(config)#interface tunnel 0
r1(config-if)#ip ospf network broadcast
注:若MGRE环境下,不同接口处于不同的网络类型;若hello time一致将建立邻居关系,当工作机制的不同导致LSA更新出现问题;必须所有节点处于相同的工作方式
注2:MGRE环境下,若构建的OSPF工作环境不是一个全连结构(网段内所有设备间均建立邻居关系),那么一旦使用broadcast工作方式,就必须将DR固定在中心站点位置,否则将出现DR位置混乱,导致网络无法正常收敛;
2、所有节点修改为点到多点模式;
点到多点为cisco为OSPF协议额外设置的工作方式
r1(config)#interface tunnel 0
r1(config-if)#ip ospf network point-to-multipoint
点到多点的工作:hello time30;无DR选举;生成访问各个节点的精确路由;
缺省条目:
R3(config)#ip route 0.0.0.0 0.0.0.0 172.16.3.2
R5(config)#ip route 0.0.0.0 0.0.0.0 172.16.4.2
R6(config)#ip route 0.0.0.0 0.0.0.0 172.16.5.2
R7(config)#ip route 0.0.0.0 0.0.0.0 172.16.6.2
R3:(中心站点)
R1(config)#int tun 1
R1(config-if)#ip address 10.1.1.1 255.255.255.0
R1(config-if)#tunnel source s2/0
R1(config-if)#tunnel mode gre multipoint
R1(config-if)#ip nhrp map multicast dynamic
R1(config-if)#ip nhrp network-id 100
R5:(分支站点)
R5(config)#int tun 1
R5(config-if)#ip address 10.1.1.2 255.255.255.0
R5(config-if)#tunnel source s2/1
R5(config-if)#tunnel mode gre multipoint
R5(config-if)#ip nhrp nhs 10.1.1.1
R5(config-if)#ip nhrp map 10.1.1.1 172.16.3.1
R5(config-if)#ip nhrp network-id 100
R6:(分支站点)
R6(config)#int tun 1
R6(config-if)#ip address 10.1.1.2 255.255.255.0
R6(config-if)#tunnel source s2/2
R6(config-if)#tunnel mode gre multipoint
R6(config-if)#ip nhrp nhs 10.1.1.1
R6(config-if)#ip nhrp map 10.1.1.1 172.16.3.1
R6(config-if)#ip nhrp network-id 100
R7:(分支站点)
R7(config)#int tun 1
R7(config-if)#ip address 10.1.1.2 255.255.255.0
R7(config-if)#tunnel source s2/3
R7(config-if)#tunnel mode gre multipoint
R7(config-if)#ip nhrp nhs 10.1.1.1
R7(config-if)#ip nhrp map 10.1.1.1 172.16.3.1
R7(config-if)#ip nhrp network-id 100
分支站点R5,R6,R7开启伪广播
R5(config)#int tun 1
R5(config-if)#ip nhrp map multicast 172.16.3.1
R6(config)#int tun 1
R6(config-if)#ip nhrp map multicast 172.16.3.1
R7(config)#int tun 1
R7(config-if)#ip nhrp map multicast 172.16.3.1
全部启用OSPF协议(除了R4以外)
OSPF的接口网络类型----OSPF协议在不同网络类型下的接口上,不同的工作方式;
r1#show ip ospf interface lo0 查看OSPF协议在某个接口上的工作方式
OSPF接口工作方式:
网络类型 OSPF接口工作方式
环回接口 LOOPBACK 无hello,使用主机路由发送
点到点(HDLC/PPP) POINT_TO_POINT hello time 10s 不选DR
BMA (以太网) BROADCAST hello time 10s 选DR
NBMA (MGRE) POINT_TO_POINT hello time 10s 不选DR
举例R3
R3(config)#router ospf 1
R3(config-router)#router-id 3.3.3.3
R3(config-router)#network 172.16.1.2 0.0.0.0 area 1
R3(config-router)#network 172.16.2.2 0.0.0.0 area 1
R3(config-router)#network 10.1.1.1 0.0.0.0 area 0(讲隧道口宣布到area 0区域内)
R3(config-router)#network 3.3.3.3 0.0.0.0 area 1(R3的环回依旧在area 1区域内)
R5、R6、R7的OSPF协议都得宣告隧道地址 不能宣告实际地址。
在R3---R7(除R4)的环境中 因为启用OSPF协议 所以需要把隧道接口改为’点到多点‘
举例R3
R3(config)#interface tunnel 0
R3(config-if)#ip ospf network point-to-multipoint
在R9 与 R12上启用重发布来连接不规则区域:
R12(config)#router ospf 1
R12(config-router)#router-id 12.12.12.12
R12(config-router)#network 172.16.8.2 255.255.255.0
R12(config)#router eigrp 90
R12(config-router)#no auto-summary
R12(config-router)#network 100.1.1.1 0.0.0.0
R12(config-router)#network 12.12.12.12
R12(config)#router ospf 1---(重发布)
R12(config-router)#redistribute eigrp 90 subnets---(重发布)
切记:OSPF协议中缺省路由的导入只能通过专用命令
r2(config-router)#default-information originate
注:默认进入路由为类型2,种子度量为1;
r2(config-router)#default-information originate ?
metric OSPF default metric
metric-type OSPF metric type for default routes
R9(config)#router ospf 1
R9(config-router)#router-id 9.9.9.9
R9(config-router)#network 172.16.10.2 255.255.255.0
R9(config)#router ospf 2
R9(config-router)#network 172.16.11.1 0.0.0.0 area 4
R9(config-router)#network 9.9.9.9 0.0.0.0 area 4
R9(config)#router ospf 1---(重发布)
R9(config-router)#redistribute ospf 2 subnets---(重发布)
R9(config)#router ospf 2---(重发布)
R9(config-router)#redistribute ospf 1 subnets---(重发布)
配置NAT:
R3、R5-7均按如下方法配置:
R3(config)#access-list 1 permit 172.16.0.0 255.255.252.0(R1、R2汇总)
R3(config)#ip nat inside source list 1 int s2/0 overload
R3(config)#int s2/0
R3(config-if)#ip nat outside
R3(config-if)#int f0/0
R3(config-if)#ip nat inside
R3(config-if)#int f1/1
R3(config-if)#ip nat inside
骨干区域汇总------减少路由条目
OSPF的不规则区域
【1】远离骨干的非骨干区域 ----ABR必须同时工作于区域0,才能进行区域间的路由共享
【2】不连续骨干---从X区域获取到的路由信息不得发往编号为X的区域;即便X区域连接
了本区域不同的ABR;---水平分割
解决方案:
1、普通tunnel---在两台ABR上建立隧道,然后将其宣告于OSPF协议中
缺点:周期的保活和更新,触发的信息均需要通过中间的穿越区域,对中间区域影响较大;
选路不佳;
OSPF协议若通过不同的区域学习到的相同的路由,优选区域0;若均为非骨干,比较度量值;
R3(config)#router ospf 1
R3(config-router)#area 1 range 172.16.0.0 255.255.252.0
R6(config)#router ospf 1
R6(config-router)#area 2 range 172.16.8.0 255.255.248.0
R7(config)#router ospf 1
R7(config-router)#area 3 range 172.16.16.0 255.255.252.0
域外(OE2)路由器
R12(config)#router ospf 1
R12(config-router)#summary-address 172.16.16.0 255.255.252.0
R9因为 我在图中配了 俩个环回 不能汇总 所以不需要减少
非骨干区域----减少LSA的更新量、
area 1区域内:没有ASBR区域边界路由器(所以需要totally-stub,完全末梢区域--仅保留一条3类的缺省)
优化之后,3类只剩下一条缺省:
R3(config)#router ospf 1
R3(config-router)#area 1 stub no-summary
R1(config-router)#area 1 stub
R2(config-router)#area 1 stub
area 2区域内:有ASBR区域边界路由器(所以需要完全NSSA--在NSSA的基础上进一步拒绝3的LSA,自动产生3类缺省)
优化之后,它应该会删除3、4、5类LSA,然后只保留一条3类缺省,并多出一条7类LSA
R6(config)#router ospf 1
R6(config-router)#area 2 nssa no-summary
R11(config)#router ospf 1
R11(config-router)#area 2 nssa
R12(config)#router ospf 1
R12(config-router)#area 2 nssa
area 3区域内:有ASBR区域边界路由器(所以需要完全NSSA--在NSSA的基础上进一步拒绝3的LSA,自动产生3类缺省)
优化之后,它应该会删除3、4、5类LSA,然后只保留一条3类缺省,并多出一条7类LSA:
R7(config)#router ospf 1
R7(config-router)#area 3 nssa no-summary
R8(config)#router ospf 1
R8(config-router)#area 3 nssa
R9(config)#router ospf 1
R9(config-router)#area 3 nssa
此时area 3被设置为了NSSA区域,R9拥有了缺省路由,那么我们就可以在R9上的OSPF的进程2中下放缺省,这样才可以出去。
R9(config)#router ospf 2
R9(config-router)#default-information originate--强制下发缺省
此时R10就会有缺省