BGP 协议(转载)

BGP 协议

BGP 协议介绍

  • BGP 全称是 Border Gateway Protocol, 对应中文是边界网关协议。
  • BGP是互联网上一个核心的去中心化自治路由协议。

从这个解释来看,首先这是一个用于互联网(Internet)上的路由协议。它的地位是核心的(目前是最重要的,互联网上唯一使用的路由协议),它的目的是去中心化,以达到各个网络自治。不过还是有点抽象。

先看看几个相关的概念:

名词概念 描述
AS(Autonomous system)
自治系统
指在一个(有时是多个)组织管辖下的所有IP网络和路由器的全体,它们对互联网执行共同的路由策略。也就是说,对于互联网来说,一个AS是一个独立的整体网络。而BGP实现的网络自治也是指各个AS自治。每个AS有自己唯一的编号。
IGP(Interior Gateway Protocol)
内部网关协议
在一个AS内部所使用的一种路由协议。一个AS内部也可以有多个路由器管理多个网络。各个路由器之间需要路由信息以知道子网络的可达信息。IGP就是用来管理这些路由。代表的实现有RIP和OSPF。
EGP(Exterior Gateway Protocol)
外部网关协议
在多个AS之间使用的一种路由协议,现在已经淘汰,被BGP取而代之。
  • 由于BGP就是为了替换EGP而创建,它的地位与EGP相似。但是BGP也可以应用在一个AS内部。
  • 因此BGP又可以分为IBGP(Interior BGP :同一个AS之间的连接)和EBGP(Exterior BGP:不同AS之间的BGP连接)。
  • 既然EGP已经被替代了,那EBGP的存在比较好理解,但是IGP协议都还活得好好的(这里指的是OSPF),那IBGP的意义何在?
    • IGP的协议是针对同一个AS网络来设计的,一个自治网络的规模一般都不大,所以设计的时候就没有考虑大规模网络的情况。
    • 而当一个自治网络足够大时,OSPF存在性能瓶颈。
  • BGP本身就是为了在Internet工作,其设计就是为了满足大型网络的要求,所以大型私有IP网络内部可以使用IBGP。总的来说,这几类路由协议,小规模私有网络IGP,大规模私有网络IBGP,互联网EBGP。

img

BGP 基本概念

定义

  • 边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous System)之间的路由可达,并选择最佳路由的距离矢量路由协议。早期发布的三个版本分别是BGP-1、BGP-2和BGP-3,1994年开始使用BGP-4,2006年之后单播IPv4网络使用的版本是BGP-4,其他网络(如IPv6等)使用的版本是MP-BGP。
  • MP-BGP是对BGP-4进行了扩展,来达到在不同网络中应用的目的,BGP-4原有的消息机制和路由机制并没有改变。
  • MP-BGP在IPv6单播网络上的应用称为BGP4+,在IPv4组播网络上的应用称为MBGP(Multicast BGP)。

目的

  • 为方便管理规模不断扩大的网络,网络被分成了不同的自治系统。1982年,外部网关协议EGP(Exterior Gateway Protocol)被用于实现在AS之间动态交换路由信息。
  • 但是EGP设计得比较简单,只发布网络可达的路由信息,而不对路由信息进行优选,同时也没有考虑环路避免等问题,很快就无法满足网络管理的要求。
  • BGP是为取代最初的EGP而设计的另一种外部网关协议。不同于最初的EGP,BGP能够进行路由优选、避免路由环路、更高效率的传递路由和维护大量的路由信息。
  • 虽然BGP用在AS之间传递路由信息,但并非所有AS之间传递路由信息都要运行BGP。如数据中心上行到Internet的出口上,为了避免Internet海量路由对数据中心内部网络影响,设备采用静态路由代替BGP与外部网络通信。

受益

  • BGP从多方面保证了网络的安全性、灵活性、稳定性、可靠性和高效性:
  • BGP采用认证和GTSM的方式,保证了网络的安全性。
  • BGP提供了丰富的路由策略,能够灵活的进行路由选路,并且能指导邻居按策略发布路由。
  • BGP提供了路由聚合和路由衰减功能用于防止路由振荡,有效提高了网络的稳定性。
  • BGP使用TCP作为其传输层协议(端口号为179),并支持BGP与BFD联动、BGP Tracking和BGP GR和NSR,提高了网络的可靠性。
  • 在邻居数目多、路由量大且大多邻居有相同出口策略场景下,BGP用按组打包技术极大提高了BGP打包发包性能

更多名词定义:

名词概念 描述
BGP * 边界网关协议(Border Gateway Protocol)是互联网上一个核心的去中心化自治路由协议,它通过维护IP路由表或前缀表来实现自治系统(AS)之间的可达性
* 大多数ISP使用BGP来与其他ISP创建路由连接,特大型的私有IP网络也可以使用BGP
* BGP的通信对端(对等实体,Peer)通过TCP(端口179)会话交换数据,BGP路由器会周期地发送19字节的保活消息来维护连接。在路由协议中,只有BGP
EBGP 外部边界网关协议。归属不同的AS的对等实体之间运行的BGP称为EBGP
IBGP 内部边界网关协议。同一个AS内部的两个或多个对等实体之间运行的BGP被称为IBGP
IGP * 一个IGP内部应该仅有数十(最多小几百)个对等实体
* 对于端点数,也存在限制,一般在数百(最多上千)个Endpoint级别IBGP和IGP都是处理AS内部路由的,仍然需要IGP的原因是:
 * IBGP之间是TCP连接,也就意味着IBGP邻居采用的是逻辑连接的方式,两个IBGP连接不一定存在实际的物理链路。所以需要有IGP来提供路由,以完成BGP路由的递归查找
Border Router 边界路由器,在AS边界上与其他AS交换信息的路由器
AS 自治系统(Autonomous system),一个组织(例如ISP)管辖下的所有IP网络和路由器的整体。
参与BGP路由的每个AS都被分配一个唯一的自治系统编号(ASN)。对BGP来说ASN是区别整个相互连接的网络中的各个网络的唯一标识。64512到65535之间的ASN编号保留给专用网络使用
Route Reflector * 同一AS内如果有多个路由器参与BGP路由,则它们之间必须配置成全连通的网状结构——任意两个路由器之间都必须配置成对等实体。由于所需要TCP连接数是路由器数量的平方,这就导致了巨大的TCP连接数
* 为了缓解这种问题,BGP支持两种方案:Route Reflector、Confederations
* 路由反射器(Route Reflector)是AS内的一台路由器,其它所有路由器都和RR直接连接,作为RR的客户机。RR和客户机之间建立BGP连接,而客户机之间则不需要相互通信
* RR(路由反射器(Route Reflector))的工作步骤如下:
 * 从非客户机IBGP对等实体学到的路由,发布给此RR的所有客户机
 * 从客户机学到的路由,发布给此RR的所有非客户机和客户机
 * 从EBGP对等实体学到的路由,发布给所有的非客户机和客户机
 * RR的一个优势是配置方便,因为只需要在反射器上配置
工作负载 Workload,即运行在Calico节点上的虚机或容器
全互联 全互联网络(Full node-to-node Mesh)是指任何两个Calico节点都进行配对的L3连接模

通过下面的这副图中关于BGP的理解将会更加清晰

img

  • BGP使用TCP为传输层协议,TCP端口号179。路由器之间的BGP会话基于TCP连接而建立。
  • 运行BGP的路由器被称为BGP发言者(BGP Speaker),或BGP路由器。
  • 两个建立BGP会话的路由器互为对等体(Peer)。BGP对等体之间交换BGP路由表。
  • BGP路由器只发送增量的BGP路由更新,或进行触发更新(不会周期性更新)。
  • BGP具有丰富的路径属性和强大的路由策略工具。
  • BGP能够承载大批量的路由前缀,用于大规模的网络中
  • BGP通常被称为路径矢量路由协议(Path-Vector Routing Protocol)。
  • 每条BGP路由都携带着多种路径属性(Path attribute),在各种路径属性中,AS_Path属性是非常关键的一个。AS_Path属性记录了BGP路由传递过程中所经过的AS号,实际上它是一个AS号的列表。
  • BGP路由器不接受AS_Path中包含其自身AS号的路由更新。AS_Path属性值的长短(AS号的个数)会作为一个比较的依据,影响BGP路由选择的决策。

IBGP 与 EBGP

img

  • IBGP(Internal BGP):位于相同自治系统的BGP路由器之间的BGP邻接关系。

    两台路由器之间要建立IBGP对等体关系,必须满足两个条件:

    • 1.两个路由器所属AS需相同(也即AS号相同)。
    • 2.在配置BGP时,Peer命令所指定的对等体IP地址要求路由可达,并且TCP连接能够正确建立
  • EBGP(External BGP):位于不同自治系统的BGP路由器之间的BGP邻接关系。

    两台路由器之间要建立EBGP对等体关系,必须满足两个条件:

    • 1.两个路由器所属AS不同(也即AS号不同)。
    • 2.在配置BGP时,Peer命令所指定的对等体IP地址要求路由可达,并且TCP连接能够正确建立.
  • 这里可能有疑问的是IBGP既然能够使R1与R3邻接相通,那关OSPF什么事情?

    • 我们可以把IBGP想象成IGP的更上一层的抽象,IGP的具体实现这里是OSPF,作用在于主动学习路由。
    • 通过IBGP开放的端口更新相关路由表,虽然看起来 R1与R3 邻接相通,但是他们底层是通过 OSPF 学习得到的。R1与R3 并不直连,只是有了 R2 和底层 OSPF 路由,可以配置 R1与R3 为 IBGP Peer
    • 当与不同的AS进行连接时,对方可以不需要加入OSPF网络。
    • 还有就是不同的路由协议它可以进行宣告,OSPF当宣告的数量一多会造成严重的性能问题(它的宣告容量是有限的),而BGP不会。

BGP的路由学习

水平分割

img

  • 为了保证中转AS300内所有路由器都能学习到完整的BGP路由信息,我们不得不在该AS内的每一台路由器上运行BGP并且建立全互联的IBGP对等体关系。
  • 为了防止AS内产生环路,BGP设备不将从IBGP对等体学到的路由通告给其他IBGP对等体,并与所有IBGP对等体建立全连接

简单来讲C与B、D、E成为对等体,我直接从BDE中拿取它们的路由表,并且不让他们告诉其他人。B、D、E以此内推。

反射

  • 由于IBGP水平分割的存在,为了保证所有的BGP路由器都能学习到完整的BGP路由,就必须在AS内实现IBGP全互联,这就导致AS内部需要维护大量的BGP连接,从而影响网络性能,路由反射器(Route Reflector,RR)可以放宽水平分割原则,解决该问题。

  • 为保证IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接关系。假设在一个AS内部有n台设备,那么建立的IBGP连接数就为n(n-1)/2。当设备数目很多时,设备配置将十分复杂,而且配置后网络资源和CPU资源的消耗都很大。在IBGP对等体间使用路由反射器可以解决以上问题。

简单来讲一个区域内所有人都是所有人的对等体,那么所有人都需要再除自己之外的所有人进行获取路由。而路由反射器相当于一个主管告诉下面所有的客户端你们都不需要去每个每个去问了我去获取所有的连接路由的路由表(不管是IBGP、EBGP、非Client的IBGP对等体),再把这些给连接的路由器,相对于这个区域下形成主从关系。

img

RR在接收BGP路由如何分发

  • 如果该路由学习自 非Client IBGP 对等体,则反射给自己所有的 Client

举例:下图R3为非Client时将反射给R2的Client。

img

  • 如果路由学习自 Client ,则反射给所有 非Client IBGP 对等体和除了该 Client 之外的所有 Client

img

  • 如果路由学习自己 EBGP 对等体,则发送给所有Client 和 非Client IBGP 对等体

img

名词 描述
路由反射器RR(Route Reflector) 允许把从IBGP对等体学到的路由反射到其他IBGP对等体的BGP设备,类似OSPF网络中的DR。
客户机(Client) 与RR形成反射邻居关系的IBGP设备。在AS内部客户机只需要与RR直连。
非客户机(Non-Client) 既不是RR也不是客户机的IBGP设备。在AS内部非客户机与RR之间,以及所有的非客户机之间仍然必须建立全连接关系。
始发者(Originator) 在AS内部始发路由的设备。Originator_ID属性用于防止集群内产生路由环路。
集群(Cluster) 路由反射器及其客户机的集合。Cluster_List 属性用于防止集群间产生路由环路。

等价多路径 ECMP

img

什么是 ECMP?

ECMP(Equal-Cost Multi-Path,等价多路径)是一种路由策略,允许在具有相同路径度量值(例如开销或成本)的多条路径之间均匀分配流量。这种方法可以提高网络的带宽利用率和冗余性,减少单一路径的拥塞。

BGP ECMP 的工作原理

在传统的 BGP 路由中,BGP 选择一条最佳路径并将其安装在路由表中。但是在支持 ECMP 的情况下,BGP 可以选择多条具有相同路径成本的最佳路径,并将这些路径都安装在路由表中。

当流量到达路由器时,路由器可以根据哈希算法(例如基于源 IP 地址、目标 IP 地址、协议类型等的哈希值)将流量分散到多条等价路径上。这样可以实现负载均衡,提高网络性能和可靠性。

BGP ECMP 的优点
  1. 负载均衡:通过在多条路径之间分配流量,可以避免单一路径的拥塞,提高整体网络性能。
  2. 冗余和容错:如果其中一条路径出现故障,流量可以自动切换到其他等价路径,增强网络的可靠性。
  3. 带宽利用率:充分利用多条路径的带宽,提高网络资源的利用效率。
配置 BGP ECMP

配置 BGP ECMP 通常涉及以下步骤:

  1. 启用 ECMP:在路由器上启用 ECMP 功能。
  2. 配置 BGP 路由:在 BGP 中配置多条具有相同成本的路径。
  3. 调整哈希算法:根据需要调整哈希算法,以确保流量均匀分布在多条路径上。

转载博客

https://www.tnblog.net/hb/article/details/7793
https://www.tnblog.net/hb/article/details/7804

posted @ 2024-07-16 17:56  evescn  阅读(11)  评论(0编辑  收藏  举报