BGP路由控制概述
BGP协议的重点不在于发现和计算路由,而在于通过丰富的属性和策略实现对路由的控制。
控制BGP路由可以通过两种方式实现。
一是通过BGP 的基本属性实现对BGP 选路的控制。这种方式比较简单,主要是通过配置、修改BGP 基本属性值以影响协议的选路,从而实现控制BGP路由的目的。
二是通过配置过滤器来实现对BGP选路的控制和过滤。通过定义过滤器,来匹配路由的IP网段、BGP属性、AS 路径列表等参数,从而实现对接受的路由、发送的路由以及本地发布的路由控制。在使用过滤器的过程中,常见的过滤器主要有Filter-policy、Route-policy、 AS 路径访问列表等。
通过配置BGP基本属性控制BGP路由
BGP 协议具有丰富的路由属性。通过配置这些路由属性,可以对影响协议的选路。常见的用于影响选路的属性有:路由首选值(Preferred-value)
BGP选择路由时,会首先丢弃下一跳不可达 的路由,其次再优选Preferred-value 值最大的路由。 而缺省情况下,从对等体学到的路由的首选值为0,通过为从某个对等体接收的路由配置首选值,从而提高从指定对等体学到的路由的优先级。
[Router-bgp-default-ipv4]peer {group-name | ip-address } preferred-value value
值value取值范围0~65535,值越大优先级越高,缺省值为0。路由首选值只用于本地路由器的路由选择,不会通告给对等体,只有本地意义。
本地优先级(Local-Preference)
Local-Preference 用来判断流量离开AS时的最佳路由。当BGP路由器通过不同的IBGP 对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择Local-Preference 值较高的路由。通过配置来改变BGP路由器向IBGP 对等体发送的路由Local-Preference的值,从而影响IBGP对等体的选路。
[Router-bgp-default-ipv4]default local-preference value
值value取值范围0~4294967295,值越大优先级越高,缺省值为100。
MED (MULTI EXIT DISC)
MED 用来判断流量进入AS时的最佳路由。当一个运行BGP的路由器通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED值较小者作为最佳路由。通过配置来改变BGP路由器向EBGP对等体发送的路由的MED 值,从而可影响EBGP对等体的选路。[Router-bgp-default-ipv4]default med med-value
值value取值范围0~4294967295,值越小优先级越高,缺省值为0。
下一跳(NEXT HOP)
缺省情况下,路由器向IBGP对等体发布路由时,不将自身地址作为下一跳。但有的时候为了保证IBGP邻居能够找到下一跳,可以配置将自身地址作为下一跳。
[Router-bgp-default-ipv4]peer {group-name | ip-address } next-hop-local
使用过滤器控制BGP路由
几种常见的过滤器
1.filter-policy:可以实现对接收到的路由和发布的路由进行过滤,但是无法修改BGP的属性值。
2.router-policy:是功能强大的过滤器,不仅可以在路由的接收、发布、引入环节对路由进行过滤,而且可以对符合规则的路由增加或修改相关的路由属性。
3.AS路径访问列表:多用在多AS的网络环境中,是针对AS域而不是具体的路由来进行路由控制,通过AS路径访问列表能够轻易地筛选出和指定AS相关的路由信息,从而实现对路由的控制。
filter-policy
配置filter-policy步骤:
1.定义ACL或者地址前缀列表(prefix-list),筛选出需要过滤的路由。
2.配置filter-policy对匹配ACL或者prefix-list的路由在发布或者接收方向进行过滤。
示例:
如图,RTA通过BGP从RTB学习到了10.10.1.0/24、10.10.5.0/24网段路由并加入到自己路由表中,如果希望把目的网段为10.10.1.0/24、10.10.5.0/24的路由在从BGP路由导入到IP路由表的过程中过滤掉,可通过配置filter-policy实现。
[RTA]bgp 100[RTA-bgp-default]peer 10.10.10.2 as-number 200
[RTA-bgp-default]address-family ipv4 unicast
[RTA-bgp-default-ipv4]filter-policy prefix-list 1 import
[RTA-bgp-default-ipv4]peer 10.10.10.2 enable
[RTA]ip prefix-list 1 index 10 deny 10.10.1.0 24
[RTA]ip prefix-list 1 index 20 deny 10.10.5.0 24