BGP的丰富属性——4个分类:
1、公认必遵(Origin、As-path、Next-hop):所有BGP路由器都可以识别这类属性,且必须要在update报文中传递,如果缺少了这类属性,路由信息就会出错。
2、公认任意(Local pref、Atomic_aggregate):所有BGP路由器都可以识别这类属性,但不要求必须在update报文中传递,即使缺少了这类属性,路由信息也不会出错。
3、可选过渡(Aggregator、Community):BGP设备可以不识别这类属性,但是路由器仍然可以接收这类属性,并且通告给其他AS邻居。
4、可选非过渡(MED、....):BGP设备可以不识别这类属性,路由器会忽略这类属性,并且不会将这类属性传递给其他AS邻居。
BGP选路原则:
1、丢弃下一跳不可达的路由;
2、优选Preference_Value值最高的路由(私有属性,仅本地有效);
3、优选本地优先级(Local_Preference)最高的路由;
4、优选手动聚合 > 自动聚合 > network > import (前面四个都是表示本地始发的路由) > 从对等体学到的(表示从邻居学到的路由);
5、优选AS_path短的路由;
6、起源类型IGP(代表network进来的)——i代表 > EGP() > Incomplete(代表import-route进来的)——?号代表;
7、对于来自同一AS的路由,优选MED值最小的;
8、优选从EBGP学来的路由(EBGP > IBGP);
9、优选AS内部的IGP的Metric最小的路由;(下一跳IGP cost低的:去往BGP路由的下一跳地址,这个下一跳在IGP中的Cost)
-----------------------分隔符---------------------
当前面9条都选不出来时,那么可以手动进行BGP路由负载分担。BGP负载分担的前提是,前9条属性完全一致,连as-path都要一样。
命令:maximum load-balancing 2 //BGP视图下,设置两条最有路径,进行负载。
10、优选Cluster_List最短的路由;
11、优选Orginator_ID最小的路由;
12、优选Router-ID最小的路由器发布的路由;
13、优选具有较小IP地址的邻居学来的路由。
注释:自上而下序号从小到大依次匹配,且唯一匹配。
1、Next-hop属性:
1.1 公认必遵属性
1.2 BGP本身是不计算路由的,只是路由的搬运工,所以BGP在传递路由时,需要携带下一跳属性,同时根据情况修改下一跳。
1.3 从EBGP邻居收到的路由条目传递给IBGP邻居时下一跳不自动改变,需要手动peer x.x.x.x next-hop-local来手动修改下一跳。
从EBGP邻居收到的路由条目传递给EBGP邻居时下一跳自动修改;
从IBGP邻居收到的路由条目传递给EBGP邻居时下一跳自动修改;
从自身始发的路由条目传递给所有BGP邻居时都会自动修改下一跳。
下一跳的取值:为本设备与邻居建立BGP邻居的peer ip地址。
2、Pref-Val:协议首选值
2.1 华为私有的属性
2.2 只具有本地意义(这个本地是指本台路由器)
2.3 缺省情况下等于0,数值是越大越优,取值范围0~65535。
@@针对发送给BGP邻居的路由,无法修改该属性,因为只有本地有效,该属性不会在update报文中传递。
@@针对接收的BGP路由可以修改该属性。
3、Local-Preference本地优先级(这个本地是指本AS)
3.1 公认任意属性
3.2 该属性只能在一个AS内部进行传递,跨越AS无效。
3.3 缺省情况下值为100,数值越大越优,取值范围0~42.96亿。
3.4 从EBGP邻居收到的路由,该属性默认为空,默认为100.
一般会使用该属性调整整个AS的选路问题:
注意:当路由器从EBGP邻居收到一条路由时,由于跨越AS不会传递本地优先级属性,因此本地优先级为空(当本地优先级为空时,默认数值为100)
总结:在IBGP邻居传递update报文时,是可以携带本地优先级属性的。
display bgp routing-table peer x.x.x.x advertised-routes //查看我给邻居或邻居给我发送了哪些路由.
4、本地始发路由优于邻居传来的邻居
4.1 本地始发的路由,要优于邻居传来的路由。
自动聚合:只能自动聚合import-route进来的路由,且这个明细路由必须时best路由。
4.2 如果多条BGP路由均为本地始发,那么遵循手动聚合 > 自动聚合 > network > import 。
5、AS_path属性:可以更改该属性,影响路由选路
5.1 公认必遵属性
5.2 第一个作用,用来记录每条BGP路由经过的AS,在选路时,会优选AS个数少的。
第二个作用,用于EBGP路由防环:当路由器接收BGP路由时,会检查as_path属性中是否携带本AS,如果携带则认为环路,拒绝接收。
5.3 针对IBGP邻居发来的路由进行修改,可以生效;
针对IBGP邻居发出的路由进行修改,可以生效;
针对EBGP邻居发来的路由进行修改,可以生效;
针对EBGP邻居发出的路由进行修改,可以生效。
所以,一般在使用as_path属性影响路由选路时,会在EBGP邻居接收或者发送时进行修改,并且修改时增加的as号要使用本as号,不能使用其他as号。
命令: apply as_path none overwrite //代表将这条路由的as_path属性清空。
apply as_path x x x x additive //代表在原有as_path属性的基础上,在左侧新增as号。
apply as_path x x x x overwrite //代表使用新增加的as号,覆盖原有的as号。
peer 45.1.1.5 allow-local 1 //从该peer收到的路由条目中,as-path属性可以允许存在一个本地as。
bestroute as-path ignore //忽略as-path优选条件,继续向下进行比较。
--------------------------------------------
6、Origin起源属性
6.1 公认必遵属性
6.2 用来描述BGP路由是如何进入BGP的
network import-route 手动聚合 自动聚合,i:entwork;?:import-route 聚合:e:从EGP引入的(自然情况下见不到);规则:i优于e优于?
由于起源属性也是公认必遵属性,所以针对IBGP和EBGP接收和发送两个方向修改该属性均有效。
--------------------------------------
7、MED属性-多出口鉴别符,类比开销值:multi-exit-discriminator
7.1 可以理解为BGP的cost值,或者叫做BGP的度量值。
7.2 用于影响邻居到本AS的选路策略,取值范围0~42.96亿,越小越优。
7.3 在宣告IGP路由时,MED值会继承IGP的cost值,IGP的度量值会变成BGP的MED值。
7.4 MED值是如何在邻居之间进行传递的:
1)对于本地始发的路由,在传递给IBGP和EBGP邻居时会携带MED属性。
2)对于从IBGP邻居接收的路由,传递给EBGP邻居时不会携带MED属性。
3)对于从EBGP邻居接收的路由,传递给IBGP邻居时会携带MED属性。
4)对于从EBGP邻居接收的路由,传递给EBGP邻居时不会携带MED属性。
5)default med,官方文档:default med命令用来配置BGP路由的缺省MED值,当MED为空时,使用缺省MED值,默认为0。
实际现象:当配置了该命令后,对于本地始发的起源为?的路由(起源为i的无效),在传递给IBGP邻居时MED值不变,传递给EBGP邻居时MED值修改为default med。
特别注意:MED属性只能影响下一跳邻居的选路!!!一般在使用MED属性控制邻居AS选路时,都会在边界路由器通过route-policy进行MED修改。
总结:修改BGP路由属性的方式和方法:
1、peer x.x.x.x route-policy XXX import //对从这个邻居接收的路由使用route-policy进行过滤和修改属性。
2、peer x.x.x.x route-policy XXX export //对于发给这个邻居的路由使用route-policy进行过滤和修改属性。
以上两条策略,均为邻居之间接收和发送时对某些指定的路由条目进行修改,要注意要写兜底。
3、network 100.1.1.1 route-policy XXX //在宣告本地路由时直接修改该路由的属性:该route-policy不需要写if-match和兜底。
--------------------------------
团体属性:
1、属于可选过渡属性
2、用于对路由进行标记,类似于IGP的tag值(IGP的tag值非常单一,BGP的团体属性非常丰富,可以在一条路由上标记多个团体)
使用团体来对BGP路由进行控制,主要控制传播范围,以及属性修改。
一、分类
1、公认团体属性:
Internet:设备在收到具有此属性的路由后,可以向任何BGP对等体发送该路由。(所有BGP路由都具有该属性,发送时要遵循路由选路原则)
No_Advertise:设备收到具有此属性的路由后,将不向任何BGP对等体发送该路由。
No_Export:设备收到具有此属性的路由后,将不向AS外发送该路由。
No_Export_Subconfed:设备收到具有此属性的路由后,将不向AS外发送该路由,也不向AS内的其他子AS发送该路由。(联盟场景)
注意:团体属性默认情况下不会被携带传递,必须通过手动开启团体属性传递。开启命令:BGP试图下,peer x.x.x.x advertise-community;
多个公认团体属性可以同时配置给同一条路由,这个时候,或选择传播范围小的生效。
2、自定义团体属性:
2.1 使用aa:nn方式:aa和nn的取值范围都是0~65535,两个数值的意义都是由管理员定义的。一般情况下,aa会使用AS好表达,nn由管理员自定义。
ip community-filter 1permit 234:1 //团体列表,可以抓取团体属性。
2.2 使用团体号:取值范围0~42.94亿,其中一些是保留号码,一般不适用此方法。
=======================