学BGP,其实就是在学BGP的这些复杂繁琐的属性。。。
可以说,BGP属性你都搞透了,BGP这块你也就小无敌了,废话不多说,直接入主题吧~
1.Origin Code属性:
属性种类:公认强制,指出了该路由条目的来源是什么。。。。。。
有如下几种来源:
1)Code= i:是在IGP的RIB中存在,并通过network命令宣告进BGP进程中的;
2)Code= e:从EGP协议中获悉的,EGP现在很少用可以不考虑
3)Code=?:Incomplete ,从其他手段获取的,如重分布Redistribute进 BGP进程中的~~~
2.AS_Path属性:
属性种类:公认强制,默认包含了一个有序的AS号列表(AS_SEQUENCE),描述了到达该网络所经过的所有AS有哪些。。。
请注意,只有将网络条目通告给EBGP邻居时,才将本地AS号加入到这个AS_Path属性中;如果只是通告给IBGP邻居,是不会增加任何AS号到AS_Path中滴~
这个AS_Path有如下两个作用:
1)让BGP进程决策最优路径,AS_Path最短最�牛�
2)防止环路,当某BGP Router从其EBGP邻居那里接收到一个网络的更新,并发现这个网络更新的AS_Path中有自己本地的AS号时,就证明有环路产生!!!
3.Next_Hop属性:
属性种类:公认强制,存放到达该目的网络的下一跳的IP地址是什么。
有如下3种情况:
(1)BGP发言者把自己产生的路由发布给所有邻居时,将把改路由信息的下一跳属性设置为自己与对端连接的接口地址.
(2)BGP Speaker 把接受到的路由发送给EBGP对等体后, 将改路由信息的下一跳属性设置为本地与对端连接的接口.
(3)BGPspeaker 把从EBGP邻居学习到的路由发给IBGP邻居的时候,并不改变下一跳属性.
4.Local_Pref属性:
属性种类:公认自由决定,只用在 和IBGP邻居间 的Update分组更新中,这个属性字段是不会传递给EBGP邻居滴~~~
告诉本地AS中的BGP Router,从哪个出口出去才是最优的:同一个AS中的BGP Router根据这个Local_Pref值来选择到达某个网络的最佳路径。。。。。。
当Router要将路由条目通告给其EBGP邻居的时候,会将这个Local_Pref属性删掉哦~
Local_Pref值越大越优先~~~
Local_Pref默认值为100~~~
5.MED属性:
属性种类:可选非传递,把MED看成“Metric值”。
告诉另外一个邻居AS中的BGP Router,从哪个入口进来我本地AS的才是最优的:邻居AS中的BGP Router根据这个MED值来选择到达某个网络的最佳路径。。。。。。
MED值越小越优先~~~
当然,邻居AS不会再将这个MED属性值通告给邻居的邻居AS!——也就是说,当邻居AS中的BGP Router将那些网络条目通告给它另外的EBGP邻居时,会将这个MED值删掉!!!
Cisco IOS中默认的MED值为0哦~
小插曲:Local_Pre和MED的区别:(“经典”话语)
Local_Pre是影响自己(的AS);
而MED是影响他人(的AS)~~~
6.ATOMIC_AGGREGATE属性 和 AGGREGATOR属性:
2者都是和BGP汇总有关滴~~~
6.1 ATOMIC_AGGREGATE属性:
属性种类:公认自由决定,当某一台BGP Router做BGP路由汇总时,会丢失掉那些细路由的所有AS_Path详细信息,而只将做了汇总的那台BGP Router所在的AS号填入AS_Path的AS_SEQUENCE中, 只要有做BGP汇总都会产生这个警告属性~
这个属性其实只是用来做警告的作用,用来警告下游BGP邻居,收到的是一条汇总路由就是了;
6.2 AGGREGATOR属性:
属性种类:可选传递,在做BGP汇总的那台Router上,可以指定这个属性,用来指示在哪里做了汇总~
通常这个属性的值由做BGP汇总的那台Router的RID和所在的AS号来标识哦~~~
所以说,ATOMIC_AGGREGATE属性是用来警告说这条路由是BGP汇总路由;而AGGREGATOR属性是用来指示在哪个地方、哪个点上做了BGP汇总。。。。。。
聚合的主要命令
aggregate-address addr mask
aggregate-address addr mask as-set
聚合同时保留AS
aggregate-address addr mask as-set advertise-map route-map-name
聚合同时保留相应的AS
aggregate-address addr mask attribute-map att-name
聚合同时可以修改其属性
aggregate-address addr mask route-map route-map-name
aggregate-address addr mask summary-only
在无明确聚合路径时时仍可进行聚合,一般是防止聚合的网段出现网络崩溃
aggregate-address addr mask suppress-map route-map-name
有选择性的聚合
7.Community属性:
属性种类:可选传递,中文名:团体、
主要用来做策略的:将某一些路由条目设置一个相同的标记——Community值,酱紫的话别的BGP Router就可以根据这些路由条目 身上的Community值标记来做相应的策略就是了,而不用针对每条路由。。。。。。
Community属性 存放Community值,
Community属性值有4个字节:
RFC规定:
格式为AA:NN,
前两个字节表示自主系统号AA,
后面两个字节用来标识这个Community NN。。。
Community属性值用十六进制表示。
Cisco规定:
格式正好和RFC相反,为NN:AA。。。。。。
Community属性值用十进制表示。
在Cisco IOS中,可以使用(config)ip bgp-community new-format 命令使IOS从默认的Cisco格式转换成RFC格式来显示哦~~~
有一些Community属性值是已经被事先定义好了(不用认为配置操作,Router就知道这些值是什么意思了。。。)——众所周知的Community属性值:
1)NO_EXPORT(4294967041或0xFFFFFF01):收到了某个路由条目的更新的Community属性值要是为NO_EXPORT,就不会将这个更新传递给其EBGP邻居哦!;
2)NO_ADVERTISE(4294967042或0xFFFFFF02):收到了某个路由条目的更新的Community属性值要是为NO_ADVERTISE,就不会将这个更新传递给其任何BGP邻居哦!;
3)LOCAL_AS(4294967043或0xFFFFFF03):和NO_EXPORT类似,只是这个Community值是用在BGP联盟环境中,不通告给联盟EBGP邻居~
8.ORIGINATOR_ID属性 和 CLUSTER_LIST属性:
这两个属性的属性种类都是可选非传递的,并且都是供路由反射器RR(Route Reflector)环境中使用的——而且作用都是用来防止环路的产生~~~!!!
其中ORIGINATOR_ID属性的值是该AS中始发该路由条目的路由器的RID! 如果某台BGP Router收到一条路由条目更新,且这个更新中的ORIGINATOR_ID是它自己的RID,那么它就知道发生了路由环路,并忽略这个更新的内容!;
CLUSTER_LIST 属性的值是该路由条目所经过的一系列RR簇ID的序号!如果某台RR收到了一条路由条目更新,并且更新中的CLUSTER_ID中发现了自己的RR簇ID,就证明有环路产生,并忽略这个更新的内容!
附加篇:
1.Weight权值:
Cisco专有的东西,只在本地Router上配置,影响的是本地Router的主观视觉,所以并不会通告给本地Router的BGP 邻居。。。。。。
Weight值越大越优先!
默认情况下,由本地Router通告产生的路由条目Weight值为0,而别人通告的路由条目Weight值为32768!
2.AS_SET:
其实,AS_Path属性有4中子类型属性:
1)AS_SEQUENCE:正如上面所说的,是一个有序的AS号列表;
2)AS_SET:主要用在做BGP汇总的那台Router上,我们知道,做BGP汇总之后,就只有一条汇总路由,并且该汇总路由的AS_Path属性字段包含的只是AS_SEQUENCE(做汇总的那台Router所在的AS号),酱紫的话,丢失了原有细路由的AS号信息,那么也就增加了路由环路发生的可能性。。。。。。
为此,做汇总的那台Router上可以在汇总路由更新中的AS_Path属性字段中添加一个子字段:AS_SET用来包含所有细路由的AS号的无序列表,从而提供额外的信息来防止路由环路。并且,如果有了AS_SET子字段后,ATOMIC_AGGREGATE这个警告属性也就不携带了。。。。。。
3)AS_CONFED_SET
4)AS_CONFED_SEQUENCE
3)和4)这两种子类型中的AS列表 分别和1)AS_SEQUENCE 2)AS_SET的作用是一样的只不过这两种子类型是用在BGP联盟中的。。。。。。这两个子属性作用都是用来防环的就是了。。。但注意——子属性3)从不用来做最优路径选择(这点和子属性1)的不同)