您好,欢迎来到哗拓教育。
搜索
您的当前位置:首页正文

动态路由-OSPF一文详解

来源:哗拓教育
动态路由-OSPF⼀⽂详解

动态路由

在之前的⽂章中,介绍了基于。⽽在今天这这⼀部分中会主要讲解链路状态的路由协议,对于动态的路由协议来说,需要具备如下的能⼒:发现远端⽹络

路由器可以直接获得直连路由,这是由路由器的接⼝ IP 地址得到。动态路由能够⾃动学习远端⽬的路由条⽬。维护和更新路由信息

路由信息保存在路由器的路由表中。但路由的情况有时会发⽣变动。动态路由⽀持⾃动更新这些变化在多个到达⽬的⽹络的路径之中选择最优路径

有时,路由协议会计算出到达同⼀⽬的⽹络的多条可⽤路径,路由协议需要有办法在多条路径之中选出最优的⼀条⽤于转发数据。在当前路径不可⽤时发现⼀条新的可⾏路径的能⼒

我们给这种过程(⽹络发⽣变化后,路由协议重新对路由进⾏计算并与其它路由器交换路由信息)起了⼀个名字,叫收敛。收敛的最终结果是⽹络重新回到⼀个稳定的正确的⼯作状态。收敛的速度越快越好,是体现路由协议性能的重要指标。链路状态路由协议

在介绍具体 OSPF 协议前,先来⽐较⼀下链路状态路由协议和距离⽮量路由协议的区别:链路协议具有更好的扩展性,⽐如 RIP 只能最多有 15 台路由器,⽽ OSPF 没有这个限制。每个路由器都有⼀张完整的拓扑结构(LSDB)周期的触发更新(LSA,后⾯会提到)

在在拓扑有更新时,链路状态的反应速度会更快路由器之间可以交流更多的信息。链路状态协议的数据结构:

这⾥简单说⼀下过程,假设上⾯四台路由器中都遵从链路状态协议,在每台路由器启动后,会将 LSA 以泛洪的⽅式传递给其他路由器,进⽽在每个路由器中构建出完整的拓扑信息。然后按照最短路径的优先算法,以⾃⼰为树根,将到达其他⽹络的最优路径放⼊到路由表中。OSPF

OSPF 特性

开放是指 OSPF 是⼀种基于开放标准的路由选择协议,其中 OSPFV2 参考 RFC2328,OSPFV3 参考 RFC5340. 路径最短优先是指 OSPF 在路由选择上采⽤Dijkstra 所提出的最短路径算法。

OSPF 是基于链路状态的路由协议。(链路状态指这个路由器与哪些路由器相邻,以及它们之间链路的\"度量\")。OSPF 使⽤带宽、延迟、负载、距离和费⽤等多种元素来考虑度量,度量越⼩,代价越⼩。

每个使⽤ OSPF 的路由器中拥有整个拓扑,并且不传递路由,仅仅是发送链路状态通道 (LSA)。OPSF 使⽤触发更新加增量更新。(OSPF 有⼀个⾮常缓慢的周期更新)作为对⽐,RIP 使⽤周期更新加完整更新(RIP 也具有触发更新的机制)触发更新:当拓扑发⽣变化时,⽴即发送更新。周期更新:每经过⼀个时间周期,发送⼀次更新。增量更新:只发送变化部分的路由信息。完整更新:发送所有路由信息

OSPF 有可扩展性(适合⼤型⽹络-⼏百台),以及快速收敛的能⼒(但⽐ EIGRP 差,⽐ RIP 好)独⽴于传输层,数据包封装在 IP 报⽂中。⽀持 VLSM⽀持⼿动汇总⽀持认证⼯作原理

每个路由器回周期性的向相邻路由器发送探测报⽂(Hello 报⽂),检测其是否可达。如果邻站给予应答,说明链路正常;否则说明链路出现故障。如果⼀个路由器检测到某条链路状态协议发⽣变化,该路由器就发送链路状态更新报⽂,采⽤泛洪操作对全⽹更新链路状态。泛洪指某个路由器收到更新报⽂后都将这个报⽂发送给⾃⼰的相邻路由器,直到报⽂送到整个⽹络

即使链路状态没有发⽣变化,每隔 30min 路由器要向⽹络中的其他路由器⼴播链路状态信息,以保证链路状态数据库和全⽹保持⼀致。

每个路由器收到其他路由器的链路状态信息后,更新链路状态数据库,构建整个⽹络的拓扑图,利⽤ Dijkstra 的最短路径算法计算出到达每个⽹络的最短路径(就是路由表中的内容)。⼯作过程

链路状态路由协议的主要⼯作原理是:

通过让拓扑中的每台路由器都在整个拓扑的范围内泛洪⾃⼰的链路状态通告(LSA),每台路由器都会获得整个拓扑中其它所有路由器的 LSA。

⽤这些 LSA ⽣成全拓扑统⼀的链路状态数据库(LSDB),再使⽤ SPF 算法计算出⼀个 SPF 树(每台路由器以⾃⼰为起点到达拓扑中所有⼦⽹的树形结构)。然后将最优的路径装载到路由表中。

这个⼯作过程类似于拼图。每台路由器⽣成的 LSA 相当于⼀块地图的碎⽚,⽤可靠的机制泛洪这些地图碎⽚后,每个路由器都能获得⼀个整张拓扑的地图,这个地图就是 LSDB。总结就是如下过程:

发现邻居,建⽴并维护邻居关系

⽣成 LSA,每台路由器都会⽣成⾃⼰的 LSA

泛洪 LSA,使⽤ OPSF ⾃⾝具备可靠传输能⼒将 LSA 泛洪到区域中的其它路由器上将收到的 LSA 组装成LSDB,根据 SPF 算法计算出到达拓扑中所有⽹络的最短路径将计算得出的路由装载到路由表OSPF 问题 - 分层架构的出现问题

OSPF 在很多⽅⾯有着很⼤的优势,但也存在着问题随着⽹络规模越⼤资源消耗呈指数增长,限制扩展性。⽹络的带宽和资源的消耗会随着设备数量的增加⽽增加,因为每台路由器都需要维护 LSDB 的最新状态,以及当发⽣更新时,进⾏泛洪的通告。解决⽅式

OSPF使⽤两级区域划分,所有区域被分为普通区域和⾻⼲区域。区域⽤⼀个 32bit 的数来进⾏标识。可以⽤点分⼗进制的⽅法,也可以直接⽤⼀个⼗进制数标识。唯⼀需要注意的,⾻⼲区域区域号固定为0。⾻⼲区域只有⼀个,且必须连续。

区域在进⾏规划的时候,⼀般要根据⼀个区域内路由器的型号,性能,以及负载来进⾏设计,通常⼀个区域中的路由器数量为30到100台左右。区域在进⾏规划的时候,⼀定要注意,所有普通区域必须与⾻⼲区域直接相连。这样要求主要是为了 OSPF 区域间防环。由于 SPF 算法本⾝可以保证 OSPF 在区域内部⽆环路,所以区域间防环主要依靠⽹络设计来解决。因为 OSPF 在区域间使⽤类似距离⽮量路由协议的路由传递⽅式,所以不能保证没有环路,

所以区域之间采星型的拓扑结构,通信都要经过⾻⼲区域,区域与区域之间⽆法单独通信,进⽽⽆法形成环路。进⽽将路由器分成了⼏类:

区域内部路由器(所有的接⼝都位于同⼀区域)

区域边界路由器(ABR)(有不同的接⼝位于不同的区域且其中⼀个为⾻⼲区域)。ABR 路由器的性能要求更⾼,因为需要同时装载不同区域的 LSDB。⾃治系统边界路由器(ASBR)(进⾏重分布操作,将其它路由器源学习到的路由引⼊ OSPF 的路由器)⾻⼲路由器(BR)(只有⼀个接⼝位于⾻⼲区域)

这样的设计,是每个路由器仅装载本区域的 LSDB,⼤⼤提升了效率。⽽对于 ABR 这样的路由器来说,由于横跨多个区域,所以需要装载不同的区域的路由

器,⾃然要求的性能也⽐较⾼。在访问不同的区域的⽹络时,不需要传递 LSA,⽽是传递路由信息,使得效率进⼀步提⾼。OSPF 报⽂类型

Hello 报⽂,⽤于 OSPF 邻居动态发现,邻居参数协商,邻居关系维护。DBD 报⽂,数据库描述。

⽤于传递 LSDB 摘要信息,实际上是 LSDB 中 所有 LSA 的头部信息。OSPF 路由器通过交换 DBD 报⽂,来统计⾃⼰缺少的 LSA 并向对端发送 LSR 报⽂进⾏请求

⽤于主从路由器的选举

LSR 报⽂,⽤于向邻居请求⾃⼰ LSDB 中没有的 LSA

LSU 报⽂,LSU ⽤于给邻居发送它们请求的 LSA,只有 LSU 报⽂中会包含完整的 LSA

LSAck 报⽂,LSAck ⽤于向邻居确认收到的 LSU,如果没收到 LSAck 的话,邻居会不断重传请求的 LSU。注意区分 LSA 和 LSAck注意 LSA 本⾝不是报⽂邻居与邻接

OSPF 邻居关系,分为邻接和邻居两种。LSA 只在邻接关系的邻居之间同步,普通邻居关系之间不同步 LSA 信息。邻居关系:路由器之间仅通过 Hello 报⽂,知道⽬前处于同⼀区域。邻接关系:在邻居关系的基础上,DR 和 BDR 之间互相发送 LSA。

我们知道,在运⾏着多台 OSPF 的路由器中,为了让对⽅能够发现⾃⼰,需要互相发送 HELLO 消息,建⽴邻居关系。接着发送在路由器之间传送 LSA 碎⽚。但这就有⼀个问题,由于每台路由都需要知道完整的拓扑信息,所以所有路由器都需要⼴播和接受 LSA 的碎⽚,假设有 n 个路由器之间连接邻接关系,那么将需要建⽴ n(n-1)/2 个邻接关系。这⽆疑是对⽹络资源的很⼤损耗。

为了解决这个问题就提出了⼀个 DR 和 BDR 的概念,将路由器的类型分为三种:DR: 选举成功的路由器 - 理解成掌门

BDR:作为backup 的路由器 - 理解成副掌门,时刻监听掌门状态,掌门⼀死,副掌门就是掌门。Other:未选举成功的其他路由器。

接着在⼀个多路访问链路上,所有的路由器都需要与 DR 路由器建⽴邻接关系,同时也要与 BDR 路由器建⽴邻接关系,DR Other 之间,只建⽴邻居关系,不会同步数据库信息。换句话说,区域中的普通路由器只和⽼⼤和⽼⼆建⽴关系。进⽽依靠这种⽅式降低 OSPF 进程对路由器资源占⽤的。OSPF 建⽴邻居过程

Hello 报⽂:⽤于动态邻居发现,邻接参数协商,邻接关系保持。

动态邻居发现:OSPF 的邻居关系,在⽀持⼴播(⽀持组播)的链路上,可以⾃动建⽴,⽽不需要管理员进⾏显式配置。通过向组播地址(224.0.0.5)发送OSPF Hello 包,OSPF 能动态发现链路上的其它 OSPF 路由器。Other -> DR/BDR 组播发送:224.0.0.6

DR -> Other 组播发送:Other 会监听 224.0.0.5 的 IP,接受 DR 的 LSA选举步骤:

判断⽹络中是否有 DR 和 BDR:

如果⽹络中有 DR,BDR 新加⼊的路由要承认如果有 DR,没有 BDR,选择 BDR

没有 DR,有 BDR,则 BDR 晋升为 DR,选举 BDR选举 DR 和 BDR 的过程:

区域内中所有路由器发送 Hello 报⽂,进⾏ PK 选举出 BDR。

原则是先⽐较 Hello 报⽂中的优先级(0 - 255),其次 Router ID。称为BDR后,监听⽹络中是否存在 DR,没有再晋升为 DR.

如果想要重新选举,则要重启 OSPF 进程。如果是两个运⾏ OSPF 的⽹络整合在⼀起,如果都存在 DR 和 BDR,则两个⽹络中 DR 和 BDR 同层次进⾏⽐较。选举成功后:

DR Other 和 DR,BDR 之间是邻接关系DR 和 BDR 之间是邻接关系DR Other 之间是邻居关系

DR other 监听组地址是 224.0.0.5

DR BDR 监听组地址 224.0.0.5, 224.0.0.6(BDR 和 DR 之间通信)邻居协商参数

Router-ID,路由器标识符。两台路由器想建⽴ OSPF 邻居关系,Router-ID 必须不同。Router-ID 可以由管理员进⾏⼿⼯配置,⼀个点分⼗进制的 32bit 值。如果管理员没有显式配置 Router-ID,路由器获取⾃⾝最⼤的环回接⼝ IP 地址作为⾃⼰的 Router-ID

如果没有配置环回接⼝,则获取最⼤物理接⼝ IP 地址作为⾃⼰的 Router-ID。推荐对 Router-ID 进⾏⼿⼯配置。

Hello Interval&Dead Interval,Hello 计时器和死亡计时器。默认在⾼速链路上,为10秒 40秒。当 Hello 计时器超时,路由器将发送Hello 报⽂,当死亡计时器超时,路由器将会断掉与该邻居的邻居关系。⽽每次从邻居收到 Hello 报⽂将重置死亡计时器。建⽴邻居关系的路由器要求拥有完全⼀致的 Hello 和 DeadInterval。

Active Neighbors,活跃邻居,⼀个发送 Hello 报⽂路由器的邻居列表。

Area ID,区域号,代表该接⼝属于哪个 OSPF 区域。建⽴邻居关系的两个路由器(两个接⼝)必须属于同⼀个区域。

Router Priority: 接⼝的优先级,影响 DR,BDR 选举。越⼤越好,默认为 1,最⼤为 255,当优先级为 0 时,代表不参与 DR,BDR 选举。

DR 指定路由器,BDR 备份指定路由器。在每个链路上通过选举产⽣,路由器优先级越⼤越好,当优先级都相等时,选举 Router-ID 最⼤的路由器。

Authentication Type&Date,认证类型与认证数据,认证类型指⽰邻居关系使⽤什么⽅式进⾏认证(空:不认证,明⽂认证,MD5 摘要认证),默认使⽤空认证且不携带认证数据。认证类型或认证数据不⼀致都会导致 OSPF 邻居建⽴失败。Stub Area Flag 末节区域标记,建⽴邻居的路由器必须拥有完全⼀致的末节区域标记。OSPF状态机-建⽴邻接状态过程建⽴邻居关系:1. Down 初始状态

与邻居之间的接⼝没有宣告 OPSF 进程。某些情况下也会让邻居处于 DOWN 的状态⽐如链路两端分别为点到点和点到多点⽹络类型2. Init 初始化状态

从邻居收到⼀个 Hello 包,其中不包含⾃⼰的 Router-ID。会让⾃⼰处于初始化状态。如果链路存在单向链路问题,会让邻居关系保持在初始化的状态⽆法继续向前迁移。

3. Attempt(NBMA)尝试状态

每 poll 时间(120秒)向对⾯发送⼀个 Hello 包尝试建⽴⼀个邻居关系。只在低速的 NBMA 链路上出现。3. 2-WAY 双向通信状态

收到邻居发来的 Hello 包,且其中包含⾃⼰的 router-id,则认为与邻居之间的双向通信已经建⽴,进⼊ 2-WAY 状态。2-WAY 状态邻居两端需要进⾏如下操作:先判断⽹络类型,是否需要选举 DR,BDR

如果不需要选举 DR,BDR,则直接转换到 EX-START。如果是⼴播型或 NBMA ⽹络,则选举 DR, BDR。判断邻居之间是否需要建⽴邻接关系。这个是邻居路由器之间的稳定⼯作状态。

当 DR,BDR 选举结束,且邻居之间需要建⽴邻接关系,则继续向 ExStart 状态迁移。建⽴邻接关系:

4. ExStart

该状态下路由器的主要任务是选举主从路由器主导 DBD 的交互。发送空的,标志位置位情况为 111 的 DBD 报⽂来进⾏主从选举, 确定初始序列号,⽐较接⼝MTU.

当从路由器发出标志位置位情况为 010 或 000 的报⽂后,则进⼊ Ex-Change 状态。如果接⼝的 MTU 设置不⼀致,则邻居关系会停留在 ExStart 状态为什么要进⾏主从的选举?

想象有 R1,R2 两台路由器。其中 R1 共有 1000 个 LSA 碎⽚,对应 DBD 假设共有 10 个。⽽ R2 有 300 个 LSA 碎⽚,DBD 有 3 个。假设只能⼀次发送⼀个DBD. 如果没有主从关系的话,R1 和 R2 直接会向对⽅发送,但这就存在对⽅可能没有收到的情况,到时数据库不⼀致。

但如果先选择了主从关系后,这⾥假设 R1 为主,R2 为从。这时 R1 需要给 R2 发送 10 个 DBD。R2 需要给 R1 发送 3 个 DBD。由 R1 先给 R2 发送第⼀个DBD 报⽂,R2 收到后将⾃⼰的 DBD 报⽂再发送 R1。R2 给 R1 恢复,表明两件事。第⼀之前的 DBD 我收到了。并把⾃⼰的 DBD 发送 R1。R1 收到后给 R2发送第⼆个 DBD 报⽂,同样表⽰之前的 DBD 收到了,下⾯是序号为 2 的 DBD 报⽂。假设某次没有收到对⽅的回复,则会重复发送。这样就保证了可靠性。如果想 R1 和 R2 DBD 数量不对等的情况,如第三次 R2 给 R1 发送了序号为 3 的 DBD 报⽂,⾃⼰所有的 DBD 都已经发送 R1了。之后再给 R1 的回复中就是空报⽂,表⽰ R1 给⾃⼰的报⽂收到了,并且⾃⼰已经没有要发送的报⽂了。5. ExChange

通过发送 DBD 报⽂,同步数据库结构。

当主发出 001,从回复 000 报⽂的时候,DBD 报⽂交互结束。根据链路状态请求列表的情况,进⼊ Loading 或者 Full 状态。Loading 继续发送 LSR,请求数据库中缺少的 LSA。同步数据库。

Full 数据库同步完成。⼀个邻接关系成功建⽴。Full 是邻接关系的稳定⼯作状态。在哪些情况下需要选举 DR,BDR?

根据链路类型进⾏选择 (点对点不选,以太⽹线选)为什么要在多路访问⽹络当中选举 DR,BDR ?

为了减少邻接关系的数量,减少 LSA 的泛洪流量,减少 CPU 资源和链路带宽的占⽤。如何选举 DR, BDR?

根据接⼝优先级。优先级越⼤,越可能称为 DR。默认优先级为 1,优先级为 0 时,代表不参与选举。如果优先级相同,则⽐较 Router-ID 来进⾏选举,Router-ID ⼤的路由器,成为 DR6. Loading State:

加载收到的 DBD 的内容,发现本地缺少的 LSA,接着取请求需要的 LSA。收到 LSR 报⽂,回复 LSU 报⽂。7. Full State

回复对⽅收到了需要的 LSA。回复 LSAck 报⽂。OSPF 邻居⽆法建⽴原因汇总

邻居路由器发送的 HELLO 包中,Router-ID 字段相同

邻居路由器发送的 HELLO 包中,Area-ID 与本端接⼝ Area 宣告不⼀致,邻居⽆法建⽴邻居两端认证类型不⼀致,邻居⽆法建⽴邻居两端认证数据不⼀致,邻居⽆法建⽴

邻居两端接⼝掩码配置不⼀致,邻居⽆法建⽴

邻居两端的 Hello-interval 配置必须⼀致,否则邻居⽆法建⽴邻居两端的 dead-interval 配置必须⼀致,否则邻居⽆法建⽴如果邻居两端末节区域标记不⼀致,则邻居⽆法建⽴抓包 OSPF 通信过程选取 DR 和 BDR 的区别

这⾥⾸先假设 R1,R2,R3 已经配置了 OSPF 的协议。

这时我们将 R1 宣告的 12.1.1.0 ⽹络删除掉,在 R2 查看邻居状态:Router#show ip ospf neighbor

Neighbor ID Pri State Dead Time Address Interface34.1.1.1 1 FULL/DR 00:00:31 23.1.1.2 Ethernet0/112.1.1.1 1 FULL/BDR 00:00:39 12.1.1.1 Ethernet0/0可以看到, 没有⽴马消失,在 Dead time 到达 0 时,会将 12 ⽹络删除。

之后在 R1 ⽹络上重新宣告,在 R2 上可以看到,⾮常快就建⽴邻接关系成功了:Router#show ip ospf neighbor

Neighbor ID Pri State Dead Time Address Interface34.1.1.1 1 FULL/DR 00:00:30 23.1.1.2 Ethernet0/112.1.1.1 1 FULL/BDR 00:00:38 12.1.1.1 Ethernet0/0

但是如果我们把,R1 和 R2 宣告的 12 ⽹络都删掉,再重新宣告,就会发现状态卡在 2-Way 状态很长时间:Router#show ip ospf neighbor

Neighbor ID Pri State Dead Time Address Interface34.1.1.1 1 FULL/DR 00:00:35 23.1.1.2 Ethernet0/1

12.1.1.1 1 2WAY/DROTHER 00:00:33 12.1.1.1 Ethernet0/0

这⾥卡成的时间,是在选举 DR 和 BDR,可见 DR 和 BDR 的选举在是⾮常影响⽹络的性能的。链路的状态变化

从 down 状态到 init 状态:

可以看到这时发送的 Hello 包发往 224.0.0.5 组播地址。并且报⽂⾥,没有记录活跃的邻居。init 到 2-way 状态:

这时 R1 收到了 R2 的 Hello 报⽂,并告诉对⽅我的邻居是你,这时就可以成为 2-Way 状态了。对应就是 Active Neighbor 字段,这⾥是 23.1.1.1 是因为 R2 的router-id 没有指定,也没有 loopback 接⼝,所以⽤的是物理接⼝。2-way到 exstart状态:

红框的部分,就是通过发送空的 DBD 报⽂,置位 111 进⾏主从选举的过程。Exchange状态到 Full 状态:

R1 发送 LSR 报⽂,获取缺少的链路状态。R2 回复 LSU 报⽂。之后发送 LSU 到组播,然后对⽅进⾏ Ls Ack 进⾏确认。OSPF 基本 Headerversion: ospf 版本

Message Type: 共有五种报⽂

Packet Length:包括 Header Ospf 总长度Source OSPF Router:发送者的 Router-idArea ID:发送接⼝表⽰所在区域Checksum: 整个数据包的校验和Auth Type:

0:没有认证1:明⽂认证2:MD5 认证

Auth Data: 所需要的认证信息Hello 报⽂

Network Mask: 发送接⼝的⽹络掩码

Hello Interval [sec]: Hello 报⽂发送的时间间隔Options: OSPF 启⽤的功能

Router Priority: 优先级,⽤于 DR 和 BDR 的选举Router Dead Interval [sec]: 路由失效周期Designated Router: 选举出的 DR IP

Backup Designated Router: 选举出的 BDR IP

Active Neighbor: 当前的邻居,在刚开始的 Hello 包中并没有DBD 报⽂

空 DBD ⽤于选举:

正常 DBD ⽤于同步状态:

Interface MTU: 在数据包不分⽚的情况下,始发路由器接⼝可以发送的最⼤ IP 数据包的⼤⼩,如果 MTU 不⼀致,会导致邻接关系⽆法建⽴Options: OSPF 启⽤的功能DB Description:R:保留位

I:Init = 1,代表此报⽂⽤于选举主从,I = 0,表⽰主从选择完毕,发送带摘要信息的 DBD.M:M = 1,表⽰ DBD 并未发完,后续还有。M = 0,报名此 DBD 报⽂最 last DBD.MS: 表⽰主从位,MS=1 为 Master,=0 为 Slave.

DD Sequence: DBD 的序列号,主从双⽅利⽤序列号来确保DD报⽂传输的可靠性和完整性LSA - type: LSA 头部信息LSR 报⽂

LS Type: LSA 种类

Link State ID:根据 LS Type ⽽变化

Advertising Router: 始发这条 LSA 的路由器的 Router Id.LSU 报⽂

number of LSAs: 包含 LSA 的数量LSA :具体的 LSA 信息LS ACK 报⽂OSPF ⽹络类型

Point-to-Point:点到点⽹络,不需要选择 DR 和 BDR。当链路层协议为 PPP 和 HDLC 时,缺省情况下,OSPF 认为⽹络类型为 P2P. 这种⽹络类型⼯作在只有两个节点的环境中,彼此之间不⽤选择 DR,建⽴邻居关系后,之间开始数据库同步,收敛较快。在此⽹络类型中,以组播 224.0.0.5 发送协议报⽂(Hello,DBD,LSR,LSU,LSAck.)

Broadcast:当⼆层协议为以太⽹协议(Ethernet),缺省情况下 OSPF 认为⽹络为⼴播型,要求⽹络上的所有节点直接建⽴全互联的邻居,需要选 DR 和BDR,解决 LSA 泛洪的问题。以组播形式发送(Hello、LSU、LSAck),以单播形式发送(DBD、LSR)。Dother 监听 224.0.0.5. DR,BDR 监听 224.0.0.5,224.0.0.6.

NMA:⾮⼴播多路访问⽹络, ⼆层协议为帧中继,为低速⽹络,已经淘汰. 当链路层协议是帧中继、ATM时,缺省情况下,OSPF 认为⽹络类型是 NBMA。虽然FR 和 ATM ⽹络也是⼀种多点⽹络,但却⽆法像以太⽹⼀样,使⽤组播/⼴播地址发单播报⽂给所有节点,所以被称为NBMA⽹络。这种⽹络需要⼿⼯⽅式指定邻居,以单播形式发送协议报⽂(Hello、DBD、LSR、LSU、LSAck)。

P2MP:需要管理员⼿动配置,为帧中继⽹络使⽤.没有⼀种链路层协议会被缺省地认为是P2MP类型,点到多点必须是由其他⽹络类型强制更改的,P2MP⽹络类型是为多点的⽹络⽽设计的⼀种⽹络类型,它的最⼤好处就是它可适⽤于任何不规则的⽹络。它不需要DR,可看成任意多个P2P的⽹络。以组播形式发送Hello报⽂,以单播形式发送 DBD、LSR、LSU、LSAck.

P2MP-nobrocast:P2MP 的⼦类,帧中继⽹络,已经淘汰.思科特有, ⾪属于P2MP之下的⽹络类型,需要⼿动指定邻居(不⽀持⼴播或组播),以单播形式发送协议报⽂(Hello、DBD、LSR、LSU、LSAck)。

Loopback:环回⼝⽹络类型,会将环回⼝路由掩码设置为 /32. 通过修改⽹络类型来改变掩码。其中 P2P,Broadcast:发送 Hello 间隔为 10s

NMA P2MP P2MP-nobrocast :发送 Hello 周期为 120sLSA 类型

OSPFV2 中共有 6 中 LSA:Router LSA (TYPE 1)Network LSA (TYPE 2)

Network Summary LSA (Type 3)SABR Summary LSA (Type 4)AS-External LSA (Type 5)NSSA LSA(Type 7)从如下⾓度考虑 LSA:由谁始发传播范围作⽤

Router LSA : ⼀类 LSA

只要运⾏ OSPF,都会产⽣,在区域内传播,描述了路由器的链路状态和开销,可根据⼀类 LSA 还原拓扑结构LSA 头部:

Age:16 bit,后 15 位表⽰ age,最多在数据库存在 3600s,LSA 每 1800s 泛洪⼀次,最⾼位为 1 表⽰ LSA 在 LSDB 永不⽼化.Option: 表⽰ LSA ⽀持的可选性能

LS Type:标识 LSA 类型, 这⾥是类型1

Link State ID:产⽣该 LSA 路由器的 Router ID

advertising Router:产⽣该 LSA 路由器的 Router ID

Sequence Number:识别 LSA 新旧问题,初始值从Ox80000001 开始Checksum:对 Age 外的字段进⾏校验Length:包含 LSA 头部的 LSA ⼤⼩LSA 内容:Flags:

V:1 表⽰始发路由器是⼀条或者多条具有完全邻接关系的虚链路的端带E:1 表⽰始发路由是⼀个 ASBR 路由器B:1表⽰是 ABR 路由器

Number of links:链路的数量

Type:OSPF 定义了四种 Link 类型(根据⽹络类型不同)

Link Type

1P2P(P2P ⽹络)

Link ID

邻居路由器的 Router ID

Link Data⾃⼰接⼝ IP⾃⼰接⼝ IP⼦⽹掩码

2Transit(⼴播型⽹络)DR 的接⼝ IP 地址3Stub(描述环回接⼝)IP 所在⽹络4Virtual-Link

虚拟邻居路由器 Router ID本虚链路 IP

number of Metrics:开销 metricsNetwork LSA:⼆类 LSA

⽹络 LSA,由 DR 产⽣,区域内传播,描述了 DR 所在⽹络中的⽹络信息和拓扑信息LSA 头部:

Age:16 bit,后 15 位表⽰ age,最多在数据库存在 3600s,LSA 每 1800s 泛洪⼀次,最⾼位为 1 表⽰ LSA 在 LSDB 永不⽼化.Option: 表⽰ LSA ⽀持的可选性能

LS Type:标识 LSA 类型, 这⾥是类型 2Link State ID:DR IP 地址

advertising Router:产⽣该 LSA 路由器的 Router ID

Sequence Number:识别 LSA 新旧问题,初始值从Ox80000001 开始Checksum:对 Age 外的字段进⾏校验Length:包含 LSA 头部的 LSA ⼤⼩LSA 内容:

network mask:⽹络掩码,⽤于表⽰ Transit ⽹络使⽤的⽹络掩码

Attached:由哪些路由器连到⽹络中,列出 MA (multiple access多路访问,⼴播型) ⽹络中与 DR 形成邻接关系,包括⾃⾝的 ID.伪节点:⼆类 LSA 是 DR 代替伪节点产⽣的。为了⽅便表⽰⼴播⽹络中的 Metric 开销和表⽰。Network Summary LSA : 三类 LSA

由 ABR 产⽣,在区域内传播,描述区域内某个⽹段的路由。

由于 ABR 具有 Area 0 和 Are1 的两个数据库,为了传输的⽅便和性能,会将数据库的信息转换为路由信息进⾏传输。⽐如这⾥的 R2,会将 Area 0 的数据库转换为路由信息,发送给 Area1 ⾥的路由器。将 Area 1 的数据库转换为路由信息,发送给 Area0 ⾥的路由器。发送的报⽂就是⽹络汇总 LSA - 三类 LSA.Link State ID: ⽹络号

Network Mask:⼦⽹掩码Metric:度量值

Advertising Router:产⽣报⽂的路由器

在 R2 查看 3 类 LSA 信息,可以发现在 Area 0 中,⾃⼰产⽣了 12 ⽹段的路由信息。Router>show ip ospf database

OSPF Router with ID (2.2.2.2) (Process ID 100) Router Link States (Area 0)

Link ID ADV Router Age Seq# Checksum Link count2.2.2.2 2.2.2.2 329 0x80000004 0x00D40D 13.3.3.3 3.3.3.3 312 0x80000007 0x004032 24.4.4.4 4.4.4.4 245 0x80000005 0x00199F 1 Net Link States (Area 0)

Link ID ADV Router Age Seq# Checksum23.1.1.1 2.2.2.2 329 0x80000002 0x00EE1434.1.1.2 4.4.4.4 245 0x80000002 0x005D89 Summary Net Link States (Area 0)

Link ID ADV Router Age Seq# Checksum12.1.1.0 2.2.2.2 329 0x80000002 0x00FB2045.1.1.0 4.4.4.4 245 0x80000002 0x0011E1

在 R1 上查看引⼊的路由(区域间的路由,不是本区域的路由):AS-External LSA:五类 LSA

由 ASBR 产⽣,描述 AS 外部的路由信息,如果将外部路由在 OSPF 区域内,做了重分布(redistribute ), 则会在整个 OSPF (AS)内泛洪。

如 R6 中并没运⾏ OSPF,在 R6 的回环接⼝上配置 6.6.6.6/24 的 IP, 这时在 R5 就会通过静态路由的⽅式,通过重分布引⼊ AS,然后将去往 6.6.6.6/24 ⽹络的数据包通过 E0/1 转发给 R6.

在 R4 E0/1 抓包 ,可以收到五类 LSA 的更新:Link State ID:⽬标⽹络Netmask: ⽹络⼦⽹掩码

Advertising Router:始发该报⽂的 Router ID

Options - E 位: ⽤于更改引⼊ OSPF 外部路由的 Metric 计算⽅式

置位 1:为 E2 类型, 仅仅计算外部开销。在思科设备中,默认为 20,永远为 20.置位 0:为 E1 类型, 计算外部和内部开销.

Forwarding Address:转发地址,⽤于优化⽹络,解决⽹络中次优路由的问题(多台路由器接⼝,在同⼀⽹络)。转发地址为 0.0.0.0, 则会将数据包报转发⾄始发 ASBR 上。

在 ASBR 上,如果引⼊外部路由的外部接⼝不参与 OSPF,则为全 0转发地址⾮ 0 ,则会将数据包转发⾄ FA 地址。

在 ASBR 上,满⾜下⾯则 FA 不为 0,IP 为 是 ASBR 路由器 AS 外部邻居的接⼝ IP 地址ASBR 外部接⼝参与 OSPF

该接⼝⽹络类型不是 P2P 或 P2MP该接⼝不能是被动接⼝

ASBR Summary:四类 LSA

ABR 产⽣,描述到 ASBR 的路由,整个 AS 区域内传播(ASBR 区域除外).

这时考虑,当 R1 在知道五类 LSA 的信息后,知道要去往 6.6.6.0/24 ⽹络,需要找 Router-Id 为 5.5.5.5 的路由器。但由于并不知道 5.5.5.5 路由器的路由信息,所以就需要四类 LSA,要告知其需要的路由。由 ABR - R4 产⽣。在 R3 E 0/1 ⼝进⾏抓包:注意报⽂格式和三类 LSA ⼀样。AS External Link States - 7 类 LSA

由 ASBR 产⽣,描述 AS 外部路由,NSSA 区域内传播。

OSPF 特殊区域:在⼀些场景下,由于某些路由器的性能不⾼,不⾜以接受和计算特别⼤量的路由信息,减⼩链路状态数据库,会将这样的区域配置成特殊区域。

特殊区域的类型:

Stub 区域:末节区域,Stub 区域的 ABR 不传播接受到的⾃治系统外部路由。⼀般在该区域,只会有⼀类,⼆类,三类 LSA。默认情况下,Stub 区域中的 ABR 会向 Stub 区域⾃动通告三类 LSA OIA 的缺省路由。默认路由,开销值为 1.

完全 Stub 区域:在 Stub 区域的基础上,也不允许区域间的路由传播。不发送三类 LSA,仅有⼀类和⼆类的 LSA。配置时需要在所有 ABR 设备上进⾏ no-summary 配置。

NSSA 区域:Not So Stubby Area. 外部区域引⼊的路由不要,但是本⾝区域想要可以引⼊外部路由。NSSA 区域没有 LSA 5,但允许外部路由通告到 NSSA 区域。通过 NSSA 内的 ASBR 发送 LSA 7 类将外部路由通告到 NSSA 区域中。在 NSSA 区域内泛洪,存在 1,2,7 类 LSA。NSSA 区域不会通告默认路由,需要在 ABR 上⼿动下发路由

完全 NSSA 区域:完全⾮末节区域。不予许区域间路由进⼊,仅存在 LSA 1, 2, 7 和 LSA 3 类默认路由的信息。配置时需要在所有 ABR 设备上增加关键字 no-summary.

由于 7类 LSA 只能在 NSSA 区域内泛洪,需要 NSSA 区域 ABR 将 LSA7 转换成 LSA5 进⾏泛洪。如果存在多台 ABR,由 Router-Id ⼤的路由器泛洪。开销计算

OSPF 使⽤ Metric 作为度量值,Metric 越低,表⽰路径越好。默认情况下,接⼝的开销与接⼝带宽成反⽐。,带宽越⾼则开销越低。在思科设备上,OSPF 开销计算公式:Metric = 参考带宽 / 实际带宽默认参考带宽为 10^8 bit/scost = 10^8 / 10 mbps = 10cost = 10^8 / 100 mbps = 1cost = 10^8 / 1000 mbps = 0.1

但由于只能是整数,所以千兆链路也是 1 所以⽆法区分百兆和千兆链路。这⾥可以采⽤修改标准⽐如将 ⼗兆带宽的标准修改为 10^9 ,但需要注意的是,在所有的链路都要修改.修改⽅式:

如上修改参考带宽

修改接⼝开销,ip ospf cost(推荐)虚链路

虚链路通过在两台边界设备之间,穿越所属的⾮⾻⼲区域所建⽴的⼀条逻辑上的连接通道。让⾮⾻⼲区域连接到⾻⼲区域或⾻⼲区域被分割的情况。虚链路所穿越的区域称为传输区域。

⽐如下⾯的 R4 和 R2 之间连接的虚链路,让⾮⾻⼲区域连接到⾻⼲区域:或者像 R1 和 R4 所在 Area0 区域被分割的情况:在配置虚链路时需要注意:

在两端设备同时配置,并且处于同⼀区域。传输区域不能是特殊区域。

其中⼀台设备必须连接⾻⼲区域。

如果⾻⼲区域配置认证,虚链路也需要配置认证。配置

按照第⼀个图正常配置 OSPF 后,在 R3 和 R5 上查询 database:# 发现 Area3 区域的路由并没有收到R3#show ip ospf database

OSPF Router with ID (34.1.1.3) (Process ID 100) Router Link States (Area 2)

Link ID ADV Router Age Seq# Checksum Link count23.1.1.2 23.1.1.2 219 0x80000003 0x004575 134.1.1.3 34.1.1.3 117 0x80000005 0x003AFE 246.1.1.4 46.1.1.4 113 0x80000002 0x00155C 1 Net Link States (Area 2)

Link ID ADV Router Age Seq# Checksum23.1.1.2 23.1.1.2 219 0x80000001 0x00DEE234.1.1.3 34.1.1.3 117 0x80000001 0x00C5CA Summary Net Link States (Area 2)

Link ID ADV Router Age Seq# Checksum10.1.0.1 23.1.1.2 323 0x80000002 0x00729710.1.1.1 23.1.1.2 323 0x80000002 0x0067A110.1.2.1 23.1.1.2 323 0x80000002 0x005CAB10.1.3.1 23.1.1.2 323 0x80000002 0x0051B512.1.1.0 23.1.1.2 323 0x80000002 0x004DBB# 发现 Area0,1,2 区域的路由并没有收到R5#show ip ospf database

OSPF Router with ID (45.1.1.5) (Process ID 100) Router Link States (Area 3)

Link ID ADV Router Age Seq# Checksum Link count45.1.1.5 45.1.1.5 272 0x80000003 0x00F760 1

46.1.1.4 46.1.1.4 282 0x80000003 0x00E375 1 Net Link States (Area 3)

Link ID ADV Router Age Seq# Checksum45.1.1.4 46.1.1.4 282 0x80000001 0x001B4F

没有收到路由的原因就因为 R4 并不是 ABR,并不能传递区域间的路由,所以需要配置虚链路,让 R4 称为 ABR.# R2 配置

R2(config)#router ospf 100# 46.1.1.4 为 R4 的 Router-id

R2(config-router)#area 2 virtual-link 46.1.1.4# R4 配置

R4(config)#router ospf 100# 23.1.1.2 为 R2 的 Router-id

R4(config-router)#area 2 virtual-link 23.1.1.2

# 查询虚链路

R4#show ip ospf virtual-links

Virtual Link OSPF_VL0 to router 23.1.1.2 is up Run as demand circuit DoNotAge LSA allowed.

Transit area 2, via interface Ethernet0/0

Topology-MTID Cost Disabled Shutdown Topology Name 0 20 no no Base

Transmit Delay is 1 sec, State POINT_TO_POINT,

Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5 Hello due in 00:00:01

Adjacency State FULL (Hello suppressed)

Index 1/1/3, retransmission queue length 0, number of retransmission 0 First 0x0(0)/0x0(0)/0x0(0) Next 0x0(0)/0x0(0)/0x0(0) Last retransmission scan length is 0, maximum is 0

Last retransmission scan time is 0 msec, maximum is 0 msec

虚链路使⽤单播发送 hello 包建⽴邻居,建⽴成功后,Hello 包将不再发送。通过虚链路学到的 LSA,AGE 字段为 DNA,表⽰永不⽼化。认证

OSPF 提供认证功能,共有三种模式:不启⽤认证明⽂认证

MD5 密⽂认证

OSPF 有三种认证部署类型:接⼝认证区域认证虚链路认证接⼝认证

为 R1 E0/0 和 R2 E0/0 配置:明⽂认证:

# R1 开启明⽂认证R1(config)#int e0/0

R1(config-if)#ip ospf authentication me

R1(config-if)#ip ospf authentication-key 123456# R2 开启明⽂认证R2(config)#int e0/0

R2(config-if)#ip ospf authentication me

R2(config-if)#ip ospf authentication-key 123456密⽂认证:

R1(config)#int e0/0

R1(config-if)#ip ospf authentication message-digestR1(config-if)#ip ospf message-digest-key 1 md5 1234

R2(config)#int e0/0

R2(config-if)#ip ospf authentication message-digestR2(config-if)#ip ospf message-digest-key 1 md5 1234区域认证

为某个区域下同时配置认证,⽐如为 Area 0 区域,⽐在每个接⼝下配置认证更加⽅便:# R1 为 Are0 下的接⼝开启认证功能R1(config)#router ospf 100

R1(config-router)#area 0 authentication# 去接⼝下设置密码R1(config)#int e 0/0

R1(config-if)#ip ospf authentication-key 123# R2 为 Are0 下的接⼝开启认证功能R2(config)#router ospf 100

R2(config-router)#area 0 authentication# 去接⼝下设置密码R2(config)#int e 0/0

R2(config-if)#ip ospf authentication-key 123虚链路认证

当为⾻⼲区域配置了区域认证时,如果启⽤了虚链路,也要为虚链路配置认证,因为虚链路也需要⾻⼲区域虚链路明⽂认证:

R2(config)#router ospf 100

R4(config-router)#area 0 authentication

R2(config-router)#area 2 virtual-link 46.1.1.4 authentication

R2(config-router)#area 2 virtual-link 46.1.1.4 authentication-key 123123R4(config)#router ospf 100

R4(config-router)#area 0 authentication

R4(config-router)#area 2 virtual-link 23.1.1.2 authentication

R4(config-router)#area 2 virtual-link 23.1.1.2 authentication-key 123123密码认证:

R2(config)#router ospf 100

R4(config-router)#area 0 authentication

R2(config-router)#area 2 virtual-link 46.1.1.4 authentication message-digestR2(config-router)#area 2 virtual-link 46.1.1.4 message-digest-key 1 md5 1234R4(config)#router ospf 100

R4(config-router)#area 0 authentication

R4(config-router)#area 2 virtual-link 23.1.1.2 authentication message-digestR4(config-router)#area 2 virtual-link 23.1.1.2 message-digest-key 1 md5 1234路由汇总

汇总后将减⼩产⽣ 3 类 LSA 的数量,减少带宽,提⾼性能。区域间汇总

在 ABR 配置: Area1 的路由进⾏汇总# 在 R1 上配置

R1(config)#router ospf 100

# area 1 表⽰所需汇总路由的区域

R1(config-router)#area 1 range 10.1.0.0 255.255.252.0# 可加参数,进⾏路由过滤not-advertise

# 在 R2 查看

R2#show ip route

Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2

i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP a - application route

+ - replicated route, % - next hop override, p - overrides from PfRGateway of last resort is not set

10.0.0.0/22 is subnetted, 1 subnets

O IA 10.1.0.0 [110/11] via 12.1.1.1, 00:00:08, Ethernet0/0 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC 12.1.1.0/24 is directly connected, Ethernet0/0L 12.1.1.2/32 is directly connected, Ethernet0/0 23.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC 23.1.1.0/24 is directly connected, Ethernet0/1L 23.1.1.2/32 is directly connected, Ethernet0/1 34.0.0.0/24 is subnetted, 1 subnets

O 34.1.1.0 [110/20] via 23.1.1.3, 01:04:26, Ethernet0/1 45.0.0.0/24 is subnetted, 1 subnets区域外汇总

在 ASBR 配置: 将外部路由进⾏汇总后再重分布到上 OSPFR4(config)#router ospf 100

# 将 eigrp 中的路由重分布到 ospf 中R4(config-router)#redistribute eigrp 50# 将路由汇总

R4(config-router)#summary-address 60.1.0.0 255.255.252.0缺省路由下发

向 OSPF 区域内发布缺省路由,⽆法使⽤重分布命令进⾏路由的下发

# 假设 R4 连接的是 ISP 的⽹络,会在 R4 配置默认路由,并引⼊到 OSPF 区域内R4(config)#ip route 0.0.0.0 0.0.0.0 46.1.1.5R4(config)#router ospf 100

R4(config-router)#default-information originate

# 加⼊ always 表⽰⽆论是否⾃⾝有缺省路由,都会想 OSPF 域内下发被动接⼝

当⼀些路由器连接的是交换机接⼝时,这时发送 OSPF 报⽂给交换机是没有意义的,所以⼀般会将和交换机连接的接⼝设置成被动接⼝。R1(config)#router ospf 100

R1(config-router)#passive-interface ethernet 0/1OSPFV3 配置

ipv6 router ospf 100router-id 1.1.1.1int e 0/0

ipv6 ospf 100 are3SPF 算法

cost = 10^8 / 10mbps = 10cost = 10^8 / 100mbps = 1cost = 10^8 / 1000mbps = 0.1

但由于只能是整数,所以千兆链路也是 1 所以⽆法区分百兆和千兆链路。这⾥可以采⽤修改标准⽐如将 ⼗兆带宽的标准修改为 10^9 ,但需要注意的是,在所有的链路都要修改排错

检查直连连通性

查看邻居表是否正常建⽴

router-id 唯⼀(show ip protocols)

链路两端 Area 号不⼀致(show run | s router ospf, show run interface x)认证⽅式是否匹配

Hello 报⽂ Dead 计时器设置不⼀致Broadcast,P2P: Hello 10s, Dead 20s;

NBMA,P2MP,P2MP-NB: Hello 30s, Dead:120s⼴播型⽹络,接⼝掩码是否⼀致

DBD mtu 设置不⼀致(卡到 ExStart 状态)配置相同 MTU

在⼩的 MTU 端配置,忽略 MTU(ip ospf mtu-ignore)Hello包:特殊区域标识位不⼀致

Hello 包: 优先级相同(都为 0 ⽆法建⽴连接)查看是否有路由对应⽹络是否通告是否配置路由过滤OSPF 配置

实验1:模拟特殊区域情况。

在 R1 和 R5 配置去往 6.6.6.6 / 24 的默认路由,但在 R6 是通过重分布引⼊ OSPF,开销计算为 Type1.⽽ R1 所在区域模拟性能不好的情况,配置为特殊区域.

在 R5 上配置到 6.6.6.6 ⽹络的默认路由,并设置开销计算为 Type1:# R5 - 配置静态路由

ip route 6.6.6.0 255.255.255.0 56.1.1.6# 重分布到 OSPFrouter ospf 100

redistribute static metric-type 1

# 在 R1 上查看 metric:

类型为 E1,并且 Metric 为 60:以太⽹⼝默认为 10 mbps = 10^8/ 10^7=10, 所以内部开销为 10 + 10 + 10 + 10 + 40.对于思科设备来说,外部开销默认为 20,所以加起来⼀共 60.将 Area1 配置 Stub 区域 - ABR 不传播⾃治系统外的路由:# R1 配置 stub 区域,

Router1(config-router)#area 1 stub# R2 配置 stub 区域

Router2(config-router)#area 1 stub

可以发现,之前去往 6.6.6.6 的外部路由已经没有了,多了⼀条 O*IA 的默认路由

需要将 stub 区域中的路由器都配置成 stub,否则会因为 Hello 中⽆法匹配 Stub 标识,导致⽆法连接邻居。并且在 R1 查看数据库:可以发现,⽆法区域外部路由已经没有了。Router#show ip ospf database

OSPF Router with ID (1.1.1.1) (Process ID 100) Router Link States (Area 1)

Link ID ADV Router Age Seq# Checksum Link count1.1.1.1 1.1.1.1 1329 0x80000008 0x007786 12.2.2.2 2.2.2.2 1324 0x80000009 0x003AB8 1 Net Link States (Area 1)

Link ID ADV Router Age Seq# Checksum12.1.1.2 2.2.2.2 1324 0x80000005 0x0028EB Summary Net Link States (Area 1)

Link ID ADV Router Age Seq# Checksum0.0.0.0 2.2.2.2 1324 0x80000002 0x0073C123.1.1.0 2.2.2.2 1324 0x80000004 0x00868A34.1.1.0 2.2.2.2 1324 0x80000004 0x005BA045.1.1.0 2.2.2.2 1324 0x80000004 0x0030B6

将 Area 区域配置为完全 stub 区域, 连区域间的路由信息也不要 - 在 ABR 上配置:# 在 ABR R2 配置完全 stub 区域

Router2(config-router)#area 1 stub no-summary

# 在 R1 上查看,发下区域间的路由也没有了Router#show ip route

Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

E1 - OSPF external type 1, E2 - OSPF external type 2

i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP a - application route

+ - replicated route, % - next hop override, p - overrides from PfRGateway of last resort is 12.1.1.2 to network 0.0.0.0O*IA 0.0.0.0/0 [110/11] via 12.1.1.2, 00:00:02, Ethernet0/0 1.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC 1.1.1.0/24 is directly connected, Loopback0L 1.1.1.1/32 is directly connected, Loopback0

12.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC 12.1.1.0/24 is directly connected, Ethernet0/0L 12.1.1.1/32 is directly connected, Ethernet0/0Router#show ip ospf database

OSPF Router with ID (1.1.1.1) (Process ID 100) Router Link States (Area 1)

Link ID ADV Router Age Seq# Checksum Link count1.1.1.1 1.1.1.1 1666 0x80000008 0x007786 12.2.2.2 2.2.2.2 1661 0x80000009 0x003AB8 1 Net Link States (Area 1)

Link ID ADV Router Age Seq# Checksum12.1.1.2 2.2.2.2 1661 0x80000005 0x0028EB Summary Net Link States (Area 1)

Link ID ADV Router Age Seq# Checksum0.0.0.0 2.2.2.2 7 0x80000004 0x006FC3

将 Area 区域配置为NSSA 区域, 不要区域外部路由,但允许本区域内配置外部路由 :# R1 配置 nssa 区域,

Router1(config-router)#area 1 nssa# R2 配置 nssa 区域

Router2(config-router)#area 1 nssa

# 在 R6 上配置 7.7.7.7/24 的回环⼝ Lo 2# 在 R1 配置到 6.6.6.6 的静态路由

Router1(config)#ip route 7.7.7.0 255.255.255.0 16.1.1.6# 重分布 static

Router1(config-router)#redistribute static

# 此时 R1 作为 ABR 连接了外部路由器

# 查看 R2 路由信息,多出了去往 7.0 ⽹络的路由:Router#show ip route

Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2

i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP a - application route

+ - replicated route, % - next hop override, p - overrides from PfRGateway of last resort is not set

2.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC 2.2.2.0/24 is directly connected, Loopback0L 2.2.2.2/32 is directly connected, Loopback0 6.0.0.0/24 is subnetted, 1 subnets

O E1 6.6.6.0 [110/50] via 23.1.1.2, 00:08:38, Ethernet0/1 7.0.0.0/24 is subnetted, 1 subnets

O N2 7.7.7.0 [110/20] via 12.1.1.1, 00:04:32, Ethernet0/0 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC 12.1.1.0/24 is directly connected, Ethernet0/0L 12.1.1.2/32 is directly connected, Ethernet0/0 23.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC 23.1.1.0/24 is directly connected, Ethernet0/1L 23.1.1.1/32 is directly connected, Ethernet0/1 34.0.0.0/24 is subnetted, 1 subnets

O 34.1.1.0 [110/20] via 23.1.1.2, 00:08:38, Ethernet0/1 45.0.0.0/24 is subnetted, 1 subnets

O IA 45.1.1.0 [110/30] via 23.1.1.2, 00:08:38, Ethernet0/1

# 在 R2 需要⼿动配置,为其他设备添加默认路由信息:

Router2(config-router)#area 1 nssa default-information-originate# 在 R1 查看路由,多了⼀条默认路由,注意下发的是 7 类默认路由Router#show ip route

Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2

i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP a - application route

+ - replicated route, % - next hop override, p - overrides from PfRGateway of last resort is 12.1.1.2 to network 0.0.0.0

O*N2 0.0.0.0/0 [110/1] via 12.1.1.2, 00:00:18, Ethernet0/0 1.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC 1.1.1.0/24 is directly connected, Loopback0L 1.1.1.1/32 is directly connected, Loopback0 7.0.0.0/24 is subnetted, 1 subnetsS 7.7.7.0 [1/0] via 16.1.1.6

12.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC 12.1.1.0/24 is directly connected, Ethernet0/0L 12.1.1.1/32 is directly connected, Ethernet0/0 16.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC 16.1.1.0/24 is directly connected, Ethernet0/1L 16.1.1.1/32 is directly connected, Ethernet0/1 23.0.0.0/24 is subnetted, 1 subnets

O IA 23.1.1.0 [110/20] via 12.1.1.2, 00:21:19, Ethernet0/0 34.0.0.0/24 is subnetted, 1 subnets

O IA 34.1.1.0 [110/30] via 12.1.1.2, 00:21:19, Ethernet0/0

将 Area 区域配置为完全 NSSA 区域, 不要区域外部路由,但允许本区域内配置外部路由 :# 在 R2 开启

Router2(config-router)#area 1 nssa no-summary# 在 R1 查看路由,发现区域间路由没有了Router1#show ip route

Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2

i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP a - application route

+ - replicated route, % - next hop override, p - overrides from PfRGateway of last resort is 12.1.1.2 to network 0.0.0.0

O*IA 0.0.0.0/0 [110/11] via 12.1.1.2, 00:00:09, Ethernet0/0 1.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC 1.1.1.0/24 is directly connected, Loopback0L 1.1.1.1/32 is directly connected, Loopback0 7.0.0.0/24 is subnetted, 1 subnetsS 7.7.7.0 [1/0] via 16.1.1.6

12.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC 12.1.1.0/24 is directly connected, Ethernet0/0L 12.1.1.1/32 is directly connected, Ethernet0/0 16.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC 16.1.1.0/24 is directly connected, Ethernet0/1L 16.1.1.1/32 is directly connected, Ethernet0/1

注意此时默认路由变成了 OIA 原因在于,执⾏ no-summary 会产⽣⼀条3类LSA 0.0.0.0 的默认路由,会优先选择该路由。Router#show ip ospf database

OSPF Router with ID (1.1.1.1) (Process ID 100) Router Link States (Area 1)

Link ID ADV Router Age Seq# Checksum Link count1.1.1.1 1.1.1.1 198 0x80000014 0x00ECFA 12.2.2.2 2.2.2.2 15 0x80000019 0x00A731 1 Net Link States (Area 1)

Link ID ADV Router Age Seq# Checksum12.1.1.2 2.2.2.2 525 0x80000004 0x00B15B

Summary Net Link States (Area 1)

Link ID ADV Router Age Seq# Checksum0.0.0.0 2.2.2.2 16 0x80000001 0x00FC31 Type-7 AS External Link States (Area 1)

Link ID ADV Router Age Seq# Checksum Tag0.0.0.0 2.2.2.2 1118 0x80000001 0x00D0D8 07.7.7.0 1.1.1.1 1616 0x80000001 0x00E38A 0

因篇幅问题不能全部显示,请点此查看更多更全内容

Top