NetWork OSPF 链路状态通告及特殊区域

Q:OSPF的介质类型、链路类型及网络类型分别指什么,三者之间有什么关系?

A:
OSPF的介质类型、链路类型及网络类型的说明如下。
 介质类型(media type):物理链路类型,应该包括GigabitEthernet、Ethernet等物理链路。
 OSPF链路类型(link type,LSA中):LSA中的link type是按照RFC2328协议规定填写的,根据的是ospf network-type,具体规定如下:
− 对于点对点网络,link type是Point-to-Point。
− 连接到传输网络,link type是transit。
− 连接到一个Stub网络,link type 是stub。
− 连接到虚链路,link type是Virtual。
OSPF网络类型(network type):OSPF network type屏蔽了不同物理介质的差异,可以按照用户需要配置对应的网络类型。
目前OSPF可以配置4种网络类型,包括P2P、Broadcast、NBMA和P2MP。
三者之间的关系:介质类型决定了OSPF默认的network type类型,OSPF network type类型决定LSA种4 link type类型。

LSA type 1 Router

是每个路由器都通告的信息,通告自身连接的网络信息(接口信息)及链路类型,通过dis ospf lsdb route originate-route 10.2.2.2 查看 RouterID 为10.2.2.2

上述Link ID 用于描述的是设备接口的信息,Link Count 是描述接口的个数 ,Link Type 是描述链路类型 其中 TransNet 表示连接到一个传输网络,StubNet 表示连接的末梢网络(这里是OSPF 对环回接口的特殊描述,DATA 是子网掩码,尽管实际上的掩码255.255.255.0,另外度量值缺省为0)

LSA Type 2 Network

类型2 是多路访问网络中DR 泛洪的LSA ,如此一来,它将在所连接的区域 内泛洪一
Type-2 LSA ,在该 LSA 中将包含区域内所有路由器的 Router-ID (这个网络内的所有路由器),另外该 LSA还会描述这个 MA 网络的掩码: 255.255.255.0,如果 不存在MA 网络则没有LSA TYPE-2的通告。如果是串行链路则没有网络LSA通告。

R2的LSDB中第二种LSA类型是Network-LSA。也就是Type2 LSA,中文名网络LSA。

有了类型1 和类型2 的LSA 可以勾建出网络的拓扑;可以解决区域内的路由计算。

LSA Type 3 Summary LSA 路由汇总

前两类 LSA 解决了区域内路由计算的问题,那么 域间路由的计算呢? 当一OSPF 网络中存在多个区域时,单凭Type-l Type-2 LSA 仅能解决单个区域内的路由计算问题,但是区域之间的路由传递目前依然有待解决,因为 Type-l Type-2 LSA 只能在始发区域内泛洪,无法被泛洪到区域之外。 Type-3 LSA 也就是网络汇总 LSA ( Network Summary LSA) ,这里的” 汇总” ,其实理解为”归纳”更为贴切,它和路由汇总是完全不同的概念。实际上就是将区域内部的Type1 Type2的信息收集起来以路由子网的形式扩散出去,这就是Summay的含义

即Network-summary-LSA,也叫Type3 LSA,中文名网络汇总LSA。

Type-3 LSA 是由 ABR 产生的,用于解决区域之间的路由传递问题。由于 ABR 同时连接着非骨干区域以及Area0 ,因此它分别为这些区域维护着 LSDB 并且计算出到达直连区域的区域内部路由,它向某个区域注入 Type-3 LSA ,以便向该区域通告到达其他区域的区域间路由。

执行 display ospf lsdb summary 命令,可以查看 LSDB 中的 Type-3 LSA:

在Network-summary-LSA中,Link-State ID字段代表该LSA所描述的网络的网络地址。从LSA的信息中可以看出,该LSA由R2发布(10.2.2.2),可以到达192.168.12.0,掩码为255.255.255.0的网络;代价为1。

在R2路由器查看接受的通告,由于R2是ABR 所以可以查看到区域间的通告信息,区域0 收到了192.168.34.0/24、192.168.12.0/24 的子网信息;区域1 收到了192.168.23.0/24、192.168.34.0/24 的子网信息。

Area0和Area1中,同样是到达192.168.34.0的网络,但通告路由器却是不同的,这是什么原因呢?原来如果ABR收到来自同区域其它ABR传来的Type 3 LSA后,会重新生成新的Type3 LSA(Advertising Router改为自己),然后继续在整个OSPF系统内扩散。

LSA TYPE 4 ASBR

看当外部路由被引入 OSPF 域后, OSPF 如何实现路由计算?

ASBR 将域外的路由(例如 RIP 路由、静态路由等)引入 OSPF OSPF使用 Type-5 LSA 描述这些外部路由, Type-5 LSA 够在整个 OSPF 域内泛洪(除了些特殊的区域),这样所有的路由器都能知晓这些到达外部的路由,但是光获知到达外部网络的路由还是不够的,还需要知道引入这些外部路由的 ASBR 的所在。

与ASBR 同属一个区域路由器能够通过区域内泛洪的Type-l ,Type-2 LSA 计算出到达 ASBR 的路由,然而这两种 LSA 只能在本区域内泛洪,那么其他区域的路由器如何知道到达该 ASBR的路径?这就需要用到Type-4 LSA 了Type-4 LSA 被称为 ASBR 汇总 LSA (ASBR Summary LSA) ,由ABR产生,实际上是一条到达 ASBR 的主机路由。Type-4LSA 的格式与 Type-3 LSA 是一致的。在 Type-4 LSA 中,“链路状态 ID” 字段的值是 ASBR Router-ID ,而且”网络掩码”字段的值为全0 ,另外,”度量值”字段填写的是该 ABR自己到达 ASBR Cost 值.

当ASBR 通过import-route 命令导入外部路由时,就会产生Type-5 LSA 描述这些外部路由。

这里LS ID 就是ASBR 路由器,度量值Metric 42是ABR 到达ASBR的Cost 值 。

TYPE 5 LSA ASE (AS External LSA)

此种LSA是描述到AS外部的路由,由自治系统边界路由器ASBR发布,在整个AS中泛洪(除了STUB区域和NSSA区域)

使用 display ospf lsdb ase 命令能够查看到网络中泛洪的Type-5 LSA:

转发地址 (Forwarding Address. FA): 当FAYL 0 .0.0 .0 时,则到达该外部网段
的流 会被发往引入这条外部路由的 ASBR .而如果 FA 不为 0.0.0 .0 ,则流量会被发往
这个转发地址。 FA 这一概念的引入,使得 OSPF 在某些特殊的场景中得以规避次优路径
问题。

TYPE-7 LSA NSSA

Type-7LSA 也就是非完全末梢区域外部 LSA (Not-So-Stubby Area Extemal LSA) 。这
是一种特殊的 LSA,也是用于描述 OSPF 外部路由,并且其报文格式与巧type-5 LSA 一致,
但是它的泛洪范围却是有严格限制的一一它只能够在 NSSA (Not-So-Stubby Area,非完全
末梢区域)内泛洪,并且不能进入AreaO 。

而 ABR为了让 NSSA 内的路由器能通过骨干区域访问被过滤掉的type-5 LSA 所描述的外部路由,会向 NSSA 中发布 一条默认路由(使用Type-7 LSA 描述)。另 一方面, NSSA 允许本区域中的路由器引入少 量外部路由,这些外部路由被引入后将使用Type-7 LSA 描述,而且Type-7LSA 只能够在该 NSSA 内泛洪,不允许被注入Area0, NSSA ABR 会负责将 NSSA
内泛洪的 Type-7 LSA 转换成 Type-5 LSA ,使得这些外部路由能够在 OSPF 域内传播。

使用 display ospf lsdb nssa 命令可以查看到在Areal 中泛洪的Type-7 LSA.

将Area2配置为NSSA区域,查看R4(ASBR)上

在R3上查看

NSSA区域允许引入外部路由,但外部路由信息的NSSA LSA只能在本区域泛洪,那外部路由如何能传递给整个自治域呢?

大家可以看下R3的LSDB即图20,在“AS External Database”中,有一条Tpye5的AS-external-LSA,目标网络是10.44.44.44,通告路由器是R3,这是因为Type7 LSA在ABR(R3)上转换成Type5 LSA,并且泛洪到骨干区直至整个自治域中。这样就将外部路由引入到了除NSSA区域的其他区域。

在R1查看 nssa lsa

总结 LSA

Stub 区域

STUB区域是一些特定的区域,STUB区域的ABR不传播它们接收到的自治系统外部路由,在这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。

STUB区域是一种可选的配置属性,但并不是每个区域都符合配置的条件。通常来说,STUB区域位于自治系统的边界,是那些只有一个ABR的非骨干区域。

为保证到自治系统外的路由依旧可达,该区域的ABR将生成一条缺省路由,并发布给STUB区域中的其他非ABR路由器。

配置STUB区域时需要注意下列几点:

  • 骨干区域不能配置成STUB区域。
  • 如果要将一个区域配置成STUB区域,则该区域中的所有路由器都要配置STUB区域属性。
  • STUB区域内不能存在ASBR,即自治系统外部的路由不能在本区域内传播。
  • 虚连接不能穿过STUB区域。

NSSA区域

NSSA(Not-So-Stubby Area)区域是OSPF特殊的区域类型。NSSA区域与STUB区域有许多相似的地方,两者都不传播来自OSPF网络其它区域的外部路由。差别在于STUB区域是不能引入外部路由,NSSA区域能够将自治域外部路由引入并传播到整个OSPF自治域中。

当区域配置为NSSA区域后,为保证到自治系统外的路由可达,NSSA区域的ABR将生成一条缺省路由,并发布给NSSA区域中的其他路由器。

NSSA区域允许本区域ASBR(指定为ASBR)引入的外部路由在该区域内传播,但不允许其他区域引入的外部路由在本区域内传播。

配置NSSA区域时需要注意下列几点:

  • 骨干区域不能配置成NSSA区域。
  • 如果要将一个区域配置成NSSA区域,则该区域中的所有路由器都要配置NSSA区域属性。
  • 虚连接不能穿过NSSA区域。

Network OSPF DR与BDR

DR,BDR的选举是为了避免在广播多路访问网络上产生过多的邻接关系。

DR 在网络中的 LSDB 同步方面有着关键性的作用,它负责侦听网络中的拓扑变更信息并将变更信息通知给其他路由器。它为网络生成 Type-2 LSA(一种 LSA 类型),在该 LSA 中显示出了连接在这MA 网络的所有 OSPF 路由器的 Router-ID ,其中也包括 DR 自己。 BDR 会监控 DR 的状态,并在当DR发生故障时接替它的工作。

华为数通产品的接口 DR 优先级缺省为1,这个值可以通过 ospf dr-priority 命令修改(该命令需在接口视图下执行),取值范围是 0~255 。DR 优先级为0 的接口不具备 DR BDR
举资格。当接口激活 OSPF 后,它首先会检查网络上是否已经存在 DR,如果是则接受
已经存在的 DR( 因此 DR 的角色不具备可抢占性),否则拥有最高 DR 优先级的路由器
将成为 DR,当 DR 优先级相等时,拥有最大 Router-ID 的路由器将成为 DR。除了 DR
的选举, OSPF 还会进行 BDR 的选举, BDR 的选举过程与 DR 类似,此处不再赘述。

DR、BDR 的选举是在OSPF接口,同一网段中进行,如果有多个接口,多个网段会选举出多个DR、BDR.

在路由器上,使用 display ospf interface 命令可以查看某个特定接口的 OSPF 信息.

DR BDR 是一个接口级别的概念,所以”某台路由器是 DR”说法其实是不够严谨的,严格地说应该是: “某台路由器的某个接口在这个 MA 网络中DR”。在一个 MA 网络中, DR 负责确保接入该网络中的所有 OSPF 路由器拥有相同,的LSDB ,也就是确保这些 LSDB 的同步。 DR 使用组播目的 IP 地址 224.0.0.5 向该网络中发送 LSU 报文,所有的 OSPF 路由器都会侦昕这个目的 IP 地址,并与 DR 步自己LSDB 。而 DROther 感知到拓扑变化时,向 224.0.0.6 发送 LSU 报文以便通告这个变化, DR BDR 会侦昕这个组播地址。

NetWork OSPF网络链路类型

OSPF 的网络类型是协议根据接口的数据链路层封装自动设置的。

p2p 链路: 点到点链路不进行DR和BDR的选举,

P2MP链路: P2MP 网络中无需选举 DR BDR, OSPF P2MP 类型的
接口上通常以组播的方式发送 Hello 报文,以单播的方式发送其他报文

BMA链路:进行DR,BDR的选举

NBMA链路:会进行DR,BDR的选举

值得注意的是,两个路由器的直连接口即使网络类型不匹配,也能够建立起 OSPF
邻接关系,但是 OSPF 路由的计算却是极有可能出现问题的,这是因为接口的网络类型
会影响到路由器产生的 LSA 中对该接口的描述,而这将关系到路由器对网络拓扑的理解
以及路由的计算。因此, OSPF 邻居的互联接口网络类型必须一致。

缺省情况下,接口的网络类型根据物理接口选择:

  • 以太网接口的网络类型为广播(Broadcast)。
  • 串口(封装PPP协议或HDLC协议时)的网络类型为P2P。
  • ATM和Frame-relay接口的网络类型为NBMA。

一般情况下,链路两端的OSPF接口的网络类型必须一致,否则双方不可以建立起邻居关系。

操作步骤

  1. 执行命令system-view,进入系统视图。
  2. 执行命令interface interface-type interface-number,进入运行OSPF的接口视图。
  3. 执行命令ospf network-type { broadcast | nbma | p2mp | p2p [ peer-ip-ignore ] },配置OSPF接口的网络类型。缺省情况下,接口的网络类型根据物理接口而定。以太网接口的网络类型为广播,串口和POS口(封装PPP协议或HDLC协议时)网络类型为P2P,ATM和Frame-relay接口的网络类型为NBMA。当用户为接口配置了新的网络类型后,原接口的网络类型将被替换。根据实际情况配置接口的网络类型,例如:
    • 如果接口的网络类型是广播,但在广播网络上有不支持组播地址的路由器,可以将接口的网络类型改为NBMA网络。
    • 如果接口的网络类型是NBMA,且网络是全连通的,即任意两台路由器都直接可达。此时,可以将接口类型改为广播网络,并且不必再配置邻居路由器。
    • 如果接口的网络类型是NBMA,但网络不是全连通的,必须将接口的网络类型改为P2MP。这样,两台不能直接可达的路由器就可以通过一台与两者都直接可达的路由器来交换路由信息。接口的网络类型改为P2MP网络后,不必再配置邻居路由器。
    • 如果同一网段内只有两台路由器运行OSPF协议,建议将接口的网络类型改为P2P网络

OSPF 三张表

OSPF 使用三张表格以确保其正常运行。

1.邻居表( PeerTable 或Neighbor Table)

在建立邻接关系之前要协商成为邻居,当一个接口激活 OSPF 后,该接口将周期性地发送OSPF Hello 报文,同时也开始侦昕 Hello文从而发现直连链路上邻居。

当 OSPF 在接口发现邻居后,邻居信息就会被写入路由器的 OSPF领 居表,随即邻接关系 建立过程也就开始了

使用 display ospf peer 命令可查看设备 OSPF 邻居表。

通过查看邻居表,获悉直连邻居的接口IP ,查看和邻居的状态关系来确定是否建立了邻接关系。

Neighbors

Area 0.0.0.0 interface 10.1.34.1(GigabitEthernet0/0/2)’s neighbors
Router ID: 4.4.4.4 Address: 10.1.34.2
State: Full Mode:Nbr is Master Priority: 1
DR: 10.1.34.2 BDR: 10.1.34.1 MTU: 0
Dead timer due in 33 sec
Retrans timer interval: 5
Neighbor is up for 00:15:49
Authentication Sequence: [ 0 ]

2、链路状态数据库LSDB

LSDB 是LSA 信息的汇总。

OSPF 根据 LSDB 中的数据,运行 SPF 算法并且得到一棵以自己为根的、无环的最
短路径树
,基于这棵树, OSPF 能够发现到达网络中各个网段的最佳路径,从而得到路
由信息并将其加载到 OSPF 路由表中。

3、OSPF 路由表

Network 路由策略工具IP前缀列表

为什么ACL不能匹配指定的路由条目

它所匹配的对象是 IP 地址前缀,也就是路由条目。一个路由条目由目的网络地址〈也被称为 IP 前缀〉及掩码长度(也被称为前缀长度〉共同标识。使用 ACL 从一批路由中筛选出感兴趣的路由时,是无法指定被匹配对象的目的网络掩码长度的,但是 IP 前缀列表却可以做到,它除了能够指定被匹配对象的目的网络地址,还能指定目的网络掩码长度,从而实现对路由的精确匹配。

例如 :过滤掉 172.16.0.0/16 这条路由,您可能己经想到,使用 Route-Policy 可以解决这个问题。

acl 2000

rule deny source 172.16.0.0 0.0.0.0

rule permit

quit

route-policy hcnp permit node 10

if-match acl 2000

quit

ospf 1

import-route isis route-policy hcnp

ACL 只能用于匹配路由的目的网络地址,而对于目的网络掩码的匹配是无能为力的,因此目的网络地址为 172.16.0.0 的路由,无论目的网络掩码如何,都会被 ACL 规则 rule deny source 172.16.0.0 0.0 0.0 所匹配(例:172.16.1.0/24)

IP前缀列表

ip ip-prefix abcd index 10 permit 172.16.0.0 16

这条 IP 前缀列表的语句中指定了 IP 地址(1 72.1 6.0.0 )以及掩码长度(16)如此一来,该语句就精确地匹配了路由 172 .16.0.0/16 . IP 前缀列表除了能够精确匹配一条路由,还能够匹配 一组有规律的路由。

ip ip-prefix abcd index 10 greate-equal 24 less-equal 32

IP前缀列表匹配顺序

当一个 IP 前缀列表开始进行路由匹配时,将从序号最小的语句开始依序匹配,如果

路由不满足该语句中的条件,则继续匹配下一个语句。只要满足当前语旬,便不再继续
匹配后续的语句,被当前语句匹配住的路由,将根据该语句所定义的匹配模式 (Permit或
Deny) 判断是否被允许通过, Permit 为允许, Deny 为拒绝。另外,在 IP 前缀列表的
末尾隐含着一条拒绝所有的语句,因此一个对象若不满足任何一个语旬,则该对象被视
不被该前缀列表允许通过。

举例

(1) ip ip-prefix aa index 10 permit 172.16.0.0 24

(2) ip ip-prefix bb index 10 permit 172.16.0.0 16 less-equal 24

(3) ip ip-prefix cc index 10 permit 172.16.0.0 16 greater-equal 24

(4) ip ip-prefix dd index 10 permit 172.16.0.0 16 greater-equal 24 less-equal 30

(5) ip ip-prefix ee index 10 deny 172.16.0.0 30

ip ip-prefix ee index 20 permit 172.16.0.0 24

(6)ip ip-prefix ff index 10 permit 0.0.0.0 0 less-equal 32

(7) ip ip-prefix gg index 10 deny 172.16.0.0 30

应用场合

1、在路由策略中的应用

route-policy hcnp permit node 10

if-match ip-prefix abcd

2、在过滤策略中的应用

ospf 1

import-route rip

filter-policy ip-prefix abcd export rip

Index