华为 BGP协议基础配置与分析

华为 BGP协议基础配置与分析

路由协议通常分为内部网关协议(IGP)和外部网关协议(EGP)两大类。

BGP虽然是一种动态路由协议,但它实际上本身并不产生路由、不发现路由、不计算路由,其主要功能是完成最佳路由的选择并在BGP邻居之间进行最佳路由的传递。BGP选择了TCP作为其传输协议,端口号是179。

BGP的邻居关系分为IBGP和EBGP两种:两台BGP路由器位于同一AS时,它们的邻居关系为IBGP邻居关系;两台BGP路由器位于不同的AS时,它们的邻居关系为EBGP邻居关系。BGP没有自动建立邻居关系的能力,邻居关系必须通过手动配置来建立。

拓扑:
在这里插入图片描述
基础配置:

system-view
[Huawei]sysname AR-1
[AR-1]int g0/0/0
[AR-1-GigabitEthernet0/0/0]ip add 12.1.1.1 24
[AR-1-GigabitEthernet0/0/0]quit
[AR-1]int LoopBack 0
[AR-1-LoopBack0]ip add 1.1.1.1 32
[AR-1-LoopBack0]quit
[AR-1]ospf 1 router-id 1.1.1.1
[AR-1-ospf-1]area 0
[AR-1-ospf-1-area-0.0.0.0]network 12.1.1.1 0.0.0.0
[AR-1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0

AR-2;AR-3同上!
AR-1与AR-3通过环回口建立IBGP的邻居;

AR-1基础配置:

[AR-1]bgp 100 //本设备创建BGP AS,所属AS 100
[AR-1-bgp]router-id 1.1.1.1 //设置本设备的BGP的R-ID为1.1.1.1
[AR-1-bgp]peer 3.3.3.3 as-number 100 //手动指定与对等体的接口地址3.3.3.3建立IBGP邻居
[AR-1-bgp]peer 3.3.3.3 connect-interface LoopBack 0
//指定与3.3.3.3建立邻居时更新源地址为本设备的环回口0(建立IBGP邻居建议采用环回口)
[AR-1-bgp]peer 3.3.3.3 next-hop-local //指定发往邻居12.1.1.1的条目下一跳地址为本设备自身(建立邻居更新源接口)

AR-3基础配置:

[AR-3]bgp 100
[AR-3-bgp]router-id 3.3.3.3
[AR-3-bgp]peer 1.1.1.1 as-number 100
[AR-3-bgp]peer 1.1.1.1 connect-interface LoopBack 0
[AR-3-bgp]peer 1.1.1.1 next-hop-local

在这里插入图片描述
AR-3与AR-4通过直连地址建立EBGP邻居;

AR-3设备配置:

[AR-3]bgp 100
[AR-3-bgp]peer 34.1.1.2 as-number 200

AR-4设备配置:

[AR-4]bgp 200
[AR-4-bgp]router-id 4.4.4.4
[AR-4-bgp]peer 34.1.1.1 as-number 100
[AR-4-bgp]network 4.4.4.4 255.255.255.255
在这里插入图片描述
在这里插入图片描述
AR-2设备:

[AR-2]bgp 100
[AR-2-bgp]router-id 2.2.2.2
[AR-2-bgp]peer 1.1.1.1 as-number 100
[AR-2-bgp]peer 1.1.1.1 connect-interface LoopBack 0
[AR-2-bgp]peer 3.3.3.3 as-number 100
[AR-2-bgp]peer 3.3.3.3 connect-interface LoopBack 0

AR-1设备:

[AR-1]bgp 100
[AR-1-bgp]peer 2.2.2.2 as-number 100
[AR-1-bgp]peer 2.2.2.2 connect-interface LoopBack 0
[AR-1-bgp]peer 2.2.2.2 next-hop-local

AR-3同上;
在AR-1的BGP路由表查看4.4.4.4/32路由前面带“ * —下一跳可达”

在这里插入图片描述
AR-1的BGP路由表信息

在这里插入图片描述
AR-1和AR-3 BGP配置内容(dis cu se bgp
在这里插入图片描述
在这里插入图片描述
在设备AR-3、4配置ospf协议时
AR-1的BGP路由表信息:
在这里插入图片描述
在这里插入图片描述
总结

一、认识BGP
1、BGP概述
2、BGP与IGP比较
3、BGP的数据包
4、BGP的状态机
5、BGP的计时器
6、BGP的更新源
7、BGP的路由生成
8、BGP的路由通告
9、BGP的路径属性
10、BGP的选路原则
11、BGP的应用(路由黑洞)
12、BGP的路由策略与优化
13、BGP的特性

二、BGP概述
1、简介:
BGP-Border Gateway Protocol边界网关协议,是一种在自治系统AS(Autononmous System)
之间传递并选择最佳路由的高级矢量路由协议。
2、版本:
(1)BGP-1(RFC1105);
(2)BGP-2(RFC1163);
(3)BGP-3(RFC1267);
(4)BGP-4(RFC1771,1994年开始使用);
(5)BGP-4(RFC4271,2006年后单播IPv4网络使用),这个版本是当前的BGP版本;
(6)MP-BGP(RFC4760)供其他网络使用;
(7)BGP-4+提供对IPv6单播网络的支持;
**注意:**华为路由器运行的BGP特性同时支持BGP-4,BGP-4+和MP-BGP。即在BGP下的配置同时对这三个版本生效。
默认情况在BGP IPv4单播地址族视图下的配置可以在BGP视图配置,但只对BGP-4生效。
3、特性:
(1)BGP拥有丰富的选路参考属性,灵活组合可以实现路由的优选和避免路由环路,
能够高效率的传递路由和维护大量的路由信息;
(2)BGP提供了丰富的路由策略,能够灵活的进行路由选路,并且能指导邻居按策略发布路由;
(3)BGP提供了路由聚合和路由衰减功能,用于防止路由振荡,有效提高网络的稳定性;
(4)BGP是一种距离矢量协议,将AS作为一个节点来计算;IGP协议以一个路由器为节点;
(5)BGP使用TCP(端口号179)作为底层传输协议,与每个BGP对等体形成独特的基于单播的连接
并支持BGP于BFD联动,提高了网络的可靠性。
4、AS
(1)BGP的AS是指在一个组织机构管辖下拥有相同选路策略的IP网络,BGP网络中的每个AS都被分配了一个唯一的AS号,
用于区域不同的AS。
(2)BGP的AS号分为2字节和4字节的AS号,
2字节AS号范围1----65535的整数,
4字节AS号范围2----4 294 967 295的整数(可以有不同的表示格式)
RFC 5389规定在2字节的AS号中;1–64511是公网AS,64512—65534为私网AS,65535保留用于特殊用途。

三、BGP与IGP比较
IGP协议特点:
(1)在AS之内使用的协议,主要用于发现和计算路由;
(2)IGP的路由收敛都相对迅速。工作在直连邻居间;
(3)单一的度量值,列如OSPF和IS-IS当然链路开销cost,RIP的跳数;
(4)适用于中小型网络。
BGP协议特点:
(1)BGP作为外部网关协议,着眼于控制路由的传播和选择最佳路由;
(2)BGP可以工作在非直连邻居之间,使用TCP作为其传输层协议(端口号179);
(3)BGP支持五类别域间路由,路由更新时只发送更新的路由,大大减少了BGP传播路由所占用的带宽,
适用在Internet上传播大量的路由信息;
(4)BGP提供了丰富的路由策略,能够实现路由的过滤和选择;
(5)BGP易于扩展,能够适应网络新技术的发展。适用于大型,超大型运营商网络。

四、BGP的数据包
BGP数据包都由2部分组成,BGP报文头部+类型报文本体
0、BGP报文头部:
Marker 16字节:用于检测BGP对等体之间同步丢失情况;在支持消息验证功能的情况下进行消息验证;
五验证时字段全为1(16 进制显示全FFFF)
Length 2字节:长度,表示此BGP报文的总长度(包含头部,总长度在19–4096字节之间)
Type 1字节:类型值,标识本BGP报文的类型(open 1;update 2;Notification 3;keepalive 4;route-refresh 5)。
1、Open报文(类型1)
(1)作用:
TCP 会话建立起来自以后,两个邻居都要发送一个 Open 报文,每个邻居都使用该报文标识自己,
并且规定自己的 BGP 运行参数。如果 open 消息被接受,则回送一条 keepalive 消息进行确认,
确认后就能发送 update 。
(2)内容:
Version 8bit :BGP版本号,BGP对等体的使用的版本,默认为BGP-4,如果邻居运行版本低于本设备,会拒绝V-4信息,
本设备将发送低版本信息直至协商成功。
My AS 号 16bit :本地 AS 号(决定双方建立什么样的BGP邻居;通AS建立IBGP;不同AS建立EBGP)
Hold Time 16bit: 对等体相互协商及保存邻居最大时间,默认为Keepalive时间的3倍-180S
(如果两端hold time时间不一致,将会采用较短时间作为保存时间;最小可以为0,这种情况BGP连接被认为永远是UP
的,不再发送Keepalive报文来检测邻居是否失效)
BGP Identifer 32bit:用来标识发送此Open报文设备的Router-ID(ROUTER-ID 和 OSPF 选取 routerID 的方式一致)
Optional Parameters Length 8bit:标识下面的可选参数的总长度(如果为0,那么本报文中没有包含可选参数字段)
Optional Parameters 可变长大小:用于BGP邻居会话协商过程中所使用的可选列表;每一个参数为一个
(参数类型参数长度,参数值)三元组,用于公布一些可选功能的支持,如多协议扩展,路由刷新能力,
四字节AS号等能力。
2、KEEPALIVE 消息(类型4)
(1)作用:
如果路由器接受了邻居在 OPEN 消息中的参数,就会应答一个 keeplive 消息,并且在此后 1/3 的 holdtime
(但不小于 1S)为周期发送该消息,华为设备默认 60S一发,保持时间默认180S。如果协商后保持时间为 0,
标识此邻居永远UP,则不发送 keepalive 保活消息。
**(2)内容:**只包含BGP的消息头部?
Marker 16字节:用于检测BGP对等体之间同步丢失情况;在支持消息验证功能的情况下进行消息验证;
五验证时字段全为1(16 进制显示全FFFF)
Length 2字节:长度,表示此BGP报文的总长度(包含头部,总长度在19–4096字节之间)
Type 1字节:类型值,标识本BGP报文的类型(open 1;update 2;Notification 3;keepalive 4;route-refresh 5)。
(3)其他:
KEEPALIVE 消息实际上弥补了 TCP 无法确认对端存活情况的缺陷;
KEEPALIVE 消息仅包含 19bytes 的 BGP 头部,除此之外不包含任何其他数据。
3、Update报文(类型2)
(1)作用:
当BGP对等体之间成功建立会话后利用Update报文进行路由信息的交换;Update报文既用来通告可用路由信息,
也可以通告不可达需要撤销的路由信息。
每条update 消息只描述一类具有相同路径属性的可达路由;可达路由信息放在NLRI字段中
同时Update报文可以携带多条不可达路由信息;不可达路由信息放在Withdrawn Router字段中。
(2)内容:
Withdrawn Routes Length 2字节:撤销路由长度,标识不可达路由的的长度,为0表示此字段 没有任何数据,
本报文不存在需要撤销的路由;
Withdrawn Routes :撤销路由,与NLRI格式相同,同样是前缀长度+前缀组合;
Total Path Attribute Length 2字节:路径属性字段长度。如果为0表示没有下面的Path attributes,
本报文没有通告可用路由信息;
Path attributes 可变长:路径属性,每个路径属性都由可变长的三元组(属性类型;属性长度;属性值),
为BGP提供最短路径,检查路由环路以及决定路由策略的信息;
Network Layer Reachability Information (NLRI) 可变长度:标识网络层可达信息,
包含要向对等体通告的每条可达路由的前缀(IPv4的地址前缀),和前缀长度(IPv4的掩码)。
4、Notification 报文(类型3)
(1)作用:
当BGP检测到错误状态时,就会向对等体发出Notification通知报文,之后BGP连接会立即中断;
例如对等体之间的AS号非法,认证失败,邻居地址不可达等。
(2)内容:
Error code 1字节:错误码;描述错误类型,每个错误都使用唯一的错误码来表示;
Errsubcode 1字节:错误子码;描述错误类型的详细信息;
Data 可变长字段:包含了与错误有关的数据,用来诊断错误原因,比如非法的AS号,认证失败等。
5、Route-refresh报文(类型5)
**(1)作用:**路由刷新报文用来要求对等体重新发送指定地址族的路由信息;
(2)内容:
AFI Address Family Identifier 2字节:地址族标识,用来标识所采用的地址族类型;
Res 1字节:保留
SAFI:Subsequent Address Family Identifier 1字节:子地址族标识,用于标识地址族的类型。

五、BGP的邻居状态机
1、Idle状态
(1)BGP空闲状态,在Idle状态下BGP拒绝邻居发送的连接请求,此时等待由BGP系统发出的Start事件;
(2)Start(管理员配置邻居)事件发生后,BGP会对自己的资源进行初始化,重置连接计时器(Connect Retry 默认32S)
发起TCP 连接请求,并开始侦听远端对等体发起的连接端口,并转至Connect状态。
1.1、停留在此状态的原因:
(1)本BGP设备没有去往对等体的路由;
(2)收到来自邻居的Notification报文
触发Notification报文条件(再一个重置计时器后重新建立BGP的TCP连接,即重新发送用于BGP的TCP连接报文)
a、AS号错误;
b、R-ID重复;
c、认证失败;
d、hold time连接超时(中间设备或者目标设备策略限制)
e、其他错误原因。
2、Connect状态
在Connect状态下,BGP启动连接重传定时器,等待TCP完成连接!
(1)如果TCP连接成功,那么BGP会向对等体发送Open报文,并转至OpenSent状态;
(2)如果TCP连接失败,那么BGP转至Active状态;
(3)如果连接重传定时器超时,BGP任没有收到BGP对等体的响应,那么BGP继续尝试TCP连接,
停留在Connect状态。
2.1、停留在Connect状态的原因:
(1)与BGP对等体TCP连接超时!
a、中间设备没有本设备去往对等体的路由;
b、中间设备拒绝了本BGP设备发出的BGP相关数据(过滤了本设备IP流量或者TCP流量或者TCP-179端口数据)
c、对等体设备未开启BGP(TCP-179端口处于关闭状态)
3、Active
在Active状态下,BGP总是试图建立TCP连接!
(1)如果TCP连接成功,那么BGP向对等体发送Open报文,关闭连接重传定时器,并转至OpenSent;
(2)如果TCP连接失败,停留在Active状态;
(3)如果连接重传定时器超时,任没有收到BGP对等体的响应,那么BGP转至Connect状态。
3.1、停留在Active状态的原因:
(1)与BGP对等体TCP失败;
(2)本BGP设备配置错误的对等体地址。
4、OpenSent
在OpenSent状态,BGP等对等体的Open报文,并对收到的Open报文中的AS号,版本号,认证信息等进行检查!
(1)如果收到的Open报文正确,那么BGP发送Keepalive报文,且重置Keepalive定时器,并转至OpenConfirm状态;
(2)如果发现收到的Open报文有错误,那么BGP发送Notification报文给对等体。并转至Idle状态。
4.1、停留在OpenSent状态的原因:
(1)对等体发送的Open报文中的AS号与本BGP设备配置不一致(本端BGP配置时邻居的AS号配置错误)
5、OpenConfirm
在OpenConfirm状态下,BGP等待Keepalive或Notification报文;
(1)如果收到Keepalive报文,则转至Established状态(BGP邻居的最终状态)
(2)如果收到Notification报文,则转至Idle状态。
5.1、停留在OpenConfirm状态的原因:
(1)BGP的TCP建立成功,对等体未发送Keepalive报文(邻居设备BGP配置对本BGP的AS号错误配置)
6、Established状态
在Established状态下,BGP对等体之间交互Update,Keepalive,Route-refresh报文和Notification报文!
(1)如果收到正确的Update或Keepalive报文,那么BGP就人为对端处于正常运行状态,保持BGP连接;
(2)如果收到错误的就发送Notification报文告知对端,并转至Idle状态;
(3)Route-reFresh报文不会改变BGP状态;
(4)如果收到Notification报文,那么BGP转至Idle状态;
(5)如果收到TCP拆除链接通知,那么BGP将断开连接,转至Idle状态。

六、BGP计时器
1、Connect Retry重置连接计时器,默认32S;
2、Keepalive保持时间,默认60S;
3、Hold time 默认为Keeplive时间的三倍(180S),保持时间可以改大,但是不能小于Keepalive的三倍。
如果两端 Holdtime 不一致,双方接受较小的的时间;
4、timer keepalive 0 hold 0 ,当检测时间和保持时间都为0时表示本BGP设备认为邻居永远UP;
5、BGP 不会周期性更新路由,仅在需要的时候更新,由于公网的路由可能的动荡的,因此触发更新也会有一定的等
待时间,IBGP peer 为 5S;EBGP peer 为 30S,而在这段时间内,BGP 仍可以进行路由信息的搜集,
所以 BGP收敛会比慢。

七、BGP的更新源
1、BGP 无法像 IGP 那样自动发现邻居,而需手工指定,邻居的 IP 由本地的 peer 命令指定,而该 BGP
连接的源 IP(更新源)默认情况下为流量的出接口 IP。注意只有当本地配置的邻居 IP 与邻居用
于 BGP 连接建立的源 IP 相同时,BGP 连接才能被正常建立;
2、IBGP 邻居之间建立邻居,为了保证邻居关系的稳定,一般使用 loopback 接口建立,这是因为如果使用物理
接口,那么物理接口故障,邻居关系就 DOWN 了,并且在 AS 内部,路径可能是冗余的,
邻居之间的 LOOPBACK 路由可通过IGP获取并提供一定的路由冗余性(当物理线路也存在冗余的情况下)
注意: 在使用loopback接口建立BGP邻居关系时,务必注意还需要指定更新源 IP;
3、如果是建立 EBGP 邻居关系,因为 EBGP 邻居关系的建立会检查直连路由,并且默认 TTL=1,
而这个时候实际上loopback 口到 对方loopback 口至少 2 跳 ,那么这个时候 还需要
两者配置 peer x.x.x.x ebgp-max-hop 。

八、BGP的路由生成
1、通过手动宣告,只能将本BGP设备路由表存在的路由条目通告出去;
2、通过路由引入,将IGP或者静态,直连路由的重分发进来。

九、BGP的路由通告
1、当存在多条路径时,BGP Router 只选取最优的路由(BEST)来使用(没有负载均衡的情况下);
2、BGP 只把自己使用的路由,也就是自己认为 Best 的路由传递给 BGP peer;
3、BGP Speaker 从 EBGP 获得的路由会向它所有 BGP 相邻体通告(包括 EBGP 和 IBGP);
4、BGP Speaker 从 IBGP 获得的路由不向它的 IBGP 相邻体通告。(避免环路,水平分割;存在路由 RR 的情况除外)

向东老师评语:

配置没问题
BGP的邻居建立很关键,涉及环回口地址建立bgp邻居就需要 指定更新源,单一的直连物理接口建立bgp邻居时不需要指定更新源的。
BGP的防环属性是影响路由更新传的重要因素,一定要牢记BGP的防环策略。
IBGP防环是 从IBGP邻居学到的路由不再传递给其他的IBGP邻居 注意这里是IBGP邻居,EBGP邻居不受影响。
IBGP之间路由传递时要更改下一跳属性,使得从EBGP邻居学到的路由可以顺利在IBGP邻居之间传递。

(温馨提示:本博文仅限于学习)

发布了15 篇原创文章 · 获赞 38 · 访问量 4692

猜你喜欢

转载自blog.csdn.net/HYD696/article/details/104637199