选路原则
BGP 的选路规则:
选路的前提是路由必须是优的;
bgp表的不优情况:
- bgp路由表中路由的下一跳不可达(递归失败)
- 如果开启离了bgp同步,在没有同步的情况下bgp的路由不优(默认关闭的)r标记的路由,标识在路由表中不优。
同步问题——早先为了解决BGP非直连建邻下的路由黑洞问题(将IGP重发布进BGP);检查BGP的路由有没有在IGP中,方法是调用路由表查看IGP中是否有BGP的路由条目;该限制可以关闭,IOS版本12.2以上默认关闭;
标示可用,当被r取代时,表示在路由表中不优,不加表,管理距离有劣势;
1、首先比较 weight 大优–不传递,Cisco 私有,默认 32768 EBGP/IBGP
2、local-pre 比较本地优先级,默认 100;仅 IBGP 邻居传递,大优 IBGP 优选
3、next-hop 本地下一跳
4、AS-path 比较 as-pash,经过的 AS 数量少优,EBGP 邻居可增添 EBGP/IBGP
5、Origin 起源码最小 i-igp=0 e-egp=1?=2 EBGP/IBGP
6、 MED值最小,影响对方选路,作用于两个 AS 之间 EBGP/IBGP
7、普通的 EBGP邻居优于联邦内 EBGP 邻居优于 IBGP 邻居 20>200
8、 优选最近的 IGP 邻居(IGP 度量小)
9、最先建邻的EBGP——判断最老的EBGP邻居
10、最小 BGP 邻居的 RID
11、最小建邻地址的邻居;-----优选最小的 RRlist 列表(cluster-list 簇 ID) 最小的 IP 地址
若开启了 maximun-path[ibgp]n ,若存在多条等价路径,会进行负载均衡 优选最先建立 EBGP邻居— bgp默认负载均衡条目数是1,也就意味着它没有负载均衡;我们可以修改max-path参数来改变负载均衡条目数,一旦修改的值大于1,那么选路原则只会工作到第8条。
注:一个路由器选路weight,多个路由器多个出口路径用local-pre;影响对方选路用med。影响多个AS选路用AS-path。
例题:
判断每个路由器自然选路,每一个选路原则只能使用一次;所有路由器环回按照数字排列:
1、AS1——2 ,走路由器2;
自然选路:7,
选路原则:修改2优先级变大,——local-pre
2、AS2——1;走路由器3;
自然选路:7
选路原则:先修改3的weight,再修改4的,——weight
3、AS1——3,走路由器6;
自然选路:最先建邻的EBGP;
选路原则:给5的路由添加AS——aspath(不能将原本劣路径改优,否则会破坏原本自然选路)
4、AS2——3,走路由器5;
自然选路:最先建邻的EBGP;
选路原则:修改从6学习到的路由的origin——起源(使用时慎重)
5、AS3——2,走路由器6;
自然选路:7/9
选路原则:在4上修改邻居路由器5的MED加大——MED
6、AS3——1,走路由器5
自然选路:7/9
选路原则:在路由器6上修改下一跳;——next-hop
联盟(联邦)
-
把一个大的AS拆分为若干个小的AS,小AS使用私有AS号(64512-65535),不对外公开;使小AS之间出现类EBGP邻居关系,从而打破了IBGP的水平分割,使邻居间路由条目可以实现中转。
本质:是减少建立邻居个数的一种措施,和反射器一样,同时方便管理,思路和OSPF一样; -
联盟之间的邻居传递路由需要携带AS-path,用于防止大AS内联盟之间的环路,该AS-path用【】括起来,在传出大AS时,去掉该值。
-
联盟内路由器只要有EBGP邻居关系(内外部均需要,对内还要声明小as),都需要声明大as号。
注:所有没有声明的属性,在联盟内均可传递,除团体属性中的local-as;
-
配置:
R1(config)#router bgp 65100
R1(config-router)#router-id 1.1.1.1
R1(config-router)#neighbor 2.2.2.2 remote-as 65101 //声明邻居的建邻IP地址及所在的小AS号
R1(config-router)#neighbor 2.2.2.2 update-source lo 0 //修改更新源的IP地址
R1(config-router)#bgp confederation identifier 1 //对外声明自己所在的大AS号,联盟内所有路由器均要配置
R1(config-router)#bgp confederation peers 65101 //联盟之间互指对方小AS号,仅存在EBGP邻居的路由器配置
注:正常情况下,路由条目在穿越AS之间传递时,自身属性会发生变化,但在小AS之间传递时,没有声明的属性,均可传递,除团体属性中的loacl_as;
**
过滤
**
bgp路由传递的流程 bgp路由表—发送策略–发送路由表—接收策略–接收路由表—bgp路由表
1、针对邻居的过滤—前缀列表
r1(config)#ip prefix-list a permit 1.1.1.0/24 抓流量
r1(config-router)#neighbor 2.2.2.2 prefix-list a ?
in Filter incoming updates
out Filter outgoing updates
2、针对BGP路由表—分发列表
r1(config)#ip prefix-list a permit 1.1.1.0/24 抓流量
r1(config-router)#distribute-list prefix a ?
gateway Filtering incoming updates based on gateway
in Filter incoming routing updates
out Filter outgoing routing updates
3、重发布–route-map
默认路由
1、针对单个邻居的默认路由
2、针对所有邻居的默认路由(全局)–全局路由表必须有默认路由
• 起源属性为i
R1(config)#router bgp 1
R1(config-router)#default-information originate
R1(config-router)#network 0.0.0.0
• 起源属性为?
R2(config)#router bgp 1
R2(config-router)#default-information originate
R2(config-router)#redistribute static
BGP后门路由:
启用: 将该EBGP邻居学习到的路由AD值修改为200.
R1(config)#router bgp 1
R1(config-router)#network 2.2.2.0 mask 255.255.255.0 backdoor //使用该命令可以将该条路由的管理距离提高
As-path ACL——基于正则表达式
r1(config)#ip as-path access-list 1 permit 2 //抓as-path列表,其中2表示AS号
r1(config)#route-map as deny 10
r1(config-route-map)#match as-path 1
r1(config)#route-map as permit 20
r1(config)#router bgp 64512
r1(config-router)#neighbor 2.2.2.2 route-map as in
浮动惩罚
BGP的路由惩罚:
目的:抑制路由摆动,被惩罚的路由不能参与选路,不能传递, 惩罚是针对该路由的某条路径,而不是针对路由条目。
惩罚值: 路由每翻滚一次,惩罚值增加1000,路由属性每改变 一次,惩罚值增加500
惩罚门限:开始进行惩罚的惩罚值,默认2000
重用门限:当惩罚值降低到该值恢复路由,默认750
半衰期:经过一个半衰期,惩罚值减半,默认15分钟
最大惩罚时间:最大惩罚路由时间,默认60分钟
最大惩罚值:重用门限*2^(最大惩罚时间/半衰期),默认 12000.
启用BGP 的路由惩罚:
查看惩罚的路由:
查看惩罚路由的翻滚次数:
查看路由惩罚参数的默认值: