Datacom-HCIE-07 BGP路由控制 高级路由匹配工具
在大型网络中通常会部署BGP,相比于IGP,BGP拥有更加灵活的路由控制能力。每一条BGP路由都可以携带多个路径属性,针对其属性也有特有的路由匹配工具,包括:AS_Path Filter和Community Filter。根据实际组网需求,可以实施路由策略,控制路由的接收和发布。
同时,为了提升网络性能,BGP提供了各种高级特性以及多种组网部署方案。
本文将介绍BGP路由控制的原理与配置。
概述
BGP路由控制概述
BGP路由控制包括控制路由的发布和接收。
BGP路由控制一般通过路由策略实现,即通过路由匹配工具匹配特定路由,再通过路由策略工具对路由的发布和接收进行控制。
路由匹配工具:ACL(Access Control List,访问控制列表),IP Prefix List(地址前缀列表),AS_Path Filter(AS路径过滤器),CommunityFilter(团体属性过滤器)等。
路由策略工具:Filter-Policy和Route-Policy。
BGP可以通过匹配AS_Path和Community等属性进行路由控制。
正则表达式
正则表达式是按照一定的模板来匹配字符串的公式,由普通字符(如字符a到z)和特殊字符组成。
普通字符:匹配的对象是普通字符本身。
包括所有的大写和小写字母、数字、标点符号以及一些特殊符号。
例如:a匹配abc中的a,10匹配10.113.25.155中的10,@匹配xxx@xxx.com中的@。
特殊字符:配合普通字符匹配复杂或特殊的字符串组合。
位于普通字符之前或之后用来限制或扩充普通字符的独立控制字符或占位符。
用来描述它前面的字符的重复使用方式。
限定一个完整的范围。
特殊字符举例
类型1:
类型2:
类型3:
请思考以下方框内的正则表达式可以匹配哪些字符串。
思考题答案
• 类型1:
^a.$:匹配一个以字符a开始,以任意单一字符结束的字符串,如a0、a!、ax等。
^100_:匹配以100为起始的字符串,如:100、100 200、100 300 400等。
^100$:只匹配100。
100$|400$:匹配以100或400结束的字符串,如:100、1400、300 400等。
^(65000)$:只匹配(65000)。
• 类型2:
abc*d:匹配c字符0次或多次,如:abd、abcd、abccd、abcccd、abccccdef等。
abc+d:匹配c字符1次或多次,如:abcd、abccd、abcccd、abccccdef等。
abc?d:匹配c字符0次或1次,如:abd、abcd、abcdef等。
a(bc)?d:匹配bc字符串0次或1次,如:ad、abcd、aaabcdef等。
• 类型3:
[abcd]:匹配abcd中任意一个字符,即只要出现了a、b、c、d中的任意字符即可,如:ax、b!、abc、d0等。
[a-c 1-2]$:匹配以字符a、b、c、1、2结束的字符串,如:a、a1、62、xb、7ac等。
[^act]$:匹配不以字符a、c、t结束的字符串,如:ax、b!、d等。
[123].[7-9]:匹配如:1 7、2x9、348等。
AS_Path Filter
路由匹配工具:AS_Path Filter
AS_Path Filter是将BGP中的AS_Path属性作为匹配条件的过滤器,利用BGP路由携带的AS_Path列表对路由进行过滤。
在不希望接收某些AS的路由时,可以利用AS_Path Filter对携带这些AS号的路由进行过滤,从而实现拒绝某些路由。
使用正则表达式匹配AS_Path
可以通过正则表达式,来匹配路由的AS_Path。
例如:匹配AS_Path=103 102 101中的AS 103。
其他举例
AS_Path Filter的基础配置命令
- 创建AS_Path Filter。
[Huawei] ip as-path-filter { as-path-filter-number | as-path-filter-name } { deny | permit } regular-expression
AS_Path Filter使用正则表达式来定义匹配规则。
注意:AS_Path Filter的默认行为是deny。 - 应用AS_Path Filter。
[Huawei-bgp-af-ipv4] peer { group-name | ipv4-address | ipv6-address } as-path-filter { as-path-filter-number | as-path-filter-
name } { import | export }
在BGP地址族视图下,对BGP路由信息应用路由策略时,基于AS_Path Filter过滤掉不符合条件的路由信息。
[Huawei-route-policy] if-match as-path-filter { as-path-filter-number | as-path-filter-name }
在Route-Policy视图下,创建一个基于AS Path Filter的匹配规则。
AS_Path Filter的配置举例
1、创建AS_Path Filter。
[R2] ip as-path-filter 1 deny _101$
[R2] ip as-path-filter 1 permit .*
拒绝始发于AS 101的路由,但其他路由可以通过
2、(直接调用方式)应用AS_Path Filter。
[R2] bgp 102
[R2-bgp] peer 10.1.23.3 as-number 103
[R2-bgp] ipv4-family unicast
[R2-bgp-af-ipv4] peer 10.1.23.3 as-path-filter 1 export
(路由策略方式)应用AS_Path Filter。
[R2] route-policy AS_Path permit node 10
[R2-route-policy] if-match as-path-filter 1
[R2-route-policy] quit
[R2] bgp 102
[R2-bgp] peer 10.1.23.3 as-number 103
[R2-bgp] ipv4-family unicast
[R2-bgp-af-ipv4] peer 10.1.23.3 route-policy AS_Path export
查看AS_Path Filter相关信息
1、查看AS_Path Filter。
[R2]display ip as-path-filter 1
As path filter number: 2
deny _101$
permit .*
2、显示BGP表中所有AS_Path被该正则表达式匹配的路由。
[R2]display bgp routing-table regular-expression _101$
Total Number of Routes: 1
BGP Local router ID is 10.1.12.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 10.1.1.1/32 10.1.12.1 0 0 101i
始发于AS 101的10.1.1.1/32路由被AS_Path Filter过滤。
Community Filter
路由匹配工具:Community Filter
Community Filter与Community属性配合使用,可以在不便使用IP Prefix List和AS_Path Filter时,降低路由管理难度。
团体属性过滤器有两种类型:
基本Community Filter。匹配团体号或公认Community属性。
高级Community Filter。使用正则表达式匹配团体号。
Community属性
公认Community属性
团体属性名称 | 团体属性号 | 说明 |
---|---|---|
Internet | 0(0x00000000) | 设备在收到具有此属性的路由后,可以向任何BGP对等体发送该路由。缺省情况下,所有的路由都属于Internet团体。 |
No_Advertise 4294967042 | (0xFFFFFF02) | 设备收到具有此属性的路由后,将不向任何BGP对等体发送该路由。 |
No_Export 4294967041 | (0xFFFFFF01) | 设备收到具有此属性的路由后,将不向AS外发送该路由。 |
No_Export_Subconfed | 4294967043(0xFFFFFF03) | 设备收到具有此属性的路由后,将不向AS外发送该路由。如果使用了联盟,也不向联盟内其他子AS发布此路由。 |
Community属性格式:
一个Community属性值的长度为32 bit,可使用两种形式呈现:
十进制整数格式。
AA:NN格式,其中AA表示AS号,NN是自定义的编号。
设置Community的基础配置命令
- 在路由策略中,设置路由的Community属性值。
[Huawei-route-policy] apply community { community-number | aa:nn | internet | no-advertise | no-export | no-exportsubconfed } [ additive ]
- 将团体属性发布给对等体(组)。
[Huawei-bgp-af-ipv4] peer { group-name | ipv4-address | ipv6-address } advertise-community
缺省情况下,BGP不将团体属性发布给任何对等体(组)。
Community Filter的基础配置命令
- 创建基本Community Filter。
[Huawei] ip community-filter { basic comm-filter-name | basic-comm-filter-num } { permit | deny } [ community-
number | aa:nn | internet | no-export-subconfed | no-advertise | no-export ]
基本Community Filter编号范围:1~99。在基本Community Filter中只能指定团体号或知名团体属性。
2. 创建高级Community Filter。
[Huawei] ip community-filter { advanced comm-filter-name | adv-comm-filter-num } { permit | deny } regular-expression
高级Community Filter编号范围:100~199。在高级Community Filter中可以指定正则表达式作为匹配条件。
3. 应用Community Filter。
[Huawei-route-policy] if-match community-filter { basic-comm-filter-num [ whole-match ] | adv-comm-filter-num }
[Huawei-route-policy] if-match community-filter comm-filter-name [ whole-match ]
在Route-Policy视图下,创建一个基于Community Filter的匹配规则。
Community Filter的配置举例
- 基本Community Filter举例:
匹配同时携带Community值[100:1,200:1,300:1]的路由。(多个Community值之间是“与”的关系。)
ip community-filter 1 permit 100:1 200:1 300:1
匹配携带Community值[100:1]或[200:1,300:1]的路由。(多组Community值之间是“或”的关系。)
ip community-filter 1 permit 100:1
ip community-filter 1 permit 200:1 300:1
- 高级Community Filter举例:
匹配携带以10开头的Community值的路由。
ip community-filter 100 permit ^10
配置Community属性
1、在R1上部署路由策略,使其在通告BGP路由10.1.1.1/32时携带Community属性值101:1,其他路由不携带。
R1上部署路由策略为路由添加Community属性,并允许将Community属性传给EBGP对等体R2。
[R1] ip ip-prefix 1 permit 10.1.1.1 32
[R1] route-policy Community permit node 10
[R1-route-policy] if-match ip-prefix 1
[R1-route-policy] apply community 101:1
[R1-route-policy] quit
[R1] route-policy Community permit node 20
[R1-route-policy] quit
[R1] bgp 101
[R1-bgp] peer 10.1.12.2 as-number 102
[R1-bgp] peer 10.1.12.2 route-policy Community export
[R1-bgp] peer 10.1.12.2 advertise-community
[R1-bgp] network 10.1.1.1 32
[R1-bgp] network 10.1.2.2 32
2、在R1上部署路由策略,使其在通告BGP路由10.1.1.1/32时携带Community属性值101:1,其他路由不携带。在R2上部署路由策略,使其在通告BGP路由10.1.1.1/32时追加Community属性no-expert。
R2配置允许将团体属性传给EBGP对等体R3。
[R2] ip ip-prefix 1 permit 10.1.1.1 32
[R2] route-policy Community permit node 10
[R2-route-policy] if-match ip-prefix 1
[R2-route-policy] apply community no-expert additive
[R2-route-policy] quit
[R2] route-policy Community permit node 20
[R2-route-policy] quit
[R2] bgp 102
[R2-bgp] peer 10.1.12.1 as-number 101
[R2-bgp] peer 10.1.23.3 as-number 102
[R2-bgp] peer 10.1.23.3 advertise-community
[R2-bgp] peer 10.1.23.3 route-policy Community export
3. 在R1上部署路由策略,使其在通告BGP路由10.1.1.1/32时携带Community属性值101:1,其他路由不携带。在R2上部署路由策略,使其在通告BGP路由10.1.1.1/32时追加Community属性no-expert。
在R3上查看BGP路由信息。[R3] bgp 103
[R3-bgp] peer 10.1.23.2 as-number 102
[R3-bgp] quit
[R3] display bgp routing-table 10.1.1.1
BGP local router ID : 10.1.23.3
Local AS number : 103
Paths: 1 available, 1 best, 1 select
BGP routing table entry information of 10.1.1.1/32:
From: 10.1.23.2 (10.1.12.2)
Route Duration: 00h00m21s
Direct Out-interface: GigabitEthernet0/0/2
Original nexthop: 10.1.23.2
Qos information : 0x0
Community:<101:1>, no-export
AS-path 102 101, origin igp, pref-val 0, valid, external, best,
select, active, pre 255
Not advertised to any peer yet
在R3上查看10.1.1.1/32路由,发现携带101:1 no-export两个团体属性。
配置Community Filter
R2传递路由给EBGP对等体R3,在R2上部署路由策略,过滤掉携带101:1的Community属性值的路由。
1、配置Community Filter,匹配Community中包含101:1的路由
[R2] ip community-filter 1 permit 101:1
2、调用Community Filter。
[R2] route-policy Community deny node 10
[R2-route-policy] if-match community-filter 1
[R2-route-policy] quit
[R2] route-policy Community permit node 20
[R2-route-policy] quit
[R2] bgp 102
[R2-bgp] peer 10.1.23.3 route-policy Community export
3、查看R2的Community Filter信息。
[R2]display ip community-filter 1
Community filter Number: 1
permit 101:1
4、查看R2的BGP路由信息。
[R2]dis bgp routing-table 10.1.1.1
BGP local router ID : 10.1.12.2
Local AS number : 102
Paths: 1 available, 1 best, 1 select
BGP routing table entry information of 10.1.1.1/32:
From: 10.1.12.1 (10.1.1.1)
Route Duration: 00h13m39s
Direct Out-interface: GigabitEthernet0/0/1
Original nexthop: 10.1.12.1
Qos information : 0x0
Community:<101:1>
AS-path 101, origin igp, MED 0, pref-val 0, valid, external, best, select, active, pre 255
Not advertised to any peer yet
在R2上查看10.1.1.1/32路由,发现携带101:1团体属性。通过Community Filter对其进行过滤。
5、查看R3的路由表项。
[R3]display bgp routing-table
BGP Local router ID is 10.1.23.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 10.1.2.2/32 10.1.23.2
R3接收不到10.1.1.1/32的BGP路由信息。