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 路径属性的主要内容,如果未能解决你的问题,请参考以下文章

关于BGP协议路径属性 相关的详细说明

BGP常用属性介绍

BGP常用属性介绍

边界网关协议的BGP属性

BGP选路13条原则全实战,一条条帮你梳理支撑整个互联网的选路原则

BGP-1