BGP 路径属性
Posted meili333
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BGP 路径属性相关的知识,希望对你有一定的参考价值。
BGP 路径属性
{公认属性}, well-known(众所周知) 公认属性所有的BGP设备都必须支持
【公认必遵】,强制 well-known mandatory,必须包含在update信息中
【公认自决】 well-known discretionary 不一定包含在update信息中,
{可选属性} Optional //可以支持,可以不支持,不一定都能识别
【可选传递】 optional non-transitive ,即使不支持,也要进行传递给其它邻居
【可选非传递】 optional non-transitive 可以不支持,可以不发给邻居
【公认必遵】,包括
Origin 起源
As-path as列表 换句话说,这三个属性,你在一个BGP的更新包中是一定可以见到的
Next-hop 下一跳
这个也很好理解 ,起源,你从哪里来,next-hop,你要到哪里去,as-path,你经过的路有哪些
【公认自决】,包括
local-preference 本地优先级, 可以不在update信息中,但是必须要
Atomic_aggregate 源址聚合 支持,告诉对端这是一个汇聚的地址
【可选传递】 包括
community 团体标记可以不支持,但是也要传递给别人
Aggregator 路由汇总
【可选非传递】 包括
MED bgp的metric
Originator-id 发起者ID
Cluster-list 反射器列表
Weight 权重 CISCO 私有
下面就来介绍几个比较主要的属性值倒底是什么回事儿,首先你要搞清楚它的一个分类,什么叫公认属性,什么又是必遵,什么又是可选
BGP的路径属性详解
1、Origin 起源(公认必遵)
什么是起源呢?通俗讲,是这个前缀是来自于何种类型,那么BGP支持几种类型呢?
BGP一共有三种起源:
BGP自己的,显示为i IGP 并不是IGP协议,是对于BGP而言
EGP,BGP前身 显示为 e 现在只是一种策略的条件而已
重分布进BGP的 显示为? incomplete
Origin 有以下的特点:
1它是公认的必遵属性,也就意味着所有的BGP路由器都要能够识别,
既然都能够识别,那如果是对于这个属性应用策略的话不管是in/out都可以呢?是的,没错,后面的时候我们在讲解策略时,会进行更加详细的test。
2三种不同的起源,有着不同的优先级 i>e>?
3它在BGP表中的具体表现形式
是后面的那个i,是origin 显示。这里千万不要搞混了。
前面的那个i是代表ibgp/ebgp的,
2、AS-path(AS列表,所经过的AS进行标记)
之前也提到过它有两个作用
1、用于标记信息经过的AS都有那些,表示BGP的跳数,
2、用于防环,还是EBGP
只要是接收到的更新中,有自己的AS号码出现,就直接丢弃,认为有环路
而AS-path 还拥有4种类型
AS-set //无序的标记 (这个会在BGP路由汇总时出现)
AS-sequence //这是有序的标记,(平时看到的就是)
AS-confed-sequence //联邦有序
AS-confed-set //联邦无序
至于无序,会在汇总的时候有更加详细的解释
要清楚一点,对于IBGP而言,AS-PATH除了可以防环,其它的并没有什么用,它不会去进行标记跳数,因为这发生在一个AS内部。这和IBGP的水平分割有着密不可分的关系。
只有数据从AS内部出去的时候才会加上AS标记。
由于它只在AS之间才显的有用,可想而之,IBGP的关系,AS-path 是不生效的。只针对于EBGP才OK,再加上它是一个公认必遵的属性,所以无论你做到IN/OUT方向都是OK的
如图中所示,AS100内部发布的更新,传到AS200上的R3,查看BGP表时,会看到这个条目经过了一个PATH。
3、next-hop到达目标路由的下一跳设备 (公认必遵)
任何一条路由在更新出来时,都必须携带next-hop属性,because,它也是公认必遵的属性,
抛开这个公认必遵的原因,你可以想一下,一个路由没有下一跳,那叫啥?啥也不是,对吧
3.1继承EBGP条目的next-hop属性
如上图所示
R2—R3是EBGP的邻居关系,而R2—R1是IBGP的邻居关系
如AS200有一条路由更新发至AS100,
那么在R2上看到的条目next-hop为R3
而在R1上看到的next-hop也是R3,但是正常情况下R1和R3能通信吗?他们并没有建立IGP连接,也没有建立BGP连接,只有R2处于AS的边界,负责和AS200进行通信。
这就是IBGP关系中路由器的NEXT-HOP特性,R2负责往内网通告update,但是会继承原有的EBGP条目的next-hop,至于到不到得了,我就不管了。正常情况下是无法通的
其意义就是在于,告诉自己的IBGP邻居,去往AS200,我告诉你有一个入口而已
上图为在R2上查看BGP条目
下图为在R1上查看BGP条目
可以看到,在R1上看这个条目的下一跳同样是3.3.3.3,说明其入口在3.3.3.3
正常情况下是不可能进行通信的,
(你之所以在这里能够看到是,>最优,是因为我在建立IGP时偷懒了,使用的net 0.0.0.0)
那怎么样才能够让其进行正常的通信呢?
我们有三个解决办法
1、在R1上配置静态路由指向R2(不推荐这样做)
2、在R2上将BGP路由重分布到IGP中, 【将BGP条目重分布到IGP中是需要足够的大胆以及细心的,不然70多万条的路由,会撑爆你的IGP路由器,瞬间DOWN机】
3、在R2上配置next-hop-self,将这个条目的下一跳指向自己(一般使用这种)
那么next-hop如何做呢?
在R2上做
R2(config)#router bgp 100 R2(config-router)#nei 1.1.1.1 next-hop-self
再到R1上查看一下会发现,next-hop地址发生了变化,指向了2.2.2.2也就是R2
因为配置的时候IGP协议使用了EIGRP,导致全网互通,正常情况下R1是无法和R3进行通信的。配置的时候一定要注意
另外,需要补充一点,关于next-hop-self这条命令倒底应该出现在哪些设备上,一定要注意,它一定是出现在一个AS的边界设备上的。因为它要把自己设置为AS内部路由器的下一跳,而AS内部路由器则不需要这样的操作。
但是,就算是你打完了next-hop-self,也无法正常通信,因为什么呢?因为R3上根本就没有回来的路由,要么你在R3上做默认路由指出来,要么你在R1上也发布一个路由,使得R3也收到,收到以后,R1的源去PINGR3的更新路由,这两者是可以通信的。但就是感觉怪怪的。没关系,咱们慢慢看...
3.2继承IGP协议的next-hop
BGP的next-hop会继承IGP协议的via,
如图所示,R1—R2运行IBGP关系, R2—R3为eigrp协议
此时R3宣告一个网段进入EIGRP中,在R2可以查看以D开关的路由条目
可以看到其VIA为23.0.0.3
我们现在在R2上直接以宣告的方式将这个条目引入到BGP中
(引入到BGP的方法有network ,redistribute)
R2(config-router)#network 13.0.0.0 mask 255.255.255.0
而此时到R1上查看bgp条目,你会惊奇的发现,next-hop同样指向的是R2IGP协议的VIA
最后再补充一下,如果这个条目是始发本地的,那么它的next-hop将是0.0.0.0
4、 local-preference 本地优先级 (公认自决属性)
前面也已经提到过关于公认自决属性的概念,既然讲到这里,就再重申一次,公认自决属性,其意思就是公认,所有的运行BGP协议的设备都得支持,自决指的是在一个update更新包中可以不携带这个信息。
Local—这里指的本地,是本AS,,这也充分表示,这一属性,是不允许在AS之间进行传递的,也就是说只可以IBGP关系传递,不能EBGP传递
再直观一些,就是如果你想要进行策略部署的话,就必须控制在AS内部
IBGP in + out可以
Ebgp的in 方向也可以,但唯独ebgp的out方向是不行的。
在EBGP 的条目中,local-pre这一项显示为空,注意是空,不是0,这个值在AS内部默认为100越大越优。
5、community 团体(可选传递属性)
可以理解为一个标签,把不同的前缀归纳成一个标签,然后对这个标签进行策略布置,可以减轻工作量,学习至此,可以和前面的两个技术点相仿。一个是sw部份的mstp,将vlan划到实例中,再对实例进行设置,
还有一个就是router部份的重分布,route-map 可以打上tag然后再对不同的标记进行策略部署。
Community的标签形式也很简单
AA:BB的模式
AA:自己的AS号
BB:自定义的号码(这个要根据实际的工作需要进行编制,特定的号码有特别的用处)
这一部份会以后面的community策略部署时详细说明
这里提一下,有关于community的几个特有的值
众所周知的几个值
1 )local-as
仅限本AS内部传递,如果说一个条目被冠以这个条件值 ,那么你再怎么network宣告也不会被传到EBGP邻居中
2) no-advertise
只自己保留,谁也不传,其中包括IBGP
3) no-export
不传给任何的ebgp peer,除了联邦的EBGP,至于联邦我们在后面介绍
这里先记住这个点即可
6、MED (可选非传递) bgp的metric
Med,即bgp的度量值,可以进行设置,但是默认有两个特性
1) 如果是本地宣告进BGP的,默认为0.这个值是越小越优
2) 如果条目是由IGP协议学习到的,再宣告到BGP中,那么将继承IGP的度量值,不管OSPF的cost,还是eigrp的metric.都会继承.
可以看到,13.0.0.0/24这个条目,是由EIGRP学到的,再由R2宣告进BGP中,所以这个条目会继承EIGRP的metric
而10.10.10.0/24这个条目,是本地始发的,那么其METRIC默认就是0
默认情况下IBGP是完全支持这个属性的,但如果想要让EBGP也支持的话需要添加单独的命令.这个在后面选路原则的时候会进行详细的说明.
7、Weight (可选非传递) 本地有效权重
可选非传递,而且只对本设备有效,且为cisco私有协议
既然是本地有效,那么将无法部署out方向的策略。是的没错
你会在nei x.x.x.x route-map x out的时候报错,只能是in 方向,
不管你是ibgp,还是ebgp,都一样的。
8、cluster-list反射器条目(可选非传递)
反射器,主要用于解决ibgp环路问题的一个解决方案。这个会在后面详细讲解
9、Originator-id 发起者ID
该属性和cluster-list并存,用于标记发起者,这一技术会在后面详细讲解
------------------------------------------------------
CCIE成长之路 --- 梅利
以上是关于BGP 路径属性的主要内容,如果未能解决你的问题,请参考以下文章