通过本篇可以理解 BGP 的基础知识以及使用它的原因
BGP(边界网关协议)是将互联网联合在一起的路由协议,我将解释在哪些情况下我们需要 BGP 以及它是如何工作的。
在您继续阅读之前,我应该告诉您“忘记”迄今为止您对RIP、OSPF和EIGRP等路由协议的了解……这三种路由协议有一个共同点:它们都是 IGP(内部网关协议)。我们只在我们的自治系统中使用它们,但它们不可扩展以用于像 Internet 这样大的网络。
RIP、OSPF 和 EIGRP 都不同,但它们有一个共同点……它们都想找到到达目的地的最短路径。当我们查看 Internet 时,我们并不关心找到最短路径,而是能够操纵流量路径更为重要,我们目前在 Internet 上使用的路由协议只有一种,即 BGP。
- 为什么需要BGP?
让我们先看一些场景,以便了解为什么以及何时需要 BGP:
现在几乎所有东西都连接到互联网,在上图中,我们有一个连接到 ISP(Internet 服务提供商)的客户网络,我们的 ISP 正在确保我们可以访问 Internet,我们的 ISP 为我们提供了一个可用于访问 Internet 的公共 IP 地址。为了确保客户方 LAN 上的每个人都可以访问 Internet,我们使用NAT/PAT(网络/端口地址转换)将我们的内部私有 IP 地址转换为这个单一的公共 IP 地址。当您只有需要访问 Internet 的客户端时,此方案非常适合。在我们的客户 LAN 上,我们只需要一个指向 ISP 路由器的默认路由,我们就完成了。对于这种情况,我们不需要 BGP...
也许客户有几个需要从 Internet 访问的服务器……也许是邮件服务器或网络服务器,我们可以使用端口映射并将正确的端口转发到这些服务器,因此我们仍然只需要一个 IP 地址,另一种选择是从我们的 ISP 获取更多公共 IP 地址,并使用这些地址来配置不同的服务器。对于这种情况,我们仍然不需要 BGP……
如果我想要更多的冗余怎么办?出现单点故障并不是一个好主意,我们可以在客户端添加另一个路由器并将其连接到 ISP,可以将主链接用于所有流量,并使用另一个链接作为备份,这种情况我们还是不需要BGP,可以用默认路由解决:
- 在客户主路由器上面配置低优先级的默认路由;
- 在客户的备路由器上面配置高优先级的默认路由;
这将确保您的 IGP 使用主链路发送所有流量,一旦链路出现故障,您的 IGP 将确保所有流量都沿备用链路发送,你可以考虑一下......我们可以在这两个链接之间做任何负载平衡吗?会很难么?
除非出现故障,否则您的 IGP 将沿主链路发送所有流量,而不会沿备用链路发送任何流量。您可以使用相同的度量发布默认路由,拥有 50/50% 的负载分担。如果我想在主链路上发送 80% 的出向流量,在备用链路上发送 20% 怎么办?上面的方法不会实现此需求,但使用 BGP 是可能的。
我们现在拥有两个不同的 ISP,而不是连接到单个 ISP,出于冗余原因,拥有两个不同的 ISP 很重要,万一其中一个出现故障,将始终有一个备用 ISP 可以使用,客户的网络同样还有两台需要从 Internet 访问的服务器。
在之前的示例中,我们从 ISP 获得了公共 IP 地址,现在我连接到两个不同的 ISP,那么我应该使用哪些公共 IP 地址?来自 ISP1 还是 ISP2?如果我们使用来自 ISP1(或 ISP2)的公共 IP 地址,那么一旦 ISP 出现连接问题,这些服务器将无法访问。
我们将获得自己的公共 IP 地址,而不是使用来自 ISP 的公共 IP 地址。IP 地址空间由 IANA(互联网号码分配机构 - http://www.iana.org/)维护。IANA 正在将 IP 地址空间分配给许多大型区域互联网注册管理机构,例如RIPE或ARIN。其中每一个都为 ISP 或大型组织分配 IP 地址空间。
当我们收到我们的公共 IP 地址空间时,我们会将其通告给我们的 ISP,通告是通过路由协议完成的,这将是 BGP。
- 自治系统
除了获得公共 IP 地址空间之外,我们还必须考虑AS(自治系统):
AS 是单个管理域下的网络集合,互联网不过是一堆相互连接的自治系统,在自治系统中,我们使用 IGP,如 OSPF 或 EIGRP。
对于不同自治系统之间的路由,我们使用EGP(外部网关协议),我们现在唯一使用的 EGP 是 BGP。
我们如何获得自治系统编号?就像公共 IP 地址空间一样,你需要注册一个。
自治系统号码是 16 位的,这意味着我们有 65535 个号码可供选择。就像私有和公共 IP 地址一样,有一系列公共和私有 AS 编号。
范围 1 – 64511 是全球唯一的 AS 编号,范围 64512 – 65535 是私有自治系统编号。
BGP 有两种风格:
EBGP:在自治系统之间使用
IBGP:在自治系统内使用。
EBGP 是在不同的自治系统之间交换路由信息。
2 BGP 通告
现在已经了解为什么我们需要 BGP 以及什么是自治系统。互联网是一个很大的地方,一个完整的互联网路由表中有超过 500.000 个前缀。
当我们运行 BGP 时,这是否意味着我们必须学习超过 500.000 个前缀?这取决于……让我们看一些例子:
上面的图片中,客户网络有一个自治系统号 (AS 1) 和一些 IP 地址空间 (10.0.0.0 /8),假设这些是公共 IP 地址,我们连接到两个不同的 ISP,可以看到它们的 AS 编号(AS2 和 AS3)和 IP 地址空间(20.0.0.0/8 和 30.0.0.0/8),我们可以通过两个 ISP 访问互联网的其余部分,
我们可以使用 BGP 向 ISP 通告我们的地址空间,但是 ISPS 将通过 BGP 向我们的客户通告什么?有多种选择:
- 它们只通告默认路由。
- 它们通告默认路由和部分路由表。
- 他们通告完整的互联网路由表。
让我们来看看这三个选项:
3.1 默认路由
接收默认路由消耗最少的路由器资源,因为您只有一个条目可以访问任何外部网络,客户路由器将向两个 ISP 通告其 10.0.0.0 /8 网络,这将向它们连接的任何其他 AS 通告它,我们将使用默认路由到达 Internet 上。这种配置的缺点是我们的客户网络不知道 ISP1 和 ISP2 后面是什么。由于默认路由,我们具有了连接性,但这可能导致次优路由,如果我们只有默认路由,那么我们可能会将所有流量发送到其中一个 ISP。
如果您只使用默认路由,可能会发生以下情况:
客户网络只收到来自两个 ISP 的默认路由,我们选择使用 ISP1 的默认路由将所有传出流量发送到Internet,这意味着每当我们发送指向 30.0.0.0 /8 (ISP2) 的流量时,它都会被发送到 ISP1,然后再发送到 ISP2,这不是最佳的路径。
3.2 部分路由更新
我们还可以接收部分路由表和默认路由,此部分更新可能包括 ISP 分配给其客户的所有 IP 地址空间。
就像在现实生活中一样......你知道的越多越好,在路由世界中,拥有更多路由信息意味着您可以做出更好的路由决策,与只有默认路由时相比,将遇到较少的次优路由问题。
3.3 完整的互联网路由表
最后一个选择是从两个 ISP 接收完整的 Internet 路由表,这需要更多资源,但我们将能够做出最佳路由决策。
- 路径矢量
BGP 被称为路径矢量路由协议。这是什么意思?看看这张图片:
有 4 个自治系统,正在运行 BGP 来交换路由信息。在 AS 1 中,有网络 1.1.1.0 /24,它被通告给 AS 2、AS 3 和 AS 4。
如果我们查看 AS4 中路由器的 BGP 表,我们将看到网络 1.1.1.0 /24,但它还存储了我们必须通过的路径才能到达那里,它将存储前缀以及它必须穿过的路径才能到达 1.1.1.0 /24。下面是一个真正的 BGP 路由器的例子:
route-views.optus.net.au>show ip bgp
BGP table version is 128380331, local router ID is 203.202.125.6
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, x best-external
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
* 1.0.0.0/24 202.160.242.71 0 7473 15169 i
通过使用show ip bgp命令,可以查看 BGP 表,我们看到该路由器知道网络 1.0.0.0 /24。下一跳 IP 地址为 202.160.242.71,在该行的末尾,您会看到编号为 7473 15169 的路径。这些是我们必须通过的自治系统才能到达该网络。
- BGP路由选择
所有 IGP 的共同点是,他们都想找到到达目的地的最短路径,BGP 的工作方式不同,因为自治系统属于不同的 ISP 或组织,我们希望能够有选择地影响我们的路由。看看这个例子:
BGP 允许我们使用自治系统级别的路由策略。在上图中,有 9 个自治系统,而在 AS 9 中,有网络 192.168.9.0 /24,如果我们查看 AS 1,那么我们可以通过许多不同的路径到达 AS 9 中的网络 192.168.9.0 /24。
您可以选择出口路径……AS1 可以将流量发送到 AS 2 或 AS4,而不会选择其他自治系统。
每个自治系统只会通告通往自治系统的最佳路径,AS 1 只会从 AS 2 和 AS 4了解最佳路径,除非它们的最佳路径失败……只有这样您才能了解第二个最佳路径。
BGP 使用一组BGP 属性来选择路径,这些将在其他章节中介绍。
结论
希望本篇有助于理解 BGP 的基础知识以及使用它的原因,在其他课程中,将仔细研究外部和内部 BGP 的配置以及 BGP 路径选择的工作原理。
关键词:以及为啥使用BGP(为啥使用?)