BGP(边界网关路由协议)

BGP:边界网关路由协议 无类别路径矢量的EGP协议;
AS–自治系统–编号范围0-65535其中1-64511公有 私有64512-65535

一、EGP协议的三大特性:
1、可控性 ----具有丰富的属性来取代IGP中度量进行选路,可以在进项和出项对流量实施强大的策略;
2、可靠性 --增量更新—TCP—三次握手—单播----非直连建邻-
3、AS-BY-AS — 以一个AS为一跳

二、BGP特点:
1)无类别路径矢量 -----距离矢量的升级版—AS-BY–AS
2)使用单播更新来发送所有信息;基于TCP 179端口工作
3)增量更新–仅触发无周期
4)具有丰富的属性来取代IGP中度量进行选路----多个参数控制协议
5)可以在进项和出项对流量实施强大的策略–可控性
6)默认不被用于负载均衡-----通过各种选路规则仅仅产生一条最佳路径
7)BGP支持认证和聚合(汇总)

三、数据包–所有的数据包基于TCP传输
Open 存在hold time 和 RID;用于邻居关系建立;默认仅收发一次即可;
Keeplive 保活 周期1min保活 TCP会话 hold time 180s
Update 更新包 路由条目: 目标网络号+ 属性
Notification 报错包 错误信息出现时发送

四、BGP的工作过程
1、IGP—IP可达—建邻设备间可以通讯
2、通过三次握手建立TCP的会话
3、收发BGP的OPEN报文—建立邻居关系,生成邻居表;
4、使用update共享本地的路由信息给邻居;生成BGP表;—所有本地发出及接收到的路由信息
5、默认将BGP表中最优路径加载于路由表中;收敛完成,仅keeplive周期保活即可;
6、若存在错误的配置或策略时,BGP协议将使用notification包来进行报错;

名词:
对等体–peers–在BGP中因为可以非直连建邻;故邻居也被称为对等体;
EBGP----不同AS间的BGP邻居关系 ----- 管理距离为20
IGBP-----同一AS内部建立的BGP邻居关系 ----- 管理距离为200

五、BGP的路由黑洞:
因为BGP协议可以非直连建邻,这样在一个AS内部就允许出现不运行BGP协议的路由;
导致BGP可以邻居间正常传递路由,实现控制层面可达,但数据层面在未运行BGP协议的设备上不可达;
解决方案:
1)物理链路全连–所有BGP设备间直连,不能非直连建邻;
2)邻居关系全连–所有设备运行BGP;
3)将BGP路由条目重发布到IGP;(实验室环境)
4)最佳方案—MPLS-多协议标签交换(最佳方案);

六、BGP防环;–水平分割
【1】EBGP水平分割----防止EBGP邻居间的环路;
在BGP协议的属性中存在一个AS-pash属性—记录经过的每一个AS号;
接收到的路由条目中,若存在本地的AS号将拒绝接收

【2】IBGP水平分割;
基于AS-BY-AS规则,一条路由在一个AS内部传递时,默认属性无变化;
IBGP水平分割规则----从一台IBGP邻居处学习到的路由不得传递给另一个IBGP邻居;
注:该规则迫使全网所有BGP设备间均需要进行邻居关系建立配置;配置量几何增长;
可以使用联邦和路由反射器来打破;

七、配置
【1】BGP建立邻居关系 ----因为单播建邻,故建立邻居关系和宣告路由是分开进行;
r1(config)#router bgp 1 启动协议时携带真实的AS号,无多进程概念
r1(config-router)#bgp router-id 1.1.1.1 配置RID—手工–环回接口–物理接口

1)直连的EBGP邻居关系建立
r1(config-router)#neighbor 12.1.1.2 remote-as 2
邻居的IP地址及所在的AS

2)IBGP邻居关系建立;实际网络中,IBGP邻居间一般存在多条路径,使用环回接口地址作为源、目标地址来建立邻居关系,可以同时基于多条路径传输,且邻居关系更稳定
r2(config)#router bgp 2
r2(config-router)#neighbor 3.3.3.3 remote-as 2
一旦将目标地址修改为对端环回接口,本地也需要将源地址修改本地的环回接口
r2(config-router)#neighbor 3.3.3.3 update-source loopback 0

3)EBGP邻居间存在多条链路时,为同时使用这些链路,建议使用环回接口作为源/目IP地址建立邻居关系
{1}IP可达问题—常使用静态路由
{2}建立BGP邻居关系
r4(config-router)#neighbor 5.5.5.5 remote-as 3
r4(config-router)#neighbor 5.5.5.5 update-source loopback 0
目标地址修改为对端环回接口,本地也需要将源地址修改本地的环回接口
{3}默认IBGP邻居间数据包TTL=255,EBGP邻居间TTL=1;
故一旦使用环回地址建立EBGP邻居关系,那么必须修改TTL值;
r4(config-router)#neighbor 5.5.5.5 ebgp-multihop ?
<1-255> maximum hop count

建邻配置完成后,邻居间通过三次握手建立TCP会话;
TCP会话建立后,BGP协议将发出open报文,建立BGP的邻居关系;生成邻居表:
r1#show ip bgp neighbors 查看邻居表,该表过大,不易查看
r1#show ip bgp summary 查看关系汇总信息(简表)
结尾状态为阿拉伯数字证明建立完成

【2】BGP宣告路由
r1(config)#router bgp 1
r1(config-router)#network 1.1.1.0 mask 255.255.255.0
BGP协议只能逐条宣告本地路由表中的内容(不关注条目的产生方式);宣告时必须和表中的记录完全一致;

进行了路由条目的宣告,本地就生成BGP表;–本地收发到的所有路由条目,基于update发送;
r1#show ip bgp 查看BGP表

*标识条目可用----可以加表–路由表
不可用的情况----*被s取代 —本地路由表中已经通过其他更好的方式获取路由
*被s取代 ----抑制–人为的策略限制条目的传递

标识条目优秀-----可以加表,可以传递—可以加载路由表,可以传递给邻居
优秀的条件:
1、同步问题—本地IGP已经学习到了该BGP路由才能优
该规则的目的在于避免路由黑洞,当条件苛刻;故在IOS版本12.2(8)T
以上默认关闭;
r3(config)#router bgp 2
r3(config-router)#no synchronization
2、下一跳可达问题;因为AS-BY-AS,条目在传递给IBGP邻居时,属性默认不变
故从IBGP邻居学习到的路由,下一跳不变;当路由传递给EBGP邻居时,下一跳自动修改为本地;
r2(config)#router bgp 2
r2(config-router)#neighbor 3.3.3.3 next-hop-self
将路由传递给邻居3.3.3.3时,修改属性中的下一跳地址为本地

注:条目必须及优也可用才能加表;仅优即可传递,前提为不能被S抑制;

八、BGP在MA网络的下一跳问题;
在MA网段中,ICMP重定向将帮助BGP学习到最佳的下一跳;
R1#debug ip bgp updates 动态查看BGP更新包
R1#clear ip bgp * soft 软重启 仅和本地所有邻居间重新收发路由,不断开任何关系
R1#clear ip bgp * 硬重启 重启本地所有邻居间的TCP会话

R1#show ip bgp neighbors 123.1.1.2 advertised-routes
仅查看本地发送给邻居123.1.1.2的路由信息
R1#show ip bgp neighbors 123.1.1.2 received-routes
% Inbound soft reconfiguration not enabled on 123.1.1.2
仅查看本地从123.1.1.2 的接收到的路由,默认没有专用的存储空间来装载
R1(config-router)#neighbor 123.1.1.2 soft-reconfiguration inbound
配置存储空间,建议查看完后删除该空间

你可能感兴趣的:(BGP(边界网关路由协议))