BGP - 5,BGP属性

metric,自己决定去哪个EBGP邻居

local-pre,影响AS内部IBGP邻居的路由决策

med,影响AS外部EBGP邻居的路由决策

1,BGP属性

公认传递(well-known mandatory ):必须支持,而且必须包含,包括as-path,next-hop,origin

公认非传递(well-known discretionary):必须支持,但是可以不包含,包括local-preference

可选传递(optional transitive ):可以不支持,但是必须往下传,包括community

可选非传递(optional nontransitive ):可以不支持,也可以不往下传,包括med,weight(思科私有)

2,Origin属性

查看路由的origin属性,可以用show ip bgp,在最后一列的path列中。

明确了路由的来源,有三种:

IGP:i,通过BGP network命令得来,即起源于IGP,因为BGP network必须是路由表中有的

EGP:e,由老的EGP协议重发布来,现在没了

incomplete:?,从其他渠道学来,重发布路由都是这个标记

IGP>EGP>incomplete

可以将origin改成E,用route-map做,eg:

(config)# ip prefix-list 10 permit 192.168.1.0/24

(config)# route-map ABC permit 10

(config-route-map)# match ip address prefix-list 10

(config-route-map)# set orign egp 30   /改成egp,AS号30

(config)# route-map ABC permit 20

(config)# router bgp 20

(config-router)# neighbor x.x.x.x route-map ABC in

备注:BGP中要改属性的值,基本都要用到route-map,route-map可以用prefix-list或者ACL,需要考虑"方向",是不是要打"空语句"

3,AS_PATH

经过的AS号,防环。

仅当路由被发往其他AS时(EBGP peer),BGP路由器才会将AS号追加至AS_PATH中。也就是说,如果想修改AS_PATH属性,必须在AS边界路由器上执行,对IBGP邻居执行修改AS_PATH是无效的。

1)AS_PATH路径属性的四种类型

AS_SEQUENCE:有序AS号集合

AS_SET:无序AS号集合

AS_CONFED_SEQUENCE:联邦有序AS号集合

AS_CONFED_SET:联邦无序AS号集合

2)AS_SEQUENCE

途径AS号的集合,例如300,100。即去往该目的地址需要途径300、100。

3)AS_SET

为了防环,加入了明细路由AS号的集合,但是明细AS号集合是无序的。

例如300,{200,100},R3汇总时使用了AS_SET命令继承了明细路由的AS_PATH

4)使用route-map修改AS_PATH

通过更改AS_PATH影响选路。R2做如下变更:

(config)# ip prefix-list 10 1.1.1.0/24

(config)# route-map ABC permit 10

(config-route-map)# match ip add pre 10

(config-route-map)# set as-path prepend 666

(config)# neighbor 3.3.3.3 route-map ABC out  /对邻居R3出方向挂route-map ABC,影响的是控制层面

备注:

R3收到的路由AS-PATH是200,666,i。如果是R3的in方向挂route-map ABC,则是666,200,i。

插入不存在的AS号有风险,万一真的遇到AS666会被拒收,所以可以插入自己的AS号,即200。

5)AS_PATH的几个命令

neighbor 路由来源邻居 allowas-in 几个我的as号    /允许接收包含自己AS号的路由

bgp bestpath as-path ignore /让思科路由器决策过程中忽略AS-path属性

4,NEXT-HOP

next-hop结合同步,决定了路由能否打上大于号,即最优。该地址要能访问。

1)来自EBGP邻居R1的路由,自己是R2

R1(AS100)--------R2(AS200)

next-hop即为EBGP邻居R1的更新源地址

2)来自IBGP邻居R2的路由,并且是AS外的路由,自己是R3

R1(AS100)--------R2(AS200)--------R3(AS200)

next-hop还是EBGP邻居R1的更新源地址,不会发生改变

3)来自IBGP邻居R2的路由,并由AS内BGP路由器引入

如果通过aggregate-address引入,则next-hop等于执行汇总路由器的更新源地址

如果通过network或者重发布引入,那么注入前的IGP下一跳称为BGP的next-hop

如果本地BGP宣告者成了下一跳地址,那么在本地BGP RIB表中下一跳字段就是0.0.0.0。(备注:这段话的意思应该是如果本地产生的即本地network或者aggregate的,那么下一跳就是0.0.0.0,选路原则第三条就是优选本地产生的。但是李桃梅视频中不是很理解这一条,称:优选next-hop为0.0.0.0的路由,实际上不会遇到?因为本地产生又从其他地方传来,意味着环路?)

4)通过next-hop-self可以更改next-hop属性

5)MA网络上的next-hop,如果R1、R2、R3是EBGP邻居关系,来自三个不同的AS,但是他们是连到同一MA网络,则R1传R2,R2传R3后,next-hop仍然为R1。

6)NBMA网络上的next-hop,同MA网络,所以需要注意R3至R1的PVC是通的。

5,LOCAL-PREFERENCE

优先选择local-preference值大的。默认值:100。

local-preference只在AS内部IBGP邻居间传递,影响出AS流量。用来通告给IBGP邻居,怎么离开本AS。

去往同一目的地可以经过不同AS时,由2条路由的local-preference决定。

如果EBGP peer间收到的路由路径属性中携带local-preference,会触发notification报文,造成会话中断。

收到EBGP peer发来的路由更新时,local-preference的值是空的,会赋上默认值100。

本地network的路由、重发布的路由,默认local-preference值也是100。

举例

在R1或者R4上做,告诉R3怎么离开本AS去往AS2

方法1:改所有

(config-router)# bgp default local-preference 111

备注:比另一个大就行,改动后show ip bgp有些能显示/有些不能显示,在进程中做不用指定邻居。看不到local preference的可以"show ip bgp 地址/掩码"看到是否起效。

扩展,该命令对下列获取的路由是否起效:a,network;b,EBGP:起效;  c,IBGP;d,聚合的路由

方法2:改部分路由

要求R3访问某些网段从R1走,同weight,用map,在R1上做

ip prefix-list 101 permit 2.2.2.0/24

route-map ABC permit 10

match ip add prefix-list 101

set local-preference 111

route-map ABC permit 20

neighbor 3.3.3.3 route-map ABC out

6,COMMUNITY

1)基本概念

可选:路由器有可能不识别该属性

默认不认识,需要打一条命令:neighbor X.X.X.X send-community(让对方认识)

传递性:社团属性只在neighbor的邻居有效,不会继续往下传,要继续往下传还是通过上面的命令

2)route-map中设置属性值

主要包括:

no-advertise:携带此属性的路由不会通告给任何BGP邻居

no-export:携带此属性的路由不会传出大AS(联邦之间仍然会传递,联邦内部也会传递)

local-AS:携带此属性的路由不会传出小AS(联邦之间也不会传递,联邦内部也会传递,没有联邦即只在本AS传递)

备注:没有做联邦的话no-export和local-as效果是一样的

配置实例:

ip prefix-list 11 permit 11.11.11.0/24

route-map test permit 10

match ip add prefix-list 11

set community 100:11

router bgp 100

network 11.11.11.0 mask 255.255.255.0

neighbor 2.2.2.2 remote-as as 200

neighbor 2.2.2.2 send-community

neighbor 2.2.2.2 route-map test out

3)使用ip community-list匹配community值

4)在community-list中删除特定的community值

5)COST community

参考红茶三杯笔记

7,MED

MED值越小越优先,思科默认MED为0。

用于AS之间影响路由,两条路由来自同一相邻AS才会比较,即AS_SEQUENCE中的第一个AS号相同才会比较。不会跨AS传递。

1)MED值设置方法

IGP引入BGP时关联route-map进行设置

对BGP peer应用in/out方向的route-map进行设置

非route-map(自动)方式:使用network或者redistribute引入IGP时,MED继承IGP的metric;使用aggregate方式引入时,MED为空。

2)MED值的传递

MED值在IBGP之间传递没有问题。

MED值在EBGP之间传递要看路由是否起源自己,如果起源自己则传递,不是起源自己不传递。

3)MED继承IGP的metric

network本地IGP,MED继承该IGP的metric

network本地直连网段,network本地静态路由,MED值都是0

redistribute本地IGP,MED继承该IGP的metric

redistribute本地直连网段,redistribute本地静态路由,MED值都是0

4)其他配置命令

bgp always-compared-med:默认只比较来自同一AS的MED,如果想对所有路径都比较,则开启此命令,要做建议整个AS都做,避免环路。

bgp bestpath med missing-as-worst:默认收到MED属性丢失的配置为0,配此命令则配置为最大值。

set metric-type internal

bgp bestpath med confed

bgp deterministic-med

default metric x

5)举例

R1和R4都把8.8.8.0/24通告给了R2,不做任何策略的话,会比较到第十条,优选routerID较小的R1。

要控制AS2怎么进入AS1访问8.8.8.0/24时,通过修改R1/R4向R2通告路由的MED值。

方法一:所有路由设置med,可控的只有AS1,AS2是看不到的。(待实验,貌似没有方法二?)

1)写MAP:

route-map MED

set metric X

2)调用:neighbor 12.1.1.2 route-map MED out

验证方法:带源地址的ping,debug ip bgp updates

8,Atomic_Aggregate及aggregator

Atomic_Aggregate是公认自决属性;aggregator是可选可传递。

用于提示做了汇总路由的始发AS和始发路由器。

如果加上了as_set则路由已经包含明细路由的AS号,这2个属性就没有了。

9,Originator_ID和Cluster_list

是RR使用的可选非传递属性,用来防止环路。

Originator_ID:本AS中路由发起方的IBGP RouterID。

Cliuster_list:RR在反射路由的时候会创建或更新Cluster_list,下面几种情况,RR不会创建该属性:RR始发的路由;向EBGP邻居发送路由时清除该属性;从EBGP邻居收到反射给client/非client时不会创建。

1)取值示例

注意,originator_id是R2,cluster_list是R3

2)cluster_id可以影响BGP选路,优选经过cluster_id少的路径。

10,Weight

思科私有,作用范围是本路由器(不传递),不会被包含在update消息中,不会传递给任何BGP邻居。

1)weight的值

weight值越大越优先。

从其他邻居学来的默认为0

本地network的是32768

本地重发布直连、重发布静态的是32768

本地汇总的BGP路由是32768

总结:从邻居学来0,自己的32768

2)举例

  

如上图,R2上有路由,传播至R3,在R3做,设置路由的weight值,决定是通过R1/R4访问R2

方法一:改所有

(config-router)# neighbor 地址A weight X     /这里地址A是R1或R3的更新源地址吗?待确认

方法二:改部分路由

要求R3访问某些网段从R1走,用map(ACL,prefix-list)

eg:

ip prefix-list 2 permit 2.2.2.0/24

route-map ABC permit 10

match ip address prefix-list 2

set weight 3

route-map ABC permit 20

neighbor 1.1.1.1 route-map ABC in  /提供了weight值,优先从R1走

11,BGP选路原则

前提条件:1)同步,2)下一跳。即有2条最优路(大于号)时才会涉及到选路。此外如果被入方向BGP策略拒绝+soft reset,或者damped,也不会涉及选路。

研究BGP属性需要着重分析点:传播范围,默认值,越大越好/越小越好

11.1,概述

BGP路由信息库RIB,包含三个部分:

Adj-RIBs-IN:来自对端的,未经处理的消息

Loc-RIB:经过本地策略后使用的路由

Adj-RIBs-OUT:传递给对端的路由

BGP的决策过程,即对Adj-RIBs-IN中的路由使用本地策略,并将选定或修改的路由放到Loc-RIB和Adj-RIBs-out中。

11.2,选路原则

1)weight(越大越好):本路由器上的路由优先级

2)local-preference(越大越好):发给IBGP邻居,怎么离开本AS

3)起源于本地(如network或aggregate的,即下一跳是0.0.0.0,以下依次递减:default-originate,default-information-originate,network,redistribute,aggregate-address)

4)AS-PATH(越短越好)

5)origin属性(i>e>?)

6)MED(相当于IGP的metric,越小越好):告知EBGP邻居,怎么进入本AS

7)EBGP邻居优于IBGP邻居(联邦中也是)

这条指的是同一条路由从BGP学到,可以是IBGP也可以是EBGP,不会根据AD值优选EBGP,而是要根据选路原则逐条判断,比到这一步时还会优选EBGP。

AD值只用于同时从不同协议,IGP和BGP比。

8)优选最近的IBGP邻居

9)基本用不到(优选最老EBGP邻居传来的路由)

10)比较route-id(越小越好)

特殊情况:

11)有RR时,优选Cluster-id最短的

12)如果还是比较不出   ,即同一个邻居建了多条链路,优选ip地址最小的

常用的只有weight,local-preference,med这3个属性。

11.3,BGP的负载均衡

1)等价负载均衡

如果选路原则1~8相同,并且在BGP进程下面配置了maximum-paths {ibgp} n,n取2~6,可以配置对EBGP邻居、IBGP邻居执行负载均衡。

BGP表中只会优选一条,但放入路由表有2条。

EBGP等价负载均衡只有对来自对一AS的不同EBGP邻居的路由才有效,来自不同EBGP邻居的路由无效。

2)非等价负载均衡(待修订补充)

neighbor 2.2.2.2 dmzlink-bw

send-community

12,BGP选路环路问题案例

1267属于AS123,345属于AS456,23和56分别建立EBGP邻居关系,26向AS456注入默认路由,R4向AS123宣告一条4.4.4.4的路由,26分别执行双向重分布,且ospf外部路由也重分布到BGP,正常情况下:

R2的BGP表:最后比到第7条,EBGP邻居优于IBGP邻居

R6的BGP表:最后比到第7条,EBGP邻居优于IBGP邻居

工作正常

R2和R3之间的链路断开后

R2从EBGP邻居学不到该路由了,但R6的BGP学到了该路由,然后重发布到OSPF

R6从OSPF学到该路由,优选了该路由?

又重发布回OSPF....

R2又变为

R6又变为:

最后路由出现了环路,造成R1 trace R4的报文在R2和R6之间环路,所以重发布时带上OSPF外部路由可能会出问题。

原文地址:https://www.cnblogs.com/guxh/p/8467766.html

时间: 2024-11-09 00:10:25

BGP - 5,BGP属性的相关文章

BGP的各种属性

边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议. BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议. BGP 构建在 EGP 的经验之上. BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息.网络可达信息包括列出的自治系统(AS)的信息.这些信息有效地构造了 AS 互联的拓朴图并由此清除了路由环路,同时在 AS 级别上可实施策略决策. BGP采用TCP179端口,BGP不会学习路由, 只会传递路由. * BG

BGP中COMMUNITY属性

COMMUNITY--可选传递属性 一种标记,用于简化路由策略的执行 可以将某些路由分配一个特定的community属性,之后就可以基于该community值而不是每条路由进行BGP属性设置 community属性就可以理解成在IGP内打TAG的意思,只不过在BGP中是community值 community值会一直传递下去,如果不做策略,永远不会丢失. community属性在cisco路由器有两种表现形式: Cisco路由器默认表现形式是十进制的形式,例如图片中:796432 RFC格式:A

【思科】BGP的community属性解析

BGP的community是一种路由标记方法,用于确保路由过滤和选择的连续性,并且具有可传递性. 实验拓扑: 实验需求: 1.在R1上设置11.0/24 community属性值100:11,将属性传递给R3 2.   为11.11.11.0/24再添加一条属性值no-export 3.   在R1上network 12.0/24网段,根据严格匹配原则,在R3上将到达12.0/24网段的metric设置为1111,而11.0/24的metric不变. 4.   在R3上删除11.0/24路由的n

BGP community 属性

BGP communities  属性 BGP 的community 属性属于可选可传递属性,不支持该属性的路由器会原封不动的将community 值传递给下游BGP邻居(前提是配置了传递community 属性). BGP 的community 属性可以简化网络中路由器对相同路由条目的匹配工作,如果在一个大型网络中所有路由器上都需要匹配相同的路由条目,如果用ACL或者前缀列表进行匹配,则工作量比较大,所以可以在一台路由器上为相应的路由条目打上community 属性值,在其他路由器上可以通过匹

BGP团体属性(实验)

根据BGP路由的团体属性设置BGP路由策略 R1配置: Loopback0 1.1.1.1 Loopback1 192.168.1.1/24 Loopback2 192.168.2.1/24 Loopback3 192.168.3.1/24 Loopback4 192.168.4.1/24 E1/0 10.1.12.1 R2配置: Loopback 2.2.2.2 E1/0 10.1.12.2 配置IGP(RIP)保持连通性: R1配置: router rip version 2 network

BGP路由属性详解

Weight属性:cisco私有的BGP属性参数,它只适用于一台路由器中的路由,也就是不会传递给任何其他的路由器.他的取值范围为<0-65535>,这个数越大优先级越高,默认从邻居学到的路由的weight都为0,从本地重分布进BGP路由表中的值为32768.Weight属性不能包括在BGP的update中,也不能以任何形式传递给其他运行BGP的邻居,就是说一个路由器上权值的分配不会影响其他路由器上的路由选项. Neighbor X.X.X.X weight命令可以更改从该邻居收到的路由的wei

利用BGP origin-code 属性修改BGP选路

实验拓扑 基本配置: R1 L0:1.1.1.1/32 L1:11.1.1.1/32 E1/0:10.1.12.1/24 E1/1:10.1.14.1/24 R2 L0:2.2.2.2/32 L1:22.2.2.2/32 E1/0:10.1.12.2/24 E1/1:10.1.24.2/24 R4 L0:4.4.4.4/32 L1:44.4.4.4/32 E1/0:10.1.24.4/24 E1/1:10.1.14.4/24 配置IGP(RIP): R1 router rip version 2

BGP 路由属性

BGP 路由属性是路由信息所携带的一组参数,它对路由进行了进一步的描述,表达了每条路由的各种特性,使得路由接收者能够根据路由属性值对路由进行过滤和选择. 路由属性是BGP 协议区分与其它协议的重要特征.BGP 通过比较路由携带的属性,来完成路由选择.环路避免等工作. BGP的每个属性都有特定的含义,具有不同的用途并可以灵活的应用:并且路由属性是基于" TLV" 架构的,易于扩展.这些特性使得BGP 的功能十分强大. BGP 路由属性包含有以下四类: 公认必遵 Well-known ma

BGP中正则表达式的理解

今天不经意和网上一个朋友聊到H3CTE 考试,不过很遗憾的上我考挂了,所以才和他讨论的,当时讨论BGP 的路由属性控制MED 和LOCAL-PECR ,突然帽出来个正则表达式,很郁闷的是,我一直都没怎么在乎这个东西,以前只是看到过,以为不怎么重要,今天他突然和我讲了下重要性,而且当时考H3CTE 就需要用上这个,汗~~~居然都不知道.和他聊完我立即找这相关方面的资料,找到了一点点,郁闷很难看懂啊,都是一些符号不好理解啊.没法呀,得学习^_^ 下面是对BGP 正则表达式的介绍 . 匹配任意单个字符

BGP基础

BGP基础 BGP是应用于自治系统间的路由协议(注意此处的自治系统是指使用同一个路由协议的网络集合,要跟OSPF.EIGRP的进程号等加以区分),通过使用BGP,我们可以将使用不同路由协议的自治系统连接起来,组成一个更大的网络,虽然这个功能使用重分发也可以实现,但是使用BGP,一方面可以简化路由表,另一方面让我们可以精确的控制路由条目.下面的一些简单说明也许能让你更加清晰的理解BGP. 一.基础要点 通常在AS(自治系统)内部运行某种IGP协议,用于AS内部的路由学习和管理:而在AS的边界运行B