一张纸上的A、 B 两个点,很容易就可以找到最佳连线方式,但如果 A 点是计算机,而 B 点是地球另一端的网站,如何从这纷乱复杂的线路中,找到最佳路径呢?
在这种情况下,BGP(边界网关协议)可根据可达性和路由信息,权衡最新的网络状况,从而找到最佳路径。
BGP是一种路由协议,它定义了在AS(自治系统)之间交换路由信息的方法。BGP 管理数据包如何在构成互联网的大型网络之间传输,并使互联网能够高效运行。
在深入了解BGP之前,我们先来认识几个基础概念。
01
什么是路由协议?
路由协议是一种指定数据包转送方式的协议。互联网由错综复杂的网络构成,因此需要适当地提供“合理的引导”,这个过程称为路由。
| 路由图解
路由是将计算机发送的数据(数据包)正确传输到目的计算机的过程。
为了进行路由选择,需要在路由器中设置路由信息(路由表)。用于指示的信息称为路由表,路由表包含“最终目的地”和“下一跳IP地址”。路由表的设置本身可以手动完成,但是路由信息每天都在变化。因此,需要一种机制来自动配置。这里使用的就是路由协议。
| 路由表工作示意图
路由协议可以大致分为以下两种类型:
IGP ( Interior Gateway Protocol ):内部网关协议,在一个AS内部所使用的一种路由协议。一个AS内部也可以有多个路由器管理多个网络,各个路由器之间需要路由信息以知道子网络的可达信息。IGP就是用来管理这些路由。代表的实现协议有RIP和OSPF。
EGP ( Exterior Gateway Protocol ):外部网关协议,在多个AS之间使用的一种路由协议,BGP是EGP的代表协议。
02
什么是AS?
AS(自治系统,Autonomous System)是构成互联网的网络单元。一个自治系统(AS)是一个有权自主地决定在本系统中应采用何种路由协议的小型单位。这个网络单位可以是一个简单的网络也可以是一个由一个或多个普通的网络管理员来控制的网络群体,它是一个单独的可管理的网络单元(例如一所大学,一个企业或者一个公司个体)。它可以是一个路由器直接连接到一个LAN上,同时连到Internet上,也可以是一个由企业骨干网互连的多个局域网。
| 互联网拓扑
每个 AS 都会被分配一个称为 ASN(自治系统编号)的唯一编号。区域互联网注册机构(Regional Internet Registry,RIR),是管理世界上某特定地区Internet资源的组织。Internet资源包括IP地址(包含IPv4和IPv6)和使用在BGP路由中的自治系统号(Autonomous System number)。每个 AS 控制一组连接的路由前缀,代表一个 IP 地址范围。当流量到达 ASN 时,它决定了网络内部的路由策略。
| AS(自治系统)
在一个AS中的所有路由器必须相互连接,运行相同的路由协议,同时分配同一个ASN。截至 2021 年 1 月,全球有近 100000 个 ASN,其中约 29% 位于美国。
为了使各个AS相互连接并在它们之间进行通信,需要使用EGP,BGP是EGP的代表协议。
| BGP 简化版
上图展示了一个简化版的 BGP。在此版本中,互联网上有 6 个自治系统。如果 AS1 需要向 AS3 路由一个数据包,它有两种不同的选择:
AS2 → AS3或AS6 → AS5 → AS4 → AS3
在这个简化的模型中,可以很简单直接地作出决策。AS2 路由所需的跃点比 AS6 路由要少,因此它是最快、最高效的路由。
那么现在假设有成百上千个 AS,而且跃点数只是路线选择算法中的一部分,最终决策就变得非常困难。而这就是BGP 路由的实际情况。
看到这里,我们再回顾一下BGP的概念,是不是就容易理解了!
打个比方,如果我们将 BGP 比作互联网的邮政服务,那么AS就相当于各邮政分局,AS中的内部路由器就好比邮箱。一个城镇可能有数百个邮箱,但邮箱中的所有邮件都必须先经过本地邮政分局,然后再运送到另一个目的地。也就是路由器将出站流量路由到AS,然后使用 BGP 路由将这些流量传输到其目的地。
但在这个比喻里,还存在一些偏颇。
AS与邮局不同,它们并非都属于同一个组织。事实上,AS往往属于互相竞争的公司。因此,BGP 路由有时会将业务因素考虑在内。AS往往会互相收取费用来传输通过其网络的流量,相关价格也会成为最终选择哪条路由的考虑因素之一。
03
互联网流量路由简史
在互联网早期,只有少数网络需要相互连接。那时,网络节点之间的路由是静态的,即路由器上的路由表是预先配置的,不考虑动态变化。设置路由所需要做的就是定义网络节点并根据需要在它们之间建立连接。
然而,互联网迅速发展,网络越来越多,这时候就需要一个更加动态的路由系统。EGP(外部网关协议)的发明就是为了完成这项工作。1982 年,来自BBN Technologies 的Eric C. Rosen定义了 EGP。
EGP 是一种基于树状分层拓扑结构的简单路由协议,用于在自治系统网络中的两个相邻网关主机之间交换路由信息。
| EGP路由协议
EGP具有三个主要功能:
建立一组邻居
检查邻居的可用性
通知邻居其自治系统内的可达网络
随着互联网上自治系统数量的增长,EGP 的缺点也开始暴露。EGP 仅支持树状拓扑,阻碍了可扩展性,并且难以有效地连接新网络。需要定义一个更具可扩展性并提供更高级功能的外部路由协议。
| 树状拓扑vs网状拓扑
1989 年 6 月,新路由协议的第一个版本正式确定。它的名字叫 BGP,代表边界网关协议。
当时,思科的 Kirk Lougheed 和 Len Bosack 以及 IBM 的 Yakov Rekhter 利用在EGP上获得的经验编写了一个新协议。他们在餐巾纸上写下这个新协议。出于这个原因,BGP有时被称为Two-Napkin Protoco。
| 写在餐巾纸上的BGP注释
与其前身 EGP 相比,BGP 支持网状拓扑,使多路径路由成为可能。BGP 用于路由 AS 到 AS的流量。
BGP Speaker 之间建立对等体的模式有两种:
IBGP(Internal BGP)是指在相同AS内建立的BGP连接
EBGP是指在不同AS之间建立的BGP连接
在一个 AS 内,可以自由使用其他路由协议,如 OSPF、EIGRP 和 IS-IS。
| IBGP与EBGP示意图
BGP 旨在互联网上的自治系统之间交换路由和可达性信息,是当今互联网运作方式不可或缺的一部分。没有BGP,不同的网络将无法通信或共享有关路由的信息,从而无法将数据高效、安全地从一个地方发送到另一个地方。
ISP(互联网提供商)、大型组织和云提供商使用BGP 来连接彼此的的网络,以及与互联网的其余部分连接起来。BGP 还用于确保流量尽可能高效的路由,从而减少延迟并提高性能。BGP 基于TCP/IP,在OSI传输层(第 4 层)上运行以控制网络层(第 3 层)。
04
BGP 路由的工作原理
BGP报文
BGP报文由BGP报文头和具体报文内容两部分组成。BGP的运行是通过消息驱动的,共有5种消息类型,这些消息有相同的报文头。这些消息通过TCP协议进行传播(端口号是179)。消息最长为4096字节,最短为19字节(只包含报文头)。
1. Open报文用于对等体参数协商;
2. Keepalive报文用于维护对等体邻居;
3. Update报文用于通告可达路由和不可达路由;
4. Notification报文 用于错误信息通告,断开对等体邻居;
5. Route-refresh报文 用于请求对等体重新发送路由信息。
BGP报文头包括三部分,总长19字节。各个部分的格式和功能如下:
Marker:占16字节,用于检查BGP对等体的同步信息是否完整,以及用于BGP验证的计算。不使用验证时所有比特均为1(十六进制则全“FF”)。
Length:占2个字节(无符号位),BGP消息总长度(包括报文头在内),以字节为单位。长度范围是19~4096。
Type:占1个字节(无符号位),BGP消息的类型。Type有5个可选值,表示BGP报文头后面所接的5类报文(其中,前四种消息是在RFC4271中定义的,而Type5的消息则是在RFC2918中定义的)
自治系统通信
当两个 AS 相互通信时,它们会彼此交换各自的网络信息,包括 IP 地址范围、子网掩码和其他网络相关数据等详细信息。BGP 决策机制对所有数据进行分析,并将其中一个对等体设置为下一站,以转发去往某个目的地的报文。每个对等体管理一个表,其中包含它知道的每个网络的所有路由,并将该信息传播到其相邻的自治系统。
通过这种方式,BGP 允许 AS 从其相邻AS 收集所有路由信息,并进一步“通告”这些信息。每个对等体都在其自己的自治系统内部传输信息。
就像在现实生活中一样,通常有多条路线可以到达给定的目的地。BGP 类似于导航系统,负责根据收集到的信息和组织的路由策略确定最合适的路由,该路由策略基于成本、可靠性、速度和其他因素。
路由更新
一旦建立了路由表,就需要定期更新,以便网络中的任何变化都能反映在路由表中。这个过程被称为路由更新,它涉及在两个 AS 之间来回发送消息,以保持它们各自的路由表的最新状态。
BGP 路径属性
除了交换有关网络的信息外,BGP 还使用路径属性来确定从一个AS发送数据包到另一个AS时应该走哪条路由。这些属性包括跳数、延迟和传输成本等。通过考虑这些因素,BGP 可确保数据包沿着最有效的路由发送。
05
BGP的主要功能
BGP 为互联网的运行提供了关键功能,包括维护路由信息、选择最短路由、在路由错误的情况下提供冗余、通过身份验证提供安全性和促进不同网络类型之间的通信等。
路由故障时提供冗余:如果 BGP 检测到主路径无法正常工作,它将自动通过备用路径重新路由流量。
检测路由路径环路:BGP 可以使用一组称为 BGP 决策过程的算法来检测和消除路由路径中的环路。这有助于确保数据包沿着尽可能最有效的路线发送,而不会浪费带宽或走不必要的弯路。
防止恶意攻击:BGP 可以通过验证 BGP 消息是否来自合法自治系统,以过滤掉恶意的流量。
提供安全保障:BGP 使用预配置的密码或密钥对路由器之间的消息进行身份验证。这有助于确保只有授权实体才能交换信息并防止恶意行为者破坏流量。
控制交通流量:BGP 使 ISP 能够通过指定将数据包从一个网络发送到另一个网络时采用的路由来控制流量如何通过其网络。
促进网络交流:BGP 允许网络之间的通信,例如 IPv4 和 IPv6。这有助于确保所有设备都可以相互通信,无论它们位于哪种类型的网络上。
06
BGP如何选择最佳路径?
上文提到了BGP可选择两个对等体之间的最佳路径,那最佳路径究竟是怎么选出来的呢?
权重:选择权重最大的路线。权重值越大,对该路径的偏好越高。
本地优先级:如果有多条权重相同的路由,则选择本地优先级最高的路由。
Origin:优先选择由本地路由器发起的路由,本地路由的下一跳是 0.0.0.0。
AS路径:如果AS路径长度相同,则优先选择具有最低MED (多出口鉴别器)的路径。
eBGP over iBGP:首选eBGP。eBGP的管理距离是 20,而iBGP的是 200。
IGP指标:优先选择下一跳IGP最低的。
外部路径:如果两条路径都是外部路径,首先选择最旧的路径。
Router ID :选择Router ID最小的路径。
集群列表:如果多条路径具有相同的路由器ID,则选择最小长度。
邻居地址:从最低邻居地址开始选择,此地址为BGP邻居配置中使用的IP地址。
07
BGP的局限性
虽然BGP被广泛使用,但是它也有以下局限性:
普适性问题
>传播延迟
BGP在处理路由变更时需要时间来计算新的最短路径,并需要将新路由信息通知给其他路由器。这会导致路由切换的延迟时间较长,可能会影响网络性能。
>不稳定
如果配置不正确,BGP 会导致不稳定。如果路由设置不当,可能会导致数据包路由效率低下,从而导致性能下降和潜在的中断。
>难以扩展
BGP是一个复杂的协议,需要大量的配置和维护工作。BGP 在处理大量路由器或同时路由大量数据时,无法很好地扩展。
安全问题
BGP还有一个很大的问题在于,默认情况下BGP 不嵌入任何安全协议,并且依赖于网络运营商来保护他们的系统。自 2000 年代初以来, BGP劫持和泄漏事件一直是人们关注的焦点。
BGP路由泄露:路由泄漏是一种在现网中比较常见的路由事件,一般出现于ISP的错误配置,对外宣告了本不应该由该AS宣告的IP前缀路由,它能够造成 BGP 路由发生严重错误、进而导致互联网部分中断或拥塞。
BGP路由劫持:整个BGP协议是建立在信任原则之上的。
BGP 假设每个 AS 对其拥有的IP地址和共享的路由信息都是真实的,这个原理使得它很容易受到恶意攻击。BGP 劫持是通过破坏使用BGP 维护的互联网路由表来非法接管IP 地址组,恶意重新路由互联网流量。
| BGP路由劫持
攻击者可以操纵 BGP 路由表,让受到攻击的路由器通告尚未分配给它的前缀。如果这些虚假通告表明有比合法路径更好的路径可用,流量就可能会被定向到该路径,导致恶意服务器窃取凭据、下载恶意软件并执行其他破坏性活动。而最终用户始终以为他们访问的是合法站点。
在某些情况下,BGP 路由劫持可能使攻击者能够访问未加密的数据流或用于绕过 IP 屏蔽列表来发起未经请求的活动,如垃圾邮件等。
BGP DoS:这种恶意攻击主要针对 BGP 路由协议。在这种攻击中,网络犯罪分子向受害系统发送意外或不需要的 BGP 流量,这会耗尽受害者的所有可用资源,从而无法处理有效的 BGP 流量。
BGP 威胁事件
多年来,BGP 经历了无数次安全事件。
2017 年 8 月,由于谷歌错误泄露了 BGP 通告,日本经历了全国范围的中断。同年 10 月,巴西的 Twitter 和 Google 等服务因另一起 BGP 泄漏事件而中断。2017 年 11 月,互联网骨干网提供商 Level 3 经历了一次路由器配置错误,导致了严重的路由泄漏,最终直接影响了康卡斯特,并在此过程中关闭了美国大片地区的互联网。
2018 年 4 月,恶意黑客公布了一些属于 AWS 的 IP 前缀,一些试图登录加密货币网站的用户被重定向到黑客所创造的虚假网页之中,导致了超过 160000 美元的损失。
2021 年 10 月 4 日。Facebook 及其子公司经历了一次影响全球用户的重大中断。中断的原因被追溯到 BGP 故障,导致流量路由中断。这导致许多用户无法访问他们的帐户或使用 Facebook 及其子公司提供的任何服务。中断持续了几个小时才得到解决,并使该组织损失了 6000 万美元的收入。
| 来源:腾讯安全应急响应中心(TSRC)
这些事件都说明了BGP协议在互联网中的重要性,同时也提醒我们BGP安全方面的风险。
08
如何防范BGP威胁?
为了充分防范 BGP 威胁,有必要采取适当的对策和保护措施。
IP前缀过滤
大多数网络应该只在必要时接受IP段前缀声明,并且只应将其IP前缀声明到某些网络,而不是整个互联网。这样做有助于防止意外的路由劫持,并可能使AS不接受伪造的IP前缀声明。但是,这在实践中很难实施。
BGP劫持检测
劫持检测可以采取多种形式。基线性能的变化,例如更大的延迟、错误的流量或性能的普遍下降是可能表明某种形式的劫持的初步迹象。此外,监控通告以及记录路线的可用性和停机时间是发现劫持的重要方面。
更复杂的系统还可以分析来自邻居的公告 AS 以查看被劫持的前缀是否包含在公告中,可以识别前缀不匹配,并使用路径分析来确保正确的路由。
全路由认证安全机制
2017年10月,国际互联网工程任务组(IETF)和美国国家标准与技术研究院(NIST)、美国国土安全部(DHS)等机构共同启动了一个名为安全域间路由(SIDR)的联合项目,明确提出应对 BGP 协议进行保护以抵御BGP路由攻击威胁。“SIDR ”项目主要分为三个基本组成部分:资源公钥基础设施 (RPKI)、BGP 源路由验证(ROV)和 BGP 路径验证 (BGPSec)。
>RPKI
RPKI是一种专门为路由来源身份验证开发的加密系统。RPKI 使用被称为路由源授权(Route Origin Authorization, ROA)的加密签名记录。其基本思想是构建一个PKI(公钥基础设施)来完成对IP地址前缀和AS号的所有权和使用权的认证。
RPKI 允许网络运营商通过使用私钥和公钥系统对BGP中的路由通告进行数字加密和签名。信息可以使用私钥加密和签名,并且只能使用匹配的公钥解密或验证其签名。数字签名信息保证了在路由系统中看到的路由通告可以被验证并且是真实的。
| 使用RPKI的BGP
>BGPSec
不过RPKI和ROV,只能防范如BGP路由劫持中的起源AS欺骗的简单攻击,像AS路径篡改、BGP路由泄露等场景,则需要采用BGPSec方案。
BGPSec旨在补充BGP源路由验证的不足,当它与ROV结合使用时,可以防范各种针对BGP的路由劫持攻击。在路由宣告过程中,路由器从它的邻居AS收到的IP前缀路由宣告消息进行签名,签名内容作为路由消息的BGPSec_Path属性传播给其它邻居AS,当路由器接收到带有BGPSec_Path属性的IP前缀更新路由时通过检查签名判断该路由的AS_Path路径是否正确,若错误的话直接丢弃,并不广播给其邻居AS。
09
BGP用在什么地方?
BGP用于多种类型的网络,包括:
互联网服务提供商 (ISP):ISP 使用 BGP 在多个互联网自治系统之间传递路由数据。这使得有效流量可在各种网络和地理位置之间路由。
企业网络:在工业网络中,BGP 还用于跨多个站点或区域交换路由数据。这可以在同一组织的各个部门内实现有效的流量路由。
数据中心网络:BGP用于数据中心网络,在同一数据中心的不同部分之间或不同数据中心之间交换路由信息。这允许有效地路由流量并启用负载平衡和故障转移等功能。
服务提供商网络:服务提供商使用 BGP 在不同网络之间进行高效的流量路由并提供冗余。
域间路由:BGP是互联网不同域之间使用的路由协议,它是唯一可以用来在不同自治系统之间交换路由信息的协议。
综上所述,BGP广泛应用于互联网服务提供商、企业网络、数据中心网络、服务提供商网络等不同类型的网络,主要用于互联网域间路由。
10
BGP 有其他替代方案吗?
对于那些不想或不需要 BGP 提供的所有功能的人来说,有几种选择。其中最突出的是开放最短路径优先 (OSPF) 和增强型内部网关路由协议 (EIGRP)。
OSPF
OSPF 用于在 IP 网络中找到源和目标之间的最佳路径,是一种内部网关协议 (IGP),可以在单个自治系统内路由数据包。与其他 IGP 不同,OSPF 是一种链路状态路由协议。换句话说,它依赖于链路状态信息来计算路由路径并做出路由决策。OSPF 基于 Dijkstra 算法来寻找两点之间的最短路径。
OSPF 相对于其他路由协议(包括 BGP)的主要优势之一是其高效的路径选择。此外,OSPF 比 BGP 具有更快的收敛时间,这意味着它可以快速检测网络中的变化并相应地更新其路由表。然而,OSPF 需要比 BGP 更多的内存和处理能力,因为它需要在其路由表中存储有关链路的所有信息。
BGP 常用于 Internet 冗余、WAN 和 IaaS 环境。OSPF 主要用于 LAN 和数据中心,但偶尔也可用于 WAN 和 IaaS 环境。
| BGP 与OSPF 的应用场景
不过BGP 与OSPF 在大多数情况下一起使用。在数据中心,OSPF 通常是网络交换机和/或路由器之间内部路由的通用协议。当该流量需要传输到另一个组织时,就需要BGP 协议了。
EIGRP
EIGRP 由思科在 1990 年代开发,最初仅限于在思科产品中使用。2013年前后,思科向IETF提出了EIGRP作为协议草案进行审查,最终批准成为官方标准。迄今为止,它仍处于 IETF 的草案模式。
与 BGP 不同,EIGRP 是一种内部网关协议,它在组织完全管理的网络中动态路由数据流量,例如企业或政府。EIGRP 被视为混合协议,使用以下两种协议类型的功能:
距离矢量路由,其中路由器定期发送消息,通知相邻路由器网络拓扑的任何变化;
链路状态路由,发送消息通知每个路由器整个网络拓扑。
EIGRP 使用扩散更新算法 (DUAL) 来计算网络中到达目的地的最短路径。该算法允许快速收敛时间,这意味着当网络发生变化时,EIGRP 可以快速适应并找到新的数据传输路径。
与 BGP 相比,EIGRP 具有几个优点。它比 BGP 更容易配置和维护,因为它需要更少的参数和更少的人工干预。它还可以更有效地使用带宽和内存等资源,更适合资源有限的网络。而且它提供比 BGP 更快的收敛时间。
但EIGRP 也有一定的局限性。例如,虽然 EIGRP 同时支持 IPv4 和 IPv6 地址,但 BGP 同时支持 IPv4 和 IPv6 地址以及多个自治系统,这使得BGP更适合具有复杂拓扑结构的大型网络。此外,由于 EIGRP 是专有协议,它在其他供应商设备上的实施可能具有挑战性。
| BGP 与EIGRP的对比
11
BGP在数据中心网络中的应用
下面介绍具体网络架构场景下的BGP。在DC1场景中,有五排机架,排列成Spine-Leaf的网络架构。推荐使用EBGP建立VXLAN Underlay网络。每排机架采用EBGP时的网络设计如下图所示。每个主干或叶子交换机都有自己的 AS 编号。
| DC1场景下运行EBGP
EOR交换机部署DC2场景的EBGP设计如下图所示。
| DC2场景下运行EBGP
第一排机架可以分配AS号AS65000和AS65001,然后每台设备的AS号依次递增1。如果在DC中选择IBGP进行VXLAN Overlay路由交换,设计会很简单,因为只需要为DC1中的所有设备分配相同的AS号。同样的方法也可以用在DC2中,如下图所示。
| DC1场景下运行IBGP
| DC2场景下运行IBGP
12
未来发展
随着IPv4地址的枯竭,未来的互联网将越来越多地使用IPv6地址。因此,未来的BGP协议可能会更好地支持IPv6地址。此外,随着自动化技术的进步,BGP协议可能会更加智能化和自动化,以便更快速地适应网络变化。
总的来说,未来的BGP协议可能会更加智能、自动化和安全,以适应不断变化的互联网环境和用户需求。
审核编辑 :李倩
全部0条评论
快来发表一下你的评论吧 !