ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

BGP基础知识

2021-01-23 20:29:56  阅读:669  来源: 互联网

标签:邻居 TCP 基础知识 BGP 本地 连接 路由


文章目录


一、BGP:边界网关路由协议

属于无类别的路径矢量协议;EGP协议中最流行的技术,工作在AS之间;
EGP—外部网关路由协议-BGP IGP内部网关路由协议-RIP OSPF EIGRP
AS—自治系统 全球网络—范围、管理域
AS号 – 标准 16位二进制构成 0-65535 其中1-64511公有 64512-65535私有
扩展 32位二进制构成

BGP协议本身不产生路由,而是转发本地路由表中来自其他协议生成的路由条目;
AS之间正常存在大量的BGP邻居关系,且BGP协议不会计算最佳路径;因此在BGP协议中管理员需要进行策略来干涉选路;

IGP协议追求:1、无环(选路佳) 2、收敛快 3、占用资源少
EGP协议的追求1:可控性强(管理员可以方便进行策略干涉选路)
2、可靠性(BGP协议设备间需要交互大量的路由条目,但又不能选择周期更新来占用链路资源,故只能进行触发更新;且BGP协议工作环境中为节约成本,必然出现非直连需要建立邻居关系—单播邻居)— 基于TCP工作 -三次握手四次断开 4种可靠传输机制 – TCP只能基于单播工作
单播—需要IP可达—依赖IGP BGP承载于IGP之上
3、AS-BY-AS 以一个AS为一跳;

二、BGP特点:

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

三、BGP数据包

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

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

Open消息 : 是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。
对等体在接收到Open消息并协商成功后,将发送Keepalive消息确认并保持连接的有效性。确认后,对等体间可以进行Update、Notification、Keepalive和Route-Refresh消息的交换。

是TCP仅负责邻居关系的建立,正常进收发一次即可;携带route-id,hold time 默认3min

Update消息 :用于在对等体之间交换路由信息。一条Update消息可以发布多条属性相同的可达路由消息,也可以撤销多条不可达路由信息。 携带路由条目: 目标网络号+各种属性

Keeplive消息 : 保活 周期1min查询邻居关系是否存在;实际保活TCP会话;

缺省情况下,发送KeepAlive 的时间间隔为 60秒,Hold Time是180秒。每次从邻居处接收到KeepAlive 报文将重置Hold Time定时器,如果Hold Time定时器
超时,就认为对等体Down掉。

Notification消息: 出现错误数据时收发,之后BGP连接会立即中断。

Router-Refresh消息:通过OPEN消息告知BGP peer本地支持路由刷新能力(Route-Refresh capability)。在所有BGP路由器使能Route-Refresh能力情况下,如果BGP的入口路由策略发生了变化,本地BGP路由器会向对等体发布Route-Refresh消息收到此消息的对等体会将其路由信息重新发给本地BGP路由器。这样,可以在不中断BGP连接的情况下,对BGP路由表进行动态刷新,并应用新的路由策略。

BGP报文应用∶

  • BGP使用TCP建立连接,本地监听端口为179。和TCP连接建立相同,BGP连接的
    建立也要经过一系列的对话和握手。TCP通过握手协商通告其端口等参数,BGP的握手协商的参数有∶BGP版本、BGP连接保持时间、本地的路由器标识(Router
    ID)、授权信息等。这些信息都在Open消息中携带。
  • BGP连接建立后,如果有路由需要发送则发送Update消息通告对端。Update消
    息发布路由时,还要携带此路由的路由属性,用以帮助对端BGP协议选择最优路由。在本地BGP路由变化时,要通过Update消息来通知BGP对等体。
  • 经过一段时间的路由信息交换后,本地BGP和对端BGP都无新路由通告,趋于稳定状态。此时要定时发送KEEPALIVE消息以保持BGP连接的有效性。对于本地BGP,如果在保持时间内,未收到任何对端发来的BGP消息,就认为此BGP连接已经中断,将断开此BGP连接,并删除所有从该对等体学来的BGP路由。
  • 当本地BGP在运行中发现错误时(如对端BGP版本本地不支持、本地BGP收到了结构非法的Update消息等),要发送Notification消息通告BGP对等体。本地
    BGP退出BGP连接时,也需发送Notification报文。

四、BGP工作原理一数据库

  • IP路由表 (IP-RIB):全局路由信息库,包括所有IP路由信息。
  • BGP路由表 (Loc-RIB):BGP路由信息库,包括本地BGPSpeaker选择的路由信息。
  • 邻居表:对等体邻居清单列表。
  • Adj-RIB-In:对等体宣告给本地BGP Speaker的未处理的路由信息库。
  • Adj-RIB-Out:本地BGP Speaker宣告给指定对等体的路由信息库

五、BGP工作原理–BGP路由信息处理

在这里插入图片描述
BGP路由信息处理∶

当从对等体接收到更新数据包时,路由器会把这些更新数据包存储到路由选择信息库(Routing Information Base,RIB)中,并指明是来自哪个对等体的(Adj-RIB-In)。这些更新数据包被输入策略引擎过滤后,路由器将会执行路径选择算法,来为每一条前缀确定最佳路径。

得出的最佳路径被存储到本地BGPRIB(Loc-RIB)中,然后被提交给本地IP路由选择表IP-
RIB),以用作安装考虑。

除了从对等体接收来的最佳路径外,Loc-RIB也会包含当前路由器注入的(被称为本地发起的路由),并被选择为最佳路径的BGP前缀。Loc-RIB中的内容在被通告给其他对等体之前,必须通过输出策略引擎。只有那些成功通过输出策略引擎的路由,才会被安装到输出RIB(Adj-RIB-Out)中。

六、BGP的工作过程

1、配置完成后,邻居间单播TCP三次握手,目标端口179,建立TCP的会话;之后所有的BGP协议数据包基于该会话进行传输;
会话建立后,邻居间正常收发一次open报文建立BGP的邻居关系,生成邻居表;
BGP协议的open报文中将携带本地的RID—生成方式和OSPF一致;仅需要本地及本地所有邻居唯一即可;

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

2、邻居关系建立后,管理员选择性将本地路由表中通过任意来源获取的路由条目,向BGP协议中进行宣告;使用updata数据包进行邻居间路由共享;之后生成BGP表;— 装载本地发出及接收到的所有路由条目;
默认将最优路径加载于路由表中(最优-仅仅基于BGP的选路规则,不一定为最佳路径;BGP默认不支持负载均衡)

3、收敛完成,仅keeplive周期保活即可;

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

5、结构突变
1)新增 — 本地使用updata向本地所有邻居告知,前提该路由不被已经发出的聚合路由包含
2)断开 — 本地使用updata向本地所有邻居告知,前提该路由不被已经发出的聚合路由包含
只有到聚合条目中包含的所有明细路由均在本地失效,才告知邻居删除聚合条目
3)无法沟通 — hold time为3min,连续3次未收到邻居的keeplive;断开邻居关系、TCP会话,删除从该邻居处学习到的所有路由;

七、邻居状态机

在这里插入图片描述

可以利用邻居状态机描述BGP连接的建立和维护,它将有以下的6中状态:

  1. ldle (空闲)状态

BGP总以ldle状态为起点,该状态拒绝所有入站的连接。只有在BGP起动之后,BGP进程将初始化所有BGP资源,初始化去往邻居的TCP连接,监听来自邻居的TCP初始化消息,并更改为连接状态。启动事件一般是配置BGP进程。

  1. Connect(连接)状态

进入Connect状态后,BGP进程将一直等待TCP连接的完成(三次握手),当TCP连接建立成功,BGP将会向邻居发送Open消息,并进入OpenSent(打开发送)状态。如果TCP会话没有建立,BGP将继续监听邻居初始化的连接,开启连接重试定时器,迁移到Active(激活)状态。Connect→→OpenSent(TCP连接建立);Connect→→Active(TCP连接暂未建立)。

  1. Active(激活)状态

该状态下,BGP进程继续尝试和邻居建立TCP连接,如果TCP连接建立成功,BGP进程清除连接重试定时器,完成初始化过程,并向邻居发送Open报文,迁移到OpenSent(打开发送)状态。
如果连接重试定时器到期BGP进程依然处在激活状态,进程将返回连接状态,监听邻居发起的TCP会话,这个过程将反复循环,直到监听到由邻居发起的TCP会话。

  1. OpenSent(打开发送)状态

进入了该状态,已经发送了Open消息,BGP将一直等待来自邻居的Open消息。一旦接收到Open消息后,将检查该消息的每一个字段,如果有差错,将会发送Notification消息迁入Idle状态。
如果接收到的Open消息没错,就会发送Keepalive消息并商讨Keepalive定时器和Keepalive发送的时间。 并迁移到OpenConfirm(打开确认)状态。

  1. OpenConfirm(打开确认)状态

进入了这个状态下,BGP进程将等待邻居确认的Keepalive或Notification消息。如果接收到的是Keepalive消息则迁移到Established(建立)状态,如果是Notification消息那么就将迁移到Idle状态。

  1. Established(建立)状态

进入了这个状态就说明了BGP的对等连接正式建立了,对等体之间交互Update,Keepalive和Notification消息,如果接受到的是Update或Keepalive消息,则重启保持定时器,如果接受到一个Notification消息,则会迁移到Idle状态。

八、BGP的路由黑洞问题

非直连建邻到达控制层面路由条目可传递,递归计算路由可达;
而实际数据层面流量在经过没有运行BGP协议的路由器时无法通过,最终有去无回

1、 物理、逻辑拓扑全连 – 物理链路直连、或者vpn
2、 邻居关系全连 – 网络中所有设备运行BGP
3、 BGP重发布到IGP(LAB)
4、 MPLS 多协议标签交换— 推荐做法

九、BGP的防环机制 –水平分割

1、EBGP水平分割—解决EBGP环路;

依赖了BGP路由条目中的一种属性来进行防环;AS-PASH路径属性;
BGP协议在传递路由条目的过程中,将记录所有经过的AS的编号;
EBGP水平分割—接收到的路由条目中,若存在本地的AS号将拒绝该条目进入;

2、IBGP水平分割—解决IBGP环路由中的一种机制

本地从一个IBGP邻居处学习到的路由条目,不得传递给本地的其他IBGP邻居;
AS-BY-AS在一个AS内部条目传递的过程中,默认不会修改任何的属性;

由于BGP可以非直连建立邻居关系,故在一个AS内部,可以通过与多台运行BGP协议的路由器建立BGP邻居关系,来稳定关系网络;因此在一个AS内部运行BGP协议的设备,正常均存在EBGP邻居(均同时连接其他AS)

在IBGP水平分割的限制下,虽然避免了IBGP的环路产生,但同时也使得AS内部为了能够传递路由条目,必须两两间建立IBGP邻居关系,邻居关系成指数上升,配置量巨大;

后期可以依赖打破水平分割的机制来解决—联邦、路由反射器

十、IBGP与IGP同步

在IBGP路由加入路由表并发布给EBGP对等体之前,会先检查IGP路由表。只有在IGP也知道这条IBGP路由时,它才会被加入到路由表,并发布给EBGP对等体。

在这里插入图片描述
同步是指IBGP和IGP之间的同步,其目的是避免误导外部AS的路由器。

拓扑说明(在同步开启情况下):
R4通过BGP学习到R1宣告的10.0.0.0/24网络。R4在将该网络通告给R5之前,会首先检查自己的IGP路由表是否已经存在100.0.0/24网络。如果R4本地IGP路由表项存在10.0.0.0/24网络,则将该网络通告给R5;如果R4本地IGP路由表项不存在
10.0.0.0/24网络,则不能将该网络通告给R5。

注意事项∶
VRP平台缺省情况下BGP与IGP是取消同步机制的,并不可改变。但取消同步是有条件的,
在以下两种情况下可以取消同步 ∶
1.本AS不是过渡AS。
2.本AS内所有路由器建立IBGP全连接。

标签:邻居,TCP,基础知识,BGP,本地,连接,路由
来源: https://blog.csdn.net/weixin_51045259/article/details/109249950

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有