​【案例】割接!​统一IMC网管部署-需求分析/前置知识点(一)

2021-05-17 15:48:33 浏览数 (1)

割接!统一IMC网管部署

内容简介

在骨干网的割接案例中,最常见的就是路由过滤、路由选路方面的改造。本章再为大家讲一个与路由过滤、路由选路方面的案例。

一、需求分析

1.1

网络环境介绍

本案例要为大家介绍的案例是一个关于骨干网 IPv4 公网路由的割接,分为省级骨干网与地区级骨干网。先看结构图,然后再给大家解释 。

为了方便全省的骨干网 PE 设备的管理,由省内专门的管理员发现各地骨干网设备可能存在的问题,省级单位管理员专门部署了一套 H3C IMC 的网管系统,并给这套网管系统新增了一个自治系统,AS 号码为:64570 。这套 H3C IMC 网管系统与现行骨干网的结构如下图所示:

1.2

网络改造需求

为了让新部署的 H3C IMC 网管系统能够 访问 到省级骨干网及所有地区级骨干网的所有 PE 级别的设备,并且能够成功管理,还不能给网络带来新的缺陷,所以本次网络改造的需求如下:

  • 本次网络改造范围为公网路由,不准对任何业务路由进行操作;
  • IMC 网管 AS 必须可以接收到省级骨干网的公网路由和全部地区的公网路由;
  • 地区与地区之间 、地区与省网之间 不允许相互接收到公网路由。由于所有公网路由都需要在省级骨干网 上汇聚,所以请在省级骨干网上做好路由过滤;
  • 省级骨干平面 A 、B 网之间不能相互收取路由;
  • 网络第一次改造不做大段地址的路由聚合操作。

需求说完了,如果觉得看起来不是太明白的话,那么我就再给大家小小的解释一下吧。

  • 所谓公网路由,这里千万不要理解为 Internet !对于有 MPLS VPN 的骨干网来说,公网路由就是不属于任何 VRF vpn-instance )的路由,即你 show ip route 或者 display ip routing直接就能看到的路由。在骨干网中,公网路由通常用作管理地址和 AS 内部 iBGP 邻居的更新源地址。其实也就是在 BGP 进程中, address-family ipv4 unicast 路由。
  • 对于第 2 个需求, 简单一点就是说, IMC 网管的 AS 内部必须能收到全网的路由,而且 IMC 网管 AS 内部的路由,也能被全网收到。
  • 第 3 个需求嘛,就是说地区 1 只能收到 IMC 区域的路由 ,地区 2 也只能收到 IMC区域的路由……以此类推。

1.3

链路公网互联地址及规划

各个地区骨干网与省级骨干网之间公网互联地址(网段)见下表, IMC 区域与升级骨干网之间的互联地址为新规划的地址。

在每一组互联地址段中,省网侧使用奇数地址,地区网侧使用偶数地址。

1.4

各区域内设备管理地址段

在省级骨干网 A 、B 平面及各个地区网内,PE 、MCE 设备均使用 Loopback 接口地址作为设备的管理地址。部分地区的 CE 设备使用 Loopback 接口地址作为管理地址,也有部分地区的 CE 设备使用某个 VLAN 的地址作为管理地址的。但是不管以什么接口的地址作为管理地址,最终也必须属于规定的网段。下表中列出了省级骨干网 A 、B 平面及各个地区网设备 管理地址段的规划:

二、前置知识点

2.1

BGP 路由过滤技术

BGP 的路由过滤有多种方法,最常用的方法有以下 两 种:

第一种方法:配置 前缀列表,然后将这个前缀列表挂载到 BGP 邻居上。这种方式适合在双方都只收发 BGP 路由的时候使用。

前缀列表中有permit deny 的执行动作,如果执行动作 permit ,则这个前缀列表为白名单列表,只允许部分网段被传送;如果执行动作是 deny ,则这个前缀列表为黑名单列表,只过滤部分网段。

简单的看一个 在 Cisco 设备上配置 的 例子:

代码语言:javascript复制
ip prefix deny_10 deny 10.112.1.0/24
router bgp 2300
address-family ipv4
neighbor 10.12.1.1 prefix list deny_10 in

在这次操作中,前缀列表的执行动作为“ deny ”,包含的网段是 10.112.1.0/24 。在BGP 配置进程中,针对 10.12.1.1 挂载前缀列表的方向为“ in ”方向。则说明这次操作中该设备将 不会从 10.12.1.1 收到 10.112.1.0/24 网段。

如果是华为或者 H3C 设备的话,那么配置命令就该这么写:

代码语言:javascript复制
ip ip-prefix deny_10 deny 10.112.1.0 24
bgp 2300
ipv4 family unicast
peer 10.12.1.1 ip-prefix deny_10 import

第二种方法:配置前缀列表,但是结合Route-map 挂载到邻居上使用, 这种方式适合在过滤路由的同时修改路径熟悉或路由重分发的时候使用 。

例如:将 OSPF 路由重分发到 BGP 中,但是不收取 10.112.1.0/24 这条路由,则它的配置命令如下:

Cisco

代码语言:javascript复制
ip-prefix deny_10 10.112.1.0/24
route-map deny_10
match ip address prefix deny_10
router bgp 2300
address-family ipv4
redistribute ospf 2300 route-map deny_10

华为&H3C

代码语言:javascript复制
ip ip-prefix deny_10 10.112.1.0 24
route policy deny_10
if-match ip-prefix deny_10
bgp 2300
ipv4-family unicast
import ospf 2300 route policy deny_10

2.2

BGP Community

BGP Community属性是一种可选可传递的属性,它是 BGP 路由的一个标签( TAG )。如果你为某些 BGP 路由设置了 Community 属性的话,它就会带上 Community 标签,并有选择地发送给 BGP 邻居。邻居在收到了带有 Community 属性的路由条目以后,可以使用 Community List 选择接收或者拒绝接收这条路由。所以,你可以用一种简单的方式理解 BGP Community :它是 BGP 路由的一个标签,可以根据这个标签选择接收或者拒绝接收路由。

按照普通的IPv4 单播网络和 MPLS VPN 网络来区分的话, BGP Commnuity 有两类,一类是标准 Community standard Community ),用于 IPv4 单播网络;一类是扩展Community Extended Community )用于 MPLS VPN 环境中传递 Route Target 。本 案例不对私网路由进行配置,所以只使用 标准 Community 。

在标准 Community 中,又分为两种 Community:

  • 众所周知的 Community: BGP 预定义的 Community ,有固定格式和特定的功能,只能被使用不能被修改。
  • 私有 Community :用户自定义的 Commuity 。

BGP拥有 4 个众所周知的 Community:

  • no-export :不将路由发送给任何 EBGP 邻居
  • no-advertise :不将路由发给任何 BGP 邻居
  • internet :可以将路由器发送给任何 BGP 邻居
  • local-as :不将路由发到 AS 外

BGP的众所周知的 Community 有点简单粗暴,但是在实际的应用中还是有一定的用武之地的。不过相 比起来,私有 Community 的应用更广泛一些。

私有Community 的类型是十进制数字,默认长度是 32 bit 。一般遵循的私有Community 的格式为 AS:nn 格式,即 16 bit 的 AS 号码加上 16 bit( 0-65535) 的任意整数。Cisco 默认不支持 AS:nn 格式,必须要在全局模式下输入 ip BGP-Community New-Format 命令才能让私有 Community 显示为 AS:nn 格式。

私有Community 发送给对方路由器以后,对方是不会对这个 Community 执行任何过滤的动作。如果 想要过滤某些携带了私有 Community 属性的路由,可以通过配置Community-List 来进行操作。例如,我们在 设备 上拒绝携带 300:3 标记的路由, 在 Cisco设备上 配置方法如下:

代码语言:javascript复制
ip community-list standard DENY_300:3 deny 300:3
//配置针对标准 Community 的 Community List ,名称为 DENY_300:3 ,拒绝的标记是 300:3
route-map DENY_300:3 permit 10
match community DENY_300:3
//配置 Route map ,包含 Community List 为 DENY_300:3
router bgp 200
address-family ipv4
neighbor 10.23.1.2 route-map DENY_300:3 in
//调用 route map 到邻居的 in 方向

这样,由于携带了300:3 这个标记的路由是 10.3.3.3/32 ,所以在 该设备上 收不到10.3.3.3/32 这条路由 。

使用Community 属性来过滤路由,虽然设置起来相对 prefix-list 要复杂一些,但是使用 Community 属性效率更高,控制力度更强,防止路由从后门回灌的效果也更好,所以 Community 属性在实际应用中非常广泛。

2.3

AS Path 正则表达式

因为BGP 的路由通常会携带 AS-Path ,所以除了根据路由的 IP 来过滤之外,还可以根据路由携带的 AS-Path 来过滤,要匹配路由的 AS-Path ,需要使用正则表达式来匹配AS 特征。在使用正则表达式的时候,需要注意两点:

1、 正则表达式只能用于过滤 AS-Path 属性;

2、 由于第 1 点的原因,所以正则表达式只能用于 eBGP 邻居之间的过滤。

使用正则表达式过滤路由,虽然说它的使用面受到了一定的限制,但总的来说,它也是一种比较高效的路由过滤方法。下表中列出了 BGP 中的常用的正则表达式:

举例说明:

  • .* 表示匹配任意
  • ^123$ 表示只匹配 AS 123
  • ^$ 表示没有经过任何 AS ,即本地 AS 的路由
  • ^12[0 3]$ 表示匹配 120 121 122 123
  • ^12. 表示匹配 12 120 - 129 开始的 AS 号
  • _12_ 表示匹配经过了 AS 12 的路由

配置BGP 正则表达式需要使用 AS-Path 的 ACL ,即 as-path access-list ,它的配置方式和一般 ACL 基本一致,匹配规则也和 ACL 差不多:自上而下逐条匹配,并有隐含拒绝的功能。AS-Path 的 ACL 的 在 Cisco 设备 配置命令如下:

代码语言:javascript复制
ip as-path access-list <list number> permit/deny REGEXP

List Number 表示表号,是一个任意的整数。这里没有基本 ACL 和高级 ACL 的区别;permit 表示允许某个正则表达式的规则, deny 表示拒绝某个正则表达式的规则。

AS-Path 的 ACL 配置好以后,直接使用 filter-list 关键字调用到 BGP 邻居上即可。如果本路由器要向邻居发送路由,则调用在 out 方向;如果本路由器要向邻居接收路由,则调用在 in 方向。以 Cisco 设备为例,应用如下:

代码语言:javascript复制
router bgp XXXXX
address-family ipv4
nei x.x.x.x filter-list <list number> in/out

未完待续

下期预览

方案设计与实施

0 人点赞