小小BGP!理论加实验分分钟拿下!带你体验大网的世界!

• 理解IGP与EGP的区别及工作场景。
• 理解BGP基本概念(AS的概念、协议特征、报文类型、状态机、对等体类型、同步规则、路由黑洞问
题、IBGP水平分割规则、BGP的各种表项等)。
• 理解BGP的基础工作机制。
• 掌握BGP的基础配置

小编这里会分两个方面带你走进BGP的世界

一、BGP基本概念

1、BGP的工作场景

BGP是一种运行在AS与AS之间的动态路由协议,主要作用是在AS之间自动交换无环路由信息
以此来构建AS的拓扑图,从而消除路由环路并实施用户配置的路由策略。目前公网网络条目众多,
IGP协议无法承载,而BGP可以轻松应对,通常BGP协议用于ISP和ISP之间或跨域地域总、分公司之间
的路由信息交换。
在这里插入图片描述

1.1、AS的概念

• 自治系统(Autonomous System,AS),指的是在同一个组织管理下、使用相同策略的设备的集合。
• 不同AS通过AS号区分,AS号取值范围1-65535,其中64512-65535是私有AS号。IANA负责AS号的分发。
• 中国电信163 AS号:4134。
• 中国电信CN2 AS号:4809。
• 中国网通AS 号:9929。

2、 BGP概述

• 边界网关协议(Border Gateway Protocol,BGP)是一种实现自治系统AS之间的路由可达,并选择最
佳路由的矢量性协议。早期发布的三个版本分别是BGP-1(RFC1105)、BGP-2(RFC1163)和BGP- 3(RFC1267),1994年开始使用BGP-4(RFC1771),2006年之后单播IPv4网络使用的版本是BGP-4(
RFC4271),其他网络使用的版本是MP-BGP(RFC4760)。

2.1 BGP的特点

• BGP能够承载大批量的路由信息,能够支撑大规模网络。
• BGP能够支撑MPLS/VPN的应用,传递客户VPN路由。
• BGP提供了路由聚合和路由衰减功能用于防止路由振荡,有效提高了网络的稳定性。
• BGP使用TCP作为其传输层协议(端口号为179),并支持BGP与BFD联动、BGP Tracking、BGP
Auto FRR和BGP GR和NSR,提高了网络的可靠性。
• BGP使用TCP为传输层协议,TCP端口号179。路由器之间的BGP会话基于TCP连接而建立。
• 运行BGP的路由器被称为BGP发言者(BGP Speaker),或BGP路由器。
• 两个建立BGP会话的路由器互为对等体(Peer)。BGP对等体之间交换BGP路由表。
• BGP路由器只发送增量的BGP路由更新,或进行触发更新(不会周期性更新)。
• BGP具有丰富的路径属性和强大的路由策略工具。
• BGP能够承载大批量的路由前缀,用于大规模的网络中。

3、BGP的路径矢量特征

• BGP通常被称为路径矢量路由协议(Path-Vector Routing Protocol)。
• 每条BGP路由都携带着多种路径属性(Path attribute),在各种路径属性中,AS_Path属性是非常关键
的一个。AS_Path属性记录了BGP路由传递过程中所经过的AS号,实际上它是一个AS号的列表。
• BGP路由器不接受AS_Path中包含其自身AS号的路由更新。AS_Path属性值的长短(AS号的个数)会
作为一个比较的依据,影响BGP路由选择的决策。
在这里插入图片描述

4、BGP报文类型

在这里插入图片描述

Open :协商BGP邻居的各项参数,建立邻居关系。
BGP对等体之间需先建立TCP连接,如果TCP连接成功,那么BGP向对等体发送Open报文。

Update: 用于发送BGP路由信息。
连接建立后,有路由需要发送或路由变化时,发送UPDATE通告对端路由信息。

Notification :报告错误,中止对等体关系。
当BGP在运行中发现错误时,要发送NOTIFICATION报文通告BGP对端。

Keepalive: 维持BGP对等体关系。 定时发送Keepalive报文以保持BGP对等体关系的有效性。

Route-refresh:用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新能力的BGP设备会发送和响应此报文。
当路由策略发生变化时,触发请求对等体重新通告路由。

5、BGP的状态机

Idle :尝试建立TCP连接 开始准备TCP的连接并监视远程peer启动TCP连接,启用BGP时,要准备足够的资源。
Connect: 发TCP包,正在进行TCP连接,等待完成中,认证都是在TCP建立期间完成的。如果TCP连接建立失败则进入Active状态,反复尝试连接
Active :发TCP包 TCP连接没建立成功,反复尝试TCP连接。
OpenSent :发Open包 TCP连接建立已经成功,开始发送Open包,Open包携带参数协商对等体的建立
OpenConfirm :发Keepalive包 参数、能力特性协商成功,自己发送Keepalive包,等待对方的Keepalive包。
Established :发Update包已经收到对方的Keepalive包,双方能力特性经协商发现一致,开始使用Update通告路由信息。
在这里插入图片描述

6、BGP Peer

• 运行BGP的路由器被称为BGP发言者,或者BGP路由器。
• BGP对等体也叫BGP邻居,与OSPF、RIP等协议不同,BGP的会话是基于TCP建立的。建立BGP对等
体关系的两台路由器并不要求必须直连
• BGP存在两种对等体关系类型:EBGP及IBGP。针对这两种对等体类型,BGP处理路由的操作存在较
大差异。
在这里插入图片描述

6.1•EBGP(External BGP):

位于不同自治系统的BGP路由器之间的BGP邻接关系。
• 两台路由器之间要建立EBGP对等体关系,必须满足两个条件:
• 两个路由器所属AS不同(也即AS号不同)。
• 在配置BGP时,Peer命令所指定的对等体IP地址要求路由可达,并且TCP连接能够正确建立。

6.2IBGP(Internal BGP**):

位于相同自治系统的BGP路由器之间的BGP邻接关系。
• 两台路由器之间要建立IBGP对等体关系,必须满足两个条件:
• 两个路由器所属AS需相同(也即AS号相同)。 • 在配置BGP时,Peer命令所指定的对等体IP地址要求路由可达,并且TCP连接能够正确建立。

7、传输AS中的路由黑洞问题

在传输AS(TransitAS)65102中,BCDE四台路由器运行了OSPF,确保AS内部路由实现互通。 B与E运行BGP,并且两者建立IBGP对等体关系(两者并非直连,但是对于BGP,这是允许的,仅需
确保两者之间能够正确建立TCP连接即可)。C与D并未运行BGP
在这里插入图片描述
A将本地路由1.1.1.0/24通告到BGP,最终F能够通过BGP学习到该条路由。C、D由于并未运行BGP,因此无
法通过BGP学习到1.1.1.0/24路由。
如此一来,F发往1.1.1.0/24网络的数据包在到达C/D后将被丢弃,在C及D路由器这里,就出现了黑洞。
在这里插入图片描述

7.1为了避免黑洞问题我们需要怎么做?

• 若路由器从IBGP对等体学习到一条BGP路由,它不能使用该条路由,更不能将路由传递给自己的EBGP
对等体,除非它又从IGP学习到该条路由,这就是BGP的同步规则。
• 同步规则的存在,可以防止数据在传输AS内由于转发设备没有目标网络的路由而被丢弃的问题,也就
是所谓的黑洞问题。
• 为了使得BGP路由能够正常交互,我们就不得不在该传输AS内所有路由器上都运行BGP,且构建全互
联的IBGP对等体关系;或者在AS边界上将BGP路由引入IGP。显然这两种方法各有利弊,尤其是后者,
盲目地将BGP路由引入IGP是非常危险的。
• 同步规则的存在意义是避免出现黑洞问题,而如果AS内路由问题已经解决,那么同步规则也就没有必
要再开启了。华为路由交换产品缺省关闭同步规则

传输AS中的黑洞问题 解决办法1 • 将BGP路由引入到IGP,并关闭同步规则。
在这里插入图片描述
传输AS中的黑洞问题 解决办法2 • 传输AS内所有路由器均运行BGP,实现BGP对等体关系的全互联,并关闭同步规则。
在这里插入图片描述
你们觉得哪一种方式更好一些?评论区欢迎你

8、IBGP水平分割规则

• BGP路由在AS之间的防环依赖于AS_Path路径属性,当路由器收到BGP路由后,发现该路由所携带的
AS_Path属性中出现了其自己所处的AS号,则路由器认为出现了路由环路,它将忽略该条路由。
• AS_Path属性仅在路由离开AS时才会被更改,而BGP路由在AS内部传递时,路由的AS_Path属性值不
会发生改变,如此一来,IBGP路由的防环就无法依赖AS_Path了。
• 为了防止BGP路由在AS内部传递时发生环路,BGP要求:“路由器不能将自己从IBGP对等体学习到的
路由再传递给其他IBGP对等体”,这就是IBGP水平分割规则。
• 由于IBGP水平分割原则的存在,BGP要求AS内须保证IBGP对等体关系的全互联,因为只有这样,才能够确保每一个路由器都能学习到路由。

C从E学习到的IBGP路由,由于水平分割规则的限制,不能够传递给B路由器,这将导致B
无法学习到F通告的BGP路由。
在这里插入图片描述

• 考虑到IBGP水平分割规则的限制,为了使得AS内的路由器都能够正常学习到BGP路由,我们不得不建
立一个全互联的IBGP对等体关系(如图所示)。
• 然而在AS内的所有BGP路由器之间维护全互联的IBGP对等体关系是需要耗费大量资源的,网络的可扩
展性、可维护性也非常差。解决方案:
• 路由反射器
• 联邦
在这里插入图片描述

9、BGP路由通告规则

• 当存在多条路径时,路由器只选取最优(Best)的BGP路由来使用(没有激活负载均衡的情况下)。
• BGP只把自己使用的路由,也就是自己认为最优的路由传递给对等体。
• 路由器从EBGP对等体获得的路由会传递给它所有的BGP对等体(包括EBGP和IBGP对等体)。
• 路由器从IBGP对等体获得的路由不会传递给它的IBGP对等体(存在反射器RR的情况除外)。
• 路由器从IBGP对等体获得的路由是否通告给它的EBGP对等体要视IGP和BGP同步的情况来决定。

BGP相关的几张表
在这里插入图片描述
这里的命令都是华为ensp软件的
BGP邻居表
在这里插入图片描述
BGP路由表
在这里插入图片描述

二、BGP基础配置

1、大体思路

• 启动BGP进程,并指定BGP Router-ID:
[Router] bgp as-num
[Router-bgp] router-id x.x.x.x
• As-num参数为设备所处的AS号;
• 为了增加网络的可靠性,建议将BGP Router-ID手工配置为设备Loopback接口的地址。如果没有配
置,则BGP会自动选取系统视图下的Router-ID作为BGP协议的Router-ID。系统视图下的Router-ID
选择规则,请参见命令router-id中的描述。

1.1配置BGP对等体:

[Router-bgp] peer x.x.x.x as-number as-num
• Peer关键字后面的x.x.x.x为对等体的IP地址,本设备与该IP地址之间必须路由可达。
• 在BGP中,对等体需要通过peer命令手工指定,无法像IGP那样通过协议自动发现。
• AS号码决定了与对等体建立的是EBGP会话还是IBGP会话。
• (可选)指定用于建立BGP会话(也就是TCP连接)的源接口或源地址:
[Router-bgp] peer x.x.x.x connect-interface intf [ ipv4-src-address ] • 缺省情况下,BGP使用报文出接口的IP地址作为与对等体建立会话的源地址

1.2引入到BGP路由表

• 需注意的是:BGP本身不发现路由,因此需要将其他路由引入到BGP路由表。
• BGP引入路由时支持Import和Network两种方式:
• Import方式是按协议类型,将RIP、OSPF、ISIS等协议的路由引入到BGP路由表中。Import方式还
可以引入静态路由和直连路由。
• Network方式是逐条将IP路由表中已经存在的路由引入到BGP路由表中。
• BGP在引入IGP的路由时,可以使用路由策略进行路由过滤和路由属性设置。

1.3使用network命令将路由通告到BGP

[router-bgp] network ipv4-address [ mask | mask-length ] • 使用network命令将路由表中的路由通告到BGP。路由必须存在于路由表中才能够被成功通告到
BGP。 • 如果上述命令没有指定mask或mask-length参数,则按有类地址处理。指定了mask,则仅当路由选
择表中有与该网络完全匹配的条目时才被通告出去。 • BGP中的network命令与IGP中的network是大不相同的,BGP中的network命令用于将路由通告到
BGP,而不是在接口上激活BGP。 • 在执行上述命令时,可以关联route-policy从而更为灵活的控制所引入的路由。

2、BGP基本配置 示例

小编直接带你们干票大的!!!不多比比,上图!
在这里插入图片描述

2.1实验环境&实验目的

模拟大网工作场景,如图所示,电信公司需要将无锡的整个网络注入到省骨干网,此时,需要使用BGP技术,连接市干跟省干;模拟省干内部使用ospf以及内部使用IBGP,将业务层面R5的数据传输到省干网络中

2.2实验步骤

1、配置各路由器接口IP地址以及虚拟环回口的ip地址
2、R1 R2 R5在area0骨干区域运行OSPF
3、将ospf注入到BGP内
4、R1 R2 R5使用IBGP通信,R2 R3用EBGP通信
具体如下:

配置R5的各接口IP地址以及loopback地址
[Huawei]sysname r5
[r5]int g0/0/1
[r5-GigabitEthernet0/0/1]ip add 15.0.0.2 30
[r5-GigabitEthernet0/0/1]un sh
[r5]int LoopBack 0
[r5-LoopBack0]ip add 5.5.5.5 32
[r5]int LoopBack 1
[r5-LoopBack1]ip add 202.0.0.1 24
[r5]int LoopBack 2
[r5-LoopBack2]ip add 202.0.1.1 24

配置R1的各接口IP地址以及loopback地址

[Huawei]sysname r1
[r1]int g0/0/0
[r1-GigabitEthernet0/0/0]ip add 12.0.0.1 30
[r1-GigabitEthernet0/0/0]un sh
[r1]int g0/0/1
[r1-GigabitEthernet0/0/1]ip add 15.0.0.1 30
[r1-GigabitEthernet0/0/1]un sh
[r1]int LoopBack 0
[r1-LoopBack0]ip address 1.1.1.1 32

配置R2的各接口IP地址以及loopback地址

[Huawei]sysname r2
[r2]int g0/0/1
[r2-GigabitEthernet0/0/1]ip add 23.0.0.1 30
[r2-GigabitEthernet0/0/1]un sh
[r2]int g0/0/0
[r2-GigabitEthernet0/0/0]ip add 12.0.0.2 30
[r2-GigabitEthernet0/0/0]un sh
[r2]int LoopBack 0
[r2-LoopBack0]ip add 2.2.2.2 32

配置R1的各接口IP地址以及loopback地址

[Huawei]sys
[Huawei]sysname r3
[r3]int g0/0/1
[r3-GigabitEthernet0/0/1]ip add 23.0.0.2 30
[r3-GigabitEthernet0/0/1]un sh
[r3]int LoopBack 0
[r3-LoopBack0]ip add 3.3.3.3 32

配置R1 R2 R5的ospf
这里202.0.0.1和202.0.1.1网段是业务层网段
[r5]ospf 1 router-id 5.5.5.5
[r5-ospf-1]area 0
[r5-ospf-1-area-0.0.0.0]network 5.5.5.5 0.0.0.0
[r5-ospf-1-area-0.0.0.0]network 202.0.0.0 0.0.0.255
[r5-ospf-1-area-0.0.0.0]network 202.0.1.0 0.0.0.255
[r5-ospf-1-area-0.0.0.0]network 15.0.0.0 0.0.0.3

[r2]ospf 1 router-id 2.2.2.2
[r2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
[r2-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.3

[r1]ospf 1 router-id 1.1.1.1
[r1-ospf-1]area 0
[r1-ospf-1-area-0.0.0.0]network 15.0.0.0 0.0.0.3
[r1-ospf-1-area-0.0.0.0] network 1.1.1.1 0.0.0.0
[r1-ospf-1-area-0.0.0.0]network 15.0.0.0 0.0.0.3

配置各路由的BGP

[r1]router id 1.1.1.1 -------这里是在接口模式下配置
[r1-bgp]peer 2.2.2.2 as-number 100--------与2.2.2.2建立邻居关系
[r1-bgp]peer 2.2.2.2 connect-interface LoopBack 0--------用自己的loopback 0 接口与2.2.2建立关系
[r1-bgp]peer 5.5.5.5 as-number 100
[r1-bgp]peer 5.5.5.5 connect-interface LoopBack 0

[r2]router id 2.2.2.2
[r2]bgp 100
[r2-bgp]peer 1.1.1.1 as-number 100
[r2-bgp]peer 1.1.1.1 connect-interface LoopBack 0
[r2-bgp]peer 5.5.5.5 as-number 100
[r2-bgp]peer 5.5.5.5 connect-interface LoopBack 0

----与自己的EBGP之间的跳数,这里我是直接用接口与对方接口建立的关系,实际生产环境一般是要用自己的loo接口与对方的loo接口建立,如果是这样,跳数就必须是2(直连),也就是说,你要先到达对方的逻辑接口后再进入到虚拟接口,这就是两跳!!!

[r5]router id 5.5.5.5
[r5]bgp 100
[r5-bgp]peer 1.1.1.1 as-number 100
[r5-bgp]peer 1.1.1.1 connect-interface LoopBack 0
[r5-bgp]peer 2.2.2.2 as-number 100
[r5-bgp]peer 2.2.2.2 connect-interface LoopBack 0
[r5-bgp]import-route direct------- R5引入直连是为了将自己的loo1 和loo2通过r1转发给r2
R2和R3建立EBGP关系
[r3]router id 3.3.3.3
[r3]bgp 200
[r3-bgp]peer 23.0.0.1 as-number 100----这里的number不要弄混了,写对方的AS号
[r3-bgp]peer 23.0.0.1 ebgp-max-hop 1

[r2-bgp]peer 23.0.0.2 as-number 200 ------ 与R3建立EBGP关系
[r2-bgp]peer 23.0.0.2 connect-interface g/0/1----用自己的g/0/1接口与对方建立关系
[r2-bgp]import-route ospf 1 -------- 将 BGP引入到ospf内
[r2-bgp]peer 23.0.0.2 ebgp-max-hop 1

此时查看R3的路由表,202网段的都已经学习到了

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_47219935/article/details/106602707
今日推荐