session 1 BGP路由属性
一、公认必选属性
1、origin起源
2、AS_path AS路径(AS之间防环),在cisco路由器中是倒序的,并且不会包含自己的as_path号
3、next-hop 下一跳
二、公认自选属性(厂商设备支持的不同)
1、local_pref本地优先级
2、ATOMIC_AGGREGATE
session 2 BGP十三条选路原则
选路原则的顺序很重要
一、BGP路由最优必要条件
1、入向策略通过
2、下一跳可达
3、路径选择(十三条选路原则),注意如果前面1、2不满足那么将不会比较十三条选路原则
4、路由没有被dampend
5、路由同步检测成功(或者关闭BGP同步)
在bgp表中的路由条目最优之后的操作:
1、向路由表提交这条最优bgp路由
2、向bgp的peer发送这条最优的路由
二、BGP选路的十三条选路原则:
严格顺序+逐条匹配,检查原则类似ACL匹配到就不看后面的属性了。
1、wigth权重(cisco私有所以路由不能携带这个属性传递)
范围:本地有效
规则:优选值大的。
方向:只支持in方向,out方向会报错。
R2(config-router)#neighbor 12.1.1.2 weight 0~65535
2、localpref属性
范围:一个AS内
规则:优选值大的。
方向:只支持in方向,out方向不起作用。
R1(config-router)#bgp default local-preference 100 修改local-preference的默认值100
R1(config-router)#neighbor 12.1.1.2 route-map R2-R1 in 从邻居12.1.1.2收到的路由携带route-map中配置的属性
R1(config)#route-map R2-R1 permit 10 配置route-map所携带的lical-preference属性
R1(config-route-map)#set local-preference 150
该属性只对“EBGP传过来的路由(非联邦ebgp)、自己network的路由、AS_PATH为空的聚合路由”起效,并且需要使用命令:show ip bgp x.x.x.x 才能查看到路由携带的ocalpref属性。
3、本地起源属性
在BGP的转发表中(show ip bgp),显示的next-hop为0.0.0.0的路由(本地产生的直连路由),优于其他路由,优选。
当next-hop都为0.0.0.0的多条路由出现时,选择顺序:
default-originate(针对每个邻居配置的默认路由)>default-information-originate(针对每种地址族配置的默认路由)>network=redistribute的路由>aggregate-address(地址汇总的路由)
4、AS_PATH
比较的as_path中包含数字的多少,而不是大小,
优选as_path数量少的(100=200=999,但是1 1>100)
as_path的数值只能增加不能减少,并且从某个as出去的路由不能回到该AS了,为了防止环路。比如设置as_path为11 22 33,那么这条路由就不能再传递给as11、as22、as33中的路由器了。
也是使用route-map来实现as_path属性。
范围:EBGP邻居。
规则:
优选as_path数量少的。
方向:as_path属性支持双向的。
R1(config)#route-map R1-R2 permit 10
R1(config-route-map)#set as-path prepend 11 22 33 设置as_path为11 22 33
R1(config-route-map)#exit
R1(config-router)#neighbor 12.1.1.2 route-map R1-R2 out 用在R1去往R2的out方向(也可以在R2使用在R1到达R2的in方向)
上面的as_path为11 22 33一般不建议,因为这样做了路由就不能传递给其他AS(22和33)中的路由器了(as_path的防环机制),如果要在AS11中增加as_path我数字,那么可以as_path为11 11 11这样的形式来增加as_path的长度让路由优选,也不会影响到其他AS接收这条路由。在cisco中有一条命令与之效果一样:
R1(config-route-map)#set as-path prepend last-as 2 //将这个as_path复制两份的长度
最后一条命令: R1(config-router)#neighbor 12.1.1.2 allowas-in 2 //允许接收as_path中有2个长度的数字的路由(这个路由的as_path和自己的as_path一样,但是有2个长度,一共就是3个长度,比如自己的as_path是20,那么允许接收路由的as_path是20 20 20这样的,一定程度的打破了as_path的防环机制)
补充:在打破ibgp防环规则的联邦技术中as_path会被标记(),()内的as_path对as_path的选路规则无影响
5、启源代码
在bgp的转发表中显示路由是通过什么方法进入转发表的,使用命令:
show ip bgp 查看,path中路由显示的字样,分别为i(代表从IGP引入的,包括network的、直连的路由的)、e(代表从egp协议引入的,egp是淘汰的技术)、?(不完全确定从哪里引入的路由)
范围:
规则:i>?>e
方向:支持双向
R1(config-router)#do show ip bgp
BGP table version is 2, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight
Path 红色path显示的是i,表示igp引入的
*> 1.1.1.1/32 0.0.0.0 0 32768
i
也是通过route-map来配置
R1(config)#access-list 1 permit 1.1.1.1
R1(config)#route-map 5 permit 10
R1(config-route-map)#match ip address 1 精确匹配了1.1.1.1路由
R1(config-route-map)#set origin incomplete
配置起源属性为incomplete(不完全的,也就是?)
R1(config-route-map)#exit
R1(config-router)#do show ip bgp
BGP table version is 6, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight
Path
*> 1.1.1.1/32 0.0.0.0 0 32768
? 路由起源属性从 i 被变为?
6、MED(BGP路由的度量)范围0~4294967295,只有通过两条路径得到左边的AS是同一个AS时才进行比较。
R1#show ip bgp
BGP table version is 6, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop
Metric LocPrf Weight Path
*> 1.1.1.1/32 0.0.0.0
0 32768 i
规则:Multi_exit_disc相当于IGP中的metric值,用于区分到达相同邻居AS的多个出口/入口,越小越优。
如果激活了bgp always-compare-med,那么对于多有路径都比较MED,而不考虑是否属于一个AS。
范围:EBGP中通告给peer时候带MED属性,IBGP中通告给peer的时候会清除MED(但是可以通过roue-map中设置set metric-type internal来强制IBGP对等体传递路由携带MED,在传递路由的源上配置map)
MED的值由下面几种规则决定:1、network或redistribute将IGP路由注入BGP的路由MED继承IGP的metric值
2、通过network或redistribute注入到BGP的路由是直连路由,那么该路由的MED为0
3、如果是通过aggregate-address路由汇聚命令注入进BGP的路由,该路由的MED为空(不是0是空)
MED试用有两条链路的冗余网络:如下拓扑
或者
7、规则:从EBGP学到的路由优于IBGP,但是联邦内的ebgp路由优于ibgp路由
show ip bgp
8、最近的IGP邻居(这里的IGP邻居指的是next-hop下一跳)
规则:next-hop下一跳路由在RIB中的metric(show ip route看),值小的优(标红是)。假如去往目的路由100.1.1.1的下一跳分别有1.1.1.1和3.3.3.3两条路径,那么就比较到达1.1.1.1和3.3.3.3路由的metric值,优选小的。
R2#show ip route eigrp
1.0.0.0/32 is subnetted, 1 subnets
D 1.1.1.1 [90/
2287255] via 12.1.1.1, 00:01:23, Serial0/0 会优选下一跳是1.1.1.1的路由
3.0.0.0/32 is subnetted, 1 subnets
D 3.3.3.3 [90/
2297856] via 23.1.1.3, 00:00:09, Serial0/1
但是在多路由协议的网络中建议关闭此条选路原则,使用命令:bgp bestpath igp-metric ignore命令来关闭这条选路原则,在OSPF中看cost不看路由类(O/OIA/OE/ON),因为不同路由协议在RIB中的metric值是不一样的,没有可比性,比如eigrp的metric动辄上万(如上面显示的)而其他协议不会超过几百,根据这条原则永远就不会选择eigrp协议的下一跳路由了,为了防止误选择建议关闭这条选路原则。(高版本的IOS中已经删除了这条命令,用不了了)
9、如果配置了maximum-path [ibgp] n,若存在多条等价路径,会同时放入路由表做负载均衡。
BGP默认maximum-path=1,最大是8-32不等(看版本),默认只能做EBGP的负载均衡。
10、学到时间最老的路由
规则:优选学到时间最老的路由条目(show ip route bgp)
范围:EBGP,不包括联邦的ebgp
关闭方法:bgp bestpath compare-routerid
11、最小Route-ID的
规则:BGP优选来自具有最小Route-ID的BGP路由器宣告过来的路由,但是如果路由包含RR属性,那么路径选择过程中就会使用originator-id来替代Route-id,不配置originator-id的话默认就用route-id做originator-id
12、规则:多路径的始发路由Route-ID相同,优选Cluster_list短的
13、规则:BGP优选来自于最小邻居ip地址的路由(neighbor中指的ip地址)