OSPF基础知识
本文转自微信公众号:网络技术联盟站。
一、OSPF基础知识
1.路由器ID
在OSPF中,每个路由器都有一个唯一的路由器ID(Router ID),用于标识自己。路由器ID可以是一个IPV4地址,通常是路由器的一个接口IP地址。如果没有明确配置路由器ID,OSPD会根据一组规则自动选择一个。
例如,假设我们有三个路由器,它们的接口地址分别是192.168.1.1、192.168.1.2和192.168.1.3.在这种情况下,路由器ID可以是其中任意一个IP地址。
2.邻居关系
OSPF使用邻居关系(Neighbor Relationship)来交换路由信息。当两个OSPF路由器在它们的接口之间建立邻居关系以后,它们就可以互相交换路由信息。
例如,假设我们有两个路由器A和B,它们的接口分别是192.168.1.1和192.168.1.2.当它们通过这两个接口建立邻居关系后,它们就可以开始交换路由信息。
3.OSPF区域
OSPF将网络划分为不同区域(Area),并使用OSPF区域之间的区域间路由(Inter-Area-Routing)和区域内路由(Intra-Area-Routing)来确定最佳路径。
例如,假设我们有一个大型企业网络,划分为三个区域:区域0、区域1、区域2。区域0是骨干区域(Backbone Area),连接了所有OSPF区域。区域1和区域2是非骨干区域,他们通过区域间路由与骨干区域连接。
4.OSPF区域类型
OSPF定义了不同类型的区域,包括骨干区域(Backbone Area)、标准区域(Standard Area)、NSSA区域(Not-So-Stubby Area)和Totally NSSA区域。
骨干区域是连接所有区域的主要区域。标准区域是普通的OSPF区域。NSSA区域是一种特殊类型的区域,可以连接到其他非OSPF区域。Totally NSSA区域是NSSA区域的变体,更加灵活。
二、OSPF工作原理
OSPF使用链路状态路由(Link State Routing)算法来计算最短路径。它通过交换链路状态数据库(Link State Database)来了解整个网络的拓扑结构。
OSPF路由器之间通过泛洪(Floding)方式交换链路状态信息。每个OSPF路由器都将自己的链路状态信息发送给相邻的路由器,并将接收到的链路状态信息存储在链路状态数据库中。然后,每个OSPF路由器都可以使用Dijkstra算法来计算最短路径。
三、OSPF报文类型
报文类型 | 描述 |
---|---|
Hello报文 | 用于发现和维护OSPF邻居关系的报文 |
DD报文 | 用于数据库描述,交换链路状态数据库的摘要信息 |
LSR报文 | 用于请求邻居路由器发送缺失的链路状态数据 |
LSU报文 | 用于向邻居路由器发送链路状态数据 |
LSAck报文 | 用于确认接收到的链路状态数据 |
1. Hello报文
Hell报文是OSPF用于发现和维护邻居关系的重要报文类型。它的主要目的是交换路由器的相关信息以确定邻居是否可达和协商OSPF参数。
Hello报文的字段包括:
Route ID:发送hello报文的路由器的ID
Area ID:发送Hello报文的路由器所属的OSPF区域ID
Network Mask:网络掩码
Hello Interval:发送Hello报文的时间间隔
Dead Interval:判定邻居路由器失效的时间间隔
2. DD报文
DD报文(Database Description)报文用于交换链路状态数据库的摘要信息。它允许路由器之间比较彼此的数据库,以确定需要交换的更新信息。
DD报文的字段包括:
Area ID:发送DD报文的路由器所属的OSPF区域ID
Interface MTU:发送DD报文的接口的最大传输单元。
Options:用于指定OSPF的选项和功能
Sequence Number:序列号,用于标识DD报文的顺序。
LSA Headers:链路状态数据库中每个LSA的摘要信息
3.LSR报文
LSR(Link state Request)报文用于请求邻居路由器发送缺失的链路状态数据。当一个路由器在其他链路状态数据库中缺少某个LSA时,它可以发送LSR报文来请求邻居路由器发送该LSA。
LSR报文的字段包括:
Area ID: 发送LSR报文的路由器所属的OSPF区域ID
Link State Request:要请求的LSA列表
4.LSAck报文
LSAck(Link State Acknowledgment)报文用于确认收到的链路状态数据。当一个路由器接收到LSU报文后,会发送LSAck报文作为回应,通知发送发链路状态数据已经成功接收。
LSAck报文的字段包括
Area ID:发送LSAck报文的路由器所属的OSPF区域ID
LSA Headers:已收到的链路状态数据的摘要信息
四、OSPF LSA类型
LSA类型 | 描述 |
---|---|
Router-LSA(Type 1) | 用于描述路由器与其直连网络之间的连接状态和链路成本 |
Network-LSA(Type 2) | 用于描述多个路由器连接的广播网络的状态 |
Network-summary-LSA(Type 3) | 用于描述区域内部网络和区域之间的网络汇总信息 |
ASBR-summary-LSA(Type 4) | 用于描述区域边界路由器(ASBR)与其他区域之间的网络汇总信息 |
AS-external-LSA(Type 5) | 用于描述来自其他自治系统(AS)的外部网络的信息 |
NSSA LSA(Type 7) | 用于描述在NSSA区域中来自其他自治系统(AS)的外部网络的信息 |
Opaque LSA(Type 9/Type 10/Type 11) | 用于扩展OSPF协议以支持特定的扩展功能和应用 |
1.Router-LSA(Type 1)
Router-LSA是用于描述路由器与其直连网络之间的连接状态和链路成本的LSA类型。每个OSPF路由器都会生成一个Router-LSA来描述自己的链路状态信息
Router-LSA的字段包括:
路由器ID:生成该LSA的路由器的唯一标识符
连接类型:描述与路由器相连的网络类型,如点对点、广播、虚拟链路等
链路数据:描述与路由器直接相连的网络和链路信息,包括IP地址、子网掩码、链路类型、链路状态等。
链路状态:描述链路的状态,如启用、禁用、DR(设计者路由器)等
2.Network-LSA(Type 2)
Network-LSA用于描述多个路由器连接的广播网络的状态。当OSPF路由器连接到一个共享网络时,它们会生成一个Network-LSA来描述该网络的状态。
Network-LSA的字段包括:
路由器ID:生成该LSA的路由器的唯一标识符
网络地址:广播网络的IP地址
DR(设计者路由器):指定负责该网络的DR路由器的ID
邻居路由器:与该网络直接相连的OSPF邻居路由器的ID
3.Network-summary-LSA(Type 3)
Network-summary-LSA用于描述区域内部网络和区域之间的网络汇总信息。它由区域便秘结路由器(ABR)生成,用于在区域之间传递网络汇总信息
Network-summary-LSA的字段包括:
路由器ID:生成该LSA的ABR的唯一标识符
汇总网络地址:网络汇总的IP地址
目标区域ID:接收网络汇总信息的目标区域的ID
路由器指示位:指示接收方是否应将该网络视为区域边界路由器
4.ASBR-summary-LSA(Type 4)
ASBR-summary-LSA用于描述区域边界路由器(ASBR)与其他区域之间的网络汇总信息。它由ASBR生成,用于在不同区域之间传递外部网络汇总信息。
ASBR-summary-LSA的字段包括:
路由器ID:生成该LSA的ASBR的唯一标识符
汇总网络地址:网络汇总的IP地址
目标区域ID:接收网络汇总信息的目标区域ID
路由器指示位:指示接收方是否应将该网络视为区域边界路由器
5. AS-external-LSA(Type 5)
AS-external-LSA用于描述来自其他自治系统(AS)的外部网络信息。它由ASBR生成,兵用于向OSPF域内部传递外部网络的路由信息
AS-external-LSA的字段包括:
路由器ID:生成该LSA的ASBR的唯一标识符
外部网络地址:来自其他AS的外部网络的IP地址
路径类型:指示路径类型。如Type1(区域内路径)或Type2(区域间路径)
路径成本:指示到达该外部网络的成本。
6.NSSA LSA(Type 7)
NSSA LSA用于描述在NSSA区域中来自其他自治系统(AS)的外部网络信息。它类似于AS-external-LAS,但用于在NSSA区域内部传递外部网络的路由信息。
NSSA LSA的字段和AS-external-LSA类似,但有一些特定的区别,如NSSA区域的特殊属性和转换机制
7.Opaque LSA(Type 9/ Type 10/Type 11)
Opaque LSA是用于扩展OSPF协议以支持特定的扩展功能和应用的LSA类型。它具有更加灵活的结构,可以用于传递各种自定义的信息。
Opaque LSA的类型包括:
Type 9 :用于扩展OSPF以支持OSPFv2的TE(Traffic Engineering)扩展
Type 10:用于扩展OSPF以支持OSPFv3的TE扩展
Type 11:用于扩展OSPF以支持广域网(WAN)的连接的信息交换,如多协议标签交换(MPLS)
每种类型的Opaque LSA具有自己特定的字段和用途,可以根据需要灵活的定义和使用。
五、OSPF路由器类型
路由器类型 | 描述 |
---|---|
区域内路由器(Internal Router) | 位于同一OSPF区域内的路由器,负责转发区域内的数据包 |
区域边界路由器(ABR) | 连接两个或多个OSPF区域的路由器,负责在区域之间转发数据包,并进行网络汇总和分发 |
骨干路由器(Backbone Router) | 在OSPF中骨干区域(Backbone Area)内的路由器,连接所有的区域,负责转发来自其他区域的数据包 |
自治系统边界路由器(ASBR) | 连接OSPF域与其他自治系统(AS)的路由器,负责在OSPF域与外部网络之间交换路由信息,并进行外部网络的汇总和分发 |
1.区域内路由器(Internal Router)
区域内路由器是位于同一OSPF区域内的路由器,他们只与同一区域内的其他路由器交互。区域内路由器的主要功能是转发区域内的数据包,维护LSDB(链路状态数据库),计算并选择最佳路径
区域内路由器的特点包括:
在同一区域内的所有路由器都是区域内路由器
区域内路由器只与同一区域内的其他路由器交换LSA信息
用于域内的内部路由选择和转发数据包
2.区域边界路由器(ABR)
区域边界路由器是连接两个或多个OSPF区域的路由器。它们在不同区域内扮演着关键的桥梁角色,负责在区域之间转发数据包,并进行网络汇总和分发。
区域边界路由器的特点包括:
在连接多个区域的边缘处
可以同时属于多个区域,通常至少属于一个区域。
负责在区域之间转发数据包
进行区域间的网络汇总和分发
3.骨干路由器(Backbone Router)
骨干路由器是位于OSPF中骨干区域(Backbone Area)内的路由器。骨干区域是连接所有区域的主要区域,骨干路由器负责转发来自其他区域的数据包。
骨干路由器的主要特点包括:
在骨干区域内,连接所有区域
用于转发来自其他区域的数据包
负责维护骨干区域的拓扑信息
4.自治系统边界路由器(ASBR)
自治系统边界路由器是连接OSPF域与其他自治系统(AS)的路由器。它们负责在OSPF域与外部网络之间交换路由信息,并进行外部网络的汇总和分发。
自治系统边界路由器的特点包括:
连接OSPF域与其他自制系统(AS)
负责在OSPF域与外部网络之间交换路由信息
进行外部网络的汇总和分发
六、OSPF路由类型
路由类型 | 描述 |
---|---|
Intra Area | 在同一OSPF区域内选择路由,并用于在该区域内转发数据包 |
Inter Area | 在不同OSPF区域之间选择路由,并用于在区域之间转发数据包 |
第一类外部路由(Type 1 External) | 来自其他自治系统(AS)的外部路由,在OSPF域内部传递并进行成本计算,用于转发到其他区域和AS |
第二类外部路由(Type 2 External) | 来自其他自治系统(AS)的外部路由,在OSPF域内部传递,并将其成本设置为固定值,用于转发到其他区域和AS |
1.Intra Area
Inter Area 路由用于在同一OSPF区域内选择路由,并用于在该区域内转发数据包。当数据包需要从源到达目的地时,Intra Area路由通过查找区域内的最短路径来选择下一跳。
Intra Area路由的特点包括:
在同一OSPF区域内选择路由
负责在区域内转发数据包
使用区域内部链路状态数据库(LSDB)计算最短路径
2. Inter Area
Inter Area路由用于在不同OSPF区域之间选择路由,并用于在区域之间转发数据包。当数据包需要从源区域到达目的的区域时,Inter Area路由通过查找区域间的最短路径来选择下一跳。
Inter Area路由的特点包括:
在不同OSPF区域之间选择路由
负责在区域之间转发数据包
使用区域间链路状态数据库(LSDB)计算最短路径
3.第一类外部路由(Type 1 External)
第一类外部路由是由来自其他自治系统(AS)的外部路由,在OSPF域内部传递并进行成本计算,用于转发到其他区域和AS。当数据包需要到达其他AS时,第一类外部路由将起到关键作用
第一类外部路由的特点包括:
来自其他AS的外部路由
在OSPF域内部传递
通过在区域间链路状态数据库(LSDB)中计算成本来选择下一跳
4.第二类外部路由(Type 2 External)
第二类外部路由是来自其他自治系统(AS)的外部路由,在OSPF域内部传递,并将其成本设置为固定值,用于转发到其他区域和AS。与第一类外部路由相比,第二类外部路由不进行成本计算。
第二类外部路由的特点包括:
来自其他AS的外部路由
在OSPF域内部传递
将其成本设置为固定值,不进行成本计算
七、OSPF区域类型
区域类型 | 描述 |
---|---|
普通区域(Normal Area) | 标准的OSPF区域类型,包含所有OSPF功能,可以与其他区域进行完全的LSA交换 |
STUB区域 | 通过汇总外部路由并使用默认路由减少区域内路由器的负担,并阻止来自其他区域的LSA信息 |
Totally STUB区域 | 类似STUB区域,但还组织来自骨干区域(Backbone Area)的LAS信息 |
NSSA区域 | 允许将外部路由引入OSPF区域,但LSA类型被修改以兼容OSPF,提供更大的灵活性 |
Totally NSSA区域 | 类似于NSSA区域,但还阻止来自骨干区域的LSA信息 |
1.普通区域(Noraml Area)
普通区域是标准的OSPF区域类型, 包含所有OSPF功能,并可以与其他区域进行完全的LSA交换。普通区域内的路由器可以直接与同一区域内的其他路由器进行他通信,并交换链路状态信息。
普通区域的特点包括:
路由器可以与同一区域内的其他路由器进行完全的LSA交换。
支持区域内部的内部路由选择和转发数据包
可以与其他区域之间进行区域间路由选择和转发数据包
2.STUB区域
STUB区域通过汇总外部路由并使用默认路由减少区域内路由器的负担,并阻止来自其他区域的LSA信息。这样可以简化区域内的路由表,较少内存和计算资源的使用
STUB区域的特地阿布包括:
在STUB区域中,外部路由被汇总成默认路由
区域内的路由器只需要维护默认路由,而不需要具体的外部路由信息
STUB区域不会接收来自其他区域的LSA信息
3.Totally STUB区域
Totally STUB区域类似于STUB区域,但还阻止来自骨干区域的LSA信息。这样可以进一步简化区域内的路由表,并减少资源消耗。
Totally STUB区域的特点包括:
在Totally STUB区域中,外部路由被汇总为默认路由
区域内的路由器只需要维护默认路由,而不需要具体的外部路由信息
Totally STUB区域不会接受来自骨干区域的LSA信息
4.NSSA区域
NSSA区域(Not-So-Stubby-Area)区域允许将外部路由引入OSPF区域,但LSA类型被修改以兼容OSPF,并提供更大的灵活性。NSSA区域允许在OSPF域内引入外部路由,同时保持区域内的资源消耗比较低。
NSSA区域的特点包括:
允许在NSSA区域中引入外部路由
NSSA区域的ASBR(自治系统边界路由器)将外部路由转换为NSSA LSA类型
NSSA区域内的其他路由器可以接收和转发NSSA LSA
5.Totally NSSA区域
Totally NSSA区域类似于NSSA区域,但还阻止来自骨干区域的LSA信息。这样可以进一步控制区域内的资源消耗,并提供更高的灵活性。
Totally NSSA区域的特点包括:
允许在Totally NSSA区域中引入外部路由。
Totally NSSA区域的ASBR将外部路由转换为Totally NSSA LSA类型
Totally NSSA区域内的其他路由器可以接收和转发Totally NSSA LSA
八、OSPF支持的网络类型
网络类型 | 描述 |
---|---|
广播类型(Broadcast) | 具有广播能力的网络类型,如以太网,支持多播和广播传输。 |
NBMA类型(Non-Broadcast Multi-Access) | 非广播多点接入类型的网络,如帧中继、ATM等,不支持广播和多播传输。 |
点到多点P2MP类型(Point-to-Multipoint) | 一对多连接的网络类型,允许一个OSPF路由器与多个其他路由器直接通信,无需逐个建立点到点连接。 |
点到点P2P类型(Point-to-Point) | 一对一连接的网络类型,仅允许两个OSPF路由器之间建立点到点连接,如点到点链路或虚拟专用线路(VPN)。 |
1.广播类型(Broadcast)
广播类型是指具有广播能力的网络类型,如以太网。广播类型网络支持多播和广播传输,OSPF可以直接在广播网络上运行。
广播类型网络的特点包括:
支持广播传输,允许多播和广播流量
路由器可以通过广播通信,交换LSA信息
OSPF可以直接在广播网络上运行,无需额外的配置
2.NBMA类型(Non-Broadcast Multi-Access)
NBMA类型是指非广播多点接入类型的网络,如帧中继、ATM等。这些网络不支持广播和多播传输,OSPF在NBMA网络上需要特殊的配置。
NBMA类型网络的特点包括:
不支持广播和多播传输
路由器之间的通信需要经过专门配置
OSPF在NBMA网络上需要使用额外的配置选项,如配置邻居列表或使用特殊的Hello报文选项
3.点到多点P2MP类型(Point-to-Multipoint)
点到多点P2MP类型是一种一对多连接的网络类型,允许一个OSPF路由器与多个其他路由器直接通信,无需逐个建立点到点连接。
点到多点P2MP类型网络的特点包括:
允许一个OSPF路由器与多个其他路由器直接通信
无需逐个建立点到点连接
OSPF路由器可以使用单个Hello报文与所有相邻路由器进行邻居关系的建立。
4.点到点P2P类型(Ponit-to-Point)
点到点P2P类型是指一对一连接的网络类型,仅允许两个OSPF路由器之间建立点到点连接,如点到点链路或虚拟专用线路(VPN)。
点到点P2P类型网络的特点包括:
仅允许两个OSPF路由器之间建立点到点连接
通常用于连接两个路由器的专用链路或虚拟专用链路(VPN)
点到点连接通常具有较高的带宽和可靠性
九、OSPF DR和BDR
主题 | 描述 |
---|---|
DR(Designated Router) | 被选举为网络中某一段子网的代表,负责与其他路由器交换链路状态信息并汇总到总网拓扑信息。 |
BDR(Backup Designated Router) | 作为DR的备份,接收并转发链路状态信息,当DR不可用时,BDR将接替其角色并成为新的DR |
DR和BDR的选举过程 | 通过Hello报文交换和优先级比较来选举DR和BDR,优先级高的路由器将成为DR,第二高的则成为BDR |
DR和BDR的特点 | DR和BDR之间建立邻居关系,DR负责向BDR和其他路由器发送链路状态信息,BDR只向其他路由器发送链路状态信息 |
1.DR(Designated Router)
DR(Designated Router)是在OSPF网络中被选举为网络中某一子网的代表,负责与其他路由器交换链路状态信息并汇总网络拓扑信息。DR起到减少链路状态数据库(LSDB)更新开销的作用,从而提高网络性能。
DR的主要特点和作用包括:
在每个多播或费广播接入点(NBMA)网络中选举一个DR
DR负责与其他路由器交换Hello报文和链路状态信息(LSA)
DR汇总其他路由器的链路状态信息,并将其反映在区域内的LSDB中。
减少了网络中链路状态信息的交换和更新开销。
DR能够减少链路状态信息更新的泛洪,提高网络的收敛速度。
2.BDR(Backup Designated Router)
BDR是作为DR的备份存在的路由器。BDR接收并转发来自其他路由器的链路状态信息,并在DR不可用时交替其角色成为新的DR。
BDR的主要特点和作用包括:
在每个多播和广播多点接入(NBMA)网络中,选举一个BDR
BDR的功能与DR类似,但仅在DR不可用时才接替其角色
BDR负责与其他路由器交换Hello报文和链路状态信息(LSA)
BDR仅向其他路由器发送链路状态信息,不可向其他BDR发送信息
BDR能够快速接管DR角色,并确保网络中的DR角色不会出现间断。
3.DR和BDR的选举过程
在OSPF网络中,DR和BDR的选举过程就是通过Hello的报文交换和优先级比较来实现的。以下是DR和BDR的选举过程:
路由器在OSPF网络中发送Hello报文,其中包含自己的优先级。
路由器接收到Hell报文后,比较对方的优先级和自己的优先级。
优先级较高的路由器将成为DR,并将其他竞选DR的路由器作为BDR。
如果优先级相同或未配置优先级,则使用路由器ID进行比较
如果路由器ID也相同,则通过环回接口的IP地址来决定选举结果
通过以上选举过程,OSPF网络中的路由器将会选举出DR和BDR,并建立相应的邻居关系。
4.DR和BDR的特点
DR和BDR之间建立邻居规划拟,这样可以实现更高效的链路状态信息交换和更新。以下是DR和BDR的特点:
DR负责向BDR和其他路由器发送链路状态信息(LSA)
BDR仅向其他路由器发送链路状态信息,不向其他BDR发送信息
DR和BDR之间维护特殊的邻居关系,确保在DR发生故障时BDR可以接替其角色
DR和BDR的选举过程通过Hello报文的交换和优先级比较来实现。
通过DR和BDR的特点和选举过程,OSPF网络能够减少链路状态信息的泛洪和更新开销,提高网络的性能和可靠性。
十、OSPF简单配置示例
拓扑图
1. 华为
[R1] ospf 1 router-id 1.1.1.1
[R1-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0] network 10.0.0.0 0.0.0.255
[R2] ospf 1 router-id 2.2.2.2
[R2-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0] network 20.0.0.0 0.0.0.255
2. 思科
Router1(config)# router ospf 1
Router1(config-router)# router-id 1.1.1.1
Router1(config-router)# network 192.168.1.0 0.0.0.255 area 0
Router1(config-router)# network 10.0.0.0 0.0.0.255 area 0
Router2(config)# router ospf 1
Router2(config-router)# router-id 2.2.2.2
Router2(config-router)# network 192.168.1.0 0.0.0.255 area 0
Router2(config-router)# network 20.0.0.0 0.0.0.255 area 0
3.Juniper
set protocols ospf area 0.0.0.0 interface ge-0/0/0.0
set protocols ospf area 0.0.0.0 interface ge-0/0/1.0
set protocols ospf area 0.0.0.0 interface ge-0/0/0.0
set protocols ospf area 0.0.0.0 interface ge-0/0/2.0