「BGP」- 基于前缀的 ORF(Prefix-based ORF)

  CREATED BY JENKINSBOT

问题描述

如果设备希望只接收自己需要的路由,但对端设备又无法针对每个与它连接的设备维护不同的出口策略。

R2 在接收口进行路由过滤,仅接收 10.1.1.1/32 路由

针对被过滤掉的路由(如:10.1.2.2/32)而言,实际上 R1 没有必要通告给 R2;

解决方案

通过配置 BGP 基于前缀的 ORF(Outbound Route Filters,出口路由过滤器)来满足两端设备的需求。

原理简述

BGP 基于前缀的 ORF 能力:
1)能将本端设备配置的基于前缀的入口策略通过 Route-Refresh 报文发送给 BGP Peer;
2)BGP Peer 根据这些策略(刷新报文中)构造出口策略,以在路由发送时对路由进行过滤;

特性说明

避免本端设备接收大量无用的路由,降低链路带宽的占用率;
还有效减少了 BGP 邻居的配置工作;
降低本端设备的 CPU 使用率;

配置命令

# 第一步、配置对等体(组)基于 IP 地址前缀列表的路由过滤策略。
# import:对由指定对等体(组)接收的路由应用过滤策略。
# export:对向指定对等体(组)发送的路由应用过滤策略。
[Huawei-bgp-af-ipv4] peer { group-name | ipv4-address } ip-prefix ip-prefix-name { import | export }


# 第二步、使能 BGP 对等体(组)基于地址前缀的 ORF 功能(需要两端同时开启)
# non-standard-compatible:指定与非标准设备兼容。
# both:表示允许发送和接收 ORF 报文。
# receive:表示只允许接收 ORF 报文。
# send:表示只允许发送 ORF 报文。
# standard-match:指定按照 RFC 标准规定的前缀匹配规则来匹配路由。
[Huawei-bgp] peer { group | address } capability-advertise orf [ non-standard-compatible ] ip-prefix { both | receive | send } [ standard-match ]

配置案例

R2 只期望 R1 通告 10.1.1.1/32 路由,R2 通过向 R1 推送 ORF 报文来达到这个目的。

[R2] ip ip-prefix 1 permit 10.1.1.1 32                                          # 需要接收的路由
[R2] bgp 102
[R2-bgp] peer 10.1.12.1 as-number 101
[R2-bgp] peer 10.1.12.1 ip-prefix 1 import                                      # 在入方向上
[R2-bgp] peer 10.1.12.1 capability-advertise orf ip-prefix send                 # send,仅发送 ORF,而不接收对方的 ORF

[R1] bgp 101
[R1-bgp] peer 10.1.12.2 as-number 102
[R1-bgp] peer 10.1.12.2 capability-advertise orf ip-prefix receive
[R1-bgp] network 10.1.1.1 32
[R1-bgp] network 10.1.2.2 32 
[R1-bgp] network 10.1.3.3 32 

# 在 R1 上查看 R2 发出的基于地址前缀的 ORF 信息。
[R1]display bgp peer 10.1.12.2 orf ip-prefix 
...

# 在 R2 上查看 BGP 路由信息。
[R2]display bgp routing-table peer 10.1.12.1 received-routes 
...