5-9 路由协议
5-9-5 路由协议OSPF
OSPF原理简介
RIP协议的问题
- 只传递路由信息(如网络号、掩码、Cost)
- 信息量少,可能导致错误传播 ,例如:R1收到R2的路由信息后,若R2的Cost有误,R1也会沿用错误信息
OSPF协议的改进
拓扑信息 + 路由信息 → 链路状态(Link State)
- 每个路由器通过发送链路状态通告(LSA)描述自身连接情况
- 收集全网拓扑信息后,使用SPF算法计算最优路径
路由信息与拓扑信息的区别
路由信息:仅包含目的网络、下一跳、Cost(如R1到3.0的Cost=3)
拓扑信息:包含邻居关系(如R1的邻居是R2,R2的邻居是R1和R3)[笔者注:这一点和RIP不通,RIP只知道自己的邻居并且只和邻居交互路由信息,不知道网络中所有路由器的邻居关系]
OSPF工作流程
各路由器发送LSA,收集全网拓扑
使用SPF算法计算最短路径
动态更新LSA以应对网络变化
OSPF开销计算
- 公式:
Cost = 10^8 / 带宽(BW)- 例如:百兆链路的Cost为10^8 / 10^8 = 1
OSPF的优势
- 自主计算最优路径,无需依赖其他设备通知
- 支持快速收敛和故障恢复
- 类似协议:IS-IS(后续课程讲解)
OSPF简介
**OSPF(Open Shortest Path First,开放式最短路径优先协议)**是目前应用最广泛的路由协议。
- OSPF是一种内部网关协议IGP,也是链路状态路由协议,支持VLSM,通过带宽计算最佳路径,采用Dijkstra算法(也叫SPF最短路径优先算法)。[链路状态路由协议有2个:OSPF和IS-IS]
- 华为设备OSPF协议优先级Internal 10,External 150(import-route)[自己宣告的路由优先级为10,外部引入的路由优先级为150]
- 支持在ABR/ASBR手工路由汇总,不支持自动汇总。
- [ABR:区域边界路由器,ASBR:自治系统边界路由器]
- [支持自动汇总的路由协议有:RIP、BGP,都是距离矢量路由协议]
OSPF特点
采用触发式更新、分层路由,支持大型网络。允许网络被划分成区域来管理,分区域管理的优点如下所示(可能考简答):
- 链路状态数据库仅需和区域内其他路由器保持一致,这样可以减小对路由器内存和CPU的消耗。
- 同时区域间传送的路由信息减小,降低网络带宽占用。
骨干区域采用Area 0.0.0.0或者Area 0来表示,区域1不是骨干区域。
OSPF通过hello报文发现邻居,维护邻居关系。
在点对点和广播网络中每10秒发送一次hello(以太网就是一种广播网络,每10秒发送一次hello)
在NBMA网络中每30秒发送一次hello
Deadtime为hello时间的4倍,如果4*hello时间之后仍然没有收到hello报文,就认为该邻居路由器挂掉了。
Hello定时器时间表格:
网络类型 Hello时间(s) Dead时间(s) 备注 P2P 10 40 PPP/HDLC Broadcast 10 40 典型的是以太网 NBMA 30 120 帧中继FR,不支持组播,手动指定OSPF邻居 P2MP 30 120 手动配置为该类型 注意事项:
- P2P和Broadcast的Hello/Dead time一致,可以建立邻居,但不能传递路由即同样Hello时间的不同网络类型可以建立邻居关系,但不能传递路由
- 接口上的网络类型可以手动修改,比如将一个NBMA网络类型的接口修改为广播网络类型
- NBMA和P2MP都是低速网络,其Hello时间间隔较长
OSPF路由器间通过LSA(LinkState Advertisement,链路状态公告)交换网络拓扑信息,每台运行OSPF协议的路由器通过收到的拓扑信息构建LSDB链路状态数据库即拓扑数据库,再以此为基础计算路由。路由器之间交互的是链路状态信息,而不是直接交互路由。OSPF互相交互的五种报文如下:
- | 类型 | 报文名称 | 报文功能 | 理解 |
| —- | ——————————— | ———————————————————— | —————— |
| 1 | Hello | 周期性发送,用来发现和维持OSPF邻居关系。 | 哈喽 |
| 2 | Database Description (DD) | 描述本地LSDB的摘要信息,进行数据库同步。 | 目录/摘要 |
| 3 | Link State Request (LSR) | 用于向对方请求所需的LSA。成功交换DD报文后才会向对方发出LSR报文。 | 根据目录,请求所需 |
| 4 | Link State Update (LSU) | 用于向对方发送其所需要的LSA。 | 根据请求,发送所需 |
| 5 | Link State Acknowledgment (LSAck) | 用来对收到的LSA进行确认。 | 确认 |
OSPF系统内几个特殊组播地址:
- 224.0.0.1:在本地子网的所有主机
- 224.0.0.2:在本地子网的所有路由器
- 224.0.0.5:运行OSPF协议的路由器
- 224.0.0.6:OSPF指定/备用指定路由器DR/BDR
每个MA网段选取一个DR和BDR,作为代表与其他路由器Dother建立邻居关系。
router-id在OSPF区域内唯一标识一台路由器的IP地址,整个OSPF域内不能设置为相同。
OSPF的router-id选举规则如下: (记忆)
- 优选手工配置的router-id。
- OSPF进程手工配置的router-id具有最高优先级。
- 在全局模式下配置的公用router-id的优先级仅次于直接给OSPF进程手工配置router-id,即它具有第二优先级。
- 在没有手工配置的前提下,优选loopback接口地址中最大的地址作为router-id。
- 在没有配置loopback接口地址的前提下,优选普通接口的IP地址中选择最大的地址作为router-id(不考虑接口的Up/Down状态)。
- 优选手工配置的router-id。
DR与BDR的作用
MA网络,即多路访问(Multiple Access)网络,是指一条链路上允许多个设备同时存在的网络类型
MA网络中的问题
如下图所示,如果5台路由器之间互相交互LSA链路状态信息,有如下缺陷:
- n×(n-1)/2个邻接关系,管理复杂
- 重复的LSA泛洪,造成资源浪费

解决方法是在网络中选举出老大DR(制定路由器)、老二BDR(备份指定路由器),用来交互LSA链路状态信息,其他的路由器称为Dother
在MA网络中选举DR
如下图所示,选举出了DR和BDR
- DR(Designated Router,指定路由器)负责在MA网络建立和维护邻接关系并负责LSA的同步。
- DR与其他所有路由器形成邻接关系并交换链路状态信息,其他路由器之间不直接交换链路状态信息。
- 为了规避单点故障风险,通过选举BDR(Backup Designated Router,备份指定路由器),负责在DR失效时快速接管DR的工作。

DR与BDR的选举规则
优先级范围为0~255,且优先级为0的不参与选举
DR/BDR的选举是非抢占式的。
DR/BDR的选举是基于接口的
- 接口的DR优先级越大越优先
- 接口的DR优先级相等时,RouterID越大越优先。
如下图所示,R1、R2、R3优先级分别为100、0、95,其中优先级为0的R2默认不参与选举,在R1和R3中,选举优先级更高的R1作为DR。此时拓扑中新增路由器R4,优先级为200,优先级更高,但此时R4作为新加入设备,不能直接成为DR或BDR,因为BR、BDR的选举是非抢占式的。
如果作为DR的R1挂了,则作为BDR的R3成为新的DR,而后才能选举优先级较高的R4作为BDR

思考:
如果将上图中4台路由器的优先级全部设置为0,OSPF是否可以正常工作?
- 不可以,因为无法选举出DR,无法建立邻居关系,至少要有1台的优先级不为0,至少要保证能够选举出DR
缺省情况下,哪些链路类型组成的网络是MA网络呢?
- 以太网、FDDI令牌环
OSPF的DR/BDR优先级
DR选举规则:最高OSPF接口优先级拥有者被选为DR,如果优先级相等(默认为1),具有最高OSPF Router ID的路由器被选举为DR,并且DR具有非抢占性。【优先级0不参与选举】
备用指定路由器(BDR):监控DR状态,并在当前DR发生故障后接替其角色。
1
2[AR1-GigabitEthernet0/0/0] ospf dr-priority ?
INTEGER<0-255> Router priority value
不同网络类型中DR与BDR的选举操作
一边broadcast,一边P2P,可以FULL,不能传路由
| OSPF网络类型 | 常见链路层协议 | 是否选举DR | 是否和邻居建立邻接关系 |
|---|---|---|---|
| Point-to-point | PPP链路;HDLC链路 | 否 | 是 |
| Broadcast | 以太网链路 | 是 | DR与BDR、DRother建立邻接关系(FULL) BDR与DR、DRother建立邻接关系(FULL) DRother之间只建立邻居关系(2-way) |
| NBMA | 帧中继链路 | 是 | DR与BDR、DRother建立邻接关系(FULL) BDR与DR、DRother建立邻接关系(FULL) DRother之间只建立邻居关系(2-way) |
| P2MP | 需手工指定 | 否 | 是 |
OSPF LSA
OSPF使用LSA(LinkStateAdvertisement,链路状态通告)传递链路状态信息。
LSA需要描述邻接路由器信息、直连链路信息、跨区域信息等,所以定义了多种类型的LSA。
- 类型1、类型2:用于区域内路由信息交互
- 类型3:用于区域间路由信息交互
- 类型4、类型5:用于有外部引入的情况,如将RIP路由信息引入到OSPF中时
- 类型7:特殊类型,NSSA使用
| 类型 | 名称 | 描述 |
|---|---|---|
| 1 | 路由器LSA (Router LSA) | 每个设备都会产生,描述了设备的链路状态和开销,该LSA只能在接口所属的区域内泛洪。 |
| 2 | 网络LSA (Network LSA) | 由DR产生,描述该DR所接入的MA网络中所有与之形成邻接关系的路由器,以及DR自己。该LSA只能在接口所属区域内泛洪。 |
| 3 | 网络汇总LSA (Network Summary LSA) | 由ABR产生,描述区域内某个网段的路由,该类LSA主要用于区域间路由的传递。[ABR:区域边界路由器] |
| 4 | ASBR汇总LSA (ASBR Summary LSA) | 由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。[ABR:区域边界路由器,ASBR:自治系统边界路由器] |
| 5 | AS外部LSA (AS External LSA) | 由ASBR产生,用于描述到达OSPF域外的路由。[ASBR:自治系统边界路由器] |
| 7 | 非完全末梢区域LSA (NSSA LSA) | 由ASBR产生,用于描述到达OSPF域外的路由。NSSA LSA与AS外部LSA功能类似,但是泛洪范围不同。NSSA LSA只能在始发的NSSA内泛洪,并且不能直接进入Area0。NSSA的ABR会将7类LSA转换成5类LSA注入到Area0。[ASBR:自治系统边界路由器] |
OSPF cost
- OSPF使用Cost”开销”作为路由度量值。
- OSPF接口cost=100M/接口带宽,其中100M为OSPF参考带宽(reference-bandwidth),可修改;并且结果<1时,取1
- 每一个激活OSPF的接口都有一个cost值。
- 一条OSPF路由的cost由该路由从起源一路到达本地的所有入接口cost值的总和。如下图所示,从1.1.1.0/24到达R3的路由开销值为1 + 48 + 1 = 50

OSPF区域
所有非骨干区域必须与骨干区域直连
如果有区域没有与Area 0相联,可以通过虚连接临时解决,只能横穿一个非骨干区域

OSPF路由器角色
- 区域内路由器IR(InternalRouters):该类路由器的所有接口都属于同一个OSPF区域
- 区域边界路由器ABR(AreaBorderRouters):该类路由器可以同时属于两个以上的区域,ABR用来连接骨干区域和非骨干区域
- 骨干路由器BR(BackboneRouters):该类路由器至少有一个接口属于骨干区域。因此,所有的ABR和位于Area0的内部路由器都是骨干路由器。只要直连到骨干区域的都是骨干路由器
- 自治系统边界路由器ASBR(ASBoundaryRouters):与其他AS交换路由信息的路由器称为ASBR。

例题
例题1

解析:路由器优先级取值是0-255,如果路由器优先级为0,则代表它不具备DR和BDR的选举资格。
- 已知RouterD的优先级是0,那么他肯定不是DR或者BDR。
- Router A优先级最高,他会成为DR
- Router B和Router C的优先级都是1,接着看IP地址,大的胜出成为BDR,则Router C成为BDR。
例题2

解析:
DR选举规则:最高OSPF接口优先级拥有者被选为DR,如果优先级相等(默认为1),最高OSPFRouterID的路由器被选举为DR,并且DR具有非抢占性。【优先级0不参与选举】
Dother之间是2-way状态(稳定状态)
例题3

解析:OSPF使用Hello报文维护邻居关系。
例题4

解析:
- 广播网络和点对点网络hello是10s,NBMA网络hello是30s,默认都是广播型网络(如以太网)。
- 同步数据库采用LSA报文。
例题5

解析:
- 区域内路由器IR(InternalRouters):该类路由器的所有接口都属于同一个OSPF区域
- 区域边界路由器ABR(AreaBorderRouters):该类路由器可以同时属于两个以上的区域,ABR用来连接骨干区域和非骨干区域
- 骨干路由器BR(BackboneRouters):该类路由器至少有一个接口属于骨干区域。因此,所有的ABR和位于Area0的内部路由器都是骨干路由器。只要直连到骨干区域的都是骨干路由器
- 自治系统边界路由器ASBR(ASBoundaryRouters):与其他AS交换路由信息的路由器称为ASBR。
例题6


解析:
- 区域内路由器IR(InternalRouters):该类路由器的所有接口都属于同一个OSPF区域
- 区域边界路由器ABR(AreaBorderRouters):该类路由器可以同时属于两个以上的区域,ABR用来连接骨干区域和非骨干区域
- 骨干路由器BR(BackboneRouters):该类路由器至少有一个接口属于骨干区域。因此,所有的ABR和位于Area0的内部路由器都是骨干路由器。只要直连到骨干区域的都是骨干路由器
- 自治系统边界路由器ASBR(ASBoundaryRouters):与其他AS交换路由信息的路由器称为ASBR。
例题7

解析:
- OSPF不会自动汇总,需要手工配置,故A选项错误。
- 在ABR和ASBR上都能配置路由聚合,故B选项正确。
- 一台路由器同时做ABR和ASBR,并不影响各自汇聚路由。作为ABR仍然能聚合区域间路由,作为ASBR仍然能聚合外部路由,这两个功能是分开的,故C选项错误。
- ASBR上只能聚合“由自己引入的”外部路由,如果ASBR从别的ASBR学习到一条外部路由,它是聚合不了的。只能聚合活跃的外部路由,什么是活跃的呢,比如同时从ip和eigrp到两条相同的路由,根据管理距离不同,eigrp会优选,就是活跃的,rip的那条路由就不活跃了,如果这时候引入rip到ospf的话,是不能聚合的,故D选项错误
例题8

解析:OSPF区域O中的路由器分为两类
- 一类是内部路由器IR,只有区域0的LSDB
- 还有一类是区域边界路由器ABR,可能包含多个区域的LSDB
因此OSPF区域0中的路由器LSDB不一定相同,故D选项错误。
例题9

解析:OSPF的router-id选举规则如下: (记忆)
- 优选手工配置的router-id。
- **OSPF进程手工配置的router-id具有最高优先级。**题目中
[RA]ospf 1 router-id 1.1.1.1即为手动配置Router ID - **在全局模式下配置的公用router-id的优先级仅次于直接给OSPF进程手工配置router-id,即它具有第二优先级。**即题目中
[RA] router id 2.2.2.2这是全局Router ID
- **OSPF进程手工配置的router-id具有最高优先级。**题目中
- **在没有手工配置的前提下,优选loopback接口地址中最大的地址作为router-id。**即题目中
[RA-LoopBack0] ip address 3.3.3.3 32 - 在没有配置loopback接口地址的前提下,优选普通接口的IP地址中选择最大的地址作为router-id(不考虑接口的Up/Down状态)。
例题10

开放最短路径优先OSPF的基本工作原理
本节课我们介绍开放最短路径优先OSPF协议的基本工作原理。
OSPF简介
开放最短路径优先OSPF协议是为克服RIP协议的缺点,在 1989 年开发出来的。
开放:表明OSPF不是受某一厂商控制的,而是公开发表的。
最短路径优先:是因为使用了迪杰斯特拉提出的最短路径算法SPF。
OSPF是基于链路状态的,而不像RIP那样是基于距离向量的。
OSPF 采用最短路径优先算法计算路由,从算法上保证了不会产生路由环路。
OSPF不限制网络规模,更新效率高、收敛速度快。
链路状态是指本路由器都和哪些路由器相邻以及相应链路的“代价”。
- 代价用来表示费用、距离、时延、带宽等等,这些都是由网络管理人员来决定的。
链路状态 =“代价”
下面举例说明何为“代价”。在思科路由器中, OSPF计算代价的方法是,用 100 Mbit/s除以链路带宽,计算结果小于 1 的值仍记为1,大于 1 且有小数的舍去小数。

我们来看看图中各路由器的链路状态即“代价”:
- R1 的邻居路由器有R2,相应的链路代价用 100 Mbit/s除以链路带宽 100 Mbit/s,结果是1
- R1 的邻居路由器还有R4。相应的链路代价用 100 Mbit/s除以链路带宽 1G 比特每秒,计算结果小于1,但仍记为1。
- 很容易的得出其他各路由器的链路状态,我们就不再赘述了。
邻居关系
OSPF相邻路由器之间通过交互问候(Hello)分组来建立和维护邻居关系。

OSPF相邻路由器之间通过交互问候(Hello)分组来建立和维护邻居关系。

- 问候分组需要封装在 IP 数据报中发送,发往组播地址224.0.0.5。
- 问候分组的IP 数据报首部中的协议号字段的取值应为89,来表明 IP 数据报的数据载和为 OSPF 分组。
- 问候分组的发送周期为 10 秒,若 40 秒仍未收到来自邻居路由器的问候分组,则认为该邻居路由器不可达。
因此每个路由器都会建立一张邻居表,例如,这是路由器 R1 的邻居表,其中的每一个条目对应记录其各邻居路由器的相关信息,包括邻居ID、接口以及死亡倒计时。例如:

R2 是 R1 的一个邻居路由器,为简单起见,邻居 ID 就记为R2。实践中应填写相应的路由器ID。
该邻居路由器与自己的接口 1 相连,将接口号记为1
死亡倒计时还剩 36 秒。若在死亡倒计时到达 0 之前再次收到了来自 R2 的问候,分组则重新启动针对该邻居条目的 40 秒死亡倒计时。否则,当死亡倒计时为 0 时,则判定该邻居路由器不可达。
又如,

- R4 是 R1 的另一个邻居路由器,邻居 ID 就记为R4
- 该邻居路由器与自己的接口 0 相连,将接口号记为0
- 死亡倒计时还剩余 18 秒
链路状态通告LSA
使用OSPF的每个路由器都会产生链路状态通告LSA(Link State Advertisement)
链路状态通告的内容
使用OSPF的每个路由器都会产生链路状态通告,其中包含以下两类内容
- 一类是直连网络的链路状态信息
- 一类是邻居路由器的链路状态信息
假设 N1 是路由器 R4 的直连网络,则 R4 的链路状态通告应包含
- R4 与该直连网络的链路状态信息
- 其邻居路由器 R1 的链路状态信息
- 其邻居路由器 R3 的链路状态信息。

LSA被封装在链路状态更新分组LSU中,采用洪泛法发送
链路状态通告被封装在链路状态更新分组LSU中,采用洪泛法发送。收到链路状态更新分组的路由器将从自己其他所有接口转发该分组,也就是进行洪泛转发,如图所示。

这样自治系统中每个路由器所发送的封装有链路状态通告的链路状态更新分组会传递给系统中其他所有路由器。
使用 OSPF的每个路由器都有一个链路状态数据库,用于存储链路状态通告
- 使用 OSPF的每个路由器都有一个链路状态数据库LSDB,用于存储链路状态通告LSA。
- 通过各路由器洪泛发送封装有自己链路状态通告的链路状态更新分组。各路由器的链路状态数据库最终将达到一致。
例如,这是路由器 R2 的链路状态数据库,其中记录有系统中各路由器的链路状态通告。

使用 OSPF的各路由器基于链路状态数据库进行最短路径优先SPF计算使用 OSPF的各路由器基于链路状态数据库进行最短路径优先计算,就可构建出各自到达其他各路由器的最短路径,即构建出各自的路由表。
例如,有这样一个网络拓扑,各链路旁的数字表示代价。通过各路由器洪泛发送封装有自己链路状态通告的链路状态更新分组,各路由器最终会得出相同的链路状态数据库。有链路状态数据库可以得出带权有向图。

对该图进行基于Dijkstra的最短路径优先算法,就可以得出以各路由器为根的最短路径。如图所示。

对于这样一个比较简单的网络拓扑,即使不懂得最短路径优先算法,也可以很快找出每个路由器到达其他各路由器的最短路径。但是如果网络拓扑比较复杂,该项工作对人类而言就比较复杂了。因此可以按照Dijkstra提出的最短路径优先算法编制程序,让路由器执行该程序。如果对该算法感兴趣,可以自行查阅相关资料,我们就不再赘述了。对于一般的网络工程师,即便不熟悉该算法,也不影响对 OSPF 协议的配置和使用。
OSPF协议的分组类型
OSPF包含以下 5 种分组
- 类型1:问候(Hello)分组,用来发现和维护邻居路由器的可达性
- 类型2:数据库描述(Database Description)分组,用来像邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息
- 类型3:链路状态请求(Link State Request)分组,用来向邻居路由器请求发送某些链路状态项目的详细信息
- 类型4:链路状态更新(Link State Update)分组。路由器使用这种分组将其链路状态进行洪泛发送,即用洪泛法对全网更新链路状态
- 类型5:链路状态确认(Link State Acknowledgment)分组,是对链路状态更新分组的确认分组
举例说明OSPF协议基本工作过程
接下来我们来举例说明 OSPF协议的基本工作过程。

建立邻居关系
相邻路由器之间周期性发送问候分组,以便建立和维护邻居关系。
交换数据库描述分组
建立邻居关系后,给邻居路由器发送数据库描述分组,也就是将自己的链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器。
交互链路状态请求分组及链路状态确认分组
例如
- R1 收到 R2 的数据库描述分组后,发现自己缺少其中的某些链路状态项目,于是就给 R2 发送链路状态请求分组。
- R2 收到后,将 R1 所缺少的链路状态项目的详细信息封装在链路状态更新分组中发送给R1,R1收到后,将这些所缺少的链路状态项目的详细信息添加到自己的链路状态数据库中,并给 R2 发送链路状态确认分组。
同理, R2 也可以向 R1 请求自己所缺少的链路状态项目的详细信息。这里就不再演示该过程了。
链路状态数据库达到同步
最终, R1 和 R2 的链路状态数据库将达到一致,也就是链路状态数据库达到同步。
每 30 分钟或链路状态发生变化时,路由器都会发送链路状态更新分组。收到该分组的其他路由器将洪泛转发该分组,并给该路由器发回链路状态确认分组。这又称为新情况下的链路状态数据库同步。

OSPF在多点接入网络中路由器邻居关系的建立
选举指定路由器DR(designateDRouter)和备用的指定路由器BDR(backup designateDRouter)
所有的非DR/BDR只与DR/BDR建立邻居关系
非DR/BDR之间通过DR/BDR交换信息
当 OSPF 路由器在多点接入网络中建立邻居关系时,如果不采用其他机制,将会产生大量的多播分组。

例如,这 5 台路由器连接在同一个多点接入网络中,他们周期性的发送问候分组以建立和维护邻居关系。这些路由器中的任意两个路由器都互为邻居关系,如图所示。

邻居关系的数量为n(n-1)/2,其中 n 是路由器的数量,这样每个路由器要向其他 n - 1 个路由器发送问候分组和链路状态更新分组。
为了减少所发送分组的数量, OSPF采用旋局指定路由器DR和备用的指定路由器BDR的方法。如图所示,假设这两台路由器被分别选举为 DR 和 BDR。

所有的非 DR, BDR 只与 DR, BDR 建立邻居关系,如图所示。因此之前的邻居关系数量降低为2(n-2)+1。

非 DR, BDR 之间不能直接交换信息,而必须通过 DR BDR 进行交换。若 DR 出现问题,则由 BDR 顶替 DR 实现。
DR 和 BDR 的选举并不复杂,无非就是各路由器之间交换一些选举参数,例如路由器优先级、路由器 ID 接口、 IP 地址等,然后根据选举规则选出 DR 和BDR。这与交换机生成树协议选举根交换机类似,我们就要不再赘述了。
OSPF把一个自治系统(AS)划分为更小范围的区域(Area)
为了使OSPF协议能够用于规模很大的网络,OSPF把一个自治系统再划分为若干个更小的范围,称为区域。
如图所示,这是一个规模很大的网络,我们将其划分成一个自治系统。在该自治系统内,所有路由器都使用OSPF协议。

OSPF将该自治系统再划分成 4 个更小的区域。

每个区域都有一个 32 比特的区域标识符,可以用点分十进制表示。例如

- 主干区域的标识符必须为0,也可表示成点分十进制形式的0.0.0.0。主干区域用于联通其他区域。
- 其他区域的标识符不能为0,且互不相同。每个区域的规模不应太大,一般所包含的路由器不应超过 200 个。
划分区域的好处就是把利用洪泛法交换链路状态信息的范围局限于每一个区域,而不是整个自治系统,这样就减少了整个网络上的通信量。

区域内路由器IR
如果路由器的所有接口都在同一个区域内,则该路由器称为区域内路由器IR(internal router),如上图中的R1、R2、R8、R9。
区域边界路由器ABR
为了本区域可以和自治系统内的其他区域联通,每个区域都会有一个区域边界路由器ABR(area border router),如上图中的 R3、R4、R7。
区域边界路由器的一个接口用于连接自身所在区域,另一个接口用于连接主干区域,
主干路由器BBR
主干区域内的路由器称为主干路由器BBR(backbone router),如上图中的R3、R4、R5、R6、R7
我们也可以把区域边界路由器看作是主干路由器,
自治系统边界路由器ASBR
在主干区域内还要有一个路由器,专门和本自治系统外的其他自治系统交换路由信息,这样的路由器成为自治系统边界路由器,如上图中的R6
在本例中

区域边界路由器 R3 向主干区域发送自己所在区域 1 的链路状态通告,向自己所在区域发送区域 0、2、3 的链路状态通告。
区域边界路由器 R4 向主干区域发送自己所在区域 2 的链路状态通告,向自己所在区域发送区域 0、1、3 的链路状态通告。
区域边界路由器 R7 向主干区域发送自己所在区域 3 的链路状态通告,向自己所在区域发送区域 0、1、2的链路状态通告。
采用分层次划分区域的方法,虽然使交换信息的种类增多了,同时也使 OSPF协议更加复杂了,但这样做却能使每一个区域内部交换路由信息的通信量大大减小,因而是OSPF协议能够用于规模很大的自治系统中。
本节小结

