BGP路径属性分类与实验(华为设备)
BGP路径属性分类与实验(华为设备)
属性分类:
BGP的路径属性是对BGP路由特定的描述,是每个BGP Update数据包的⼀部分 ,描述了相关前缀的路径信息。BGP决策进程将属性及所描述的前缀结合在⼀起,对所有可以到达的⽬标⽹络的路径进⾏⽐较,选出最优的那⼀个。路径属性提供了基本路由功能必需的信息,例如该路由的Next_ Hop、 AS_ PATH等。BGP常⽤的路径属性有10个,可分成4类。如下图所⽰:
1. 公认必遵( Well known Mandatory):所有BGP设备都可以识别此类属性,且必须存在于Update 报⽂中。如果收到的更新报⽂中缺
怎么查自己的ip
少这类属性,BGP邻居关系会被重置。⽬前公认必遵的属性只有3个。
2. 公认任意(Well-known Discretionary):所有BGP设备都可以识别此类属性,但不要求更新中必须携带该属性。即使缺少这类属性,
邻居关系也不受影响,设备⼚商可以⾃由决定此种属性要否实现。
3. 可选过渡(Optional Transitive):BGP设备可以不识别此类属性。如果BGP设备识别该属性,则转发该属性的更新。如果BGP设备不
识别该属性,则查看该属性是否已设置了过渡标记,如设置了该标记则路由把该属性转发并通告给下游设备。
4. 可选⾮过渡(Optional Non-transitive):BGP设备可以不识别此类属性。如果BGP设备不识别此类属性,且过渡标记没有被设置的情
况下,则更新中不通告该属性,路由继续通告给其他对等体。
注意:
1. BGP协议的属性众多,不同的属性所起的作⽤均不同,IETF定义不同的属性分类的⽬的是为了统⼀不同⼚商BGP设备对属性的处理。
2. 常⽤的可选属性中,MED、Originator_ID、 Cluster_list是⾮过渡属性,但⽬前⼏乎没有⼚商不识别该属性,所以所有BGP设备都传
递该属性给邻居。
常⽤的BGP属性共有10个,其属性类型及数值参考下表:
Origin属性:
Origin属性⽤来定义路径信息的来源,标记⼀条路由是怎么成为BGP路由的。它有以下3种类型:
1. IGP:具有最⾼的优先级。通过路由始发AS的IGP得到的路由信息,⽐如通过network命令注⼊到BGP路由表的路由,其Origin属性
为IGP。
2. EGP:优先级次之。通过EGP得到的路由信息,其Origin属性为EGP。(注意是EGP协议,不是eBGP)
3. Incomplete:优先级最低。通过其他⽅式学习到的路由信息。⽐如BGP通过import-route命令引⼊的路由,其Origin属性为
Incomplete。
说明:
1. 在BGP路由表中,i表⽰由IGP学到的路由。e表⽰该标识只能⼿⼯地调整。由于EGP协议⼏乎没有使⽤,因此很难看到该标识。?表⽰
由外部引⼊到BGP的路由。例如:100.1.1.0/24位network引⼊,200.1.1.0为import引⼊。
2. 当有多条来源不同的范围相同的路由时,按照IGP>EGP>incomplete,顺序选择。
3. 聚合路由的起源属性可以是IGP,也可能是incomplete,这依赖于聚合路由的成员路由的起源属性。如果成员路由的origin 属性都是
IGP,则聚合路由的起源属性为IGP。如果成员路由的origin 属性是incomplete,则聚合路由的起源属性为incomplete。 ⽽如果有些成员路由是IGP, ⽽有些成员路由的属性是incomplete, 则⽣成的聚合路由的起源属性是incomplete。
4. 当⼀条路由条⽬产⽣了,那么除⾮⼈为进⾏修改,否则起源是不会变化的(例如?不会因为BGP邻居关系传递变为i)。
AS-Path属性:
AS_Path属性按⽮量顺序记录了某条路由从本地到⽬的地址所要经过的所有AS编号。当BGP路由器从EBGP对等体接收路由时,如果发现AS_Path列表中有本AS号,则不接收该路由,从⽽避免了AS间的路由环路。当BGP Speaker本地通告⼀条路由时:
1. 当BGP Speaker将这条路由通告到其他AS时,便会将本地AS号添加在AS_Path列表中,并通过Update消息通告给邻居路由器。
2. 当BGP Speaker将这条路由通告到本地AS时,便会在Update消息中创建⼀个空的AS_Path列表(因为必须带有此属性)。
当BGP Speaker传播从其他BGP Speaker的Update消息中学习到的路由时:
1. 当BGP Speaker将这条路由通告到其他AS时,便会把本地AS编号添加在AS_Path列表的最前⾯(最左⾯)。收到此路由的BGP路由
器根据AS_Path属性就可以知道去⽬的地址所要经过的AS。离本地AS最近的相邻AS号排在前⾯,其他AS号按顺序依次排列。
2. 当BGP Speaker将这条路由通告到本地AS时,不会改变这条路由相关的AS_Path属性。
因此,在上图中,当R4将⽹段10.0.0.0/24通告给AS400和AS100时,会在AS_PATH中添加⾃⼰的AS号。当R5将⽹段10.0.0.0/24通告给AS100时,也会添加⾃⼰的AS号。当AS100内的R1、R3和R2之间将⽹段10.0.0.0/24相互通告时,AS_PATH属性不会改变,在其他BGP选路条件相同的前提下,BGP会选择AS_PATH路径最短的,即选择通过R3直达R4的路由。另外AS_Path还有防环的作⽤,接收到相同AS号的条⽬标记为⽆效。
AS_ PATH除了能够防环外,还可以根据AS_PATH的长度决定选择最优路由BGP的AS_ PATH属性内容是由segment 构成的,有4种segment类型,分别是AS_ SET、AS_ SEQUENCE、 AS_CONFED_SET、AS_ CONFED_ SEQUENCE。后两种segment类型仅出现在BGP联盟中,每种segment类型在AS_ PATH 属性中仅能出现⼀次。AS_ PATH属性见下表:
注意点:
1. ⼀般不建议对AS_ PATH做任何删/改⾏为,这易于导致路由环路。但管理员可根据需要添加重复的AS号到AS_ PATH中以增加AS_
PATH的长度,继⽽影响远端设备选路。
2. 使⽤命令peer [ ipv4-address] public-as-only发送eBGP报⽂时,仅携带公有AS号。
3. 在互联⽹中只有公有AS号可以直接在Internet.上使⽤,私有AS号直接发布到Internet.上可能造成环路现象。为了解决上述情况,可
以在把路由发布到Internet前,配置发送eBGP更新报⽂时,AS_ PATH 属性中仅携带公有AS号。
4. 通常情况下,⼀个设备只⽀持⼀个BGP进程,即只⽀持⼀个AS号。但是在某些特殊情况下,例如⽹络迁移更换AS号的时候为了保证
⽹络切换的顺利进⾏,可以为指定对等体设置⼀个伪AS号,对⽅将会使⽤该伪造AS号与之建⽴邻居,同样可以起到隐藏⾃⾝真实AS 的作⽤。使⽤命令peer [ipv4-address] fake-as fake-as-number配置eBGP对等体的伪AS号。例如:原BGP进程为200,使⽤命令peer 2.2.2.2 fake-as 100,将会与对等体2.2.2.2使⽤伪造的AS 100来建⽴邻居。
5. 如果在路由进程中配置了AS_ PATH_limit命令,接收路由时会检查AS_ PATH属性长度是否超限,如果超出则丢弃掉路由。缺省情
况下AS_ PATH长度为255,最⼤限制值可以调整为2000。
Next_Hop属性:
Next_Hop属性记录了路由的下⼀跳信息。BGP的下⼀跳属性和IGP的有所不同,不⼀定就是邻居设备的IP地址。通常情况下,Next_Hop 属性遵循下⾯的规则:
1. BGP Speaker将本地始发路由发布给IBGP对等体时,会把该路由信息的下⼀跳属性设置为本地与对端建⽴BGP邻居关系的接⼝地
址。
2. BGP Speaker在向EBGP对等体发布某条路由时,会把该路由信息的下⼀跳属性设置为本地与对端建⽴BGP邻居关系的接⼝地址。
3. BGP Speaker在向IBGP对等体发布从EBGP对等体学来的路由时,并不改变该路由信息的下⼀跳属性。
实验:
⽬的:
R1和R4的AS号为1,R2的AS号为2,R3的AS号为3,直连路由器建⽴EBGP或者IBGP邻居关系,并且创建对应的回环⼝并通告进⼊BGP中。现在检查EBGP和IBGP对等体交互后nexthop属性的变化过程。
过程:
R4发送给R2的报⽂:当R4⾃⼰产⽣的时候,下⼀跳为:0.0.0.0,表⽰为本地产⽣的路由条⽬。
当发送给R2的时候,下⼀跳改变为了⾃⼰:
当R2发送给EBGP对等体的时候,下⼀跳会改成⾃⼰的IP地址:
当然,在R2将R1的路由条⽬发送给R4的时候,下⼀跳是不会改变的,IBGP邻居之间改变下⼀跳除了使⽤对应的命令,否则就是⾃⼰通告的路由0.0.0.0修改为下⼀跳的⾃⼰与对⽅建⽴邻居关系的IP地址了。如下是R4发送给R2的路由信息:
从R1和R3收到的路由条⽬的下⼀跳都没有改变为⾃⼰。修改下⼀跳的时候是⾃⼰设备上进⾏相应属性的修改。
为什么IBGP邻居的下⼀跳⼀般不改变,⽽EBGP邻居之间的要改变呢?⼀般是如果EBGP邻居之间下⼀跳不设置为⾃⼰,对⽅收到条⽬后没有对应下⼀跳的IP地址,然后就会认为此条⽬⽆效,丢弃。⽽IBGP之间⼀般是在⼀个AS中,⼀般路由器都有这个AS中的所有路由(通过IGP计算)所以直接通过迭代计算BGP条⽬即可,不⽤每次发送的时候修改,当然有些情况下也有可能没有下⼀跳的路由条⽬,例如这个条⽬是从EBGP邻居发送来到,再通过IBGP邻居发送给内部设备,这时候就需要在AS的边缘BGP路由器上配置:
[R2-bgp]peer 10.1.24.4 next-hop-local //以R2传递给R4为例⼦
关于nexthop属性所带来的问题:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。