开放式最短路径优先(Open Shortest Path First,OSPF)是目前广泛使用的一种动态路由协议,它属于链路状态路由协议,具有路由变化收敛速度快、无路由环路、支持变长子网掩码(VLSM)和汇总、层次区域划分等优点。在网络中使用OSPF协议后,大部分路由将由OSPF协议自行计算和生成,无须网络管理员人工配置,当网络拓扑发生变化时,协议可以自动计算、更正路由,极大地方便了网络管理。但如果使用时不结合具体网络应用环境,不做好细致的规划,OSPF协议的使用效果会大打折扣,甚至引发故障。
OSPF协议是一种链路状态协议。每个路由器负责发现、维护与邻居的关系,并将已知的邻居列表和链路费用LSU(Link State Update)报文描述,通过可靠的泛洪与自治系统AS(Autonomous System)内的其他路由器周期性交互,学习到整个自治系统的网络拓扑结构;并通过自治系统边界的路由器注入其他AS的路由信息,从而得到整个Internet的路由信息。每隔一个特定时间或当链路状态发生变化时,重新生成LSA,路由器通过泛洪机制将新LSA通告出去,以便实现路由的实时更新
类型 |
描述 |
DR 指定理由器 |
当多路访问网络发生变化时,DR负责更新其他所有路由器。 |
BDR备份指定路由器 |
BDR会监控DR 的状态,并在当前DR发生故障时接替其角色。 |
ABR区域边界路由器 | ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。 |
ASBR自治系统边界路由器 |
ASBR路由器是用来把其他路由选择协议学习到的路由通过路由选择重分配的方式注入到OSPF域的路由器。 |
1.骨干区域(Area0)
2.非骨干区域——根据能够学习的路有种类来区分
(1)标准区域
(2)末梢区域(stub)
(3)完全末梢(Totally stubbby)
(4)非纯末梢区域(NSSA)
OSPF的包类型 |
描述 |
hello包 | 是周期发送(直连网段),该包有router ID,保持时间40s,router优先级,邻居信息,area ID,DR、BDR、password,stub area标记;(就是发送看对方挂了没有) |
数据库描述包(DBD) | 该包其实是对LSA的摘要,是用来进行比较的(就像一本书的目录) |
链路状态请求包(LSR) | 进行DBD比较后发现自己DBD中少lsa,会发送该包(两本书的目录不一样,少的向多的要) |
链路状态更新包(LSU) | 收到LSR后把自己lsa发送给少的路由器,(把自己多的目录给他,让他和我的一样,少的向多的要) |
链路状态确认包(LSAck) | 收到LSA后发送确认,(我收到了!谢了!) |
(1)每个路由器都创建了由每个接口、对应的相邻节点和接口速度组成的数据库
(2)链路状态数据库中的每个条目称为LSA(链路状态通告),常见的有六种LSA类型
类型代码 |
描述 |
用途 |
Type1 | 路由器LSA | 由区域内的路由器发出的(所有路由) |
Type2 | 网络LSA | 由区域内的DR发出的(宣告网络状态信息) |
Type3 | 网络汇总LSA | ABR发出的,其他区域的汇总链路通告(汇总交换) |
Type4 | ASBR汇总LSA | ABR发出的,用于通告ASBR信息(告知ASBR位置) |
Type5 | AS外部LSA | ABR发出的,用于通告外部路由(外交官) |
Type6 | NSSA外部LSA | NSSA区域内的ASBR发出的,用于本区域连接的外部路由 |
1.OSPF启动的第一个阶段是使用hello报文建立双向通信的过程
2.OSPF启动的第二个阶段是建立完全邻接关系
状态 |
描述 |
Down | 在Down状态下,OSPF进程还没有与任何邻居交换信息。OSPF在等待进入Init状态。 |
Init | OSPF路由器以固定的时间间隔(缺省10s)发送类型1(Hello)的分组,以便与邻居路由器建立特殊的关系。 |
2-Way | 每台OSPF路由器都使用分组试图与同一个IP网络中的所有邻居路由器建立双向状态或双向通信。Hello分组中含有发送者已知的OSPF邻居列表。当路由器看到它自己出现在一个邻居路由器的Hello分组中时,它就进入了双向状态。 |
ExStart | 每台OSPF路由器都使用分组试图与同一个IP网络中的所有邻居路由器建立双向状态或双向通信。Hello分组中含有发送者已知的OSPF邻居列表。当路由器看到它自己出现在一个邻居路由器的Hello分组中时,它就进入了双向状态。 |
Exchange | 在交换状态下,邻居路由器使用类型2的DBD分组来互相发送它们的链路状态信息,也就是说路由器相互描述它们的链路状态数据库。路由器将它们所学到的信息与其现存的链路状态数据库进行比较,并且单独确认每个DBD分组,如果任何一台路由器接收到不在其数据库中的链路信息,该路由器就向其邻居请求有关该链路的完整更新信息。完整的路由信息在“Loading(加载)”状态下被交换。 |
Loading | 在交换状态下,邻居路由器使用类型2的DBD分组来互相发送它们的链路状态信息,也就是说路由器相互描述它们的链路状态数据库。路由器将它们所学到的信息与其现存的链路状态数据库进行比较,并且单独确认每个DBD分组,如果任何一台路由器接收到不在其数据库中的链路信息,该路由器就向其邻居请求有关该链路的完整更新信息。完整的路由信息在“Loading(加载)”状态下被交换。 |
Full | 加载状态结束之后,路由器就进入全毗邻状态。每台路由器都保存着一张毗邻路由器列表,它就是称为毗邻数据库。 |
(1)自治系统(AS)
(2)内部网关协议(IGP),例如:RIP、OSPF、ISIS等
(3)外部网关协议(EGP),例如:BGP等
(1)为了适应大型的网络,OSPF在AS内划分多个区域
(2)每个OSPF路由器只维护所在区域的完整链路状态信息
(1)区域ID可以是表示成一个十进制的数字
(2)也可以表示成一个IP
(1)负责区域间路由信息传播
(1)OSPF区域内唯一标识路由器的IP地址
(1)选取路由器loopback接口上数值最高的IP地址(推荐)
(2)如果没有loopback接口,在屋里端口中选取IP地址最高的(不推荐)
(3)也可以使用router-id命令指定Router ID
自动选举:
网段上Router ID最大的路由器将被选举为DR,第二大的将被选举为BDR
手动选举:
(1)优先级范围0-255,数值越大,优先级越高,默认1
(2)如果优先级相同,则需要比较Router ID
(3)如果路由器优先级被设置为0,它将不参与DR和BDR的选举方式
(1)路由器的优先级可以影响一个选举过程,但是它不能强制更换已经存在的DR或BDR路由器
(1)224.0.0.5
(2)224.0.0.6
(1)COST=10^8/BW 代价(数值越小越好)
(2)最短路径是基于接口指定的代价(cost)计算的
接口类型 |
代价(108/BW) |
Fast Ethernet | 1 |
Ethernet | 10 |
56K | 1785 |
10.OSPF数据包
(1)承载在IP数据包内,使用协议号89
(1)点到点
(2)广播多路访问网络
(3)非广播多路访问网络
(4)点到多点
描述 |
命令 |
启动OSPF路由进程 | rout ospf process-id |
指定OSPF协议运行的接口和所在的区域 | network addresss invers-mask area area-ad |
查看路由表信息(直连/学习) | show ip route |
只查看OSPF学习到的路由 | show ip route ospf |
查看OSPF协议配置信息 | show ip protocol |
查看OSPF是如何配置的以及ABR信息 | show ip ospf |
查看LSDB内的所以LSA数据信息 | show ip ospf database |
查看接口上OSPF配置信息 |
show ip ospf interface |
查看OSPF邻居和邻接的状态 | show ip ospf neighbor |
查看OSPF邻居的详细信息(包括DR/BDR) | show ip ospf neighbor detail |
查看路由器“邻接”的整个过程 | debug ip ospf adj |
查看每个OSPF数据包的信息 | debug ip ospf packet |
清空路由表 | clear ip route |
反掩码例子:
(1)域内通信量
单个区域内的路由器之间交换数据包构成的通信量
(2)域间通信量(ABR)
不同区域的路由器之间交换数据包构成的通信量
(3)外部通信量(ASBR)
OSPFR域内的路由器与DSPF区域外部或另一个自治系统内的路由器之间交换数据包构成的通信量
(1)网络规模
(2)网络拓扑
(3)其他特殊要求
(4)路由器自身要求
(1)可适应大规模网络
(2)路由变化收敛速度快
(3)无路由环
(4)支持变长子网掩码VLSM
(5)支持区域划分
(6)支持以组播地址发送协议报
OSPF |
RIP v1 |
RIP v2 |
l链路状态路由协议 | 距离矢量路由协议 | |
没有跳数的限制 | RIP的15跳限制,超过15跳的路由被认为不可达 | |
支持可变长子网掩码(VLSM) | 不支持可变长子网掩码(VLSM) | 支持可变长子网掩码(VLSM) |
收敛速度快 | 收敛速度慢 | |
使用组播发送链路状态更新 | 周期性广播更新整个路由表 | 周期性组播更新整个路由表 |
十二、生成OSPF多区域的原因
(1)改善网络的可扩展性
(2)快速收敛
OSPF路由器根据在AS 中的不同位置,可以分为以下四类:
1. 区域内路由器(Internal Routers)
该类路由器的所有接口都属于同一个OSPF 区域。2. 区域边界路由器ABR(Area Border Routers)
该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域。ABR 用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。3. 骨干路由器(Backbone Routers)
该类路由器至少有一个接口属于骨干区域。因此,所有的ABR 和位于Area0 的内部路由器都是骨干路由器。4. 自治系统边界路由器ASBR(AS Boundary Routers)
与其他AS 交换路由信息的路由器称为ASBR。ASBR 并不一定位于AS 的边界,它可能是区域内路由器,也可能是ABR。只要一台OSPF 路由器引入了外部路由的信息,它就成为ASBR。
1.路由器只把最优的路由条目添加到路由表
2.选择路由条目的依据
(1)管路距离
(2)度量值
3.负载均衡的路由条目
1.满足以下条件的区域
(1)只有一个默认路由作为其区域的出口
(2)区域不能作为虚链路的穿越区域
(3)Stub区域无自治系统边界路由器ASBR
(4)不是骨干区域Area 0
2.末梢区域
(1)没有LSA4、5、7通告
3.完全末梢区域
(1)除了LSA3的默认路由通告外,没有LSA3、4、5、7通告
(1)一个单一个IP路由协议是管理网络中IP路由的首选方案
(2)Cisco IOS能执行多个路由协议,每一个路由协议和该路由协议所服务的网络属于同一个自制系统
(3)Cisco IOS使用路由重分发特性以交换由不同协议创建的路由信息
(1)度量值
(2)管路距离
(1)类型1的外部路径(Type 1 external path,E1)
(2)类型2的外部路径(Type 2 external path,E1)
(1)E1类型
路径A-B-D的代价是25(20+5)——优先
路径A-C-D的代价为48(18+30)
(2)E2类型
路径A-B-D的代价是20
路径A-C-D的代价为18——优先
(1)语法:
redistribute protocol 【metric metric-value】【metric-type type-value】【subnets】
(2)示例
router rip
redistribute ospf 1 metric 10
router ospf 1
redistribute metric 200 subnets
(1)定义了特殊的LSA类型7
(2)提供类似stub area和totally stibby area的优点
(3)可以包含ASBR
(1)LSA7(NSSA External LSA,NSSA外部LSA)
(1)N1、N2
(2)经过NSSA区域ABR后转换为E1、E2
(1)语法
area area-id nssa 【no-summmary】
LSA1、LSA2、LSA3、LSA4、LSA5、LSA7
区域类型 |
1&2 |
3 |
4&5 |
7 |
骨干区域(区域0) | 允许 | 允许 | 允许 | 不允许 |
非骨干区域、非末梢区域 | 允许 | 允许 | 允许 | 不允许 |
末梢区域 | 允许 | 允许 | 不允许 | 不允许 |
完全末梢区域 | 允许 | 不允许 | 不允许 | 不允许 |
NSSA | 允许 | 允许 | 不允许 | 允许 |
3.OSPF的路径类型
区域内路径、区域外路径、类型1的外部路径和类型2的外部路径
路径类型 |
优先级 |
区域内 | 1 |
区域间 | 2 |
E1外部 | 3 |
E2外部 | 4 |
注释:1表示最高的优先级,4表示最低的优先级 |
十九、OSPF地址汇总
(1)通过减少泛洪的LSA数量来节省资源
(2)可以通过屏蔽一些网络不稳定的细节来节省资源
(3)减少路由表中的路由条目
(1)语法
area area-id range ip address mask
(1)语法
summary-address ip adress mask
(1)指一条通过非骨干区域连接到骨干区域的链路
(1)通过一个非骨干区域连接到一个区域到骨干区域
(2)通过一个非骨干区域连接到一个分段的骨干区域
(1)虚链路必须配置在两台ABR路由器之间
(2)传送区域不能是一个末梢区域
(3)虚链路的稳定性取决于其经过的区域的稳定性
(4)虚链路有助于提供罗技冗余
(1)语法
area area-id vritual-link router-id