BGP 路由收敛时间_BGP

1.BGP的概念

BGP:边界网关路由协议 -
典型的EGP协议,用于AS和AS之间;
协议更新中是否携带网络掩码:携带网络掩码
协议算法:无算法 ,规则 ,路径矢量型
协议封装:基于TCP封装 ,端口号 179

2.BGP的特性

特性:
1、可靠性--不能周期更新,增量更新;-TCP
2、可控性--该协议的真正意义,
   在于AS间共享路由条目时更加方便快捷的干涉选路
3、AS-BY-AS  以一个AS为单位进行计数   
     IGP -hop-by-hop 一个路由器为一个单位

3.BGP特点

1.BGP版本 V1 V2 V3 V4 V4+ --MP-BGP(支持多种协议)

2.BGP一般被用于大型网络,无类别路径矢量 -----距离矢量的升级版—AS-BY–AS

3.BGP更新方式:触发更新

4.具有丰富的属性来取代IGP中度量进行选路----多个参数控制协议

5.默认不被用于负载均衡-----通过各种选路规则仅仅产生一条最佳路径

6.可以在进项和出项对流量实施强大的策略–可控性

7.BGP使用open报文建立邻居,使用keepalive 报文维持邻居关系

8.keepalive 周期间隔60s hold 时间为180s

9.BGP支持路由聚合(汇总),支持VLSM CIDR

10.BGP支持路由认证

11.BGP非常消耗路由器资源(一个路由器只能运行1个BGP进程)

4.BGP AS号、邻居关系

AS自治系统--as编号    
0-65535      1-64511公有  
      64512-65535私有
IBGP:内部BGP邻居关系,同一个AS之内建立BGP邻居
EBGP:外部BGP邻居关系,在不同AS之间建立BGP邻居  
IBGP邻居学习到路由的AD: 200
EBGP邻居学习到路由的AD:20
Local  BGP 路由=本地BGP路由值   200

5.BGP的数据包

open

Open包中存在hold time 和 RID;用于邻居关系建立;默认仅收发一次即可

keeplive

Keeplive 保活 周期60s 保活 TCP会话 hold time 180s

update

更新包 路由条目:目标网络号+属性 路由更新,用于通告路由;用于撤销路由路由通告,使用TCP 中的ACK进行确认

notification

Notification 报错包 错误信息出现时发送

BGP邻居关系建立的条件:1.AS号 2. BGP router-ID必须不一致3.认证一致

6.BGP的工作过程

1、启动配置完成后,本地和对端先单播进行TCP的三次握手,建立TCP的会话;

2、会话建立后,使用open报文进行邻居关系的建立,正常收发一次open报文即可;建立关系后生成邻居表;

3、邻居关系建立后,用户进行路由宣告;宣告配置完成后,BGP使用update包进行路由条目的传递---目标网络号+属性  
 
4、本地接收到的所有路由条目均存储在BGP表中;--装载本地发出和接收到的所有路由

5、默认仅从BGP表中挑选一条最优路径到路由表内;

6、收敛完成,仅keeplive包继续周期保活TCP会话即可;

注:所有BGP协议的数据包均基于TCP的会话传递;TCP会保证这些数据包的可靠性-确认、重传、排序、流控(窗口机制)

7.结构突变

1、新增网段--BGP路由上出现了新的宣告路由,使用更新包更新即可

2、断开网段--BGP路由上出现断开路由,若本地给邻居发送的是汇总路由;那么只要所有明细没有全部断开,将不进行BGP更新;若明细全部消失,使用更新包告知即可;对端删除该信息即可;

3、无法沟通---hold time到时时,断开邻居关系,删除所有通过该邻居学习到的信息;

8.BGP的路由黑洞问题

黑洞产生的原因 :BGP可以非直连建邻,非直连传递路由信息;导致所有运行了BGP协议的路由器均学习到路由条目;但是数据层面流量在传输时所需要经过没有运行BGP协议的路由器时,将出现不可达现象;

解决方案:
1、物理链路全连或者vpn
2、邻居关系全连—所有设备运行BGP
3、将BGP的路由重发布IGP(LAB)
4、最佳解决方案---MPLS多协议标签交换

9.BGP的防环机制(水平分割机制)

1、ebgp邻居间的水平分割–防止ebgp邻居关系间的环路
AS-PASH 属性 ----记录所有经过的AS的编号;接收的条目中若存在本地的AS号,拒绝接收;

2、IBGP水平分割
从一个IBGP邻居处学习到的路由条目,不得传递另一台IBGP邻居;
影响:该规则迫使同一个as内所有的BGP设备间建立邻居关系,关系建立数量成指数上升;
解决办法:故使用联邦、路由反射器来传递路由打破该规则;

10.BGP的基础配置

r1(config)#router bgp 1

启动时携带真实的as号,无多进程概念

r1(config-router)#bgp router-id 1.1.1.1

顺序:手工—环回接口最大地址—物理接口最大地址

BGP协议需要宣告的路由,不仅仅是本地的直连路由,而是本地路由表中通过所有方式产生的信息;
故在BGP协议中,邻居关系的建立与路由条目的宣告是分开进行;

【1】建立BGP的邻居关系

1)建立普通的EBGP邻居关系

BGP 路由收敛时间_路由协议_02

2)建立IBGP邻居关系

由于IBGP邻居处于同一个as内,存在大量的可达路径;建议使用环回接口地址作为会话的源和目标地址,启用设备间所有可达链路;
r2(config-router)#neighbor 4.4.4.4 remote-as 2
切记环回建邻时,需要将更新源地址也修改为环回接口;
r2(config-router)#neighbor 4.4.4.4 update-source loopback 0

3)ebgp邻居间,存在多条链路
{1}先处理IP可达问题

r4(config)#ip route 5.5.5.0 255.255.255.0 45.1.1.2
r4(config)#ip route 5.5.5.0 255.255.255.0 54.1.1.2

{2}使用环回建立关系

r4(config)#router bgp 2
r4(config-router)#neighbor 5.5.5.5 remote-as 3
r4(config-router)#neighbor 5.5.5.5 update-source loopback 0

{3}修改TTL值

默认EBGP邻居间数据包的TTL值为1,ibgp间为255; 故若使用环回来建立ebgp邻居关系,必须修改TTL值

r4(config-router)#neighbor 5.5.5.5 ebgp-multihop ?
<1-255> maximum hop count
255
r4(config-router)#neighbor 5.5.5.5 ebgp-multihop

【2】查看BGP的邻居关系

建邻配置完成后,两端进行TCP的三次握手行为;建立TCP的会话

r1#show tcp brief

BGP 路由收敛时间_BGP_03


如果后边端口号黄标为179 则表示另一个IP向这个IP主动发起TCP会话

当TCP会话建立后,邻居间使用open报文来进行邻居关系;生成邻居表:
r1#show ip bgp neighbors 查看BGP的邻居关系–该表过大,不易查看

r1#show ip bgp summary 查看信息简报

BGP 路由收敛时间_BGP 路由收敛时间_04

State/PfxRcd状态处显示阿拉伯数字标识邻居关系已经建立,该数值标识通过该邻居学习到的路由条目数量;

【3】宣告路由

BGP协议不计算产生路由条目,而是将本地路由表中的路由条目共享到BGP来;这些路由是通过什么方式获取的不关注;
规则:宣告时所填写的条目内容必须和路由表中的记录完全一致
r1(config)#router bgp 1
r1(config-router)#network 1.1.1.0 mask 255.255.255.0

宣告条目后,本地将生成BGP表—本地收发的所有路由信息;

r1#show ip bgp 查看BGP表

BGP 路由收敛时间_路由协议_05

状态注解:
* 标识条目可用--可以加载到路由表  
   不可用的情况:
1、*被r取代 ---不装载--本地路由表中通过其他更好的方法已经拥有了该路由
2、*被s取代 ---被抑制--被管理员策略了,该条目不得传输给邻居;
>标识条目是优秀的---可以加载路由表,可以传输给邻居
 优的条件:1、同步问题---本地必须通过igp也学习到该条目,BGP才能优
              该规则在高版本设备默认关闭
           2、下一跳可达问题;AS-BY-AS--规定条目在一个AS内部传递,其属性不变化;
 将路由条目传递给IBGP邻居时,下一跳默认不修改的;可能导致下一跳不可达

解决方法:
r2(config)#router bgp 2
r2(config-router)#neighbor 4.4.4.4 next-hop-self

将路由传递给邻居4.4.4.4时修改下一跳地址为本地
当条目传输给EBGP邻居时,进入下一个AS了,过程中修改属性(包括下一跳)

注:一条条目必须优且可用才能加表;只有优同时没有被抑制(人为)就可以传递;
i标识该条目通过IBGP邻居学习