OSPF路由协议

OSPF(Open Shortest Path First)路由协议是一种动态的应用于IGP(Interior Gatewary Protocol)层上,运行于三层网络之中,使用LS(Link Status)路由算法的无类别路由协议。其数据报文种的协议端口为89,使用了两个组播地址:224.0.0.5/224.0.0.6,其中224.0.0.5作为整个OSPF路由组的通讯地址,而224.0.0.6则预留为DR与BDR协商使用。


工作原理

在不同的网络类型下,ospf有着不同的工作原理,但大体如下:

第一阶段(邻居确立,建立邻居表):于路由器配置OSPF路由并应用,路由器会自动从启动了OSPF协议的接口发送HELLO报文寻求邻居关系,如若有路由器回应HELLO报文,则双方建立邻居关系,并完善邻居表。

第二阶段(确认链路,建立链路状态表):建立了邻居关系之后,路由器之间会开始交互LSA条目,并最终形成一个区域内统一的OSPF链路状态数据库,该数据库内拥有完整的链路状态,如链路接口邻居链路状态等信息,并直至每个路由器链路状态完善为止,完成后,会将其转换为一个有向图。

第三阶段(算出路由,建立ospf路由表):待链路状态数据库完善,路由器会根据该数据库内的信息通过SPF(Shortest Path First)最短优先算法求得向每个网络的无环路树状路由并写入自身的路由表内。

第四阶段(维护三个表):待三个表建立完成后,路由器会定期发送HELLO报文,维护邻居关系,并持续更新或完善三个表。

OSPF的路径开销

与其他部分协议一致,OSPF也拥有自己的路径开销算法,OSPF的默认算法非常的简单,其公式如下:

OSPF Cost = 参考带宽 / 接口带宽

其中,参考带宽默认值为100Mbit/s,即108。通过这个公式,我们可以计算出每条链路的Cost值,用来表示通过这条链路的成本。在每次带宽出现变化时,OSPF Cost就会重新计算,以确保路由选择的准确性。

在不同的环境中,我们也可以根据自己的需求进入具体的接口更改其COST或者更改参考带宽。

OSPF的Router-id

在OSPF网络中,Router ID是一个至关重要的概念。它是一个32位的数值,与IPv4地址格式相同,例如192.168.100.1。Router ID用于唯一标识OSPF网络中的每个路由器,确保每个路由器在OSPF域中都具有一个独一无二的身份。这种唯一性确保了网络中的路由器能够正确区分彼此,防止路由器之间的冲突,确保网络的正常运行从而进行准确的信息交换和路由计算。

Router ID的分配方式:

  • 如果通过Router-ID命令配置了Router-ID,则按照配置结果设置,选取优先级为第一;
  • 在没有配置Router-ID的情况下,如果存在配置了IP地址的Loopback 接口,则选择Loopback接口地址中最大的地址作为Router-ID,选取优先级为第二;
  • 如果没有已配置IP地址的Loopback接口,则从其他接口的IP地址中选择最大的地址作为 Router-ID(不考虑接口的Up/Down状态),选取优先级为第三。

Router ID在OSPF网络中具有多种用途。首先,它用于确定LSA发送者的身份,帮助其他路由器识别发送LSA的路由器,从而确保信息交换的准确性和有效性。其次,Router ID还用于确定路由器的优先级,影响路由计算的结果。此外,在选举OSPF网络中的DR和BDR时,以及计算最短路径时,Router ID也发挥着重要作用。最后,Router ID还用于区分不同的OSPF进程,特别是在一个路由器上运行多个独立的OSPF进程时。

因此,正确配置和管理Router ID对于确保OSPF网络的正常运行和高效性能至关重要。管理员需要仔细规划Router ID的分配,避免冲突和故障,以保证网络的稳定性和可靠性


OSPF区域

区分于AS自治区概念,OPSF自己拥有自己的下级区域概念,其总体分为两种:主干区域,又叫中转区域,代号为area 0;非骨干区域,即非area 0的区域。

OSPF也有特殊的区域,但是总体分为主干和非主干区域

划分区域的缘由

OSPF通过划分区域来优化路由计算和资源利用,从而提高网络的性能和可靠性,以下是OSPF划分区域的主要原因:

  1. 减轻路由器计算负担:在一个大规模网络中,如果所有路由器都位于同一OSPF区域,那么每个路由器都需要维护整个网络的拓扑信息。这会导致路由表的不断增长和路由计算的复杂性增加。通过将网络划分为多个区域,每个区域内的路由器仅需维护自己区域内的拓扑信息,从而大大减轻了路由器的计算负担。
  2. 提高网络的可扩展性:随着网络规模的扩大,可能需要添加新的路由器或区域。通过预先划分OSPF区域,可以方便地添加新区域或路由器,而不会对整个网络造成显著影响。同时,区域间的路由信息交换可以通过汇总方式减少网络流量,进一步提高网络效率。
  3. 提高网络的可靠性和稳定性:当网络划分为多个区域时,即使某个区域发生故障,其他区域仍可以正常工作。这减少了单点故障的风险,提高了网络的容错能力。此外,限制LSA(链路状态通告)的泛洪范围,可以有效控制拓扑变化的影响,限制在特定区域内,从而增强OSPF网络的稳定性。
  4. 增加网络的安全性:通过划分区域,可以对不同区域的路由器实施不同的安全策略和访问控制规则。例如,可以限制某些区域的路由信息传播范围,或设置访问控制列表来防止未经授权的访问。
  5. 提高网络管理效率:多区域配置允许管理员根据需要对不同区域进行灵活的配置和管理。例如,可以根据网络需求调整特定区域的链路权重或访问控制列表。这种灵活性简化了网络管理任务,提高了管理效率。

需要注意的是,在ospf中所有的非主干区域都必须邻接在主干区域上,否则不可互联,如设计问题导致的非主干区域无法邻接在主干区域上,ospf有着自己的解决方案,在本文稍后的部分会进行解释。

所有区域必须要邻接到主干区域的原因:

OSPF在区域内部运行的是SPF算法,这个算法能够保证区域内部的路由不会成环。然而划分区域后,区域之间的路由传递实际上是一种类似距离矢量算法的方式,这种方式容易产生环路。

为了避免区域间的环路,OSPF规定直接在两个非骨干区域之间发布路由信息是不允许的,只允许在一个区域内部或者在骨干区域和非骨干区域之间发布路由信息。因此,每个ABR都必须连接到骨干区域。

假设OSPF允许非骨干区域之间直接传递路由,则可能会导致区域间环路。如下图所示,骨干区连接到其他网络的路由信息会传递至Area 1。假设非骨干区之间允许直接传递路由信息,那么这条路由信息最终又被传递回去,形成区域间的路由环路。为了防止这种区域间环路,OSPF禁止Area 1和Area 3,以及Area 2和Area 3之间直接进行路由交互,而必须通过骨干区域进行路由交互。这样就能防止区域间环路的产生。


OSPF角色

在OSPF协议中,路由器扮演着多种重要的角色。这些角色主要是:

  1. 区域边界路由器(Area Border Router,ABR):ABR是连接不同OSPF区域的路由器,它扮演着区域之间的网关的角色。ABR负责在不同的OSPF区域之间转发路由信息,确保跨区域的通信正常进行。ABR通常会连接到多个区域,因此需要能够处理来自不同区域的路由信息,并进行相应的处理和转发。需要注意的是,只有在该路由器产生了五类LSA之后,才能被称之为ASBR,否则不能称之为ASBR
  2. 自治系统边界路由器(Autonomous System Boundary Router,ASBR):ASBR是连接不同自治系统(AS)的路由器。ASBR的主要作用是负责在不同AS之间交换路由信息,实现不同AS之间的互联互通。ASBR通常会连接到外部网络,获取外部网络的路由信息,并将这些信息传递给OSPF网络内部的其他路由器。
  3. 主路由,也称指定路由器(Designated Router,DR):在OSPF网络中,DR是负责转发链路状态通告(LSA)信息的特殊路由器。由于在大型网络中,路由器数量众多,为了降低LSA信息的传输开销和计算复杂度,OSPF通过选举算法选择其中一个路由器作为DR。DR负责收集邻居路由器发送的链路状态信息,并将它们汇总为链路状态数据库(LSDB)。然后,DR将LSDB中的信息传递给其他路由器,确保整个网络中的每个路由器都具备相同的链路状态信息。
  4. 备用主路由,也称备用指定路由器(Backup Designated Router,BDR):BDR是DR的备份,当DR失效时,BDR会接管DR的角色,确保网络的稳定性和连续性。
  5. 其他路由器Designated Router Other,DR Other):在有DR与BDR的场合下,所有其他无特殊身份路由器均被称为其他路由器。

这些角色共同协作,确保OSPF网络中的路由信息能够正确、高效地传播和处理,从而实现网络的互联互通和稳定运行。每个角色都有其独特的职责和功能,共同构成了OSPF协议的基础。

需要注意的是,大部分的角色都仅仅指代该路由器上的对应接口,并非整个路由器

为什么要指定主路由和备用主路由

广播网络NBMA网络中,任意两台路由器之间都要传递路由信息。网络中有n台路由器,则需要建立n*(n-1)/2个邻接关系。这使得任何一台路由器的路由变化都会导致多次传递,浪费了带宽资源。

为解决这一问题,OSPF定义了DR。通过选举产生DR后,所有其他设备都只将信息发送给DR,由DR将网络链路状态LSA广播出去。

为了防止DR发生故障,重新选举DR时会造成业务中断,除了DR之外,还会选举一个备份指定路由器BDR。这样除DR和BDR之外的路由器(称为DR Other)之间将不再建立邻接关系,也不再交换任何路由信息,这样就减少了广播网和NBMA网络上各路由器之间邻接关系的数量。

如何选举主路由和备用主路由

一般来说,主备路由的选取遵守以下几条原则:

选举制
当处于同一网段的两台路由器同时宣布自己是DR时,DR优先级高者胜出。如果优先级相等,则Router ID大者胜出。如果一台路由器的优先级为0,则它不会被选举为DR或BDR(默认优先级为1)。

终身制
终身制也叫非抢占制。

继承制

网络中无法选举出DR和BDR时
在以上配置的基础上,如果在R1的接口GE1/0/1上执行ospf dr-priority命令将接口的DR优先级配置为0,则R1也失去DR、BDR的选举资格。此时该网络中将没有任何路由器具备DR和BDR的选举资格。

此时所有的邻居状态都只停留在2-Way的状态,网络不能建立邻接关系,各个路由器之间不能完成路由信息的交互.

邻居

邻居关系是指在两台路由器之间通过Hello报文交互后建立的一种关系。当两台路由器在同一个OSPF区域中并且满足一定的条件(如共同的Area-id和验证信息)时,它们会开始发送和接收Hello报文。这些报文包含了路由器的Router-id、优先级、邻居路由器的IP地址等关键信息,用于路由器之间的通信和协商。一旦通过Hello报文确认了双向通信并满足邻居关系的建立条件,两台路由器便形成了邻居关系。在OSPF状态机中,邻居关系显示为2-way状态。

邻居关系建立关键条件:

  • Router ID不相同:每台参与OSPF的路由器必须有一个唯一的Router ID,用于在OSPF网络中进行标识和区分。
  • Area相同:邻居路由器必须处于相同的OSPF区域内。OSPF通过区域划分来管理网络,只有相同区域内的路由器才能建立邻居关系。
  • Authentication-type(验证类型)和Authentication-key(验证口令)相同:如果网络配置了验证功能,那么参与建立邻居关系的路由器必须使用相同的验证类型和验证口令。
  • Hello/dead时间相同:Hello时间用于发送Hello包,而dead时间用于确定何时认为邻居失效。参与建立邻居关系的路由器必须配置相同的Hello和dead时间。
  • 特殊区域标识相同:如果网络中存在特殊区域配置,参与建立邻居关系的路由器必须对这些特殊区域的标识达成一致。
  • OSPF版本相同:参与建立邻居关系的路由器必须使用相同的OSPF版本,例如OSPFv2或OSPFv3。不同版本的OSPF之间无法建立邻居关系。
  • 网络类型匹配:OSPF支持多种网络类型,如点到点、广播和多址接入等。参与建立邻居关系的路由器必须能够处理相同的网络类型。

邻接

而邻接关系则是邻居关系的一种进一步发展。在邻居关系建立后,路由器之间会开始一系列的报文交互,包括交互空的DD报文以协商Master/Slave角色,再交互包含LSA头部的DD报文以描述自己的LSDB(链路状态数据库)。一旦双方的LSDB同步完成,即它们对网络拓扑有了一致的认识,并开始独立计算路由,此时这两台路由器就形成了邻接关系。在OSPF状态机中,邻接关系最终显示为Full状态。


OSPF的报文

HELLO报文

是OSPF最常用的报文,用于建立和维护与邻接路由器的关系。当一个路由器启动时,它会周期性地发送Hello报文来探测周围的邻居路由器。当两个路由器在Hello报文中互相确认对方的存在时,它们就可以建立邻居关系,开始交换路由信息。Hello报文还包含了定时器的数值、网络中的DR(指定路由器)和BDR(备份指定路由器)以及已经知道的邻居等信息。

hello报文的hello time和dead time

hello time :10 / 30s

dead time :40 / 120s

ospf中的hello/dead时间在不同的网络类型下有所不同,由于hello/dead时间的不同会导致无法产生邻居关系,所以我们也可以根据自己的需求更改ospf中的hello/dead时间

Hello时间是指两个相邻路由器之间发送Hello报文的时间间隔。通过这个时间间隔,路由器能够确认彼此的存在并建立邻居关系。较短的Hello时间可以更快地发现邻居路由器,加速邻居关系的建立,从而更快地进行路由信息交换。然而,如果Hello时间设置过短,会导致路由器之间的Hello报文频繁发送,增加网络负载和传输开销。因此,在设置Hello时间时,需要权衡资源消耗和邻居关系建立的需求。

另一方面,Dead时间是指一个路由器在一段时间内未收到邻居路由器的Hello报文时,判定邻居路由器为失效的时间间隔。如果在Dead时间内没有收到对方的Hello报文,路由器会认为邻居路由器已经失效,并更新路由表以排除失效路由。Dead时间的设置也需要根据实际网络情况来进行调整,以保持适当的失效检测和快速的路径收敛。

DD(Database Description报文)

当两台设备在邻接关系初始化时,它们会使用DD报文来描述本端设备的链路状态数据库(LSDB),他并不是完整的LSDB而是类似于LSDB的一个目录,路由器之间会使用这个目录查看互相的LSDB是否一致,如若不一致则进行请求和更新。

值得注意的是,在初次进入Exstart状态的路由器会和邻居关系的路由器进行一次空DD报文的交互,这次交互并不是没有意义的交互,而是双方在进行主从选取,此处的主从选取决定了之后的交互先序,以免双方同时发送DD报文或者LSR、LSU报文,并且能够帮助其进行DD隐式确认,如果主路由器发出dd报文回收到从路由的序列号递增了1,则视为其已经正确无误地接受了DD报文。

一旦主从关系确定,主路由器将主导后续的数据库同步过程,而从路由器则会遵循主路由器的指示进行操作。这种主从选取机制有助于减少网络中的冲突和冗余信息交换,提高OSPF协议的运行效率。同时,它也确保了网络中的路由器能够以一种有序和一致的方式进行信息交互,从而维护网络的稳定性和可靠性。

LSR(Link State Request报文)

在两台设备交换过DD报文后,如果需要更新特定的链路状态信息,它们会发送LSR报文向对方请求所需的链路状态通告(LSA)。这个报文包含了所需要的LSA的详细信息。

LSU(Link State Update报文)

LSU报文用于向对端设备发送其所需要的LSA或者泛洪(flood)本端更新的LSA。这个报文包含了多条LSA的集合。

LSAck(Link State Acknowledgement报文)

这个报文用于确认收到了LSU、LSR、DD报文中的LSA信息。通过LSAck报文,OSPF协议可以确保链路状态信息的可靠传输,防止信息丢失或重复。


OSPF的状态机

Down

这是初始状态,表示OSPF进程未启动或邻居会话的初始阶段,即没有在邻居失效时间间隔内收到来自邻居路由器的Hello数据包。

Init

当路由器开始向对方发送HELLO报文时,进入此状态,这标志着路由器开始与其他路由器建立邻接关系。

Two-way

也称为双向通信状态。当双方路由器都收到了对方的Hello报文,并且都识别了对方的Router ID时,状态机就进入了2-way状态,这表明邻居关系已经建立,但还未进入完全的邻接状态。路由器在进入该状态后,会停滞

p2p网络类型不会进入此状态,因为该状态一般留于DR和BDR的选取,但是p2p网络类型不需要选取DR和BDR,所以不会停留在该状态

Exstart

在形成邻居关系后,路由器会进入Exstart状态,开始协商主从关系,并确定DD(数据库描述)报文的序列号。

Exchange

主从关系协商完毕后,路由器开始交换DD报文,此时状态为Exchange。DD报文包含了路由器的链路状态数据库摘要,用于确认双方的LSDB,知道我少了哪些LSA,对方少了哪些LSA。

Loading

在明确LSDB完整性之后,开始同步双方的LSDB,进入loading状态。两端设备发送LSR报文向邻居请求对方的LSA,并且发送LSU帮助对方同步,最终同步LSDB路由器。

并通过SPF算法算出最优的无环路路由:

1.路由器根据LSDB中的LSA画出网络图,此图包含OSPF网络拓扑中所有“点” (包括伪节点)(画图需要使用1类LSA的P2P、TransNet、Vlink类型以及2类LSA)


2.路由器以自己为树根,对网络图执行SPF计算,画出一个由树根到每个节点的最短路径树


3.在树的节点上添加网络信息,并计算由树根到这些网络的开销以及下一跳,并将计算结果加入到路由表中(叶子节点可以是1类的StubNet、LSA2、LSA3、LSA5/7的网络)

Full

当两端LSDB(链路状态数据库)完全一致时,邻居状态变为Full,表示成功建立邻接关系,并且路由表已经完全更新。此时,路由器可以基于最新的网络拓扑信息进行路由计算。

Attempt

Attempt 在帧中继网络中才会出现,表示的是网络为测试、唤醒状态,不常见


OSPF的LSA

LSA(Link State Advertisement)全称链路状态通告,主要由LSA头部信息(LSA摘要)和链路状态组成(部分LSA只有LSA头部信息,无链路状态信息),在OSPF中主要是通过泛洪LSA、同步LSDB来学习路由,达到全网互通的。

泛洪LSA

把LSA向区域中的每条链路复制并通告的过程—————-每隔30min泛洪一次(60min老化)

泛洪是个可靠的过程,有确认机制:

  • 显示确认 用LSAck对LSU报文中的的LSA做确认(发送包含LSA拷贝的数据包来确认,是信息级别的确认)确认收到内容了
  • 隐式确认 DD报文序列号+1进行确认(仅仅是报文级别的确认)确认收到报文了LSDB同步

每个LSA都要在LSU中通告给邻居,并且每个邻居都要确认,若没有收到邻居的确认,LSU在5s后重传LSDB数据库

常见的LSA简表

类别内容宣告者宣告范围
1类-Router传输链路状态信息宣告内部区域的直连邻居和直连接口信息 每个路由器都会生成描述自己的链路状态信息在产生此LSA的本区域传播
2类-Network传输链路状态信息描述本网段的链路状态信息只有DR(BDR)路由器会生成携带了子网掩码信息在产生此LSA的本区域传播
3类-Network-Summary 传输路由信息将区域内的所有网段的路由通告给其它区域ABR(区域边界路由器)始发生成,每经过一个ABR都会重新生成(每经过一个ABR,其Advertisting Router就会变成此ABR的RID)在区域间传播(非 Totally Stub/Nass区域)
4类-Asbr-Summary传输描述到ASBR的路由信息和ASBR同一区域的ABR始发生成(其余ABR收到4类后会重新计算4类LSA,与3类类似)除开本区域外的其它全部区域(非特殊区域)
5类-AS-External传输路由信息描述到AS外部的路由信息ASBR生成(外部边界路由器)每个路由器收到的五类LSA都一样在全区域传播(非 特殊区域)
7类-NSSA传输路由信息描述到AS外部的路由信息配置NSSA区域的ASBR生成在NSSA/Totally Nass区域传播
类别Link IDAdv Router
1自己的Router-id自己的Router-id
2DR的接口IP地址DR的Router-id
3域间路由ABR的Router-id
4ASBR的Router-idABR的Router-id
5外部路由ASBR的Router-id
7外部路由ASBR的Router-id

有关一类LSA的补充说明:

其宣告内容为自己已知的包括自己在内的所有链路状态、Router-id信息等,并将这些内容宣告给所有能宣告到的路由器,在DR/BDR模式下则转为发给DR和BDR,再有其转发给DROther

有关二类LSA的补充说明:

由于其宣告者为DR,故而只有存在DR和BDR的OSPF中才会产生二类LSA,二类LSA就是DR在收集了整个区域内的路由和链路状态信息后,将其以Router-id和掩码的形式宣告给所有DROther的条目,一般是整个区域内有一个独立的网络段则生成一条二类LSA。

有关三类LSA的补充说明:

其宣告的内容是当前ABR的区域内所有路由的汇总,并将其宣告给(若存在)下一个ABR,下一个ABR则会将其Adv Router字段更改为自己,继续执行相同的操作,直到所有ABR都被宣告为止。收到该LSA并记录的路由器,会记录为IA标识,意为域间路由。

**有关四类LSA的补充说明:

其只有在产生了五类LSA的OSPF网络中才会生成,宣告的内容是前往ASBR路由器的路由。宣告者则和三类LSA很像,是一个类似递归的过程,它会由距离ASBR最近的ABR始发产生,通过该ABR传递给改区域内的所有路由器包括下一个ABR,以此类推直至除开ASBR所在区域外的所有路由器都拥有该LSA后结束。那么为什么OSPF链接正常的情况下,我们需要重新依靠LSA来告知其他路由器ASBR的位置呢?其实这跟五类LSA的宣告内容有关,五类LSA的宣告内容中,Ads Router标识的是该ASBR的Router-id,并非前往该路由器的路由,那么这就导致除开该ASBR区域内的路由器外,所有的路由器都不能确定使用该Router-id其ASBR的位置,因为ospf内默认下并没有路由指向其他区域的具体Router-id,三类LSA产生的是网段形式的路由条目,只有在一个区域内,我们才能通过一类或者二类获取对应Router-id的路由。故此,我们需要一个解决办法,这就是四类LSA的作用,该LSA通过在每个ABR上递归更变自己Adv Router的方式,来告诉其他区域如何走到ASBR所在的区域,那么获取到四类LSA就相当于获取了产生五类LSA的对应ASBR其位置,我们只需要将从五类学习到的路由条目的下一跳指向自己的ABR即可,剩下的ABR会帮我们解决,直至到达ASBR所在的区域为止。

有关五类LSA的补充说明:

其宣告的内容是该个AS区域外的路由协议重发布后汇聚到该路由器上的通向外部网络的路由,故该LSA只有在整个OSPF的边界上才会产生。收到该LSA并记录的路由器,会记录为E标识,意为域外路由。

需要注意的是,上图所示的E标识为E2标识,还有一种为E1,大体区别在于E2默认metric为20,而E1则是计算值,默认为E2

有关七类LSA的补充说明:

有关其他类LSA

其中6和8几乎不被使用,剩下的9、10、11为不透明LSA,如下:

  • Type9 仅在接口所在的网段范围内泛洪(支持GR的Grace LSA就为其中的一种)
  • Type10 在区域内泛洪(用于支持TE、SR-MPLS的LSA就是其中的一种)
  • Type11:在AS内泛洪

LSA的运作

在LSA被通过泛洪LSU报文宣告给一个路由器的时候,路由器不会直接将其写入自己的LSDB中,而是会经过一个版本检测,检测该条LSA是否存在在本地LSDB中,或者是否比自己LSDB中的LSA版本更新,如若是则更新进自己的LSDB中,否则判断忽略或者向源地址发送最新版本的该条LSA,如下:

Sequence number—-序列号

  • 具有最高序列号的,LSA越新
  • 序列号是0x8000 0001 ~ 0x7FFF FFFF
  • LSA每30min钟泛洪一次,序列号就加1

checksum————-校验

  • 检验LSA的内容以及确定LSA是否是最新的
  • 校验越大,LSA越新

判断LSA的版本新旧

  • Seq越大的越新
  • Seq相同,则比较Checksum,越大越新
  • checksum相同,判断LSA age,age为3600s为最新(用于删除此LSA)
  • LSA age都不为3600s,则判断LSA age的差值。差值大于900s,小的最新。差值小于等于900s,LSA的新旧相同(此LSA不需要交换)

确定一个唯一的LSA

  • LSA Type—————-LSA类型                                 
  • Link State ID————链路状态ID
  • Advertisting Router—-通告路由器的Router-ID

路由汇总

OSPF路由汇总分为域间路由汇总和外部路由汇总

域间:

  • 只能在ABR上执行
  • 只能对直连区域的路由做汇总(即对区域内的路由做汇总)
  • 汇总的默认开销继承明细路由中开销最大的
  • 当明细路由全部失效时,汇总路由会失效
  • 当一个区域有多个ABR时,每个ABR上都要做汇总,否则失去汇总效果

外部:

  • 只能在ASBR上执行
  • 只能对外部路由(引入的路由)做汇总
  • 汇总路由的开销类型继承明细路由的开销类型,当明细路由的开销类型不一致时,类型为Type 2
  • 当明细路由全部失效时,汇总路由会失效
  • 在NSSA区域的外部路由汇总,可以在NSSA区域的ASBR上执行,也可以在NSSA区域的ABR上执行(7转5)

缺省路由

缺省路由是指目的地址和掩码都是0的路由。当设备无精确匹配的路由时,就可以通过缺省路由进行报文转发。由于OSPF路由的分级管理,Type3缺省路由的优先级高于Type5或Type7路由。

OSPF缺省路由通常应用于下面两种情况:

由区域边界路由器(ABR)发布Type3缺省Summary LSA,用来指导区域内设备进行区域之间报文的转发。
由自治系统边界路由器(ASBR)发布Type5外部缺省ASE LSA,或者Type7外部缺省NSSA LSA,用来指导自治系统(AS)内设备进行自治系统外报文的转发。

OSPF缺省路由的发布原则如下:

OSPF路由器只有具有对区域外的出口时,才能够发布缺省路由LSA。
如果OSPF路由器已经发布了缺省路由LSA,那么不再学习其它路由器发布的相同类型缺省路由。即路由计算时不再计算其它路由器发布的相同类型的缺省路由LSA,但数据库中存有对应LSA。
外部缺省路由的发布如果要依赖于其它路由,那么被依赖的路由不能是本OSPF路由域内的路由,即不是本进程OSPF学习到的路由。因为外部缺省路由的作用是用于指导报文的域外转发,而本OSPF路由域的路由的下一跳都指向了域内,不能满足指导报文域外转发的要求。


OSPF支持的网络类型

ospf支持大量常用或不常用的网络类型,其主要分为以下几种:

广播类型(Broadcast)

当链路层协议是Ethernet或FDDI(Fiber Distributed Digital Interface)时,缺省情况下,OSPF认为网络类型是Broadcast。

通常以组播形式发送Hello报文、LSU报文和LSAck报文。其中,224.0.0.5的组播地址为OSPF设备的预留IP组播地址;224.0.0.6的组播地址为DR/BDR的预留IP组播地址。

以单播形式发送DD报文和LSR报文。

NBMA类型(Non-Broadcast Multi-Access)

当链路层协议是帧中继或X.25时,缺省情况下,OSPF认为网络类型是NBMA。

在该类型的网络中,以单播形式发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。

点到点P2P类型(Point-to-Point)

当链路层协议是PPP、HDLC或LAPB时,缺省情况下,OSPF认为网络类型是P2P。

在该类型的网络中,以组播形式(224.0.0.5)发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。

点到多点P2MP类型(Point-to-Multipoint)

没有一种链路层协议会被缺省的认为是P2MP类型。点到多点必须是由其他的网络类型强制更改的。常用做法是将非全连通的NBMA改为点到多点的网络。

以组播形式(224.0.0.5)发送Hello报文。

以单播形式发送其他协议报文(DD报文、LSR报文、LSU报文、LSAck报文)。

特殊区域

特殊区域的作用

  • 减少区域内LSA的数量
  • 减少路由表的数量

特殊区域的局限性

  • 特殊区域可能会产生次优路径
  • 特殊区域不能配置虚拟链路
  • 骨干区域不能配置为特殊区域

特殊区域的类型

主要有四种特殊区域 Stub区域、Totally Stub区域、NSSA区域、Totally NSSA区域

Stub区域和Totally Stub区域

Stub(末节)区域的特点

  • 不允许5类LSA在该区域泛洪(即该区域没有5类LSA)
  • 该区域也不会产生4类LSA
  • 该区域存在3类LSA,并且ABR路由器会自动产生一条三类的缺省路由在本区域泛洪,用于访问外部网络(产生的三类缺省路由的缺省开销为1;通过更改引入是的缺省开销,可以防止次优路径出现)

注意

  • 末节区域的ABR还是拥有5类LSA的(该5类是从骨干区域学来的,不是自己产生的,在建立Full关系时,不在Stub区域内进行5类LSA同步)
  • 该区域的所有内部路由器以及该区域的ABR都要配置为末节区域才可以建立邻居

Totally Stub(完全末节)区域的特点

  • 相比于Stub区域,增加了一条限制,区域内不允许产生3类LSA,其余都与Stub区域一致

注意

  • Totally Stub的配置相比于Stub,只需要将ABR设备的区域类型配置为Totally Stub就可
  • 区域内的其它设备只需要配置为Stub区域

NSSA区域和Totally NSSA区域

NSSA(不完全的末节)区域的特点

  • 不允许5类LSA在该区域泛洪(即该区域没有5类LSA)
  • 该区域也不会产生4类LSA
  • 该区域存在3类LSA,并且不会生成缺省的3类LSA
  • 相比于Stub区域,允许本区域的ASBR引入外部路由,但是以7类LSA的类型存在
  • NSSA区域产生一条7类LSA的缺省路由去访问外部网络
  • 当NSSA区域引入外部路由时,7类LSA在NSSA区域的ABR路由器上将7类转为5类LSA在其它区域泛洪(7转5)–如果NSSA区域有多个ABR,则router-id大的ABR去做7转5

注意

  • 7类LSA只能在NSSA区域泛洪
  • 在部分特殊场景下,NSSA区域的ABR不会对7类做转换(可以使用命令强制做7转5)
  • 该区域的所有内部路由器以及该区域的ABR都要配置为NSSA区域才可以建立邻居
  • 通过P字段置位来告知路由器是否将7转5(置位表示需要进行转换)
  • 边界路由器不计算对方发来的缺省路由,避免存在多个ABR时产生路由环路

Totally NSSA区域的特点

  • 相比于NSSA区域,增加了一条限制,区域内不允许产生3类LSA,会自动生成一条缺省的3类LSA,其余都与NSSA区域一致

注意

  • Totally NSSA的配置相比于NSSA,只需要将ABR设备的区域类型配置为Totally NSSA即可
  • 区域内的其它设备只需要配置为NSSA区域

不规则区域

根据RFC 2328,在部署OSPF时,要求所有的非骨干区域与骨干区域相连,否则会出现有的区域不可达的问题。但是在实际应用中,可能会因为各方面条件的限制,无法满足所有非骨干区域与骨干区域保持连通的要求,此时可以通过配置OSPF虚连接来解决这个问题。

Area 2没有连接到骨干区Area 0,所以RouterA不能作为ABR向Area 2生成Area 0中Network1的路由信息,所以RouterB上没有到达Network1的路由。此时可以考虑部署虚连接来解决这个问题。

通过虚连接,两台ABR之间直接传递OSPF报文信息,两者之间的OSPF设备只是起到一个转发报文的作用。由于OSPF协议报文的目的地址不是这些设备,所以这些报文对于两者而言是透明的,只是当作普通的IP报文来转发。

虚连接相当于在两个ABR之间形成了一个点到点的连接,因此,虚连接的两端和物理接口一样可以配置接口的各参数,如发送Hello报文间隔等。为虚连接两端提供一条非骨干区域内部路由的区域称为传输区域(Transit Area)。配置虚连接时,必须在两端同时配置方可生效。

然而,虚连接的存在增加了网络的复杂程度,而且使故障的排除更加困难。因此,在网络规划中应该尽量避免使用虚连接。虚连接仅是作为修复无法避免的网络拓扑问题的一种临时手段。虚链路可以看作是一个标明网络的某个部分是否需要重新规划设计的标志。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇