CONFIG prefix-list
router(config)#ip prefix-list list-name seq permit/deny network/len ge/le
prefix-list 本来是为BGP设计的。可以匹配路由条目的网络地址部分和掩码部分
ip prefix-list NAME permit 172.16.0.0/22 ge 24 le 24
/22 : 前缀22bit相同的
ge24:掩码范围最小24位
le24:掩码范围最大24位
当没有ge,掩码范围最小和前缀相同
当有ge,没有le时,le=32
当没有ge,le。ge与le都跟前缀相同
ip prefix-list A permit 0.0.0.0/0 ge 32 //所有主机路由
ip prefix-list B permit 128.0.0.0/2 ge16 //所有B类子网
ip prefix-list C permit 0.0.0.0/0 le 32 //所有路由
ip prefix-list D permit 0.0.0.0/0 //默认路由
ip prefix-list E permit 0.0.0.0/1 le 24 //A类的不超过24位的子网
IP prefix-list A permit 10.0.0.0/8 le32 //A类私网地址
IP prefix-list B permit 172.16.0.0/12 le32 //B类私网地址
ip prefix-list C permit 192.168.0.0/16 le32 //C类私网地址
###############################################################
outbound route filtering ORF
作用:
- 用来减少不必要的BGP流量和CPU的占用
- 路由器吧入方向的过滤配置交换给邻居路由器在出方向做
- ORF的报文被封装在route refresh ,在open报文中协商
当AS1有100条路由,而AS2只需要10条,此时,AS2可以配置ORF,filter-list给AS1 ,AS1就只给AS2所需要的10条
配置:nei x.x.x.x capability orf prefix-list send/receive/both
router bgp 100
address-family ipv4 unicast
nei 172.16.1.2 remot 200
nei 172.16.1.2 ebgp-multihop
nei 172.16.1.2 capability orf prefix-list send
ip prefix-list FILTER seq 10 permit 192.168.1.10/24
show 邻居 show ip bgp nei x.x.x.x //可以看到capabilities
实验
如图。AS200配置联邦,R2R3=AS2000. R4=AS300
R5 开启3个loopback 5.1.1.1; 5.1.1.2; 5.1.1.1.3
需求。AS100只需要5.1.1.1的路由
R1:
ip prefix-list test deny 5.1.1.2/31 le32
ip prefix-list test permit 0.0.0.0/0 ge 32
router bgp 100
nei 12.1.1.2 prefix-list test in
sho ip bgp //就只能看到5.1.1.1的路由
R2:
sho ip bgp neighbor 12.1.1.1 advertised-routes //查看R2传给R1的路由
可以看到3条5.1.1.x的路由都传了
R1:
router bgp 100
nei 12.1.1.2 capability orf prefix-list both
R2:
router bgp 2000
nei 12.1.1.1 capability orf prefix-list both
sho ip bgp nei 12.1.1.1 ad //可看到只传一条路由给R1
思科的ORF类型只支持prefix-list
###############################################################
ASpath-list 过滤
◆本地配置 as-path access-list
router(config)#
ip as-path access-list number permit/deny regexp
◆邻居配置filter-list
rotuer(config-router)#
neighbor ip-address filter-list as-path-filter in/out
使用正则表达式匹配
| :表示或,|两端任意匹配一个
[ ] : 表示范围内的一个,[1234] [1-4]
. : 表示任意一个字符 [1-3].[34]---213 和 3空格3
^ : 表示一个字符串的起始
$ : 表示一个字符串的结束
_ : 表示任意一个定界符(不能代表数字)
():表示一个组合,组合的结果再参与到大的表达式中
\ :是转意字符,即还原后面字符中特殊符号的原有含义
* :零个或多个
?:零个活一个
+ :一个活多个
实例: _100$ //起源于AS100的
^100_ //从邻居AS100过来的
^100$ //起源于AS100,且从邻居AS100过来的
_100_ //起源于AS100的
从邻居AS100过来的
穿过AS100的
^[0-9]+$ //任何起源于邻居AS的
^$ //起源于本AS的
.* //所有
^([0-9]+)(_\1)*4 //以任何数值标记的AS号以及重复出现的
◆可以在show 里配合正则表达式,只看自己想要的
例如:show ip bgp regexp ^$ //只看本地的路由
show ip bgp regexp ^100$ //只看起源于且邻居是100的路由
show ip bgp regexp _300$ //只看起源于300的路由
上图,控制R1只收AS200的路由
R1:ip as-path access-list 1 permit ^200$
router bgp 100
nei 12.1.1.2 filter-list 1 in
###############################################################
route-map
过滤处理顺序:
入站 过滤列表(filter-list/AS-path) 路由映射 分布列表/前缀列表(prefix-list)
出站 分布列表/前缀 由ORF接收到的前缀列表 过滤列表 路由映射
##############################################################
policy list
可以用route-map去调用一个policy list
在一个大型的ISP网络中,可预先配置一些policy list,然后在不同route-map里调用
无需重复的配置相同的route-map的匹配项
减少了重复的策略定义
例如:针对一个邻居只能使用一个route-map
所以当对多个邻居使用route-map时,就要写过个重复策略的route-map
只用route-map时
route-map test permit 10
match as-path 1
match ip address prefix-list 1
match community 1
route-map test permit 1000
route-map test-2 permit 10
match as-path 1
match ip add prefix-list 1
match commuinty 1
而使用policy list 就可以简化配置
ip policy-list test permit
match as-path 1
match ip add pre 1
match community 1
route-map test
match policy-listy 1
rotue-map test-2
match policy-list 1
##############################################################
限制接收BGP条目
router(config-router)#
neighbor ip-address maxinum-prefix maximum [threshold] [warning-only] [restart restart-interval]
threshold :超过阀值 默认75% 弹出log
warning-only:警告
restart :超限down邻居后的恢复时间
R1:
router bgp 100
nei 12.1.1.2 maximum-prefix 10 //限制从邻居12.1.1.2收到最多10条路由
###############################################################
改良BGP收敛
邻居路由更新时间默认:
30 second for EBGP neighbor
5 second for IBGP neighbor
###############################################################
BGP peer group
用于减少BGP对路由器性能的占用
针对不同邻居的相同策略定义一个模板:
单指的一些参数可优先于peer-group
配置步骤:
router bgp 100
neighbor peer-group-name peer-group //创建一个组
neighbor peer-group-name 参数 //定义模板里的参数
neighbor ip-address peer-group peer-group-name //定义哪些邻居属于该组
show ip bgp peer-group //查看
###############################################################
BGP route dampening惩罚
指在减少路由条目的不稳定对路由器的影响
防止持续的路由震荡,而不会影响其他正常的路由
减少BGP更新的数量
通过抑制不稳定的路由最小化的减少BGP进程处理的数量
- 每一次EBGP路由的flap, 都会给1000点的惩罚值
- 惩罚值安装指数衰减算法
- 当惩罚值超过抑制限制,路由就被抑制
- 一条抑制的路由当惩罚值小于限制时,重新被传递
- 当惩罚值低于一半的重新加载值时将被清除
- 一条路由被抑制的时候不会超过最大惩罚值(60分钟)
- 一条不可达的路由将会以H的状态显示在BGP表
- 针对某个邻居过来的路径生效而不是这条路径本身
- half-life 15 minutes
- suppress 2000
- reuse 750
- max-suppress-time 60 minutes(4Xhalf-life)
- per-flap penalty 1000 (non configure)
一次震荡:发出一条路由,又收回来
发生震荡会记录,每次记录会惩罚一个值;每隔15分会减半(半衰期);惩罚门限;随着半衰期逐渐减少直至到正常,重用门限值
配置:
router bgp 200
bgp dampening
clear ip bgp x.x.x.x flap-statistics //清零flap
clear ip bgp dampening //清除惩罚
sho ip bgp dampening //查看被惩罚的路由
###############################################################
◆客户与ISP之间如何部署
静态路由
BGP是唯一的动态路由
◆单线单宿主使用静态路由(客户端)
用户用缺省路由指向运营商
用户路由被运营商的BGP承载,而不是IGP,因此需要把客户的静态路由重分布到BGP
客户小的地址快不应宣告到其他AS(可以用community控制传播范围)
实例 :客户-----------------------------------------------------------ISP
ip route 0.0.0.0 0.0.0.0 s 0 ip route 11.2.3.0 255.255.255.0 s 0
router ospr 1 router bgp 387
default-information originate redistribute static [rotue map]
- 识别每种可能的提供给客户服务组合,包括QOS要求
- 针对每类的QOS组合设置一个标记
- 运营商对每个客户的静态路由配置一个合适的tag
- 用route-map 重分布静态路由进BGP
- 配置route-map 去匹配tag,然后设置一个BGP community或其他属性
用户只有单个link连接到Internet
用户有多个link连接到同一个运营商,并且链路或者设备失效能够被检测到
其他环境都使用BGP
◆双线单宿主使用静态路由
较之单线但宿主,多了冗余、负载均衡的技术
上图是双线客户的配置,其中默认路由最好加track配置