「ISIS」- 通告缺省路由(Default Route Injection)

  CREATED BY JENKINSBOT

解决方案

在 ISIS 中,主要通过以下 3 种方式控制缺省路由的生成和发布:
1)在 Level-1-2 上,通过配置,控制其产生的 Level-1 LSP 中 ATT 位的置位情况。
2)在 Level-1 上,通过配置,使其即使收到 ATT 位置位的 Level-1 LSP 也不会自动产生缺省路由。
3)在 ISIS 中,发布缺省路由。

报文格式

ATT(Attachment):由 Level-1-2 Router 产生,用来指明始发路由器是否与其它区域相连。此字段有 4bit,华为数通产品只使用了其中 1bit;

通过设置 ATT 位控制缺省路由生成

自动 ATT 置位

缺省情况下,Level-1-2 设备发布的 LSP 的 ATT 位,其是根据缺省置位规则来决定置位情况,其 ISIS 规定如下:
1)如果 Level-1-2 设备根据 LSDB 判断通过 Level-2 区域比 Level-1 区域能够到达更多的区域,该设备会在所发布的 Level-1 LSP 内将 ATT 位置位。
2)对于收到 ATT 位置位的 LSP 报文的 Level-1 设备,会生成一条目的地为发送该 LSP 的 Level-1-2 设备地址的缺省路由。

以上是协议的默认原则,在实际应用中,可以根据需要对 ATT 比特位进行手动配置以更好地为网络服务。

配置 ATT 置位

# 在 Level-1-2 中,设置 IS-IS LSP 报文的 ATT 比特位置位规则。
# always:指定 ATT 位永远置位,收到该 LSP 的 Level-1 设备会生成缺省路由。
# never:指定 ATT 位永不置位,可以避免 Level-1 设备生成缺省路由,减小路由表的规模。
[Huawei-isis-1] attached-bit advertise { always | never }

虽然 ATT 位同时在 Level-1 LSP 和 Level-2 LSP 中进行了定义,
但是它只会在 Level-1 LSP 中被置位,并且只有 Level-1-2 设备会设置这个字段,
所以,该命令仅对 Level-1-2 设备生效。

Level-1,忽略 ATT 比特,不产生缺省路由

配置 Level-1 设备不将缺省路由下发到路由表,有以下两种方式可以实现:
1)在 Level-1-2 设备上配置 attached-bit advertise never 命令,使得其不会发布 ATT 位置位的 LSP;
2)在与 Level-1-2 设备相连的 Level-1 设备上配置 attached-bit avoid-learning 命令,适用于需要针对指定设备配置的情况。

配置案例

# 在 Level-1 中,缺省情况下,IS-IS 按 ATT 位缺省使用规则生成缺省路由。
# 控制 Level-1 设备不因为 ATT 位下发缺省路由到路由表。
[Huawei-isis-1] attached-bit avoid-learning

在 ISIS 中,发布缺省路由

在具有外部路由的边界设备上,配置 ISIS 发布缺省路由,可以使该设备在 ISIS 路由域内发布一条 0.0.0.0/0 的缺省路由。
在执行此配置后,ISIS 域内的其他设备在转发流量时,将所有去往外部路由域的流量首先转发到该设备,然后通过该设备去往外部路由域。

通常,当网络中部署 ISIS 和其他路由协议时,为了实现 ISIS 域内的流量可以到达 ISIS 域外,通常有如下两种方式:
1)在边界设备上,配置 ISIS 设备向 ISIS 域发布缺省路由。该方式较为简单,不需要学习外部路由。
2)在边界设备上,将其他路由域的路由引入到 ISIS 中。

配置案例

配置运行 ISIS 的设备生成缺省路由:

# always:指定设备无条件的发布缺省路由,且发布的缺省路由中将自己作为下一跳。
# match default:如果在路由表中存在其他路由协议或其它 IS-IS 进程生成的缺省路由,则在 LSP 中发布该缺省路由。
# route-policy name:指定路由策略名称。当该边界设备的路由表中存在满足路由策略的外部路由时,才向 IS-IS 域发布缺省路由,避免由于链路故障等原因造成该设备已经不存在某些重要的外部路由时,仍然发布缺省路由从而造成路由黑洞。此处的路由策略不影响 IS-IS 引入外部路由。字符串形式,区分大小写,不支持空格,长度范围是 1~40。当输入的字符串两端使用双引号时,可在字符串中输入空格。
# cost cost:指定缺省路由的开销值。整数形式。取值范围根据 cost-style 而定:当 cost-style 为 narrow、narrow-compatible 或 compatible 时,取值范围是 0~63;当 cost-style 为 wide 或 wide-compatible 时,取值范围是 0~4261412864。
# tag tag:指定发布的缺省路由的标记值。只有当 IS-IS 的开销类型为 wide、wide-compatible 或 compatible 时,发布的 LSP 中才会携带 tag 值。整数形式,取值范围为 1~4294967295。
# level-1:指定发布的缺省路由级别为 Level-1。如果不指定级别,则默认为生成 Level-2 级别的缺省路由。
# level-2:指定发布的缺省路由级别为 Level-2。如果不指定级别,则默认为生成 Level-2 级别的缺省路由。
# level-1-2:指定发布的缺省路由级别为 Level-1-2。如果不指定级别,则默认为生成 Level-2 级别的缺省路由。
# avoid-learning:避免 IS-IS 进程学到其他路由协议或其它 IS-IS 进程生成的缺省路由并添加到路由表。如果路由表中已存在学到的缺省路由为活跃状态,则将此路由置为不活跃状态。
[Huawei-isis-1] default-route-advertise [ always | match default | route-policy name ] [ cost cost | tag tag | [ level-1 | level-1-2 | level-2 ] ] [ avoid-learning ]

缺省情况下,运行 IS-IS 协议的设备不生成缺省路由。
当配置该命令后,IS-IS 域内所有去往外部的流量将首先会被转发到该设备来进行转发。
相比于在每台设备上配置静态缺省路由,使用该命令可以简化操作,即只需在边界设备配置即可。
此外,该命令是动态发布缺省路由,使用更加灵活,有多种发布缺省路由的方式可供选择。

如果在 Level-1 设备上配置了该命令,那么该设备只会向 Level-1 区域发布缺省路由,不会将缺省路由发布到 Level-2 区域。