RIP、OSPF 协议详解
1、路由协议简介
在互联网中,一个自治系统 (AS) 是一个有权自主地决定在本系统中应采用何种路由协议的小型单位。这个网络单位可以是一个简单的网络也可以是一个由一或多个普通的网络管理员来控制的网络群体,它是一个单独的可管理的网络单元(例如一所大学,一个企业或者一个公司个体)。 一个自治系统将会分配一个全局的唯一的 16 位号码,有时我们把这个号码叫做自治系统(ASN)。
在进行三层通信时,除了静态配置路由信息,还可以通过动态获取路由条目,而这就需要使用路由协议来帮助我们了。
根据管理范围的不同,路由协议可以分为两个大类:
1、IGP: 内部网关协议(Interior Gateway Protocol)
内部网关协议(IGP)是一种专用于一个自治网络系统(比如:某个当地社区范围内的一个自治网络系统)中网关间交换数据流转通道信息的协议。网络 IP 协议或者其他的网络协议常常通过这些通道信息来决断怎样传送数据流。目前最常用的内部网关协议分别是:路由信息协议(RIP)和最短路径优先路由协议(OSPF)分级的链接状态路由协议(ISIS)。
2、EGP:外部网关协议(Exterior Gateway Protocol)
外部网关协议(EGP)是一种在自治系统的相邻两个网关主机间交换路由信息的协议。 EGP 通常用于在因特网主机间交换路由表信息。它是一个轮询协议,利用 Hello 和 I-Heard-You 消息的转换,能让每个网关控制和接收网络可达性信息的速率,允许每个系统控制它自己的开销,同时发出命令请求更新响应。路由表包含一组已知路由器及这些路由器的可达地址以及路径开销,从而可以选择最佳路由。每个路由器每间隔 120 秒或 480 秒会访问其邻居一次,邻居通过发送完整的路由表以示响应,代表协议是边界网关协议(BGPv4)。
如果按照算法分,也可以分成两个大类:
(1)距离矢量型路由协议,代表:RIP
(2)链路状态路由协议,代表:OSPF
在本节中,主要梳理 RIP 协议与 OSPF 协议。
2、RIP 协议
2.1 概述
RIP (Routing Information Protocol,路由信息协议)是一种内部网关协议(IGP),是一种动态路由选择协议,用于自治系统(AS)内的路由信息的传递。
RIP 被定义为距离矢量路由协议,而距离矢量路由协议的根本特征就是自己的路由表是完全从其它路由器学来的,并且将收到的路由条目一丝不变地放进自己的路 由表,以供数据转发。正因为如此,对于路由是否正确,对于目标是否可达,RIP 全然不知。
“距离” 的定义: 从一路由器到直接连接的网络的距离定义为 1。 从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。
RIP 使用跳数作为 metric,跳数就是到达目标网络所需要经过的路由器个数,因为直连网络不需要经过任何路由器,所以直连网络的 metric 为 0。RIP 所支持网络的最大跳数为 15,也就是 metric 值最大为 15,一但大于 15,如 16,被 RIP 认为目标不可达,由此可见,RIP 并不适合大型网络。
RIP 协议的管理距离为**120。**当路由表中出现了多条目标网段、子网掩码相同的路由信息时,优先选择管理距离小的协议所生成的路由信息。
RIP 协议一共有两个版本:
- Version 1 有类路由协议,广播更新。(由于不支持 VLSM,RIPV1 已经被淘汰,以 RIPv2 为主)
- Version 2 无类路由协议,支持 VLSM
RIPv1 和 RIPv2 的区别: 1.RIPv1 是有类路由协议,RIPv2 是无类路由协议 2.RIPv1 不能支持 VLSM,RIPv2 可以支持 VLSM 3.RIPv1 没有认证的功能,RIPv2 可以支持认证,并且有明文和 MD5 两种认证 4.RIPv1 没有手工汇总的功能,RIPv2 可以在关闭自动汇总的前提下,进行手工汇总 5.RIPv1 是广播更新(255.255.255.255 ),RIPv2 是组播更新(224.0.0.9), 6.RIPv1 对路由没有标记的功能,RIPv2 可以对路由打标记(tag),用于过滤和做策略 7.RIPv1 发送的 updata 最多可以携带 25 条路由条目,RIPv2 在有认证的情况下最多只能携带 24 条路由 8.RIPv1 发送的 updata 包里面没有 next-hop 属性,RIPv2 有 next-hop 属性,可以用与路由更新的重定
RIP 是应用层协议, 使用 UDP 数据报传送,端口号 520 将路由条目从开启了 RIP 进程的接口上发出,ver1 使用广播地址 255.255.255.255 发出,而 ver 2 使用组播地址 224.0.0.9 发出。
无论是 ver 1 还是 ver 2,都会将路由表每30 秒定期向网络中发送,RIP 没有邻居的概念,所以自己并不知道发出去的路由更新是不是有路由器收到,而收到的路由更新,RIP 并不会绝对接受,只有当路由的发送 IP 地址和自己接收的接口 IP 地址处于同网段时,才会接收,否则忽略。如果路由表中的路由超过180 秒都没有再次收到更新,则被标记为不可用,如果连续240 秒没收到更新,最后将相应路由从路由表中删除。
RIP 协议的三个要素:
(1)仅和相邻路由器交换信息。
(2)交换的信息是当前本路由器所知道的全部信息,即自己的路由表。RIP 交换的是本路由器上完整的路由表。
(3)按固定的时间间隔交换路由信息,例如,每隔 30 秒。
2.2 RIP 协议工作原理及流程
2.1.1 RIP 协议工作流程图
RIP 协议在整个工作流程中主要使用四个定时器:
-
更新定时器(Update timer):
当此定时器超时时,立即发送更新报文。(30s)
-
老化定时器(Age timer):
RIP 设备如果在老化时间内没有收到邻居发来的路由更新报文,则认为该路由不可达。(180s)
-
垃圾收集定时器(Garbage-collect timer):
如果在垃圾收集时间内不可达路由没有收到来自同一邻居的更新,则该路由将被从 RIP 路由表中彻底删除。(240s)
- 抑制定时器(Suppress timer):
默认时长为 180s,当 RIP 设备收到对端的路由更新,其 cost 为 16,对应路由进入抑制状态,并启动抑制定时器。为了防止路由震荡,在抑制定时器超时之前,即使再收到对端路由 cost 小于 16 的更新,也不接受。当抑制定时器超时后,就重新允许接受对端发送的路由更新报文。
2.1.2 路由表的建立
路由器在刚刚开始工作时,只知道到直接连接的网络的距离 (此距离定义为 1)。路由表中也只有到直连网络的直连路由。 以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。
路由表建立流程:
路由器在收到相邻路由器发来的路由表信息后,会执行距离矢量算法,算法过程描述如下:
(1)收到相邻路由器 (其地址为 X) 的一个 RIP 报文: RIP 报文内容:[路由器 IP(X),可达网络 (Y 网络),距离(Z)]
(2)根据收到的 RIP 报文内容创建一个新的路由信息: “下一跳” 字段中的地址为 X;“距离” 字段的值加 1,变为 Z+1。 每个项目中的三个关键数据:到目的网络 Y,距离为 Z+1,下一跳路由器是 X。
(3)对获得的新路由信息,进行以下步骤:
- 若原来的路由表中没有到目的网络 Y 的路由条目,则把该路由信息加到路由表中。
- 若原来的路由表中已经有到网络 Y 的路由条目,则比较新老路由条目信息: 若老路由条目中到 Y 网络的下一跳路由器地址也是 X,则直接用新的路由条目替换原路由表中的路由条目。 若新路由信息中的距离字段值小于路由表中的距离字段值,则进行更新,
- 否则,什么也不做。
(4) 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为 16。
以下图为例,详细解释路由表形成:
1、刚开始,启动设备路由器 A、B、C,路由表中只有路由器直连的直连路由。
2、A、B、C 之间互相进行第一次路由表交换:
B 路由表交换给 A 后:
B 的路由表中目标网络为 2.0.0.0 的路由条目,与 A 路由表中原有条目相同,直接替换(因为相同,所以保持不变)
B 的路由表中目标网络位 3.0.0.0 的路由条目,A 路由表中不存在,因此,将 3.0.0.0 作为目的网络,路由器 B 的 RIP 报文发出端口的 IP(2.0.0.2)作为下一跳地址,原来 B 路由表中到达 3.0.0.0 网络的距离为 0,因此在 A 的路由表中,要对这个距离加 1,因此在 A 的路由表中,Metric 值为 1.
A 路由表交换给 B:
B 路由表交换给 C:
C 路由表交换给 B:
至此,第一次路由交换全部完成。此时只有 B 的路由表是完整的,A 和 C 的路由表并不完整,还需要第二次交换。
3、第二次交换
经过与第一次交换类似的流程后,三个路由器都形成了完整的路由表。
2.3 RIP 报文格式
2.3.1 RIPv1 报文格式
2.3.2 RIPv2 报文格式
- 命令域:指出 RIP 报文是一个请求报文还是对请求的应答报文
request 报文: RIP 的 request 消息在特殊情况下发送,当路由器需要时它可以提供即时的路由信息。 它可以请求全部的路由条目也可以请求具体的某些路由条目。最常见的例子是当路由器第一次加入网络时,通常会发送 request 消息,以要求获取相邻路由器的最新路由信息。 AFI 为 0 表示请求所有的路由条目且 metric 值为 16
response 报文: 当 RIP 接收到 request 消息,将处理并发送一个 response 消息。消息包含自己的整个路由表,或请求要求的条目,正常情况下路由器通常不会发送对路由信息有特殊要求的请求消息。RIP 会每 30 秒发送一个 response 消息,用于路由表更新
- 版本域:一般为 1,新版本为 2。
- 地址族标识符(又称为地址类别)字段用来标志所使用的地址协议。AFI 为 0 且 metric 值为 16 表示请求所有的路由条目。
- 路由标记:填入自治系统的号码,这是考虑使 RIP 有可能收到本自治系统以外的路由选择信息。再后面指出某个网络地址、该网络的子网掩码、下一跳路由器地址以及到此网络的距离。
2.3.3 RIPv2 认证功能
由于 RIP 没有邻居的概念,所以自己并不知道发出去的路由更新是不是有路由器收到,同样也不知道会被什么样的路由器收到,因为 RIP 的路由更新是明文的,网络中无论谁收到,都可以读取里面的信息,这就难免会有不怀好意者窃听 RIP 的路由信息。为了防止路由信息被非法窃取,RIP ver 2 可以相互认证,只有能够提供密码的路由器,才能够获得路由更新。而 RIP ver 1 是不支持认证的。RIP ver 2 可以支持明文与 MD5 认证。
路由器之间,当一方开启认证之后,另一方也同样需要开启认证,并且密码一致,才能读取路由信息。认证是基于接口配置的,密码使用 key chain 来定义,key chain 中可以定义多个密码,每个密码都有一个序号,RIP ver 2 在认证时,只要双方最前面的一组密码相同,认证即可通过,双方密码序号不一定需要相同,key chain 名字也不需要相同,但在某些低版本 IOS 中,会要求双方的密码序号必须相同,才能认证成功,所以建议大家配置认证时,双方都配置相同的序号和密码。
确认合法的信息包,目前支持纯文本的口令形式:
2.4 RIP 协议优缺点:
优点: 对于小型网络,RIP 就所占带宽而言开销小,易于配置、管理和实现; “好” 消息传的快;
缺点:
(1)网络规模被限制,最大跳数为 15 跳
(2)使用 “跳数” 作为度量值,以跳数的多少比较路由路径的优劣。 RIP 选择一个具有最少路由器的路由 (即最短路由),哪怕还存在另一条高速 (低时延) 但路由器较多的路由。
(3)收敛速度慢。当网络中出现拓扑变化时,需要较长的时间才会收敛。可能会导致网络中路由表信息不一致。
(4)路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
2.5 RIP 协议路由环路发生原理及处理方式
2.5.1 路由环路形成
如上图所示,当正常运行的网 1 突然不可达时,R1 路由器将到网 1 的路由条目删除,但是还没来的及向 R2 路由器进行更新。此时 R2 路由器更新计时器先超时,R2 将自己的路由信息发送给 R1,R1 就从 R2 处又学习到了网 1 的路由信息,并且将距离设置成 2。此时,R1 的路由表已经出现了错误,但路由器并不知道。
当 R1 的更新计时器超时后,R1 又向 R2 发送自己的路由信息,R2 用从 R1 路由表内学习到的路由信息将自己的到网 1 的路由信息进行覆盖,此时 R2 到网 1 的路由信息中,距离字段被改为 3。
以此类推,在不断的路由更新中,到网 1 的距离会逐渐增加直至无穷大,同时 R1 与 R2 之间在到网 1 的路由信息上形成了路由环路。如果没有一定的措施去解决 的话,路由器将永远无法发现这个错误。
2.5.2 路由环路的危害
路由环路会对网络造成严重影响,导致网络性能降低,甚至使网络瘫痪。 路由环路可能造成以下后果:
- 环路内的路由器占用链路带宽来反复收发流量。
- 路由器的 CPU 因不断循环数据包而不堪重负。
- 路由器的 CPU 承担了无用的数据包转发工作,从而影响到网络收敛。
- 路由更新可能会丢失或无法得到及时处理。这些状况可能会导致更多的路由环路,使情况进一步恶化。
- 数据包可能丢失在 “黑洞” 中。
2.5.3 路由环路解决方法
距离矢量路由环路的解决方法有如下五种:
1)最大跳计数 (maximum metric)
RIP 允许跳计数最大可以达到 15,任何需要经过 16 跳才能到达的网络都被认为是不可达的。解决了环路时跳数会增加到无限大的问题
2)水平分隔 (split horizon)
限制路由器不能按照接收信息的方向去将接收到的信息再发回去。 例:路由器从 f1/0 口收到去往 Net1 的路由信息,在发送更新时,不会将关于 Net1 的路由信息再从 f1/0 口发出去。
3)路由中毒(路由毒化)或毒性反转。
路由毒化用于在发往其它路由器的路由更新中将路由标记为不可达。标记 “不可达” 的方法是将度量设置为最大值。对于 RIP,毒化路由的度量为 16。 毒性反转:R3 发现 10.4.0.0 不可达,立刻向外发送毒化路由,告知 R2 该网段不可达。R2 在收到毒化路由后,会根据毒性反转,立刻向 R3 发送一条毒化路由。确保 R3 不会轻易受到有关网络 10.4.0.0 的错误更新的影响。
路由中毒和毒性逆转应该是两个独立的过程 路由中毒就是当 siwtch 上的某个子网失效时,它会把这个子网的 metric 设置为 16 公告给其它 switch,意味着这个子网不可达。
毒性逆转是 switch 从某个接口收到一条某个子网的路由信息之后,它会把这条路由信息从这个接口再公告出去,并且 metric 设置为 16。
为什么要配置毒性逆转呢?
举个例子: networks1——–R1———–R2———-R3 在没有毒性逆转的情况下: Step1.R1 公告 networks1 的路由信息给 R2,metric 为 1 Step2.R2 公告 networks1 的路由信息给 R1 和 R3,metric 为 2 Step3. 当 networks1 出现故障之后,R1 应该公告 metric 为 16 的路由信息给 R2,但是在 R2 收到 R1 的更新报文之前,它仍然发送原来的报文。
此时 R1 收到之后就会误以为通过 R2 可以到达 networks1,更新自己的路由表到达 networks1 的下一跳是 R2,metric 为 3,并发送更新信息给 R2. 此时路由环路产生 Step4.R2 收到 R1 的更新报文之后,又会更新自己的路由表然后通知 R1 和 R3,以此循环至 metric 变为 16 路由才会被删除。
如果开启毒性逆转的话,在 Step2 的时候,R2 公告给 R1 的 networks1 的路由信息 metric 值为 16。此时 networks1 出现故障,R1 和 R2 之间就不会形成路由环路了,networks1 的路由可以很快的被删除。
4)抑制计时器
抑制计时器可用来防止定期更新消息错误地恢复某条可能已经发生故障的路由。抑制计时器指示路由器将那些可能会影响路由的更改保持一段特定的时间。如果确定某条路由为 down(不可用)或 possibly down(可能不可用),则在规定的时间段内,任何有关该路由的信息都将被忽略。这表示路由器将在一段足够长的时间内将路由标记为 unreachable(不可达),以便路由更新能够传递带有最新信息的路由表。
5)触发更新
路由器周期性发送更新,RIP 是默认每隔 30 秒。 触发更新就是当检测到网络拓扑发生变动时,路由器会立即发送一个更新信息给邻居路由器,而不用等待更新计时器,并依次产生触发更新通知它们的邻居路由器,此过程就叫触发更新。
2.6 RIP 的配置及报文截图
以 R1 配置为例:
router rip version 2 no auto-summary network 192.168.20.0 network 192.168.1.0
3、OSPF 协议
3.1 OSPF 概述
路由协议 OSPF 全称为 Open Shortest Path First,也就开放的最短路径优先协议,因为 OSPF 是由 IETF 开发的,它的使用不受任何厂商限制,所有人都可以使用,所以称为开放的,而最短路径优先(SPF)只 OSPF 的核心思想,其使用的算法是 Dijkstra 算法,最短路径优先并没有太多特殊的含义,并没有任何一个路由协议是最长路径优先的,所有协议,都会选最短的。
距离矢量路由协议的根本特征就是自己的路由表是完全从其它路由器学来的,并且将收到的路由条目一丝不变地放进自己的路由表,运行距离矢量路由协议的路由器之间交换的是路由表,距离矢量路由协议是没有大脑的,路由表从来不会自己计算,总是把别人的路由表拿来就用;而 OSPF 完全抛弃了这种不可靠的算法,OSPF 是典型的链路状态路由协议,路由器之间交换的并不是路由表,而是链路状态,OSPF 通过获得网络中所有的链路状态信息,从而计算出到达每个目标精确的网络路径。
OSPF 工作在单个 AS,是个绝对的内部网关路由协议(Interior Gateway Protocol, 即 IGP)。
OSPF 对网络没有跳数限制,支持 CIDR 和 VLSM,没有自动汇总功能,但可以手工在任意比特位汇总,并且手工汇总没有任何条件限制,可以汇总到任意掩码长度。
OSPF 并不会周期性更新路由表,而采用增量更新,即只在路由有变化时,才会发送更新,并且只发送有变化的路由信息;事实上,OSPF 是间接设置了周期性更新路由的规则,因为所有路由都是有刷新时间的,当达到刷新时间阀值时,该路由就会产生一次更新,默认时间为 1800 秒,即 30 分钟,所以 OSPF 路由的定期更新周期默认为 30 分钟。
OSPF 所有路由的管理距离 (Ddministrative Distance) 为 110,OSPF 只支持等价负载均衡。
OSPF 支持认证,并且支持明文和 MD5 认证;OSPF 不可以通过 Offset list 来改变路由的度量值( metric)。
3.2 OSPF 协议相关术语
Router-ID:
唯一标识一个路由器 OSPF 路由器之间相互通告链路状态,如果路由器之间分不清谁是谁,没有办法确定各自的身份,那么通告的链路状态就是毫无意义的,所以必须给每一个 OSPF 路由器定义一个身份。这就是 Router-ID,并且 Router-ID 在网络中绝对不可以有重名,否则路由器收到的链路状态,就无法确定发起者的身份,也就无法通过链路状态信息确定网络位置,OSPF 路由器发出的链路状态都会写上自己的 Router-ID,可以理解为该链路状态的签名,不同路由器产生的链路状态,签名绝不会相同。
每一台 OSPF 路由器只有一个 Router-ID,Router-ID 使用 IP 地址的形式来表示,确定 Router-ID 的方法为:
★1. 手工指定 Router-ID。
★2. 路由器上活动 Loopback 接口中 IP 地址最大的,也就是数字最大的,如 C 类 地址优先于 B 类地址,一个非活动的接口的 IP 地址是不能被选为 Router-ID 的。
★3. 如果没有活动的 Loopback 接口,则选择活动物理接口 IP 地址最大的。
COST:
OSPF 使用接口的带宽来计算 度量值。计算方法: cost=100Mbit / 接口带宽 如果路由器要经过两个接口才能到达目标网络,那么很显然,两个接口的 Cost 值要累加起来,才算是到达目标网络的 Metric 值,所以 OSPF 路由器计算到达目标网络的 Metric 值,必须将沿途中所有接口的 Cost 值累加起来,在累加时,只计算出接口,不计算进接口。 OSPF 会自动计算接口上的 Cost 值,但也可以通过手工指定该接口的 Cost 值,手工指定的优先于自动计算的值。OSPF 计算的 Cost,同样是和接口带宽成反比,带宽越高,Cost 值越小。到达目标相同 Cost 值的路径,可以执行负载均衡,最多 6 条链路同时执行负载均衡。
一个 10Mbit/s 的接口,cost 值为:100Mbit/10Mbit = 10
链路状态(Link-State):
链路状态(LSA)就是 OSPF 接口上的描述信息,例如接口上的 IP 地址,子网掩码,网络类型,Cost 值等等,OSPF 路由器之间交换的并不是路由表,而是链路状态(LSA),OSPF 通过获得网络中所有的链路状态信息,从而计算出到达每个目标精确的网络路径。
OSPF 路由器会将自己所有的链路状态毫不保留地全部发给邻居,邻居将收到的链路状态全部放入链路状态数据库(Link-State Database),邻居再发给自己的所有邻居,并且在传递过程种,绝对不会有任何更改。通过这样的过程,最终,网络中所有的 OSPF 路由器都拥有网络中所有的链路状态,并且所有路由器的链路状态应该能描绘出相同的网络拓朴。
与距离矢量路由不同,距离矢量路由中交换的是完整的路由表,这样如果有人恶意攻击的话,就能够知道整个网络拓扑结构。而链路状态路由则交换链路的状态,用户无法通过这个清晰的得知整个链路拓扑。
比如现在要计算一条地铁线路图,如上海地铁二号线某段的图,如果不直接将该图给别人看,图好比是路由表,现在只是报给别人各个站的信息,该信息好比是链路状态,通过告诉别人各个站左边一站是什么,右边一站是什么,别人也能通过该信息(链路状态),画出完整的线路图(路由表),如得到如下各站信息(链路状态):
★南京东路 - 站 (左边一站是人民广场,右边一站是陆家嘴)
★南京西路 - 站 (左边一站是静安寺,右边一站是人民广场)
★静安寺 - 站 (右边一站是南京西路)
★人民广场 - 站 (左边一站是南京西路,右边一站是南京东路)
★陆家嘴 - 站 (左边一站是南京东路)
完整的链路状态就是: 静安寺 — 南京西路 — 人民广场 — 南京东路 — 陆家嘴
邻居(Neighbor):
在同一网络中都有接口的两台路由器,通过 Hello 包建立和维护邻居关系 OSPF 邻居靠发送 Hello 包来建立和维护,Hello 包会在启动了 OSPF 的接口上周期性发送,在不同的网络中,发送 Hello 包的间隔也会不同,当超过 4 倍的 Hello 时间,也就是 Dead 时间过后还没有收到邻居的 Hello 包,邻居关系将被断开。
两台 OSPF 路由器必须满足 4 个条件,才能形成 OSPF 邻居,4 个必备条件如下:
(1)Area-id(区域号码):即路由器之间必须配置在相同的 OSPF 区域,否则无法形成邻居。
(2)Hello 时间与 Dead 时间:即路由器之间的 Hello 时间和 Dead 时间必须一致,否则无法形成邻居。
(3)Authentication(认证):路由器之间必须配置相同的认证密码,如果密码不同,则无法形成邻居。
(4)**Stub Area Flag(末节标签):**路由器之间的末节标签必须一致,即处在相同的末节区域内,否则无法形成邻居
邻接:
邻接是一种特殊的邻居。他不仅可以通过 hello 包进行通信,还可以互相之间发送 LSA。
OSPF 只有邻接关系之间才会交换 LSA,路由器会将链路状态数据库中所有的内容毫不保留地发给所有邻接,要想在 OSPF 路由器之间交换 LSA,必须先形成 OSPF 邻接关系。
DR/BDR
通过在多路访问网段中选择出一个核心路由器,称为 DR(Designated Router),网段中所有的 OSPF 路由器都和 DR 互换 LSA。DR 就会拥有所有的 LSA,并且将所有的 LSA 转发给每一台路由器。
如果 DR 失效后,那么就会造成 LSA 的丢失与不完整,所以在多路访问网络中除了选举出 DR 之外,还会选举出一台路由器作为DR 的备份,称为 BDR(Backup Designated Router),BDR 在 DR 不可用时,代替 DR 的工作。
DRother
既不是 DR,也不是 BDR 的路由器称为 DRother,DRother 负责 和 DR 互换 LSA ,同时还会和 BDR 互换 LSA。
注意: DRother 之间不能互换数据,这是为了防止出现环路
DR/BDR 选举规则:
DR 与 BDR 的选举是在一个二层网段内选举的,即在多个路由器互连的接口范围内,与 OSPF 区域没有任何关系,一个区域可能有多个多路访问网段,那么就会存在多个 DR 和 BDR,但一个多路访问网段,只能有一个 DR 和 BDR;选举 DR 和 BDR 的规则为:
1、比较接口优先级
选举优先级最高的成为 DR,优先级数字越大,表示优先级越高,被选为 DR 的几率就越大,次优先级的为 BDR,优先级范围是 0-255,默认为 1,优先级为 0 表示没有资格选举 DR 和 BDR。
2、Route-Id 大小
如果在优先级都相同的情况下,Route-Id 最大的成为 DR,其次是 BDR,数字越大,被选为 DR 的几率就越大。
DR 和 DRother 处理数据报的区别:
所有 OSPF 路由器,包括 DR 与 BDR,都能够接收和传递目标地址为 224.0.0.5 的数据包。
只有 DR 和 BDR 才能接收和传递目标地址为 224.0.0.6 的数据包。
网络类型
对于不同的网络类型,将会影响到 OSPF 的 Hello 时间与 Dead 时间,关系到 DR 与 BDR 的选举与否,影响到 OSPF 邻居是自动建立还是手工建立,总结如下表:
网络类型 | Hello 时间 | 选举 DR/BDR | 邻居建立方式 |
---|---|---|---|
点到点 (Point-To-Point) | 10 秒 | 否 | 自动 |
点到多点 (Point-To-Multipoint) | 30 秒 | 否 | 自动 |
广播 (Broadcast ) | 10 秒 | 是 | 自动 |
非广播 (Non-Broadcast ) | 30 秒 | 是 | 手工 |
点到多点非广播 (Point-To-Multipoint Non-Broadcast) | 30 秒 | 否 | 手工 |
OSPF 邻居的成功建立,并不要求双方网络类型一致,但双方网络类型不一致,将可能导致链路状态数据库中的条目无法进入路由表。
3.3 OSPF 原理
3.3.1 OSPF 的计算
OSPF 协议路由的计算过程可简单描述如下:
- 每台 OSPF 路由器根据自己周围的网络拓扑结构生成 LSA(Link StateAdvertisement,链路状态通告),并通过更新报文将 LSA 发送给网络中的 其它 OSPF 路由器。
- 每台 OSPF 路由器都会收集其它路由器通告的 LSA,所有的 LSA 放在一起 便组成了 LSDB(Link State Database,链路状态数据库)。LSA 是对路由 器周围网络拓扑结构的描述,LSDB 则是对整个自治系统的网络拓扑结构的 描述。
- OSPF 路由器将 LSDB 转换成一张带权的有向图,这张图便是对整个网络拓 扑结构的真实反映。各个路由器得到的有向图是完全相同的。
- 每台路由器根据有向图,使用 SPF 算法计算出一棵以自己为根的最短路径树,这棵树给出了到自治系统中各节点的路由。
3.3.2 工作过程
1、邻居发现
在这个过程中路由器发生了三种状态的改变:
(1) Down State
路由器刚刚启动 OSPF 进程,还没有从任何路由器收到任何数据包,Hello 包也没有收到,在此进程,可以向外发送 Hello 包,以试图发现邻居。
(2) Init State
OSPF 一方 A 向另一方 B 发送 hello 报文,只是 OSPF 路由器 B 收到了 A 的 Hello,但并没有双方都交换 Hello,即 B 尚未与 A 交换 hello 报文。此时邻居关系还未建立。
注意:
在 Init State 状态这边,由于发送 hello 包的方式不同,还可能出现另一种状态:Attempt 状态。
Attempt 状态 因为 OSPF 使用组播发送数据包,如使用组播发送 Hello 包,如果 Hello 包不能发出去被其它路由器收到,就不能和其它路由器建立 OSPF 邻居;在一些组播不能发送的网络中,例如帧中继这样的非广播网络环境,组播不能够传递,在这种情况下,就需要指定 OSPF 使用单播向邻居发送 Hello 包,以此试图和指定的邻居建立 OSPF 邻居关系,在此状态下,OSPF 称为 Attempt 状态。
(3) Two-way
双方都已经交换了 Hello 信息,并且从 Hello 中看到对方已经将自己列为邻居,此状态,就表示 OSPF邻居关系已经建立,并且如果是需要选举 DR 和 BDR 的话,也已经选举出来,但 OSPF 邻居之间并不一定就会交换 LSA,如果不需要交换 LSA,则永远停留在此状态,如果需要形成邻接并互相交换 LSA,则状态继续往下进行。(比如 Drother 与 Drother 之间将永远停留在 Two-way 状态,因为 Drother 与 Drother 之间不需要交换 LSA。)
在邻居发现环节,主要交互的报文就是Hello 报文。
Hello 报文:携带参数,建立和维持邻居关系在多路访问网络中选举 DR、BDR。
2、路由通告
在这个工程中,主要经历四种状态:
(1)Exstart
因为在 OSPF 邻居之间交换完整的 LSA 之前,会先发送 Database Description Packets (DBD),Link-state Request (LSR)等数据包,邻居之间是谁先发,谁后发,需要确定顺序,在 Exstart 状态,就是确定邻居之间的主从关系(Master—Slave 关系),Router-ID 数字大的为主路由器,另一端为从路由器,由主路由器先向从路由器发送信息。在选举 DR 与 BDR 的网络环境中,并不一定 DR 就是主路由器,BDR 就是从路由器,因为 DR 和 BDR 可以通过调整接口优先级来控制,所以 DR 也许是因为优先级比 BDR 高,而 Router-ID 并不比 BDR 高。
注:在任何网络环境下,OSPF 在交换 LSA 之前,都需要确定主从关系。
(2)Exchange
交换 DBD(Database Description Packets )的过程,DBD 只是 LSA 的简单描述,只包含 LSA 的一些头部信息,收到 DBD 的路由器会和自己的链路状态数据库作对比,确定需要哪些 LSA 的完整信息,就会发送 LSR 请求给邻居。
DBD 其实就相当于是完整链路状态的一个目录,告诉从对方路由器,我的链路状态数据库中有哪些链路,但是不会告知具体的链路状态信息。只有当接收方从 DBD 中挑选出自己需要的链路状态并向发送方发送一个请求时,发送方才会将具体的链路状态信息发送出去。
(3)Loading
邻居根据收到的 LSR(Link-State Request),向对方回复 Link-state update(LSU)。在这个状态中,双方路由器开始交换各自所需要的具体的链路状态信息。
(4)Full
等到 OSPF 都收到了邻居回复的所有 Link-state update(LSU),那么此时的数据库状态就变成了收敛状态,此状态就是 Full 状态,但此时只是数据库已经同步,但路由表却还在计算当中。
链路状态数据库中存储的是各种链路状态,但是获取链路状态并不是代表获取了路由表。这就是与距离矢量型路由的区别之处,距离矢量路由协议交换完数据后,直接形成了最终的路由表,而链路状态路由协议在获取链路状态后还要根据这些状态计算出路由表。
注:除了 Two-way 和 Full 这两个状态,邻居停留在任何状态,都是不正常。
3、路由计算
4、路由表的生成与选择
从路由器 B 到终端 E,从拓扑图上来看有两条路径可达。但是每条链路有自己的开销值,这个值一般是根据链路是带宽来计算的,反映的是真实的链路传输能力,因此开销值越小,链路传输能力越强,传输速率越快,所以,在最终的路由表形成时,会选择开销值最小的路径作为最终的路由路径。
3.3.3 报文格式
OSPF 有五中报文类型,即上述所说的 Hello 包、DBD、LSR、LSU、LSAck。
这五种数据报具有相同是报文头部:
主要字段的解释如下:
-
Version:OSPF 的版本号。对于 OSPFv2 来说,其值为 2。(OSPFV3 用于 IPV6)
-
Type:OSPF 报文的类型。数值从 1 到 5,分别对应 Hello 报文、DD 报文、LSR 报文、LSU 报文和 LSAck 报文。
-
Packet length:OSPF 报文的总长度,包括报文头在内,单位为字节。
-
Router ID:始发该 LSA 的路由器的 ID。
-
Area ID:始发 LSA 的路由器所在的区域 ID。
-
Checksum:对整个报文的校验和。
-
AuType:验证类型。可分为不验证、简单(明文)口令验证和 MD5 验证, 其值分别为 0、1、2。
-
Authentication:其数值根据验证类型而定。当验证类型(Autype)为 0 时未作定义,Autype 为 1 时此字段值为密码信息,Autype 类型为 2 时此字段包括 Key ID、MD5 验证数据长度和序列号的信息。
MD5 验证数据添加在 OSPF 报文后面,不包含在 Authenticaiton 字段中。
1、Hello 报文格式
最常用的一种报文,周期性的发送给邻居路由器用来维持邻居关系以及 DR/BDR 的选举,内容包括一些定时器的数值、DR、BDR 以及自己已知的邻居。Hello 报文格式如图所示
主要字段解释如下:
-
Network Mask:发送 Hello 报文的接口所在网络的掩码,如果相邻两台路由器的网络掩码不同,则不能建立邻居关系。
-
HelloInterval:发送 Hello 报文的时间间隔。如果相邻两台路由器的 Hello 间隔时间不同,则不能建立邻居关系。
-
Rtr Pri:路由器优先级。如果设置为 0,则该路由器接口不能成为 DR/BDR。
-
RouterDeadInterval:失效时间。如果在此时间内未收到邻居发来的 Hello 报文,则认为邻居失效。如果相邻两台路由器的失效时间不同,则不能建立邻 居关系。
-
Designated Router:指定路由器(DR)的接口的 IP 地址。
-
Backup Designated Router:备份指定路由器(BDR)的接口的 IP 地址。
-
Neighbor:邻居路由器的 Router ID。
2、DD 报文格式
两台路由器进行数据库同步时,用 DD 报文来描述自己的 LSDB,内容包括 LSDB 中每一条 LSA 的 Header(LSA 的 Header 可以唯一标识一条 LSA)。LSA Header 只占一条 LSA 的整个数据量的一小部分,这样可以减少路由器之间的协议报文流量,对端路由器根据 LSA Header 就可以判断出是否已有这条 LSA。
主要字段的解释如下:
Interface MTU:在不分片的情况下,此接口最大可发出的 IP 报文长度。
I(Initial):当发送连续多个 DD 报文时,如果这是第一个 DD 报文,则置为 1,否则置为 0。
M(More):当连续发送多个 DD 报文时,如果这是最后一个 DD 报文,则置为 0。否则置为 1,表示后面还有其他的 DD 报文。
M/S(Master/Slave):当两台 OSPF 路由器交换 DD 报文时,首先需要确定双方的主(Master)从(Slave)关系,Router ID 大的一方会成为 Master。当值为 1 时表示发送方为 Master。
DD Sequence Number:DD 报文序列号,由 Master 方规定起始序列号,每发送一个 DD 报文序列号加 1,Slave 方使用 Master 的序列号作为确认。主从双方利用序列号来保证 DD 报文传输的可靠性和完整性。
3、LSR
两台路由器互相交换过 DD 报文之后,知道对端的路由器有哪些 LSA 是本地的 LSDB 所缺少的,这时需要发送 LSR 报文向对方请求所需的 LSA。内容包括所需要的 LSA 的摘要。
主要字段解释如下:
- LS type:LSA 的类型号。例如 Type1 表示 Router LSA。
- Link State ID:链路状态标识,根据 LSA 的类型而定。
- Advertising Router:产生此 LSA 的路由器的 Router ID。
4、LSU
LSU 报文用来向对端路由器发送所需要的 LSA,内容是多条 LSA(全部内容)的集合
主要字段解释如下:
Number of LSAs:该报文包含的 LSA 的数量。
LSAs:该报文包含的所有 LSA。
5、LSAck
LSAck 报文用来对接收到的 LSU 报文进行确认,内容是需要确认的 LSA 的 Header。一个 LSAck 报文可对多个 LSA 进行确认。
3.3.4 LSA
1、LSA 头格式
所有的 LSA 都有相同的报文头,其格式如图 所示
主要字段的解释如下:
-
LS age:LSA 产生后所经过的时间,以秒为单位。LSA 在本路由器的链路状态数据库(LSDB)中会随时间老化(每秒钟加 1),但在网络的传输过程中却不会。
-
LS type:LSA 的类型。
-
Link State ID:具体数值根据 LSA 的类型而定。
-
Advertising Router:始发 LSA 的路由器的 ID。
-
LS sequence number:LSA 的序列号,其他路由器根据这个值可以判断哪个 LSA 是最新的。
-
LS checksum:除了 LS age 字段外,关于 LSA 的全部信息的校验和。
-
length:LSA 的总长度,包括 LSA Header,以字节为单位。
2、LSA 类型
OSPF 由于有多种区域类型,多种网络类型,多种链路类型,多种路由器身份,所以 LSA(Link-State Advertisements)也是多样的。OSPF 中共有 11 类 LSA,而在 CCIE 的要求中,只需要理解 1、2、3、4、5、7 共 6 类即可,这些 LSA 会因为区域类型,网络类型,链路类型,路由器身份的不同而不同。
(1)LSA1 ——Router LSA: 本路由器所有接口的链路状态汇总
将路由器所有接口的链路状态汇总到 LSA1 中,在将这一个 LSA1 从各个接口发送出去
类型 1 的 LSA 是任何一台 OSPF 路由器都会产生的,每一台 OSPF 路由器的每一个 OSPF 接口都会有自己的链路状态,但是每台 OSPF 路由器只能产生一条类型 1 的 LSA,即使有多个 OSPF 接口,也只有一条类型 1 的 LSA,因为所有 OSPF 接口的链路状态是被打包成一条类型 1 的 LSA 发送的。
一个区域正是由于 LSA 1 的存在,才有精确的路由表,一个区域如果只有 LSA 1,同样可以正常通信。LSA 1 只能在单个区域内传递,ABR 不能将 LSA 1 转到发另外一个区域,并且没有任何权利修改 LSA 1。( LSA1 只在本区域内洪泛,不会跨越 ABR)
(2)LSA2(Network Link):DR 发布,告知网络中的网络情况和所有路由器
类型 2 的 LSA 只有在需要选举 DR/BDR 的网络类型中才会产生,并且只是 DR 产生,用于描述在该网络上连接的所有路由器及子网信息,BDR 没有权利产生。
LSA 2 与 LSA 1 没有任何关联,没有任何依存关系,是相互独立的。只在本区域 Area 内洪泛,不允许跨越 ABR。
(3)LSA3(Summary Link):LSA1 的汇总和简化,可以跨区域
类型 3 的 LSA 就是将一个区域的 LSA 发向另一个区域时的汇总和简化,ABR 其实就是将 LSA 1 汇总和简化,变成 LSA 3 后再发到另一个区域的,如果是详细完整的 LSA 1,是绝不允许的,LSA 3 是 LSA 1 的缩略版。
(4)LSA4(ASBR Summary Link):ABR 发送,告知 OSPF 区域内路由器如何到达 ASBR 路由器
对于外部路由,执行重分布的路由器 ASBR 在 LSA 中写上自己的 Router-ID,然后传递到多个 OSPF 区域,所以会被多个 ABR 转发,而 ABR 在转发外部路由的 LSA 时,是没有权限修改 LSA 的 Router-ID,这样一来,外部路由的 Router-ID 在所有 OSPF 路由器上都不会改变,永远是 ASBR 的 Router-ID,最终造成的结果是只有与 ASBR 同在一个区域的路由器才能到达外部路由,因为只有与 ASBR 同在一个区域的路由器才知道如何到达 ASBR 的 Router-ID,而其它区域的路由器对此却无能为力。
为了能够让 OSPF 所有区域都能与外部路由连通,在 ABR 将外部路由从 ASBR 所在的区域转发至其它区域时,需要发送单独的 LSA 来告知如何到达 ASBR 的 Router-ID。
因为 ABR 有义务将外部路由的 LSA 通告到其它区域,让它们与外部路由可达,所以额外发送了单独的类型 4 的 LSA 来告知如何到达 ASBR 的 Router-ID。LSA 4 中包含 ASBR 的 Router-ID,只要不是 ASBR 所在的区域,都需要 ABR 发送 LSA 4 来告知如何去往 ASBR。
LSA4 的触发条件为:ABR 收到一个 Type5 LSA
(5)LSA5(External Link)
类型 5 的 LSA 就是外部路由重分布进 OSPF 时产生的,并且是由 ASBR 产生的,LSA 中包含 ASBR 的 Router-ID,任何路由器都不允许更改该 Router-ID,LSA 5 中还包含 Forward Address,对于 LSA 5 的 Metric 值计算与选路规则也有所不同,详细信息请见 OSPF 外部路由部分。
6、LSA7(NSSA Link)
因为NSSA 区域可以将外部路由重分布进 OSPF 进程,而 NSSA 不是一般的常规区域,所以在 NSSA 将外部路由重分布进 OSPF 时,路由信息使用类型 7 来表示,LSA 7 由 NSSA 区域的 ASBR 产生,LSA 7 也只能在 NSSA 区域内传递,如果要传递到 NSSA 之外的其它区域,需要同时连接 NSSA 与其它区域的 ABR 将 LSA 7 转变成 LSA 5 后再转发。
LSA 类型 7 只能在 NSSA 区域中洪泛,到达 NSSA 区域 ABR 后,NSSA ABR 将其转换成 LSA 类型 5 外部路由
3.4 OSPF 区域
3.4.1. 区域划分
随着网络规模日益扩大,当一个大型网络中的路由器都运行 OSPF 路由协议时, 路由器数量的增多会导致 LSDB 非常庞大,占用大量的存储空间,并使得运行 SPF 算法的复杂度增加,导致 CPU 负担很重。
在网络规模增大之后,拓扑结构发生变化的概率也增大,网络会经常处于 “振荡” 之中,造成网络中会有大量的 OSPF 协议报文在传递,降低了网络的带宽利用率。更为严重的是,每一次变化都会导致网络中所有的路由器重新进行路由计算。
OSPF 协议通过将自治系统划分成不同的区域(Area)来解决上述问题。区域是从逻辑上将路由器划分为不同的组,每个组用区域号(Area ID)来标识。区域的边界是路由器,而不是链路。一个网段(链路)只能属于一个区域,或者说每个运行 OSPF 的接口必须指明属于哪一个区域。如图 1 所示。
划分区域后,可以在区域边界路由器上进行路由聚合,以减少通告到其他区域的 LSA 数量,还可以将网络拓扑变化带来的影响最小化。
2. 路由器的类型
OSPF 路由器根据在 AS 中的不同位置,可以分为以下四类:
(1) 区域内路由器 IR( Internal Router )
该类路由器的所有接口都属于同一个 OSPF 区域。
(2) 区域边界路由器 ABR ( Area Border Router )
该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域(骨干区域的介绍请参见下一小节)。 ABR 用来连接骨
干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。
(3) 骨干路由器( Backbone Router )
该类路由器至少有一个接口属于骨干区域。因此,所有的 ABR 和位于 Area0 的内部路由器都是骨干路由器。
(4) 自治系统边界路由器 ASBR
与其他 AS 交换路由信息的路由器称为 ASBR 。 ASBR 并不一定位于 AS 的边界,它有可能是区域内路由器,也有可能是 ABR 。
只要一台 OSPF 路由器引入了外部路由的信息,它就成为 ASBR。
3. 骨干区域与虚连接
OSPF 划分区域之后,并非所有的区域都是平等的关系。其中有一个区域是与众不同的,它的区域号(Area ID)是 0,通常被称为骨干区域。骨干区域负责区域之间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发。
对此,OSPF 有两个规定:
-
所有非骨干区域必须与骨干区域保持连通;
-
骨干区域自身也必须保持连通。
但在实际应用中,可能会因为各方面条件的限制,无法满足这个要求。这时可以通 过配置 OSPF 虚连接(Virtual Link)予以解决。
虚连接(Virtual Link)
虚连接是指在两台 ABR之间通过一个非骨干区域而建立的一条逻辑上的连接通道。它的两端必须是 ABR,而且必须在两端同时配置方可生效。为虚连接两端提供一条非骨干区域内部路由的区域称为传输区(Transit Area)。
在图 3 中,Area2 与骨干区域之间没有直接相连的物理链路,但可以在 ABR 上配置虚连接,使 Area2 通过一条逻辑链路与骨干区域保持连通。
虚连接的另外一个应用是提供冗余的备份链路,当骨干区域因链路故障不能保持连通时,通过虚连接仍然可以保证骨干区域在逻辑上的连通性。如图 4 所示。
虚连接相当于在两个 ABR 之间形成了一个点到点的连接,因此,在这个连接上, 和物理接口一样可以配置接口的各参数,如发送 Hello 报文间隔等。
两台 ABR 之间直接传递 OSPF 报文信息,它们之间的 OSPF 路由器只是起到一个转发报文的作用。由于协议报文的目的地址不是中间这些路由器,所以这些报文对 于它们而言是透明的,只是当作普通的 IP 报文来转发。
3.4.2 外部路由
OSPF 同其它路由协议一样,可以将其它外部协议的路由信息或其它 OSPF 进程的路由信息重分布进自己的域内,这样的路由在 OSPF 域内就是 OSPF 外部路由(External Route)。外部路由分为两类:
(1)O E1:O E1 的路由在 OSPF 路由器上的 Metric 值包含该路由进入 OSPF 域之前的 Metric 值,再加上在 OSPF 域内传递的 Metric 值。
(2)O E2 :类型为 O E2 的外部路由在进入 OSPF 之前的 Metric 值为多少,进入 OSPF 域后就不变。
如图所示:
R5 将 EIGRP 重分布进 OSPF
如果使用 O E1 类型重分布进 OSPF,并且取默认 Metric 值 20,那么 OSPF 域内的路由器在计算 Metric 值时,还会在原有 Metric 值的基础上,再加上到达 ASBR(R5)所需的 Metric 值,假设 R1 选择从 R3 到 R5 再到外部路由,那么 R1 到外部路由的 Metric 值为 20+1+10=31。
如果使用 O E2 类型重分布进 OSPF,并且取默认 Metric 值 20,那么 OSPF 域内的路由器 R1,R2,R3,R4,R5 看到外部路由的 Metric 值全部都为 20,不会有任何变化。
所以使用 O E1 时,R1 到外部路由的 Metric 值为 31,而在使用 O E2 时,R1 到外部路由的 Metric 值为 20。
在 OSPF 区域内,ABR 在将一个区域的 LSA 转发至另一个区域时,产生该 LSA 的 Router-ID 就不再是原来的 Router-ID,会被修改为 ABR 的 Router-ID。
OSPF 中,不同区域之间的路由互通,是由于 ABR 在转发区域 LSA 时,将 LSA 的 Router-ID 改成了自己的 Router-ID,才使得该区域可以与其它区域通信。如果没有ABR 这种自动修改 Router-ID的行为,那么 OSPF 不同区域间将会无法通信。
执行重分布的路由器同样需要在 LSA 中写上自己的 Router-ID,其实就是 ASBR 的 Router-ID,因为外部路由会在多个 OSPF 区域之间传递,所以会被多个 ABR 转发 ,而ABR 在转发外部路由的 LSA 时,是没有权限修改 LSA 的 Router-ID。
这样一来,外部路由的 Router-ID 在所有 OSPF 路由器上都不会改变,永远是 ASBR 的 Router-ID,最终造成的结果是只有与 ASBR 同在一个区域的路由器才能到达外部路由,因为只有与 ASBR 同在一个区域的路由器才知道如何到达 ASBR 的 Router-ID,而其它区域的路由器对此却无能为力。
为了能够让 OSPF 所有区域都能与外部路由连通,在 ABR 将外部路由从 ASBR 所在的区域转发至其它区域时,需要发送单独的 LSA 来告知如何到达 ASBR 的 Router-ID,此 LSA 就是后面将会详细解释的 LSA 类型的第 4 类。
![]](https://img-blog.csdnimg.cn/img_convert/66dc680e47699bf78a6f7b4baffbec16.png =700x)
ASBR 将外部路由重分布进 OSPF 区域,同时 ASBR 向 OSPF 区域内发送类型为 5 的 LSA; OSPF 内的 ABR 在收到 LSA5 后,会发出 LSA4,告知其他的路由器,如何到达 ASBR。
3.4.3 OSPF 末节区域
路由增加,就意味着 LSA 的增加,有时,在一个末梢网络中,许多路由信息是多余的,并不需要通告进来,因为一个 OSPF 区域内的所有路由器都能够通过该区域的 ABR 去往其它 OSPF 区域或者 OSPF 以外的外部网络,一个区域的路由器只要知道去往 ABR,就能去往区域外的网络,因此可以过滤掉区域外的路由进入,这样的区域称为 OSPF 末节区域(Stub Area)。
一个末节区域的所有路由器虽然可以从 ABR 去往区域外的网络,但路由器上还是得有指向 ABR 的路由,所以末节区域的路由器只需要有默认路由,而不需要明细路由,即可与区域外的网络通信。
根据末节区域过滤掉区域外的不同路由,可将末节区域分为如下四类:
Stub Area
Totally Stub Area
Not-so-Stubby Area(NSSA)
Totally Not-so-Stubby Area(Totally NSSA)
1、 Stub Area(末节区域)
在 Stub Area(末节区域)下,ABR 将过滤掉所有外部路由进入末节区域,同时,末节区域内的路由器也不可以将外部路由重分布进 OSPF 进程,即末节区域内的路由器不可以成为 ASBR,但其它 OSPF 区域的路由(Inter-Area Route)可以进入末节区域。
由于没有去往外部网络的路由,所以 ABR 会自动向末节区域内发送一条指向自己的默认路由,如下图:
2、Totally Stub Area(完全末节区域)
在 Totally Stub Area(完全末节区域)下,ABR 将过滤掉所有外部路由和其它 OSPF 区域的路由(Inter-Area Route)进入完全末节区域,同时,末节区域内的路由器也不可以将外部路由重分布进 OSPF 进程,即完全末节区域内的路由器不可以成为 ASBR。
由于没有去往外部网络的路由,所以 ABR 会自动向完全末节区域内发送一条指向自己的默认路由,如下图:
3、Not-so-Stubby Area(NSSA)
在 Not-so-Stubby Area(NSSA)下,ABR 将过滤掉所有外部路由进入末节区域,同时也允许其它 OSPF 区域的路由(Inter-Area Route)进入 NSSA 区域,并且路由器还可以将外部路由重分布进 OSPF 进程,即 NSSA 区域内的路由器可以成为 ASBR。
由于自身可以将外部网络的路由重分布进 OSPF 进程,所以 ABR 不会自动向 NSSA 区域内发送一条指向自己的默认路由,但可以手工向 NSSA 域内发送默认路由,并且只可在 ABR 上发送默认路由;如下图:
4、 Totally Not-so-Stubby Area(Totally NSSA)
在 Totally Not-so-Stubby Area(Totally NSSA)下,ABR 将过滤掉所有外部路由和其它 OSPF 区域的路由(Inter-Area Route)进入 Totally NSSA 区域,但路由器可以将外部路由重分布进 OSPF 进程,即 Totally NSSA 区域内的路由器可以成为 ASBR。
由于没有去往其它 OSPF 区域的路由,所以 ABR 会自动向 Totally NSSA 内发送一条指向自己的默认路由,如下图:
注:
-
★ 在末节区域下,ABR 自动发出的默认路由,Metric 值默认为 1,可通过命令 area area-id default-cost cost 修改,默认路由除了默认的 cost 值以外,还会累加真实接口的 cost 值。
-
★ 骨干区域不能配置为任何末节区域。
-
★ 当将某个区域配置为末节区域后,则区域中所有路由器都必须配置为末节区域。因为配置为末节区域的路由器上所有接口发出的 Hello 包中都会有末节标签,所有如果对方没有末节标签,则不能成为邻居。
总结对比:
via:
注:原出处 https://javaforall.cn/204275.html 图片已挂。多篇对照,补图。
-
路由协议 ——RIP、OSPF 协议 [通俗易懂] 腾讯云开发者社区 - 腾讯云 全栈君 发布于 2022-11-01 14:25:15
OSPF 特殊区域介绍 Stub、Totally Stub、NSSA、Totally NSSA
特殊区域的产生和注意事项
产生:OSPF 通过划分区域减小网络内路由器的 LSDB 的规模。对于那些位于 AS 边界的非骨干区域如果该设备是较为低端的路由器,则无法承受过多的路由条目。为此通过 OSPF 的特殊区域特性可以进一步的减少 LSA 数量与路由表规模(考虑到低端设备性能,通过 OSPF 特殊区域特性减小设备负担)。
注意事项:非骨干区域才能配置成特殊区域,骨干区域不可以配置成特殊区域,就算配置了也不会生效,因为骨干区域链接多个区域,作为 LSA 的中转站,一定是需要去传输 LSA 的。
Stub 区域
简介:Stub 末端区域、末节区域,用于表示一个网络的最后节点,往后不会再有其它网络节点接入。
特点:处于该区域的路由设备,其 LSDB 中不允许出现 4、5 类 LSA,但会生成一条 3 类的默认路由指向该特殊区域的 ABR 设备。没有 45 类表示没有了大量的外部路由条目,通过默认路由进行访问,极大程度的减小了设备的负担。
简略特点:拒绝 4、5 类,生成 3 类默认路由。
配置:
1、如果要将一个区域配置成 Stub 区域,则该区域中的所有路由器必须都要配置成 Stub 路由器。
- 只需要在非骨干区域模式内输入
stub
即可设置为 Stub 区域,该区域所有设备都需要设置成 stub。
2、Stub 区域内不能存在 ASBR,自治系统外部路由不能在本区域内传播,因为 Stub 又叫末端区域。
配置网络中的 OSPF 及 Rip 上线(省略 IP 地址配置)
[AR1] ospf 1 rou 1.1.1.1
[AR1-ospf-1] a 0
[AR1-ospf-1-area-0.0.0.0] network 10.1.12.1 0.0.0.0
[AR2] ospf 1 rou 2.2.2.2
[AR2-ospf-1] a 0
[AR2-ospf-1-area-0.0.0.0] netwo 10.1.12.2 0.0.0.0
[AR2-ospf-1-area-0.0.0.0] q
[AR2-ospf-1] a 1
[AR2-ospf-1-area-0.0.0.1] netwo 10.1.23.2 0.0.0.0
[AR2-ospf-1-area-0.0.0.1] stub
[AR2-ospf-1-area-0.0.0.1] q
[AR2-ospf-1]
[AR3] rip
[AR3-rip-1] ver 2
[AR3-rip-1] netwo 10.0.0.0
[AR3-rip-1] q
[AR3] ospf 1 router 3.3.3.3
[AR3-ospf-1] a 1
[AR3-ospf-1-area-0.0.0.1] network 10.1.23.3 0.0.0.0
[AR3-ospf-1-area-0.0.0.1] stub
[AR4] rip
[AR4-rip-1] ver 2
[AR4-rip-1] netwo 192.168.4.0
[AR4-rip-1] networ 10.0.0.0
[AR4-rip-1] q
Stub 建立后的路由变化
生成的 3 类默认路由(Sum-Net),以及 ABR 传来的骨干区域路由信息。
<AR3>display ospf lsdb
OSPF Process 1 with Router ID 3.3.3.3
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 470 36 80000005 1 // Type 1 - Router LSA
Router 3.3.3.3 3.3.3.3 469 36 80000004 1 // Type 1 - Router LSA
Network 10.1.23.3 3.3.3.3 470 32 80000002 0 // Type 2 - Network LSA
Sum-Net 0.0.0.0 2.2.2.2 509 28 80000001 1 // Type 3 - Summary LSA
Sum-Net 10.1.12.0 2.2.2.2 529 28 80000001 1 // Type 3 - Summary LSA
<AR3>display ip routing-table protocol ospf
Destination/Mask Proto Pre Cost Flags NextHop Interface
0.0.0.0/0 OSPF 10 2 D 10.1.23.2 GigabitEthernet0/0/0
10.1.12.0/24 OSPF 10 2 D 10.1.23.2 GigabitEthernet0/0/0
Type 1, Type 2, 和 Type 3 LSA。
Stub 外部路由引入测试
将 Rip 路由引入 OSPF area1 中(Stub 区域),测试 Stub 区域是否真的不能存在外部路由。
[AR3] ospf 1
[AR3-ospf-1] import-route rip
引入之后,并没有在 LSDB 中看到生成 5 类的外部路由,故说明 Stub 中不能存在 4 类、5 类及不能存在外部路由的结论成立。
[AR3-ospf-1] dis ospf lsdb
OSPF Process 1 with Router ID 3.3.3.3
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 620 36 80000005 1
Router 3.3.3.3 3.3.3.3 619 36 80000004 1
Network 10.1.23.3 3.3.3.3 620 32 80000002 0
Sum-Net 0.0.0.0 2.2.2.2 659 28 80000001 1
Sum-Net 10.1.12.0 2.2.2.2 679 28 80000001 1
Totally Stub 区域
简介:Totally Stub 完全末节区域,属于完完全全的末端区域。
特点:对 Stub 区域进行进一步的优化,该区域内不允许出现 3、4、5 类明细的 LSA,但唯独存在一条 3 类的默认路由。相比 Stub 区域,减少了 3 类的明细,进一步的压缩了非骨干区域的数据库,减轻设备压力。
简略特点:拒绝 3、4、5 类,但会生成一条 3 类的默认路由,TotallyStub 中的 LSDB 中有且只有一条 3 类默认路由 LSA。
配置:
1、如果要将一个区域配置成 Totally Stub 区域,则该区域中的所有路由器必须都要配置成 Totally Stub 路由器。
2、Totally Stub 区域与 Stub 区域一样,引入外部路由无效。
[AR2] ospf 1
[AR2-ospf-1] a 1
[AR2-ospf-1-area-0.0.0.1] stu no-summary
[AR3] ospf 1
[AR3-ospf-1] a 1
[AR3-ospf-1-area-0.0.0.1] stub no-summary
Totally Stub 区域内的 LSDB 信息
AR2 与 AR3 的邻接关系已经建立说明 LSA 交互完成,查看 LSDB 可以看到除了默认的 3 类,没有了其它的 3 类明细。
<AR3>dis ospf pee br
OSPF Process 1 with Router ID 3.3.3.3
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.1 GigabitEthernet0/0/0 2.2.2.2 Full
----------------------------------------------------------------------------
<AR3>dis ospf lsdb
OSPF Process 1 with Router ID 3.3.3.3
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 19 36 8000000B 1
Router 3.3.3.3 3.3.3.3 12 36 8000000A 1
Network 10.1.23.3 3.3.3.3 12 32 80000002 0
Sum-Net 0.0.0.0 2.2.2.2 23 28 80000001 1
NSSA 区域
简介:NSSA 区域是相较于 Stub 区域,实现了区域内可引入外部路由的操作。
特点:
- 与 Stub 一样,区域内不允许出现 4、5 类 LSA,但允许出现 1、2、3、7 类 LSA,并由 ABR 生成一条 7 类的默认路由。
- NSSA 区域中引入的外部路由作为 7 类明细在区域内传递,当传递至 ABR 后由 ABR 将 7 类转换成 5 类传递给其它 OSPF 区域。
- NSSA 区域不仅干掉了其它区域传来的外部路由明细,同时保证了本 NSSA 区域可以将邻接的外部路由传出给其它区域。
简略特点:拒绝 4、5 类,生成一条 7 类默认路由,引入的外部路由作为 7 类在 NSSA 区域内传递。
配置:
1、与 Stub 区域一样,需要 NSSA 区域内所有设备都配置 nssa
。
[AR2-ospf-1] a 1
[AR2-ospf-1-area-0.0.0.1] undo stub 【如果之前配置成了 stub,需要先删除之前的配置】
[AR2-ospf-1-area-0.0.0.1] nssa
[AR3-ospf-1] a 1
[AR2-ospf-1-area-0.0.0.1] undo stub
[AR3-ospf-1-area-0.0.0.1] nssa
检查当前的 LSDB
1、LSDB 中的 NSSA 类型 LSA 就是由 ABR(AR2)生成的 7 类默认路由。
<AR3>display ospf peer brief
OSPF Process 1 with Router ID 3.3.3.3
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.1 GigabitEthernet0/0/0 2.2.2.2 Full
----------------------------------------------------------------------------
<AR3>display ospf lsdb
OSPF Process 1 with Router ID 3.3.3.3
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 115 36 80000004 1
Router 3.3.3.3 3.3.3.3 114 36 80000005 1
Network 10.1.23.3 3.3.3.3 114 32 80000001 0
Sum-Net 10.1.12.0 2.2.2.2 162 28 80000001 1
NSSA 0.0.0.0 2.2.2.2 162 36 80000001 1 // Type 7 - NSSA LSA 默认
引入外部路由并两次检查 LSDB
1、NSSA 区域引入外部路由之后,NSSA 区域内看到的外部路由为 7 类明细。
[AR3] ospf 1
[AR3-ospf-1] import-route rip
[AR3-ospf-1] display ospf lsdb
OSPF Process 1 with Router ID 3.3.3.3
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 211 36 80000004 1
Router 3.3.3.3 3.3.3.3 2 36 80000006 1
Network 10.1.23.3 3.3.3.3 210 32 80000001 0
Sum-Net 10.1.12.0 2.2.2.2 258 28 80000001 1
NSSA 10.1.23.0 3.3.3.3 2 36 80000001 1【外部路由】
NSSA 192.168.4.0 3.3.3.3 2 36 80000001 1【外部路由】
NSSA 10.1.34.0 3.3.3.3 2 36 80000001 1【外部路由】
NSSA 0.0.0.0 2.2.2.2 258 36 80000001 1
2、骨干区域中看到的外部路由则是 5 类的明细(External)
-
NSSA 外部有 10.1.23.0,为什么在骨干上看没有该条目的 5 类呢?
因为外部路由(5 类明细路由)的优先级为 150,而常规的 OSPF 路由优先级为 10,故 Sum-Net 3 类的 LSA 比 External 5 类的 LSA 更优先。所以只能看到 3 类的 10.1.23.0,不能看到 5 类的 10.1.23.0。
-
为什么在骨干区域这里看不到 4 类的 LSA 呢?
以目前这个环境,骨干区域中泛洪的是 AR2 的 5 类 LSA,骨干区域的 AR1 能直接通过 1 类 2 类直接找到 AR2,故不需要生成 4 类 LSA。 但如果有了新的区域 Area2 与 AR1 进行邻接,则 AR2 内将会出现 4 类与 5 类。
<AR1>display ospf lsdb
OSPF Process 1 with Router ID 1.1.1.1
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 407 36 80000007 1
Router 1.1.1.1 1.1.1.1 562 36 80000005 1
Network 10.1.12.2 2.2.2.2 555 32 80000003 0
Sum-Net 10.1.23.0 2.2.2.2 407 28 80000005 1
AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 192.168.4.0 2.2.2.2 152 36 80000001 1 // Type 5 - AS External LSA
External 10.1.34.0 2.2.2.2 152 36 80000001 1
Totally NSSA 区域
简介:完全 NSSA 区域,表示该区域为网络末节。
特点:
- 相较与 NSSA 区域,Totally NSSA 区域内不允许存在 3 类明细,故需要生成一条默认的 3 类默认路由。
- 完全 NSSA 区域内不存在 3、4、5 类明细,但会存在 3 类默认路由、7 类默认路由。
- 完全 NSSA 区域仍可以继续引入外部路由发布给 OSPF 的其它区域。
简略特点:拒绝 3、4、5 类,生成 3 类默认路由、7 类默认路由,仍可引入外部路由。
配置:
[AR2] ospf 1
[AR2-ospf-1] a 1
[AR2-ospf-1-area-0.0.0.1] nssa no-summary
[AR3] ospf 1
[AR3-ospf-1] a 1
[AR3-ospf-1-area-0.0.0.1] nssa no-summary
[AR3-ospf-1] dis ospf lsdb
OSPF Process 1 with Router ID 3.3.3.3
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 413 36 80000005 1
Router 3.3.3.3 3.3.3.3 334 36 80000006 1
Network 10.1.23.3 3.3.3.3 407 32 80000002 0
Sum-Net 0.0.0.0 2.2.2.2 467 28 80000001 1【3 类默认路由】
NSSA 0.0.0.0 2.2.2.2 467 36 80000001 1【7 类默认路由】
引入外部路由观察
[AR3] ospf 1
[AR3-ospf-1] import-route rip
[AR3-ospf-1] dis ospf lsdb
OSPF Process 1 with Router ID 3.3.3.3
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 549 36 80000005 1
Router 3.3.3.3 3.3.3.3 5 36 80000007 1
Network 10.1.23.3 3.3.3.3 543 32 80000002 0
Sum-Net 0.0.0.0 2.2.2.2 603 28 80000001 1
NSSA 10.1.23.0 3.3.3.3 5 36 80000001 1【外部路由】
NSSA 192.168.4.0 3.3.3.3 5 36 80000001 1【外部路由】
NSSA 10.1.34.0 3.3.3.3 5 36 80000001 1【外部路由】
NSSA 0.0.0.0 2.2.2.2 603 36 80000001 1
四者的比较
Stub 与 NSSA
-
都是过滤 4、5 类 LSA
-
Stub 生成 3 类默认路由、NSSA 生成 7 类默认路由
-
NSSA 可引入外部路由作为 7 类 LSA
TotallyStub 与 TotallyNSSA
-
都是过滤 3、4、5 类 LSA
-
Totally Stub 生成 3 类默认路由,Totally NSSA 生成 3 类默认路由与 7 类默认路由
-
Totally NSSA 仍然可以引入外部路由作为 7 类 LSA 传递
via:
-
OSPF 特殊区域介绍、Stub、Totally Stub、NSSA、Totally NSSA-CSDN 博客 Hades_Ling 于 2023-02-18 17:03:11 修改
OSPF 的 Stub/Totally Stub/NSSA/Totally NSSA 区域测试
一、测试拓扑
测试总结:
1、Stub 区域 ABR 会过滤进入该区域的 4 / 5 类 LSA, 它会以一条 3 类 LSA 发布通往外部的全 0 的默认路由,Stub 区域仍有其他区域的 3 类 LSA
2、Totally Stub 相对 Stub 区域,ABR 过滤掉进入该区域 3/4/5 类 LSA,保留一条全 0 的 3 类 LSA 在本区域传递,只需在 ABR 上配置
3、NSSA 主要是解决 Stub 和 Totally Stub 不能有 ASBR 的限制问题,其区域的 ASBR 以 7 类 LSA 发布去往外部的路由,而 ABR 又将 7 类转换成 3 类 LSA 传递到 area0
4、对于其他非 NSSA 区域,它会认为 NSSA 区域的 ABR 为 ASBR,如果 NSSA 区域有多个 ABR,会根据 Router-ID 竞选出一个转换器,由它负责将 7 类转成 3 类向其他区域传递
5、NSSA 区域的 ABR,会过滤掉进入该区域的 4/5 类 LSA, 并且不会自动产生默认路由,通过 default-information-originate 参数配置产生的默认路由,是以 7 类 LSA 在本区域传递
6、Totally NSSA 的 ABR,会过滤掉进入该区域的 3/4/5 类 LSA,并且会自动产生全 0 的外部路由,以 3 类 LSA 在本区域传递
二、基本配置
1.R4 路由器
hostname R4
interface Loopback0
ip address 4.4.4.4 255.255.255.0
ip ospf network point-to-point
interface Ethernet0/0
ip address 24.1.1.4 255.255.255.0
no shutdown
router ospf 1
router-id 94.4.4.4
network 4.4.4.4 0.0.0.0 area 1
network 24.1.1.4 0.0.0.0 area 1
passive-interface Loopback0
2.R2 路由器
hostname R2
interface Loopback0
ip address 2.2.2.2 255.255.255.0
ip ospf network point-to-point
interface Ethernet0/0
ip address 24.1.1.2 255.255.255.0
no shutdown
interface Ethernet0/1
ip address 12.1.1.2 255.255.255.0
no shutdown
router ospf 1
router-id 92.2.2.2
passive-interface Loopback0
network 2.2.2.2 0.0.0.0 area 0
network 12.1.1.2 0.0.0.0 area 0
network 24.1.1.2 0.0.0.0 area 1
3.R1 路由器
hostname R1
interface Loopback0
ip address 1.1.1.1 255.255.255.0
ip ospf network point-to-point
interface Ethernet0/0
ip address 12.1.1.1 255.255.255.0
no shutdown
interface Ethernet0/1
ip address 13.1.1.1 255.255.255.0
no shutdown
router ospf 1
router-id 91.1.1.1
passive-interface Loopback0
network 1.1.1.1 0.0.0.0 area 0
network 12.1.1.1 0.0.0.0 area 0
network 13.1.1.1 0.0.0.0 area 2
4.R3 路由器
hostname R3
interface Loopback0
ip address 3.3.3.3 255.255.255.0
ip ospf network point-to-point
interface Ethernet0/0
ip address 13.1.1.3 255.255.255.0
no shutdown
interface Ethernet0/1
ip address 35.1.1.3 255.255.255.0
no shutdown
router ospf 1
router-id 93.3.3.3
passive-interface Loopback0
redistribute rip subnets
network 3.3.3.3 0.0.0.0 area 2
network 13.1.1.3 0.0.0.0 area 2
network 123.1.1.3 0.0.0.0 area 0
router rip
version 2
network 35.0.0.0
no auto-summary
5.R5 路由器
hostname R5
interface Loopback0
ip address 5.5.5.5 255.255.255.0
interface Ethernet0/0
ip address 35.1.1.5 255.255.255.0
no shutdown
router rip
version 2
passive-interface Loopback0
network 5.0.0.0
network 35.0.0.0
no auto-summary
三、配置 Area1 为 Stub 区域
- 配置之前先看一下 R4 的路由,有两条 O E2 的外部路由
R4#show ip route ospf | begin Gateway
Gateway of last resort is not set
1.0.0.0/24 is subnetted, 1 subnets
O IA 1.1.1.0 [110/21] via 24.1.1.2, 00:04:06, Ethernet0/0
2.0.0.0/24 is subnetted, 1 subnets
O IA 2.2.2.0 [110/11] via 24.1.1.2, 00:04:06, Ethernet0/0
3.0.0.0/24 is subnetted, 1 subnets
O IA 3.3.3.0 [110/31] via 24.1.1.2, 00:04:01, Ethernet0/0
5.0.0.0/24 is subnetted, 1 subnets
O E2 5.5.5.0 [110/20] via 24.1.1.2, 00:03:56, Ethernet0/0
12.0.0.0/24 is subnetted, 1 subnets
O IA 12.1.1.0 [110/20] via 24.1.1.2, 00:04:06, Ethernet0/0
13.0.0.0/24 is subnetted, 1 subnets
O IA 13.1.1.0 [110/30] via 24.1.1.2, 00:04:06, Ethernet0/0
35.0.0.0/24 is subnetted, 1 subnets
O E2 35.1.1.0 [110/20] via 24.1.1.2, 00:03:56, Ethernet0/0
R4#
- 配置之前先看一下 R4 的链路状态数据库,里面有 1/2/3/4/5 类 LSA
R4#show ip ospf database
OSPF Router with ID (94.4.4.4) (Process ID 1)
Router Link States (Area 1)
Link ID ADV Router Age Seq# Checksum Link count
92.2.2.2 92.2.2.2 333 0x80000003 0x0051D6 1
94.4.4.4 94.4.4.4 332 0x80000003 0x00F207 2
Net Link States (Area 1)
Link ID ADV Router Age Seq# Checksum
24.1.1.4 94.4.4.4 332 0x80000001 0x00C81C
Summary Net Link States (Area 1)
Link ID ADV Router Age Seq# Checksum
1.1.1.0 92.2.2.2 333 0x80000001 0x006A62
2.2.2.0 92.2.2.2 365 0x80000001 0x00E1F1
3.3.3.0 92.2.2.2 323 0x80000001 0x008636
12.1.1.0 92.2.2.2 365 0x80000001 0x00D0F1
13.1.1.0 92.2.2.2 333 0x80000001 0x00288F
Summary ASB Link States (Area 1)
Link ID ADV Router Age Seq# Checksum
93.3.3.3 92.2.2.2 323 0x80000001 0x00B9A5
Type-5 AS External Link States
Link ID ADV Router Age Seq# Checksum Tag
5.5.5.0 93.3.3.3 379 0x80000001 0x00AB7F 0
35.1.1.0 93.3.3.3 380 0x80000001 0x008094 0
R4#
- 配置之前先在 R4 上查看一下 ABR 和 ASBR 信息
R4#show ip ospf border-routers
OSPF Router with ID (94.4.4.4) (Process ID 1)
Base Topology (MTID 0)
Internal Router Routing Table
Codes: i - Intra-area route, I - Inter-area route
I 93.3.3.3 [30] via 24.1.1.2, Ethernet0/0, ASBR, Area 1, SPF 2
i 92.2.2.2 [10] via 24.1.1.2, Ethernet0/0, ABR, Area 1, SPF 2
R4#
- 配置 Area1 为 Stub 区域
①R2 路由器
R2 (config)#router ospf 1
R2 (config-router)#area 1 stub
R2 (config-router)#
*Feb 20 02:20:29.761: % OSPF-5-ADJCHG: Process 1, Nbr 94.4.4.4 on Ethernet0/0 from FULL to DOWN, Neighbor Down: Adjacency forced to reset
R2 (config-router)#
备注:可以看到只是 R2 一端配置 Stub,邻居会 down
②R4 路由器
R4#
*Feb 20 02:21:08.711: % OSPF-5-ADJCHG: Process 1, Nbr 92.2.2.2 on Ethernet0/0 from FULL to DOWN, Neighbor Down: Dead timer expired
R4#config t
R4 (config)#router ospf 1
R4 (config-router)#area 1 stub
R4 (config-router)#
*Feb 20 02:22:32.146: % OSPF-5-ADJCHG: Process 1, Nbr 92.2.2.2 on Ethernet0/0 from LOADING to FULL, Loading Done
R4 (config-router)#
- 再次查看 R4 的路由,没有了 O E2 的外部路由,取而代之的是 1 条全 0 的 O*IA
R4#show ip route ospf | begin Gateway
Gateway of last resort is 24.1.1.2 to network 0.0.0.0
O*IA 0.0.0.0/0 [110/11] via 24.1.1.2, 00:04:41, Ethernet0/0
1.0.0.0/24 is subnetted, 1 subnets
O IA 1.1.1.0 [110/21] via 24.1.1.2, 00:00:49, Ethernet0/0
2.0.0.0/24 is subnetted, 1 subnets
O IA 2.2.2.0 [110/11] via 24.1.1.2, 00:00:49, Ethernet0/0
3.0.0.0/24 is subnetted, 1 subnets
O IA 3.3.3.0 [110/31] via 24.1.1.2, 00:00:49, Ethernet0/0
12.0.0.0/24 is subnetted, 1 subnets
O IA 12.1.1.0 [110/20] via 24.1.1.2, 00:00:49, Ethernet0/0
13.0.0.0/24 is subnetted, 1 subnets
O IA 13.1.1.0 [110/30] via 24.1.1.2, 00:00:49, Ethernet0/0
R4#
- 再次查看 R4 的链路状态数据库,只有 1/2/3 类 LSA
R4#show ip ospf database
OSPF Router with ID (94.4.4.4) (Process ID 1)
Router Link States (Area 1)
Link ID ADV Router Age Seq# Checksum Link count
92.2.2.2 92.2.2.2 48 0x80000005 0x006BBC 1
94.4.4.4 94.4.4.4 47 0x80000005 0x000DEC 2
Net Link States (Area 1)
Link ID ADV Router Age Seq# Checksum
24.1.1.4 94.4.4.4 43 0x80000003 0x00E202
Summary Net Link States (Area 1)
Link ID ADV Router Age Seq# Checksum
0.0.0.0 92.2.2.2 171 0x80000001 0x004893
1.1.1.0 92.2.2.2 171 0x80000002 0x008647
2.2.2.0 92.2.2.2 171 0x80000002 0x00FDD6
3.3.3.0 92.2.2.2 171 0x80000002 0x00A21B
12.1.1.0 92.2.2.2 171 0x80000002 0x00ECD6
13.1.1.0 92.2.2.2 171 0x80000002 0x004474
R4#
- 再次在 R4 上查看一下 ABR 和 ASBR 信息,只有 ABR 没有 ASBR
R4#SHOW IP OSpf BOrder-routers
OSPF Router with ID (94.4.4.4) (Process ID 1)
Base Topology (MTID 0)
Internal Router Routing Table
Codes: i - Intra-area route, I - Inter-area route
i 92.2.2.2 [10] via 24.1.1.2, Ethernet0/0, ABR, Area 1, SPF 5
R4#
四、配置 Area1 为 Totally Stub 区域
— 配置 Totally Stub 只需在 ABR 上增加一条命令即可,其他的与 Stub 区域相同
- 从上面 R4 的链路状态数据库可以看到,还有很多其他区域的 3 类 LSA
– 配置 Totally Stub 区域就是让 ABR 把那些其他区域的 3 类 LSA 也干掉
- 在 ABR 路由器即 R2 路由器上配置
R2 (config)#router ospf 1
R2 (config-router)#area 1 stub no-summary
- 再次查看 R4 的链路状态数据库,只有 1/2/3 类 LSA, 并且 3 类 LSA 只有一条全 0 的
R4#show ip ospf database
OSPF Router with ID (94.4.4.4) (Process ID 1)
Router Link States (Area 1)
Link ID ADV Router Age Seq# Checksum Link count
92.2.2.2 92.2.2.2 669 0x80000005 0x006BBC 1
94.4.4.4 94.4.4.4 668 0x80000005 0x000DEC 2
Net Link States (Area 1)
Link ID ADV Router Age Seq# Checksum
24.1.1.4 94.4.4.4 664 0x80000003 0x00E202
Summary Net Link States (Area 1)
Link ID ADV Router Age Seq# Checksum
0.0.0.0 92.2.2.2 129 0x80000003 0x004495
R4#
- 再次查看 R4 的路由,可以发现,O IA 的路由都没有了,只有一条全 0 的 O*IA 路由
R4#show ip route ospf | begin Gateway
Gateway of last resort is 24.1.1.2 to network 0.0.0.0
O*IA 0.0.0.0/0 [110/11] via 24.1.1.2, 00:00:02, Ethernet0/0
R4#
五 配置 Area1 为 NSSA 区域
- 配置之前需要取消 R4 和 R2 的 stub 配置
R4 (config)#router ospf 1
R4 (config-router)#no area 1 stub
R2 (config)#router ospf 1
R2 (config-router)#no area 1 stub no-summary
R2 (config-router)#no area 1 stub
备注:R2 上面 show run 虽然只能看到一条命令,但是要执行两条命令,才能取消 Totally Stub 的配置
2.R4 配置静态路由并重分布到 OSPF
R4 (config)#ip route 100.1.1.0 255.255.255.0 loopback 0
R4 (config)#router ospf 1
R4 (config-router)#redistribute static subnets
- 查看 R4 的路由表,有两条 O E2 的路由
R4# show ip route ospf | begin Gateway
Gateway of last resort is not set
1.0.0.0/24 is subnetted, 1 subnets
O IA 1.1.1.0 [110/21] via 24.1.1.2, 00:03:08, Ethernet0/0
2.0.0.0/24 is subnetted, 1 subnets
O IA 2.2.2.0 [110/11] via 24.1.1.2, 00:03:18, Ethernet0/0
3.0.0.0/24 is subnetted, 1 subnets
O IA 3.3.3.0 [110/31] via 24.1.1.2, 00:03:08, Ethernet0/0
5.0.0.0/24 is subnetted, 1 subnets
O E2 5.5.5.0 [110/20] via 24.1.1.2, 00:03:03, Ethernet0/0
12.0.0.0/24 is subnetted, 1 subnets
O IA 12.1.1.0 [110/20] via 24.1.1.2, 00:03:18, Ethernet0/0
13.0.0.0/24 is subnetted, 1 subnets
O IA 13.1.1.0 [110/30] via 24.1.1.2, 00:03:08, Ethernet0/0
35.0.0.0/24 is subnetted, 1 subnets
O E2 35.1.1.0 [110/20] via 24.1.1.2, 00:03:03, Ethernet0/0
R4#
- 查看 R4 上面的链路状态数据库,有 1/2/3/4/5 类 LSA
R4#show ip ospf database
OSPF Router with ID (94.4.4.4) (Process ID 1)
Router Link States (Area 1)
Link ID ADV Router Age Seq# Checksum Link count
92.2.2.2 92.2.2.2 539 0x80000008 0x0047DB 1
94.4.4.4 94.4.4.4 340 0x80000009 0x00EC05 2
Net Link States (Area 1)
Link ID ADV Router Age Seq# Checksum
24.1.1.4 94.4.4.4 533 0x80000006 0x00BE21
Summary Net Link States (Area 1)
Link ID ADV Router Age Seq# Checksum
1.1.1.0 92.2.2.2 541 0x80000002 0x006863
2.2.2.0 92.2.2.2 541 0x80000002 0x00DFF2
3.3.3.0 92.2.2.2 541 0x80000002 0x008437
12.1.1.0 92.2.2.2 541 0x80000002 0x00CEF2
13.1.1.0 92.2.2.2 541 0x80000002 0x002690
Summary ASB Link States (Area 1)
Link ID ADV Router Age Seq# Checksum
93.3.3.3 92.2.2.2 541 0x80000001 0x00B9A5
Type-5 AS External Link States
Link ID ADV Router Age Seq# Checksum Tag
5.5.5.0 93.3.3.3 1516 0x80000002 0x00A980 0
35.1.1.0 93.3.3.3 1516 0x80000002 0x007E95 0
100.1.
1.0 94.4.4.4 339 0x80000001 0x0012BD 0
R4#
- 配置 Area1 为 NSSA 区域
①R4 路由器
R4 (config)#router ospf 1
R4 (config-router)#area 1 nssa
②R2 路由器
R2 (config)#rouer ospf 1
R2 (config-router)#area 1 nssa
- 查看 R4 的链路状态数据库,只有 1/2/3 类和自身发出的 7 类 LSA, 没有了 4/5 类 LSA
R4#show ip ospf database
OSPF Router with ID (94.4.4.4) (Process ID 1)
Router Link States (Area 1)
Link ID ADV Router Age Seq# Checksum Link count
92.2.2.2 92.2.2.2 131 0x80000007 0x00F427 1
94.4.4.4 94.4.4.4 130 0x80000007 0x009657 2
Net Link States (Area 1)
Link ID ADV Router Age Seq# Checksum
24.1.1.4 94.4.4.4 125 0x80000005 0x006674
Summary Net Link States (Area 1)
Link ID ADV Router Age Seq# Checksum
1.1.1.0 92.2.2.2 138 0x80000004 0x000AB9
2.2.2.0 92.2.2.2 138 0x80000004 0x008149
3.3.3.0 92.2.2.2 138 0x80000004 0x00268D
12.1.1.0 92.2.2.2 138 0x80000004 0x007049
13.1.1.0 92.2.2.2 138 0x80000004 0x00C7E6
Type-7 AS External Link States (Area 1)
Link ID ADV Router Age Seq# Checksum Tag
100.1.1.0 94.4.4.4 154 0x80000001 0x00466F 0
R4#
- 在 R2 上查看路由表,可以看到 NSSA 区域 ASBR 重分布进来的路由为 O N2 的路由
R2#show ip route ospf | begin Gateway
Gateway of last resort is not set
1.0.0.0/24 is subnetted, 1 subnets
O 1.1.1.0 [110/11] via 12.1.1.1, 00:20:48, Ethernet0/1
3.0.0.0/24 is subnetted, 1 subnets
O IA 3.3.3.0 [110/21] via 12.1.1.1, 00:20:48, Ethernet0/1
4.0.0.0/24 is subnetted, 1 subnets
O 4.4.4.0 [110/11] via 24.1.1.4, 00:20:28, Ethernet0/0
5.0.0.0/24 is subnetted, 1 subnets
O E2 5.5.5.0 [110/20] via 12.1.1.1, 00:20:48, Ethernet0/1
13.0.0.0/24 is subnetted, 1 subnets
O IA 13.1.1.0 [110/20] via 12.1.1.1, 00:20:48, Ethernet0/1
35.0.0.0/24 is subnetted, 1 subnets
O E2 35.1.1.0 [110/20] via 12.1.1.1, 00:20:48, Ethernet0/1
100.0.0.0/24 is subnetted, 1 subnets
O N2 100.1.1.0 [110/20] via 24.1.1.4, 00:20:28, Ethernet0/0
R2#
- 在 R1 和 R3 上查看路由表,可以看到路由已经改为 O E2 的路由
R1#show ip route ospf | begin Gateway
Gateway of last resort is not set
2.0.0.0/24 is subnetted, 1 subnets
O 2.2.2.0 [110/11] via 12.1.1.2, 01:32:11, Ethernet0/0
3.0.0.0/24 is subnetted, 1 subnets
O 3.3.3.0 [110/11] via 13.1.1.3, 01:32:11, Ethernet0/1
4.0.0.0/24 is subnetted, 1 subnets
O IA 4.4.4.0 [110/21] via 12.1.1.2, 00:22:46, Ethernet0/0
5.0.0.0/24 is subnetted, 1 subnets
O E2 5.5.5.0 [110/20] via 13.1.1.3, 01:32:11, Ethernet0/1
24.0.0.0/24 is subnetted, 1 subnets
O IA 24.1.1.0 [110/20] via 12.1.1.2, 00:22:46, Ethernet0/0
35.0.0.0/24 is subnetted, 1 subnets
O E2 35.1.1.0 [110/20] via 13.1.1.3, 01:32:11, Ethernet0/1
100.0.0.0/24 is subnetted, 1 subnets
O E2 100.1.1.0 [110/20] via 12.1.1.2, 00:22:45, Ethernet0/0
R1#
R3#show ip route ospf | begin Gateway
Gateway of last resort is not set
1.0.0.0/24 is subnetted, 1 subnets
O IA 1.1.1.0 [110/11] via 13.1.1.1, 01:31:06, Ethernet0/0
2.0.0.0/24 is subnetted, 1 subnets
O IA 2.2.2.0 [110/21] via 13.1.1.1, 01:31:06, Ethernet0/0
4.0.0.0/24 is subnetted, 1 subnets
O IA 4.4.4.0 [110/31] via 13.1.1.1, 00:21:41, Ethernet0/0
12.0.0.0/24 is subnetted, 1 subnets
O IA 12.1.1.0 [110/20] via 13.1.1.1, 01:31:06, Ethernet0/0
24.0.0.0/24 is subnetted, 1 subnets
O IA 24.1.1.0 [110/30] via 13.1.1.1, 00:21:41, Ethernet0/0
100.0.0.0/24 is subnetted, 1 subnets
O E2 100.1.1.0 [110/20] via 13.1.1.1, 00:21:40, Ethernet0/0
R3#
9.NSSA 区域 ABR 过滤外部的 4 / 类 LSA,而又不发布全 0 的缺省路由,因此需要添加参数 default-information-originate
R2 (config)#router ospf 1
R2 (config-router)# area 1 nssa default-information-originate
R2#show ip ospf database | sec Type-7
Type-7 AS External Link States (Area 1)
R2#show ip ospf database | begin Type-7
Type-7 AS External Link States (Area 1)
Link ID ADV Router Age Seq# Checksum Tag
0.0.0.0 92.2.2.2 185 0x80000001 0x00A3AB 0
100.1.1.0 94.4.4.4 209 0x80000002 0x004470 0
Type-5 AS External Link States
Link ID ADV Router Age Seq# Checksum Tag
5.5.5.0 93.3.3.3 193 0x80000004 0x00A582 0
35.1.1.0 93.3.3.3 194 0x80000004 0x007A97 0
100.1.1.0 92.2.2.2 132 0x80000002 0x0015B1 0
R2#
备注:配置完成后,可以看到全 0 的默认路由是以 7 类 LSA 在本区域传递的
五。配置 Area1 为 Totally NSSA 区域
1.Totally NSSA 可以只在 ABR 上配置
①R4 路由器
router ospf 1
router-id 94.4.4.4
area 1 nssa
redistribute static subnets
passive-interface Loopback0
network 4.4.4.4 0.0.0.0 area 1
network 24.1.1.4 0.0.0.0 area 1
②R2 路由器
router ospf 1
router-id 92.2.2.2
area 1 nssa no-summary
passive-interface Loopback0
network 2.2.2.2 0.0.0.0 area 0
network 12.1.1.2 0.0.0.0 area 0
network 24.1.1.2 0.0.0.0 area 1
- 配置完成后,可以看到 R4 只有一条全 0 标记为 O*IA 的 OSPF 路由
R4#show ip route ospf | begin Gateway
Gateway of last resort is 24.1.1.2 to network 0.0.0.0
O*IA 0.0.0.0/0 [110/11] via 24.1.1.2, 00:10:34, Ethernet0/0
R4#
- 在 R4 上查看 OSPF 链路状态数据库,可以看到 1/2/3/7 类 LSA
— 备注:3 类 LSA 只有一条由 ABR 产生的全 0 默认路由
R4#show ip ospf database
OSPF Router with ID (94.4.4.4) (Process ID 1)
Router Link States (Area 1)
Link ID ADV Router Age Seq# Checksum Link count
92.2.2.2 92.2.2.2 751 0x8000000B 0x00EC2B 1
94.4.4.4 94.4.4.4 1532 0x80000008 0x009458 2
Net Link States (Area 1)
Link ID ADV Router Age Seq# Checksum
24.1.1.4 94.4.4.4 1532 0x80000006 0x006475
Summary Net Link States (Area 1)
Link ID ADV Router Age Seq# Checksum
0.0.0.0 92.2.2.2 757 0x80000001 0x00CF04
Type-7 AS External Link States (Area 1)
Link ID ADV Router Age Seq# Checksum Tag
100.1.1.0 94.4.4.4 1786 0x80000002 0x004470 0
R4#
via:
-
【原创】OSPF 的 Stub/Totally Stub/NSSA/Totally NSSA 区域测试 - Cisco Community 碧云天 发布时间 02-20-2020 12:57 AM 最后 编辑于 2020-2-20 17:08
https://community.cisco.com/t5/网络文档/原创-ospf的stub-totally-stub-nssa-totally-nssa-区域测试/ta-p/4352750