BGP
- 一、路由控制工具
- ACL
- IP-PREFIX
- Route-Policy
- 二、BGP路由控制
- 通过更改MED属性调节选路
- 通过更改Local_Pref属性调节选路
- 理解ACL、IP-PREFIX和Route-Policy中permit、deny的含义
- 三、BGP属性特点-团体属性
- 练习
- no-advertise属性
- ORF
一、路由控制工具
在对BGP进行路由控制之前,我们先复习复习路由控制的几种选路工具
ACL
- ACL访问控制列表,即用于流量的匹配与控制,但也能够用于匹配路由条目。
- 基于接口的ACL(1000-1999)
- 基本ACL(2000-2999) 仅能匹配源
- 高级ACL(3000-3999) 能匹配五元组
- 二层ACL(4000-4999)
acl 2000 //创建ACL编号2000
rule 0 permit source 1.1.0.0 0.0.255.255 //匹配规则permit(通过)/deny(拒绝),通过1.1.0.0/16
IP-PREFIX
- 地址前缀列表即IP-PrefixList。可以通过地址前缀列表,将与所定义的前缀过滤列表相匹配的路由,根据定义的匹配模式进行过滤,以满足使用者的需要。
- 当用于过滤IP前缀,能同时匹配前缀号和掩码长度
- 不能用于过滤数据包
- 缺省情况下,存在最后一条默认匹配模式为deny
- 当引用的前缀过滤列表不存在时,默认匹配模式为permit
ip ip-prefix name permit 192.168.1.0 24 greater-equal 25 less-equal 32
Route-Policy
- Route-Policy是一种功能非常强大的路由策略工具,它可以灵活地与ACL、IP-Prefix、As-Path-Filter等其它工具配合使用。
- 主要用于路由过滤和路由属性设置等,从而影响流量经过的路径
二、BGP路由控制
通过全互联将AR1上的11.1.1.1和11.1.1.2宣告,使得AR3上的路由如下图所示:
通过更改MED属性调节选路
通过将AR1上11.1.1.1到AR3上的路由修改MED值为1000,观察AR3上路由和上图会发生何种差异
[AR1]ip ip-prefix 11.1 permit 11.1.1.1 32
[AR1]route-policy MED permit node 10
[AR1-route-policy]if-match ip-prefix 11.1
[AR1-route-policy]apply cost 1000
[AR1-bgp]peer 13.1.1.3 route-policy MED export
先通过前缀列表抓住11.1.1.1,然后通过路由策略调用该前缀列表,最后在bgp中调用该路由策略,并指明路由的方向为出方向。
PS:通过查看BGP路由表可知,MED属性越小越优,那么11.1.1.1的路由最优则为下一跳为2.1.1.1的,表中现象正常,但是11.1.1.2的下一跳13.1.1.1为何没有了呢
ACL、IP-Prefix、Route-Policy末尾都是拒绝所有,所以在抓取某些特定前缀时,末尾加上允许其他即可
正确写法:
[AR1]ip ip-prefix 11.1 permit 11.1.1.1 32
[AR1]route-policy MED permit node 10
[AR1-route-policy]if-match ip-prefix 11.1
[AR1-route-policy]apply cost 1000
[AR1]route-policy MED permit node 1000
[AR1-bgp]peer 13.1.1.3 route-policy MED export
查看11.1.1.1的详细描述,查看路由不优的原因为MED
通过更改Local_Pref属性调节选路
AR3上未修改LP时的路由信息
我们通过更改AR3上的LP值来查看AR2上的路由情况
[AR3-bgp]default local-preference 200
理解ACL、IP-PREFIX和Route-Policy中permit、deny的含义
AR1上创建环回口 2 3 5 6 地址分别为1.1.2.1 1.1.3.2 5.5.5.5 6.6.6.6并宣告
AR1和AR2建立邻居
[AR2]route-policy rp permit node 20
[AR2-route-policy]if-match ip-prefix pref2
[AR2]ip ip-prefix pref2 deny 6.6.6.6 32
查看AR2上的BGP路由表,未将6.6.6.6干掉
PS:原因在于,ACL和IP前缀列表的permit和deny仅为匹配和为【匹配,并非允许和通过,这样,在当前环境中IP-prefix未匹配6.6.6.6,也就不会将6.6.6.6路由干掉,如下图:
我们在AR2上将策略路由import
[AR2-bgp]peer 12.1.1.1 route-policy rp import
末尾隐含拒绝所有,BGP路由表为空
我们在末尾加上permit
[AR2]route-policy rp permit node 50
三、BGP属性特点-团体属性
- 团体属性是BGP私有属性,在BGP对等体之间传递,不受AS限制
- 团体属性是在BGP中一种给路由条目打上标记,用于确保路由过滤和选路的连续性,从而使得BGP路由器可以过滤进出路由更新或优选某些路由
- 可选传递属性,必须针对peer x.x.x.x advertise-community
- no-advertise
- 表示不向任何对等体发送匹配的路由,收到此属性路由后,不发布给任何其他BGP对等体
- no-export
- 不向AS外发送匹配的路由,但发送给其他子自知系统,收到此属性路由后,不发布到本地AS之外
- no-export-subconfed
- 不向AS外发送匹配的路由,也不发送给其他子自治系统,收到此属性路由后,不发送给任何其他子自治系统
- no-advertise
练习
AR1上抓起6.6.6.6并打上community100:1标记
[AR1]route-policy comm permit node 10
[AR1-route-policy]if-match ip-prefix 6.6
[AR1-route-policy]apply community 100:1
[AR1]route-policy comm permit node 1000
[AR1]ip ip-prefix 6.6 permit 6.6.6.6 32
[AR1-bgp]peer 12.1.1.2 route-policy comm export
AR2上查看并没有打上100:1的标记,原因在于COMM默认是不传递的,可选传递属性,必须针对peer x.x.x.x advertise-community
[AR1-bgp]peer 12.1.1.2 advertise-community
AR2上有这个标记后,就可以通过community-filter 将这条带有标记的路由匹配
[AR2]ip community-filter 1 permit 100:1
[AR2]route-policy pre-val permit node 10
[AR2-route-policy]if-match community-filter 1
[AR2-route-policy]apply preferred-value 100
[AR2-route-policy]route-policy pre-val permit node 100
[AR2-bgp]peer 12.1.1.1 route-policy pre-val import
将拓扑变更成上图
no-advertise属性
[AR1]ip ip-prefix 5.5 permit 5.5.5.5 32
[AR1]route-policy no-adv permit node 10
[AR1-route-policy]if-match ip-prefix 5.5
[AR1-route-policy]apply community no-advertise
[AR1-route-policy]route-policy no-adv permit node 100
[AR1-bgp]peer 12.1.1.2 route-policy no-adv export
[AR1-bgp]peer 12.1.1.2 advertise-community
no-advertise属性,AR3和AR4上应该没有5.5.5.5的路由
ORF
- AR1向AR2发送大量的路由条目,但是对于AR2来说,可能只需要接收一部分路由条目,这种情况下,可以通过使能ORF来实现
AR2发送ORF报文到AR1,告诉AR1,我只需要10.1.1.1,其余都不需要
[AR2]ip ip-prefix 1.1 permit 10.1.1.1 32
[AR2-bgp]peer 12.1.1.1 ip-prefix 1.1 import
[AR2-bgp]peer 12.1.1.1 capability-advertise orf ip-prefix send
[AR1-bgp]peer 12.1.1.2 capability-advertise orf ip-prefix receive
宣告10.1.1.1 2.1 3.1路由
路由刷新:
发送route-refesh报文