思科Cisco BGP 专题 (二)BGP实战应用
回顾
回顾在BGP专题(一)中我们主要说明了:
1、BGP的应用场景。BGP主要应用于大型的网络环境,如数据中心网络,Internet网络。
2、BGP协议跟IGP协议相比主要的优势在于,BGP是基于TCP链接的,可以跨设备传输路由条目。减少中间设备的资源消耗。
3、BGP中还分为IBGP(同一自治系统)和 EBGP(不同自治系统)
4、通常一个设备只可以开启一个BGP进程。
5、BGP的邻居状态机制
五种状态:idle(空闲) - connect(链接) - activce(行动) - open sent (open发送)- open confirm (open证实)- establish(已建立)
6、BGP启用的方法:思科设备首先在全局模式下:router BGP XX (XX为as编号)
第一步 建立邻居(neighbor xx.xx.xx.xx remot-as xx),第二部宣告网段(network xx.xx.xx.xx mask xx.xx.xx.xx)。
概述:
在这一章我们主要说明一下几个技术点:
1、用loopback环回口建立BGP邻居的方法。
2、BGP同步(会涉及部分mpls)
3、BGP的水平分割(防环路)
4、邻居状态停留在 Idle或active的原因
5、当IBGP与EBGP互联时,如果他的一个IBGP邻居收到一个条目,并且这个条目来自于他的EBGP邻居,那么这个条目在他的IBGP邻居那里显示下一跳地址时会保留EBGP的地址。
6、BGP选路规则第一条 weight (权重)
使用loopback环回口建立BGP邻居
一、 描述:R1、R2、R3上分别开启loopback0接口。地址分别为1.1.1.1-3.3.3.3。
R1和R2之间使用10.1.1.0/24网段,R2和R3之间使用20.1.1.0/24网段
AS编号为100
拓扑图:
二、使用loopback环回口 建立BGP邻居的原因:
因为在实际工作中,物理接口会存在很多不确定的因素会导致物理端口down掉,或发生闪断的情况。因此就会导致BGP邻居断开,产生数据传输中断的问题。BGP同时又承载了很多路由条目,重新建立链接耗时过多,对业务产生不良影响。
而loopback环回口有着更高的稳定性。所以在条件允许的情况下(环回口底层互通),尽量使用loop back接口建立邻居关系。
三、配置方法:
首先底层运行ospf协议保证环回口互通。ospf配置不再详细列出
R1上配置:
1、启BGP进程 AS号100
2、指定R3上loopback接口 3.3.3.3 为邻居
3、指定更新源的接口为loopback0,注意这里的loopback0为R1的本地接口,接口调用只在本地有效。
R3配置:
配置思路参考R1。我们只show run一下配置信息。
此时使用loopback环回口建立BGP邻居配置完成。
我们可以使用show ip bgp summar 或show ip bgp neighbors 来验证一下。
我们可以看到邻居状态为establish(建立连接),邻居为3.3.3.3
BGP同步
1、BGP路由黑洞的形成
我们继续使用上面的拓扑
在R1上新增一个loopback口,IP地址为100.1.1.1/32,并宣告到BGP中。network 100.1.1.1 mask 255.255.255.255
此时我们在R3上查看BGP表,会显示如下:
其中*valid代表 有效的。> best代表最优的。i- internal 代表内部的
因此说明100.1.1.1/32这条路由是有效的。被放到路由表中。我们再看一下R3和R2的路由表。
R3路由表:
R2路由表
虽然在R3上存在去往100.1.1.1的路由条目。但是我们此时在R3上去ping100.1.1.1,无法ping通。因为在R2上没有去往100.1.1.1的路由条目,当数据到达R2时,被丢弃。形成了路由黑洞。
2、如何解决路由黑洞?
1)我们在R3设备上BGP100进程下敲上命令:synchronization(开启同步功能)
此时我们查看R3的BGP表与上面的相比发现产生了一些变化,大于号>不见了
再看路由表,100.1.1.1的路由条目消失了。
2)那么当我开启了同步之后 - 什么时候会把100.1.1.1放到路由表呢?只有当从IGP的协议( OSPF, EIGRP ,RIP等)中也收到了这个条目时,才会把100.1.1.1也放入到路由表中。
所以我们同时要在R1上将100.1.1.1宣告进ospf中。
此时黑洞问题结解决。
此时很多同学就会有疑问,BGP同步功能需要所有条目都宣告进IGP才能解决黑洞问题。那么BGP是不是就没有意义了?
答案是:BGP同步功能已经淘汰了。在设备中BGP同步功能都是默认关闭的。no synchronization
这里我们主要是想介绍一下BGP的发展历史。
3)我们现在主要用MPLS(多协议标签交换)技术与BGP结合使用来解决路由黑洞的问题。也就是我们所说的MPLS VPN技术。
在此 show run 一下 mpls配置 ,具体技术详解 在后续专题中会说明。可关注我,私信交流。
show run R1:
全局下
接口下
R2 R3配置与R1同理。
show run R2:
全局下
接口下
show run R3 :
全局下
接口下
在R3上tracert 一下100.1.1.1 看一下数据的路径,可以看到数据是通过标签传递的。
BGP的水平分割防环路机制
IBGP和EBGP的水平分割机制有所区别
IBGP水平分割:默认情况下,通过IBGP邻居学习到的路由不会再传给别的 IBGP邻居(也就是说IBGP路由信息只传一跳)
如图所示,R1、R2、R3之间两两互为邻居。当R2收到从R1传来的路由条目时。R2不会再传给R3。
如果要想通过R2收到R1的路由条目:我们要使用RR(Router Reflector)技术,中文译为路由反射器技术。该技术详解会在后续BGP专题中说明。如感兴趣可持续关注,交流。EBGP防环机制: EBGP传递的路由条目会携带AS编号,当设备收到一个路由条目时,如果发现这个条目携带自己的AS编号,那么该路由条目就会被拒收
如有一个路由条目来自Rx。当R5收到Rx的路由条目时,条目携带的AS为100 。当GW收到R5的条目时,条目携带的AS为100、200。当Rx再收到GW上的条目时,携带的AS为100、200、300。Rx发现条目中携带与自己相同的AS,该条目被拒收。
四、邻居状态停留在 Idle或active的原因
之前我们介绍了BGP彼此之间的六种状态
Idle
connect
active
open sent
open confirm
establish
往往在实际工作中,会常见两种故障。导致邻居无法建立。一个时停留在idle状态,一个是停留在active状态。
1、停留在idle状态:
停留在idle状态往往是因为多跳不可达。上一个专题中我们讲过,因为EBGP中默认的最大跳数为1跳。所当跨设备建立邻居时,需要修改最大跳数。
修改跳数的命令为(在BGP进程下修改):R(config-router)#neighbor xx.xx.xx.xx(邻居的地址) ebgp-multihop 255
2、停留在acitve状态:
停留在active状态往往是因为底层链路不通。我们需要检查底层链路的配置情况。如端口ip配置是否正确,IGP协议配置是否正确等。
五、IBGP与EBGP互联时,他的一个IBGP邻居收到一个条目,并且这个条目来自于他的EBGP 邻居,那么这个条目在他的IBGP邻居那里显示下一跳地址时会保留EBGP的地址(具体可看拓扑图进行理解)
1、拓扑图:
各链路之间分别使用10.1.1.0/24-30.1.1.0/24 网段
2、描述要求:
R1、R2、R3之间底层运行ospf协议,保证底层互通。
R1、R2、R3、R4 分别建立环回口1.1.1.1-4.4.4.4/32
R1上再建立环回口100.1.1.1/32,R4上建立环回口200.1.1.1/32,并都宣告进BGP
R1、R2、R3属于as100,R4属于as200
R1和R3之间建立IBGP邻居。(使用环回口建立)
R3和R4之间建立EBGP邻居。
已使用mpls解决路由黑洞问题(具体方法后续专题中会详细说明)3、配置信息:直接show run 配置,具体配置思路不再详细列出。
R1:
R2:
R3:
R4:
4、查看
配置完成后我们在R1查看BGP路由表
会发现从EBGP设备传来的路由条目200.1.1.1/32,的下一条地址为30.1.1.2。30.1.1.2为EBGP上的地址。会导致R1的数据到200.1.1.1不可达。U.U.U
5、解决问题:
此时我们需要在与EBGP设备链接的R3上 敲入命令:
neighbor 1.1.1.1 next-hop-self(BGP进程下配置)再次查看R1上BGP路由表:
发现到达200.1.1.1的下一条地址变成了3.3.3.3。R1的数据就可以正常发给200.1.1.1。
六、BGP选路规则第一条 weight (权重)
prefer highest weight (local to router)。
优选weight属性高的,cisco私有属性
关于具体的选路规则,我们在下一个BGP专题(三)中会详细介绍。 感兴趣的可以关注我,会持续更新。也可以私信交流。