Home » 博客 » 什么是BGP?解释边界网关协议
博客

什么是BGP?解释边界网关协议

BGP

互联网简单来说是一个由网络(或自治系统)组成的集合,这些网络通过相互连接和通信来互相交互。网络需要一种方法来发送和接收信息,以便与其他网络进行互动。

介绍边界网关协议(BGP)——互联网的路由协议。

BGP管理数据包在各个网络之间如何传送,并查找互联网全球范围内的所有路由。简而言之,BGP是使互联网像我们现在所知的那样高效运作的路由协议。

什么是BGP?

边界网关协议定义

BGP(边界网关协议)是全球互联网使用的路由协议。BGP通过评估最新的网络条件,包括可达性和边缘路由器之间的路由信息,来寻找最佳路径。BGP负责路由流量,并控制数据包在自治系统(AS)之间的传输,自治系统是由企业或服务提供商管理的网络。

自主系统

什么是自主系统?

自治系统(AS)是由一个或多个网络运营商管理的大型IP网络或网络组,具有统一的路由策略。互联网是由无数较小的自治系统组成的网络。每台连接到互联网的计算机或设备都连接到一个自治系统。

对等(Peering)是自治系统(AS)之间相互通信和共享网络流量的方式。自治系统之间进行对等的一个方法是通过称为互联网交换点(IXPs)的物理位置进行连接。

新的系统不断出现在互联网中,而旧的系统则经常变得不可用。因此,每个自治系统(AS)必须维护有关新旧路由的信息。这是通过对等会话来实现的,在对等会话中,每个AS与附近的AS建立TCP/IP连接,以交换路由数据。每个AS可以利用这些信息正确地路由外发数据。

根据每个企业及其对等协议的不同,自治系统(AS)有时会相互收取费用,以便通过各自的网络传输流量。访问成本有时可能会影响BGP的最终路由选择。

谁操作自主系统?

自治系统(AS)通常属于互联网服务提供商(ISP)或其他大型机构,如科技公司、学术机构、政府部门和研究机构。每个AS必须拥有一个注册的自治系统编号(ASN),才能交换路由信息。

什么是BGP自主系统编号?

一个单一的自治系统编号(ASN)必须由所有连接到同一互联网服务提供商(ISP)或组织的IP网络共享。互联网号码分配局(IANA)为每个公司分配一个独特的ASN。IANA将ASNs提供给区域互联网注册机构(RIR),然后RIR将ASNs分配给ISP和网络。ASNs是数字,范围从1到65534(16位格式)以及从131072到4294967294(32位格式)。

BGP自治系统编号(ASN)有两种类型:私有ASN和公共ASN。

  • 私有BGP ASN 用于内部使用。
  • 公共BGP ASN 用于在全球互联网中交换数据。

私有ASN用于将大型AS划分成多个小的AS编号,以便节省公共ASN的使用。

BGP如何工作?

边界网关协议(BGP)是用于在互联网上路由流量的机制。大多数服务提供商只拥有通向每个前缀的路径,而不是默认路由。BGP会学习到通往给定路由的多个路径,并在路由器之间选择最佳路径,以便将路径分发到每个目的地。

当一个网络路由器连接到多个网络时,它无法选择最佳的网络来发送数据。为了将流量传输到最接近数据目的地的路由器,BGP会考虑所有路由器的对等伙伴,并根据对等伙伴的路由信息做出决策。这些路由信息存储在路由信息库(RIB)中。

每个路由器或网络主机都会存储一个路由信息库(RIB),其中包含关于到网络目的地的距离或路由信息,用以帮助控制数据包的方向。RIB使用来自直接连接的外部对等伙伴和内部对等伙伴的数据。根据哪些路由应该被使用以及哪些信息应该被发布的策略,RIB会在网络发生变化时持续更新路由表。

BGP chooses the most efficient path when routing
BGP在多个可用路径中选择最优路径。

上面的简化示意图展示了BGP如何决定传输流量的最佳路由。为了将数据包从AS1发送到AS6,它可以选择以下三条可用路径:

  • 通过AS2到达AS6
  • 通过AS3到达AS6
  • 通过AS4和AS5到达AS6

在这个例子中,选择是非常明显的——通过AS3的路由是最有效的路径,只需要2跳,而通过AS4的路径需要3跳。此外,它还避免了当前通过AS2的流量拥堵问题。

BGP使用什么路由协议?

路由协议的目标是建立路由表、学习可用路由并做出路由决策。与其他动态路由系统不同,BGP通过使用TCP/IP(或TCP)作为其传输机制而脱颖而出。BGP是一种网状拓扑结构,使用TCP来确定路由器之间通信的最佳路径。

OSPF和BGP是两种最常见的路由协议。OSPF和BGP的主要区别在于,OSPF是一个自治系统内部的路由协议,而BGP是自治系统之间的路由协议。BGP推荐的路径可以来自AS内部(如内部BGP),也可以来自AS外部(如外部BGP)。

什么是外部BGP和内部BGP?

外部BGP和内部BGP定义

边界网关协议(BGP)有两种类型,分别是外部BGP(eBGP)和内部BGP(iBGP)。

内部BGP(iBGP)是一种BGP形式,供同一自治系统(AS)内的相邻设备或网络使用,用于在它们自己的内部网络中路由。当只有两个内部对等体之间需要交换路由信息时,内部BGP不会与其他自治系统进行通信。为了连接其内部网络中的路由器,AS可以选择多种内部协议。

外部BGP(eBGP)是BGP协议的扩展,用于在不同的自治系统之间传输交换信息。这意味着BGP机制需要使用边缘路由器来连接两个自治系统。使用eBGP时,不需要使用iBGP。

eBGP and iBGP are terms used with the routing protocol BGP
iBGP在同一自治系统(AS)内的路由器之间运行,而eBGP则在不同自治系统(AS)之间的路由器之间运行。

解释外部BGP和内部BGP

本地邮件和长途邮件之间的区别可以用来说明iBGP和eBGP之间的差异。外部BGP(eBGP)类似于国际邮件。当发送邮件到海外时,必须遵守一系列的规则和规定。

本地邮件只会在同一社区内的地址之间短距离传输,因此它不需要经过地区分拣中心。一旦邮件到达目标国家,它只能通过该国家的本地邮政服务送达最终目的地。这类似于每个国家都有自己的内部邮政系统,自治系统(AS)也有自己的内部路由协议。

尽可能使用iBGP来提供高效的路由,因为内部BGP系统可以防止路由环路。而路由环路在外部BGP系统中则更加常见。

BGP缺陷及如何解决

信息交换失败是BGP中的一个常见问题。BGP是一种依赖信任的路由共享机制。由于自治系统(AS)默认信任与其共享的广告路由,因此可能会发生一些问题。对等体可能会无意或故意声明不准确的路由信息,这可能导致流量偏离正常路径,从而产生不良后果。

数据交换并不总是成功的,因为数据可能格式不正确或包含不准确的信息。路由器也可能遇到内存或存储问题,或者在响应更新时变得缓慢。每当出现诸如超时、请求格式不正确或处理问题等错误时,路由器需要发送错误代码和子代码来传达这些问题。

BGP事件

最常见的BGP事件是意外的配置错误,或者BGP劫持(BGP hijacks)和前缀泄漏(prefix leaks)。

What is a BGP route hijack?
BGP路由劫持是指一个“敌对”的自治系统(AS)选择宣传一个不是它自己拥有的前缀。

最近的一些BGP事件是:

  • 主要云网络的前缀,包括Akamai、Amazon AWS、Cloudflare、Digital Ocean和Hetzner的前缀,在2020年4月被AS12389(Rostelecom)劫持。
  • 在2020年7月,AS264462发生了一起网络事件,持续了超过一个小时,暴露了超过13046个网络前缀。
  • AS1221(Telstra)在2020年9月宣布了近500个前缀,发生了BGP劫持事件,影响了50个不同国家的266多个ASN。
  • 2021年4月,超过30,000个BGP前缀通过AS55410(Vodafone)被劫持,导致入站流量增加了13倍。大多数前缀,包括Google、Microsoft、Akamai和Cloudflare,来自美国。
  • 2022年2月,韩国一家加密货币平台的BGP前缀被攻击者劫持,窃取了价值190万美元的加密货币。

BGP威胁的解决方案

已经有多次尝试创建一个更安全的BGP版本,例如一种被称为资源公钥基础设施(RPKI)的路由安全框架。然而,实施仍然是一个大问题,因为它要求全球每个自治系统(AS)同时采用新协议。保持互联网高速公路的清洁和安全是一项艰巨的工作,需要全球所有网络运营商的共同努力和坚定承诺。

Request a quote

Ready to Get Started?

Request a quote