BGP属性分为四种
- 公有强制
- 公有非强制
- 可选传递
- 可选非传递
- ORIGIN
公有强制属性,标识此条路由的起始位置。分为三种,IGP,EGP和incomplete。 在数据包中分别用012表示。
在BGP选录的时候,IGP>EGP>INCOMPLETE
2. AS_PATH
公有强制属性,此属性标识一条路由所经过的所有AS号。在BGP选录的时候,优先选取AS_PATH短的那个,但是这个特性是CISCO的IOS特有的。如果用CISCO的设备和其他设备互连的时候,可以关闭这一属性,用as-path ignore这个命令。
需要注意的是,BGP只有当这条路由传出本AS的时候才会在AS PATH上面加上本AS的号码,并且是加在最前面。(这个只要注意用来标识起源的i在最末尾就知道了)
AS_PATH分成4种:
AS_PATH
AS_PATH_SEQUENCE
AS_CONFEDREATION_PATH
AS_CONFEDERATION_SEQUENCE
实际上应该是简写标识的,但是我忘了简写的单词了。。。上面用的是单词,具体就是这个意思吧。SEQ和AS-PATH区别就是AS-PATH是不注重顺序的。AS-PATH本身是用来防环的,所以只要这个as number在这个list里就够了。
3. NEXT-HOP
公有强制属性。
这个属性没什么可说的,就是这条路由的下一跳。需要注意的是,只有这条路由传输跨越AS的时候才会修改路由的下一跳,所以可能造成一些IBGP因为下一跳不可达问题造成路由不优。此时采用next-hop-self来修复这个问题。
4.Local Preference
公有非强制属性。
这个属性只在IBGP内部传输,主要用来做策略,当IBGP收到多条路由的时候,他有限选择local preference值大的那个。
默认值是100.
5.MED(MULTI-EXIT-DISC)
可选非传递属性。
相当于metric,越低越好。这个是在EBGP之间传输的,主要用来告诉自己的EBGP邻居自己想要哪条路进来。
也就是说,用来控制EBGP邻居选路。默认是0。
这个属性可以传递给EBGP邻居,但是只能传一跳,也就是说只能影响自己的直连邻居。(逻辑上的。。。)如果想对多跳以外的邻居做策略,要用AP_PATH。(当然,还有好多其他的。。)
6.atomic_aggregate and aggreator
共有,非强制属性。
这个属性是在做了路由汇总的路由器加在路由条目上的,同来通告下游的路由器AS PATH的缺失。因为BGP在聚合之后会丢失掉一部分AS PATH,把自己当作original router传递路由。
aggreator 也是在做汇总的这个路由器加上去的。前面的原子聚合只是告诉下游路由器发生了聚合,而aggreator是加上聚合路由器的AS和router id,思科的设备是这样的,别的不知道
.......
(我还得再说一次,what a fucking design...)
7.Community
可选传递属性。主要用来做策略标记一从一台路由器出来的一组路由,有点像打tag。
曾经是Cisco独有的技术,后来被标准化了。。。
在RFC文档里,community的格式是AA:NN,AA代表AS号,NN就相当于number,标识这台路由器。但是CISCO的传统格式是NN:AA,再次无语。。。想要把这个格式改成RFC的格式用ip bgp-community new-format。
值得注意的是,有一些固定的community属性。
internet----默认情况下就是这个,没啥区别。
no-export-----标记这个的路由传出去之后,接受的路由器不能再传递给自己的EBGP邻居。
no-advertise-----标记这个的路由压根就不能传递。
local-as------RFC管这个东西叫做NO_EXPORT_SUBCONFED,其实还是RFC的名字好。意思就是,收到了这个路由不能传给EBGP邻居,同时也不能传给被confederation隔开的,本来是IBGP,现在变成EBGP的邻居。
8.The ORIGINATOR_ID and CLUSTER_LIST Attributes
可选非传递属性,主要用在RR上。
本来为了放环,路由不能在IBGP之间传输,但是现在有了RR,能传了,所以得想个办法防环。传统的BGP防环技术是通过AS path,看见自己就不收,但是as内部不改变AS号。
因此,RR将一个route-reflector-client的路由转发给另外一个client的时候,标记了这个路由的originator,所以如果路由器接收到一条路由,发现originator有自己,就不收了。
cluster list也是RR标上去的,主要是在一个大的AS里,可能会有RR树。因此当一个RR收到一条路由的时候,看看cluster list有没有自己,如果有的话就知道打环了。
9.Administrative Weight
思科私有的BGP属性。
有点像local preference,区别在于这个属性只用于本路由器,不会传递给别的邻居。这个是越大越好。
默认情况下,从邻居学到的路由weight是0, 自己产生的是32768,最大是65535。
个人觉得这个是最好用的了,只可惜是私有属性,不知道别的厂商有没有什么替代的物质,毕竟写这个玩意很容易,关键是创意。
10.AS_SET
这个没太多说的,就是AS-PATH.
分成两种,一个是AS-PATH,一个是AS-SEQUENCE,前者不区分顺序,后者区分。
主要是在BGP做聚合的时候用来防环的。因为BGP聚合的时候默认会删掉所有属性,变成新的路由,这个时候传递出去由于丢失ASPATH属性可能造成环路。但是加上as set的话BGP会把之前所有路由的AS PATH都给加到这条汇总路由里面,然后传递出去,防环。
但是这个其实也有一定的坏处。比如 100 200 300这三个AS过来的路由在400上被聚合,传递出去之后加上AS SET的话应该就是400 300 200 100了。但是我们知道,路由聚合除了压缩路由表之外,一个很大的优势在于我们可以把网络抖动给控制在最小范围之内,做了聚合之后,在这个地址下面的部分出问题不会影响到聚合外的网络。但是有了这个AS SET,假如100的路由忽然没了,那么聚合的路由器就会修改这个as path,然后告诉他的邻居。这样无形的扩大了影响。