BGP协议总结

BGP—边界网关协议

AS------自治系统------由单一机构或组织所管理的一系列IP网络及其设备所构成的集合

原因:1、范围大,需要划分; 2、自治管理

为了方便区分和标定不同的AS,给每个自治系统设计了一个编号

  • 标准AS号长度为16位二进制 0-65535 其中0-64511公有 64512-65535私有
  • 扩展长度AS号:32位二进制,目前大多数设备已经支持拓展版本的AS号

在目前IP v4环境下,使用最广泛的的BGP版本是BGPv4,目前市场上已经存在BGPV4+,可以支持多种地址组的应用

BGP的数据包

基于TCP的179端口工作,所以BGP协议中所有的数据包均需在TCP会话建立后,基于TCP的会话来进行传输及可靠性保障

首先,通过TCP的三次握手来寻找邻居

OPEN包 :建立BGP对等体关系;邻居关系的建立就是参数协商的过程,BGP建立邻居关系需要通过open来携带参数,进行对比协商

  • AS号:在创建邻居关系时,需要指定邻居所在的AS号,这个参数将被携带的在open报文中发送给对方,对方将对比这个AS号和本地的AS号是否一致,如果一致,则可以正常建立邻居关系
  • 认证:BGP邻居也可以作认证,做认证后将携带认证口令,认证口令双方需要进行对比,一致则可以正常建立邻居关系
  • route id:区分和标定路由器,由32位二进制构成,按照IP地址的格式来表示
  • hold time:保活时间,默认时间为180s,在保活时间内,如果没有收到对方的keep alive包或者update包,则将断开BGP邻居关系,这个参数在open报文中携带,双方不影响邻居关系的建立,但是在执行时,这个时间必须是一致的,则将采用双方中较小的保活时间来使用

keeplive:周期保活,周期发送时间等于保活时间的1/3,默认保活时间为180S,则默认的周期发送时间为60S。

  • 除了保活之外,keeplive包还将在open报文协商参数时临时充当确认包的作用
  • TCP协议进行确认的目的时为了保证数据传输的可靠性,而keep alive报文确认的目的是为了确认认可对方发送的open报文在的参数

update:携带路由条目 目标网络号+各种属性,在更新包中存在一个撤销路由条目字段,在这个字段下的路由条目需要对端删除,而不再需要通过带毒传输的方式来表达
Notification:出现错误数据时收发

BGP的状态机(6种)

BGP的状态机描述的是BGP对等体建立过程中状态的变化,因为BGP协议将邻居的建立过程和路由转发过程分开进行

IDLE:空闲状态,在路由器启动BGP协议后将先处于idle状态,当手工指定邻居关系后,BGP将进入一个检查环节,检查指定的路由器在本地路由表中是否可达,如果可达,则将进入到下一个状态
connect:连接状态,该状态完成TCP会话的建立

  • 如果TCP会话建立成功,则将进入到opensent状态,发送open报文
  • 如果TCP会话建立失败,则将进入ACTIVE状态,尝试重新建立TCP会话
  • 在TCP会话建立的过程中因为双方都会主动的发起建立会话的过程,而最终建立的都是一个双向的会话,所以最终只需要保持一个会话通道即可,选择方式是通过后续open报文在的RID进行比较,选择保留较大RID的设备发起TCP会话

open sent:发出本地的open报文,收到对端发送的open报文,查看里面的参数,如果参数确认无误,则将回复keep alive报文作为确认
open confirm:open报文确认状态,对端收到本地发送的open报文,之后根据里面的参数进行确认,如果确认无误则将发送keepalive报文,本端收到对方发送的keep alive报文之后将进入下一个状态
Established:建立状态,标志着BGP对等体关系的建立

BGP的工作过程:

  • 基于IGP协议实现IP可达
  • 指定邻居关系,通过三次握手,建立TCP的会话通道。之后所有BGP的数据包都将基于TCP会话通道来进行传递
  • 使用open报文和Keeplive报文进行邻居关系的建立。之后将邻居关系收集到一张表中-----邻居表
  • 通过update报文传递路由信息。传递的路由信息中主要包含目标网络号,掩码信息,以及各种路径属性。之后,设备会将所有自己发出的以及收到的路由信息记录在一张表中-----BGP表
  • 之后将BGP表中的最优路径加载到路由表
  • 收敛完成后,BGP将周期使用Keeplive报文来进行保活。保活时间默认为180S,周期发送默认时间为60S
  • 若出现错误信息,将使用notification报文进行告警
  • 若发生结构突变,则将使用update报文进行触发更新

BGP路由黑洞:

在同一AS中,由于成本问题,不会所有设备都运行BGP协议,且BGP协议支持非直连邻居建邻,故可能出现BGP协议,所以可能会出现BGP协议跨越未运行BGP协议的路由器。导致BGP路由传递后,控制层面可达,但是数据层面在经过未运行BGP协议的路由器上无法通过,形成路由黑洞

解决方案:
物理或逻辑链路全连
邻居关系全连(所有的路由器均运行BGP协议)
将BGP协议的路由信息重发布到IGP网络中
MPLS

BGP的防环:

BGP使用的防环机制:

EBGP的水平分割:专门应用在EBGP对等体之间,用来解决EBGP对等体之间可能出现的环路问题

BGP协议将在路由条目中记录所经过的AS编号,AS-path:记录AS路径的一个属性,(这个属性除了可以完成EBGP的水平分割外,还可以作为选路的依据);接收到的BGP路由条目中,其中的AS-PATH属性中,若存在本地的AS号,则将拒绝接受
IBGP的水平分割:专门应用在IBGP对等体之间,用来解决IBGP对等体之间可能出现的环路问题

  • 当一个路由器从一个IBGP对等体处学习到某条BGP路由时,不能将这条路由信息通告给其他的IBGP对等体关系
  • 因为IBGP水平分割的限制,导致IBGP对等体之间的路由信息只能传递一跳,在这种情况下会造成通信障碍

解决方案:

  • 构建全连的对等体关系,但是会造成资源消耗的增加、网络的可拓展性降低
  • 路由反射器
  • 联邦

BGP的聚合

自动聚合

  • 该方法只能针对重发布发布的路由信息生效
  • 自动聚合的路由只能按照主类进行聚合,将形成巨大的路由黑洞,华为设备BGP的自动聚合功能是默认关闭的

手工聚合:

  • 因为自动聚合存在两个缺陷,所以需要对汇总进行精准把控时,手工聚合是最佳方案

手工聚合的问题:

  • 发布聚合路由的情况下,不会抑制明细路由,导致汇总操作并没有减少路由条目数量,反而增加了。
  • 在进行汇总的时候,发布的汇总路由不会继承明细路由的属性,尤其是AS_PATH,则将导致汇总路由部分属性缺失,甚至可能出现环路。

路由反射器

  • 路由反射器:RR,可以通过配置,将某些设备在一定的条件下设置为路由反射器,该设备将可以反射学习到IBGP的路由信息
  • 在指定一个路由器为反射路由器的同时,必须在他的IBGP对等体中选择一个或多个设备作为他的客户,RR和客户之间所构成的系统我们称为反射簇,每一个反射测都将使用RR的route-id作为簇id,其余没有成为RR客户的对等体关系,我们将其称为非客户

路由反射器的反射规则:

  • RR从一个EBGP邻居处学习到的路由,可以传递给本地的客户端、非客户端,其他EBGP邻居
  • 当路由反射器从自己客户处学到一条路由,则他会将把这条路由信息反射给自己的客户及非客户,其他EBGP邻居
  • 如果路由反射器从自己的非客户处学到路由,则他将把这条路由信息反射给自己所有的客户,但是不能反射给非客户(非非不传

因为IBGP水平分割是为了防止环路的产生,而路由反射器将路由反射之后打破了IBGP的水平分割,就可能造成环路的出现,而路由反射器为了防止环路的出现,又引入了两个属性:Originator_ID(起源者ID),Cluster_list(簇列表)

  • 起源者属性:当一条路由信息来到路由反射器时,反射器需要将这条路由信息反射,反射前将在该路由信息中添加这个属性,这个属性的值为该反射器收到这条路由信息的通告者的RID,之后,别的路由反射器收到一条路由信息如果其中包含O-ID,则他不会改变这个属性,如果一台设备收到一条路由条目其中的起源者id为自己本地的RID,则将不会学习这条路由信息,起到防止环路的效果
  • 如果在一个AS当中,存在多次反射,则一定存在多个反射簇,则每个RR在反射路由信息时都会在其簇列表属性中添加本地的簇id,当一个设备收到一条反射的路由信息后,其中的簇列表属性中包含本地簇id,则将不再学习该路由,防止环路的产生

联邦

  • 联邦的思想就是将同一个AS当中的IBFGP对等体关系改变为EBGP对等体关系,通过这种方式打破IBGP的水平分割。这需要将不同的IBGP对等体划分到不同成员AS中,成员AS之间建立的EBGP对等体关系是特殊的EBGP对等体关系,他们之间仅遵循EBGP对等体关系的传递性,而从传递的内容看,依然需要循序AS-BY-AS规则,从宏观的角度看,他们仍然属于同一个AS
  • 联邦的做法也相当于打破了IBGP的水平分割,则也可能出现环路问题,则需要考虑防环,在AS-Path属性中添加成员AS号来防止环回,为了区分成员AS和正常的AS,成员AS号将使用小括号括起来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值