HCIP第七天

BGP的介绍

边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous System)之间的路由可达,并选择最佳路由的路径矢量路由协议。目前在IPV4环境下主要使用BGPV4,目前市场上也存在BGPV4+,BGPV4+在BGPV4的基础上支持多个地址族,如IPv6。

BGP — 边界网关协议 IGP — 内部网关协议 — RIP OSPF ISIS EGP — 外部网关协议 — BGP

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

划分AS的原因: 1、网络范围太大,协议跑不过来; 2、自治管理

为了方便对自治系统进行管理,我们给每一个自治系统设计了一个号 — AS号 ---- 16位二进制构成 ---- 取值范围:0 - 65535,其中0和65535为保留;AS号的可用值范围为1 - 65534 ---- 其中 64512 -65534被设定为私有AS号,剩下的为公有AS号。 因为传统的AS号存在不够用的情况,所以,目前大部分设备均支持拓展的AS号 — 32位二进制构成。

AS之间相互获取路由信息可以使用重发布,但是以重发布作为解决方案存在问题: 1、选路不佳 — 重发布在导入路由时会洗掉开销值。 2、ASBR的归属问题

BGP的对等体分类

BGP的邻居更准确的说是BGP的对等体,我们可以根据邻居关系的建立情况,将BGP的邻居关系分为两种:

 

  • 因为EBGP对等体之间一般采用直连建邻的方法,所以,我们将EBGP对等体之间的数据包中的TTL值设置为1;而IBGP对等体之间往往需要非直连建邻(环回接口),因为同个AS间两个对等体间一般存在多个物理接口连接,所以,IBGP对等体之间的数据报中的TTL值我们设置为255;当然,如果EBGP对等体之间需要非直连建邻,则需要手工修改TTL值。

  • TTL为存活时间,每跳减一

BGPT特点

无类别路径矢量 -----距离矢量的升级版—AS–BY–AS 使用单播更新来发送所有信息;基于TCP 179端口工作 增量更新,仅触发更新,无周期更新 具有丰富的属性来取代IGP中度量进行选路,有多个参数控制协议 可以在进项和出项对流量实施强大的策略,可控性非常强大 默认不被用于负载均衡-----通过各种选路规则仅仅产生一条最佳路径 BGP支持认证和聚合(将现有的IP地址合并成较大的、具有更多主机地址的路由域)

BGP的数据包

 

Open包

Open包主要用来建立邻居关系,正常进收发一次即可,Open包会携带一些建邻需要协商的参数,邻居互相认同对方的参数才可以建立邻居关系。以下为Open包会携带的一些参数:

AS号:在手工建立邻居关系需要时声明邻居的AS号。对端收到后会检查声明的AS号是否和本地的AS号一致,一致才可以建立邻居关系。 认证:BGP在建邻时如果做认证的话,需要比对双方认证口令,不一致则无法建立邻居关系。 Router-ID:主要区分和标定路由器。OPEN报文中携带RID的目的是为了确保双方的RID不一致。确保其唯一性,如果相同,则无法正常建立邻居关系。 注意:在接收邻居数据包时,其中的源IP地址和手工指定的邻居的IP地址一致才可以正常建立邻居关系。

  • holdtime:保活时间, 这个参数默认值为 180S,即180S内若收不到对方发送的keeplive或者UPdate包则将判定BGP链接中断。双方建邻时携带这个值,但是并不要求必须相同。但是,执行时必须相同,所以,将会选择二者中较小的作为执行时间

Update包
  • BGP中的更新包,用来携带路由条目,包括目标网段,子网掩码信息以及BGP的各种属性

  • 在UPdate包中存在撤销路由字段,我们可以直接将不可达的路由信息放在该字段下进行通告,以达到传递失效信息的目的。而不需要像RIP那样采用带毒传输的方式。

keeplive包
  • 用来保活邻居关系,默认周期1min查询邻居关系是否存在;实际保活TCP会话。

  • Keeplive报文的发送周期为保活时间(hold time)的1/3,保活时间默认为180S,则周期发送时间默认为60S。

  • KeepLive包还有一个作用:在收到对方发送的OPEN报文后,临时充当确认包的作用。

TCP本身具有确认机制,可以确保传输的可靠性,这里的确认主要是确认OPEN报文中携带的参数,如果认同对方的参数,则将回复Keeplive包进行确认。

Notification包
  • BGP设计的一个告警机制,出现错误数据时收发,当BGP检测到一个错误的时候,将会用这个包进行告警,告知对端错误点在哪

Route-refresh包
  • 用于改变路由策略后请求对等体重新发送路由信息,前提是对等体双方均支持路由刷新

BGP的状态机

BGP的状态机仅描述BGP对等体建立过程中的状态变化。因为BGP可以做到建立邻居关系和发布路由分开完成。

 

 

  • idle状态:空闲状态,一旦指定邻居,就处于idle状态,然后BGP会首先检查指定的IP地址在本地路由表中是否可达,如果可达,则开始尝试建立TCP会话,进入下一个状态;如果不可达,则将停留在idle状态

  • connect状态进行TCP会话连接的状态。如果TCP会话建立成功,则进入下一个状态;如果TCP会话建立失败,则进入Active状态,该状态会反复尝试TCP连接,如果尝试超时,则放弃重连,退回到idle状态。

注意:在建立TCP会话连接时,双方都会尝试建立连接,一方建立成功,则将创建一个双向的TCP会话通道;双方都建立成功,则将会出现两个双向通道。则需要关闭一个TCP通道。后面开始发送OPEN报文,其中会携带RID,双方将比较RID,仅保留RID大的一端发起的TCP连接,RID小的一端发起的TCP连接通道将被断开。

  • OpenSent状态: 开始发送OPEN报文,报文中携带建立邻居关系所需的参数。当收到对端发送的OPEN报文后,并且报文里的参数没有问题,则将回复一个keeplive作为确认,进入下一个状态

  • OPENConfirm状态:在该状态,本段在等待对端keeplive包,当对端收到本端的Open报文且确认参数无误,发送keeplive包进行确认进入下一个状态。

  • Established状态 : 建立完成状态 ,标志着对等体关系的建立。

BGP的工作过程

  • 配置完成后,邻居间单播TCP三次握手,目标端口179,建立TCP的会话;之后所有的BGP协议数据包基于该会话进行传输

  • 会话建立后,邻居间正常收发一次open报文,并互发keeplive包进行确认建立BGP的邻居关系,并生成邻居表

  • 邻居关系建立后,默认每1min,使用keeplive周期保活邻居关系,周期保活TCP会话

  • 邻居关系建立后,管理员选择性将本地路由表中通过任意来源获取的路由条目,向BGP协议中进行宣告;使用updata数据包进行邻居间路由共享;之后生成BGP表

  • 本地对BGP表中的路由进行选择,默认将最优路径加载于路由表中(最优-仅仅基于BGP的选路规则,不一定为最佳路径;BGP默认不支持负载均衡)

  • 若出现错误信息,邻居间将使用Notification报文进行报错操作

  • 收敛完成,仅keeplive周期保活即可,默认保活时间为180S,周期发送时间为60S。

  • 若发生结构突变,则将直接发送UPdate报文进行触发更新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值