(所有BGP路由都必须 识别的属性)
(可不被BGP路由器所识别)
公认必遵:Origin、AS_Path、Next_Hop
公认任意:Local_Preference、Atomic_aggregate
可选过渡:Aggregator、Community
可选非过渡:Med、Cluster-List、Originator-ID
名称:起源Origin
作用:标识了BGP路由的起源,该BGP路由通过什么方式产生的。
介绍:
1、Origin的表示分为三种:i、e、?
2、当去往同一个目的地存在多条不同Origin属性的路由时,在其他条件都相同的情况下,BGP将按如Origin的下顺序优选路由:IGP > EGP > Incomplete,即 i > e > ?。
3、如何查看该路径属性?display bgp routing-table
下图红框部分,Path与Origin相近:
1、默认从IBGP产生的路由其Path为空,而从EBGP传入的路由其Path会携带AS号。
2、Origin为i表示从IBGP或EBGP所学习到的路由条目。
此处不要将EGP与EBGP混淆,EGP是早期实现AS自治系统之间交换路由信息的协议,BGP的前身。
名称:AS_Path路径
作用:标识前往目标网络时所需经过的AS号列表。
介绍:
1、以AS_Path 300 200 100为例,该路由从AS100产生,经过了AS200、AS300最后到达本地路由器。
2、AS_Path记录了经过的AS号,故当AS100的路由再次传递回AS100的时候将会被丢弃,因为AS_Path中包含了自己的AS号。这是BGP常用的防环属性。
3、AS_Path标识经过的AS,当学习两条相同目的的BGP路由时,如果其它属性相同,但AS_Path不同,则AS_Path中AS号的数量越少越优先。AS_Path越短的路由,其优先级越高。
4、AS_Path的类型有常用的AS_SEQENCE,以及AS_SET。
AS_SEQENCE表示方法:AS_PATH=300 200 100
AS_SET表示方法:AS_PATH=300 {100,200}
AS_SET在什么情况下出现呢?
在BGP路由被聚合的情况下出现。
路由聚合解决了两类问题,一是减轻了设备的负担,二是隐藏了明细的路由信息,减少了路由震荡的影响。但是路由聚合后,AS_Path属性丢失,存在产生环路的风险,为此可以通过AS_SET类型的AS_Path属性携带聚合前的AS路径信息。
当发生路由聚合后,如果需要聚合路由携带所有明细路由中AS_Path属性携带的AS号防止环路,则在配置聚合的命令中增加as-set参数。
AS_PATH后面的{}表示经过的AS号,该集合内的AS号没有先后顺序,主要用以防止环路。
如下图,R3将R1、R2的路由进行路由聚合,聚合之后归为AS300的路由传递给R4。
名称:Next_Hop下一跳
作用:用于指定到达目标网络的下一跳地址.
介绍:
在不同的场景中,设备对BGP路由的缺省Next_Hop属性值的设置规则如下:
1、BGP路由器在向IBGP或EBGP对等体发布某条路由时,会把该路由的Next_Hop设置为本地与对端建立BGP邻居关系的接口地址。
2、路由器在收到EBGP路由后,转发给其它IBGP对等体时,会保持路由的Next_Hop属性值不变。
3、如果路由器收到某条BGP路由,该路由的Next_Hop属性值与EBGP对等体(更新对象)同属一个网段,那么该条路由的Next_Hop地址将保持不变并传递给它的BGP对等体。【与FA地址功能相似】
如下图:
(1)R3收到R2传去往10.0.2.0/24的EBGP路由下一跳为10.0.123.2。
(2)R3将学习到去往10.0.2.0/24下一跳为10.0.123.2的EBGP路由传递给R1时,下一跳不会修改成与R1建立EBGP邻居的地址,因为其满足Next_Hop属性的中的**“Next_Hop属性值与EBGP对等体(更新对象)同属一个网段,那么该条路由的Next_Hop地址将保持不变并传递给它的BGP对等体”**
名称:Local_Preference本地优先级
作用:用于告诉AS中的路由器,哪条路径是离开本AS的首选路径。
介绍:
1、Local_Preference属性值越大则路由越优,缺省的Local_Preference值为100,可通过策略路由进行修改该值。
2、该属性只能传递给IBGP对等体,而不能传递给EBGP对等体。如果在EBGP对等体间收到携带了Local_Preference的路由,则会进行错误处理。
问题:如果不能将LP值传递给EBGP,那么EBGP又是否具备LP值呢?
路由器在向其EBGP对等体发送路由更新时,不能携带Local_Preference属性,但是对方接收路由之后,会在本地为这条路由赋一个缺省Local_Preference值(100),然后再将路由传递给自己的IBGP对等体。
名称:Atomic_aggregate聚合标记
作用:它只相当于一种预警标记,而并不承载任何信息,主要告诉路由器该路由经过了聚合。
介绍:
1、当路由器收到一条BGP路由更新且发现该条路由携带Atomic_Aggregate属性时,它便知道该条路由可能出现了路径属性的丢失,此时该路由器把这条路由再通告给其他对等体时,需保留路由的Atomic_Aggregate属性。
名称:Aggregator聚合标识
作用:标记路由聚合行为发生在哪个AS及哪台BGP路由器上。
介绍:
1、执行路由聚合操作的路由器为该聚合路由添加Aggregator属性,并在该属性中记录本地AS号及自己的Router-ID,因此其它路由器可通过Aggregator知道聚合是发生在哪个AS及哪台BGP路由器上。
名称:Community 团体值
作用:一种路由标记,主要对引入的路由进行标记方便BGP进行路由控制。
介绍:
1、Community属性值长度为32bit,也就是4Byte。可使用两种形式呈现:
十进制整数格式。
AA:NN格式,其中AA表示AS号,NN是自定义的编号。
2、除此之外还有默认的Community值:
团体属性名称 | 团体属性号 | 说明 |
---|---|---|
Internet | 0(0x00000000) | 设备在收到具有此属性的路由后,可以向任何BGP对等体发送该路由。缺省情况下,所有的路由都属于Internet团体 |
No_Advertise | 4294967042(0xFFFFFF02) | 设备收到具有此属性的路由后,将不向任何BGP对等体发送该路由 |
No_Export | 4294967041(0xFFFFFF01) | 设备收到具有此属性的路由后,将不向AS外发送该路由 |
No_Export_Subconfed | 4294967043(0xFFFFFF03) | 设备收到具有此属性的路由后,将不向AS外发送该路由,也不向AS内其他子AS发布此路由 |
名称:Med 开销
作用:一种度量值,用于向外部对等体指出进入本AS的首选路径。
介绍:
1、当进入本AS的入口有多个时,AS可以使用MED动态地影响其他AS选择进入的路径。
MED属性值与开销一致,故MED越小则BGP路由越优,默认为0。
2、MED主要用于在AS之间影响BGP的选路。MED被传递给EBGP对等体后,对等体在其AS内传递路由时,携带该MED值,但将路由再次传递给其EBGP对等体时,缺省不会携带MED属性。
[下图,R4优先使用R2传来开销最小的路由,并在IBGP内泛洪(开销不变)。]
[但如果传递给另外一个EBGP邻居的时候,将去掉该路由的MED值。]
3、缺省情况下不会将携带MED值的路由传递给EBGP邻居,那么在什么情况下可以携带呢?
IBGP内进行路由引入时,会将引入的路由开销继承,并且在传递给EBGP时不会删除。
如果路由器通过IGP学习到一条路由,并通过network或import-route的方式将路由引入BGP,产生的BGP路由的MED值继承路由在IGP中的metric。
[例如下图中如果R2通过OSPF学习到了10.0.1.0/24路由,并且该路由在R2的全局路由表中OSPF Cost=100,那么当R2将路由network进BGP后,产生的BGP路由的MED值为100。]
如果路由器将本地直连、静态路由,那么这条BGP路由的MED为0,因为直连、静态路由默认cost为0。
4、能够理解开销继承,但学习到继承开销的路由是否还会继续继承开销传递给下一个EBGP邻居吗?
回答:不能,因为MED不能跨AS传递。
反问:那为什么R2给R3又可以继承?
绝杀:所谓的继承在IBGP内部可以这么理解,但在R2上可以理解为将BGP发出时手动设置了MED开销,并不是真正意义的继承。
[所以再看下图就可以理解,由于MED不能跨AS的原则,R2传递BGP路由给R3时自动修改MED值,而R3再传递给R4时,由于没有了所谓的继承,故不会自动修改MED,只会传递不携带MED的路由给R4]
名称:Originator 起源者ID
作用:记录反射前路由的起源通告者。RR在反射的路由中增加Originator_ID,其值为通告该路由的BGP路由器Router ID。
介绍:
1、与Origin起源相似,Originator ID主要用于记录反射前路由的通告者,以便反射后的路由重新回到起源路由器上造成路由的环路。
2、若AS内存在多个RR,则Originator_ID属性由第一个RR创建,并且不被后续的RR所更改。
3、当BGP路由器收到一条携带Originator_ID属性的IBGP路由,并且Originator_ID属性值与自身的Router ID相同,则它会忽略关于该条路由的更新。
3、如何查看Originator ID呢?
名称:Cluster-List 反射簇列表
作用:用于RR反射簇环境下实现路由防环。
介绍:
1、每一个簇都有唯一的簇ID(Cluster_ID,缺省时为RR的BGP Router ID )
2、当一条路由被反射器反射后,该RR(该簇)的Cluster_ID就会被添加至路由的Cluster_list属性中。
4、 当RR收到一条携带Cluster_list属性的BGP路由,且该属性值中包含该簇的Cluster_ID时,RR认为该条路由存在环路,因此将忽略关于该条路由的更新/反射。
[如图,R1将R2路由反射给R3(首次Cluster-list为自己RID),R3继续反射给R4(Cluster-list增加R4的RID),最后R4反射回R1(Cluster-list增加R4的RID),R1收到反射后的路由发现Cluster-list中存在自己的RID,则不处理该路由]
名称:Preferred-Value 协议首选值
作用:华为设备的特有属性,用于本地手动选举最优路由。
介绍:
1、BGP十大路径属性,加上华为专属的协议首选值共十一条路径属性。
2、该属性只在路由器本地有效,所以通过在本地创建策略并应用在对应的邻居入方向上进行修改首选值。
3、用于当BGP路由表中存在到相同目的地的路由时,将优先选择Preferred-Value值高的路由,默认值为0/空。
[如下图,Prefval值高的将成为优选路由]
由于篇幅原因,仅给出相关配置命令,可基于逻辑自行修改命令加以应用。
属于公认必遵,所以通过策略路由修改之后可在IBGP与EBGP之间传递。
需求:将EBGP邻居10.1.13.3传递来的192.168.30.0/24的路由,修改其Origin为EGP类型。
配置逻辑:
1、先创建ACL或前缀列表匹配192.168.30.0/24路由
2、创建策略路由,if-match匹配路由,然后通过apply origin egp AS号 修改其类型
因为修改成EGP故需要指定原先的AS_Path信息
3、配置策略对指定路由修改之后,还需要创建一个放行其它路由的策略,不然其它路由将无法传递。
4、最后将策略应用到对应的邻居上
ip ip-prefix 30 permit 192.168.30.0 24
route-policy P30 permit node 5
if-match ip-prefix 30
apply origin egp 200
route-policy P30 permit node 10
[AR1-bgp]peer 10.1.13.3 route-policy P30 import
再次查看BGP路由表:
[AR1-bgp]dis bgp routing-table
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 192.168.30.0 10.1.13.3 0 0 200e
属于公认必遵,所以通过策略路由修改之后可在IBGP与EBGP之间传递。
需求:将EBGP邻居10.1.13.3传递来的192.168.30.0/24的路由,其AS_Path增加AS 65005从而降低该路由的优先级。
配置逻辑:
1、匹配路由
2、创建策略,针对指定路由修改其AS_Path
3、创建策略,放行其它路由
4、指定邻居上应用策略
ip ip-prefix 30 permit 192.168.30.0 24
#
route-policy AS permit node 5
if-match ip-prefix 30
apply as-path 65505 additive
#
route-policy AS permit node 10
[AR1-bgp]peer 10.1.13.3 route-policy AS import
再次查看BGP路由表:
[AR1-bgp]dis bgp routing-table
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 192.168.30.0 10.1.13.3 0 0 65505 200i
关于AS_Path的操作动作:
1、Additive ,AS_Path中增加指定的AS号【增加】。
2、Overwrite ,重写AS_Path为指定的AS号【修改/删除】。
3、none overwrite,清空AS_Path值。
属于公认必遵,所以通过策略路由修改之后可在IBGP与EBGP之间传递。
需求:将EBGP邻居10.1.13.3传递来的192.168.30.0/24的路由,修改其下一跳为3.3.3.3。
ip ip-prefix 30 permit 192.168.30.0 24
#
route-policy NextHOP permit node 5
if-match ip-prefix 30
apply ip-address next-hop 3.3.3.3
#
route-policy NextHOP permit node 10
[AR1-bgp]peer 10.1.13.3 route-policy NextHOP import
再次查看BGP路由表:
[AR1-bgp]dis bgp routing-table
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
192.168.30.0 3.3.3.3 0 0 200i
属于公认任意,所以通过策略路由修改之可在IBGP与EBGP之间传递,但由于本地优先级的特殊性即使传递给了EBGP邻居,也不会进行处理。
需求:将EBGP邻居10.1.13.3传递来的192.168.30.0/24的路由,修改其本地优先值为300。
ip ip-prefix 30 permit 192.168.30.0 24
#
route-policy LPRI permit node 5
if-match ip-prefix 30
apply local-preference 300
#
route-policy LPRI permit node 10
[AR1-bgp]peer 10.1.13.3 route-policy LPRI import
再次查看BGP路由表:
[AR1-bgp]dis bgp routing-table
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 192.168.30.0 10.1.13.3 0 300 0 200i
默认所有的本地优先级都为100,如果需要修改缺省值:[AR1-bgp]default local-preference 新优先值
属于公认任意,所以通过策略路由修改之后可在IBGP与EBGP之间传递。
属于可选过渡,通过策略修改之后可在IBGP与EBGP之间传递,哪怕设备无法识别也需要继续保留该属性。
该两个属性无法通过策略路由修改,此处仅给出配置命令:
需求:在AR1上配置聚合192.168.0.0/16,要求抑制相应明细路由的对外发布,并对该聚合路由添加Aggregator属性。
[AR1-bgp]aggregate 192.168.0.0 16 as-set detail-suppressed
属于可选过渡,通过策略修改之后可在IBGP与EBGP之间传递,哪怕设备无法识别也需要继续保留该属性。
需求:将EBGP邻居10.1.13.3传递来的192.168.30.0/24的路由,将该路由的团体值设置为200:3。
ip ip-prefix 30 permit 192.168.30.0 24
#
route-policy COM permit node 5
if-match ip-prefix 30
apply community 100:3
#
route-policy COM permit node 10
#
[AR1-bgp]peer 10.1.13.3 route-policy COM import
再次查看BGP路由详细信息:
[AR1-bgp]display bgp routing-table 192.168.30.0
BGP local router ID : 10.1.13.1
Local AS number : 100
Paths: 1 available, 1 best, 1 select
BGP routing table entry information of 192.168.30.0/24:
From: 10.1.13.3 (10.1.13.3)
Route Duration: 00h00m35s
Direct Out-interface: GigabitEthernet0/0/1
Original nexthop: 10.1.13.3
Qos information : 0x0
Community:<100:3> 【团体值在这】
AS-path 200, origin igp, MED 0, pref-val 0, valid, external, best, select, acti
ve, pre 255
Not advertised to any peer yet
扩展:后继介绍BGP选路时将会使用该属性进行区分不同路由,从而控制路由的选路。
属于可选非过渡,可在IBGP与EBGP之间传递,但传递给EBGP邻居时该属性将默认被剔除。
需求:将EBGP邻居10.1.13.3传递来的192.168.30.0/24的路由,将该路由的MED值修改为10。
ip ip-prefix 30 permit 192.168.30.0 24
#
route-policy MED permit node 5
if-match ip-prefix 30
apply cost 10
#
route-policy MED permit node 10
#
[AR1-bgp]peer 10.1.13.3 route-policy MED import
再次查看BGP路由表:
[AR1-bgp]dis bgp routing-table
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 192.168.30.0 10.1.13.3 10 0 200i
默认BGP学习到的MED都为0,如果需要修改缺省值:[AR1-bgp]default local-preference 新优先值
属于可选非过渡,应用于存在RR反射器簇场景用于防止路由多次反射。
属于可选非过渡,应用于存在RR反射器场景用于防止路由多次反射之后回到路由起源设备上造成路由环路隐患问题。
以上两种属性无法通过策略路由修改,属于默认启用的功能,会自动进行记录相应的信息。
后继介绍BGP反射器时再进行详细的介绍。