一位客户在全面断网一小时后打电话给我们。他们为冗余互联网付费已有六年:两家服务商、两份账单、机柜里两台路由器。两条线路都断了。

原因是两条街外的一个承包商在定向钻孔时钻穿了一根管道。两条服务都经过这根管道。从来没人检查过,因为从纸面上看,设计没有任何问题。

这是我们在网络连接方面最常见的发现,而且几乎从来无法从文件资料中看出来。

并不存在的冗余

从两家公司购买两条互联网服务,感觉就像有了冗余。是否真是如此,完全取决于底层是什么,而在澳大利亚,如实的答案往往是“同一个东西”。

在这个国家,大多数企业互联网都通过销售方并不拥有的基础设施交付。两家服务商可能在转售同一款批发产品,经过同一条物理光纤,进入同一个楼宇引入口,终结在同一个交换局,上游中转也购自同样的两三家运营商。您有两份合同,却只有一个故障域。

冗余不是服务的数量,而是相互独立的故障方式的数量。

残酷之处在于,这种设计能通过您可能做的每一项测试。拔掉一号路由器,流量就转到二号路由器。故障切换运行完美,因为您测试的是那一层本来就不会出问题的部分。共用的那一层是物理路径,而拔掉任何设备都测试不到它。

如何找出共同的故障点

向每家服务商问五个问题。答案要拿到书面的,因为第一次的回答通常只是销售人员的乐观说法。

  1. 这项服务是通过谁的物理网络交付的?不是谁给您开账单,而是谁拥有光纤。如果两家的答案相同,就到此为止;您并没有冗余。
  2. 线缆从哪里、经由什么路线进入大楼?两条服务经过同一个竖井或同一个管井进入,就会一起出故障。多路由楼宇引入是一项真实存在、可以购买的服务,它价格更高是有原因的。
  3. 它终结在哪个交换局或接入点?同一个交换局意味着那里的一次停电或硬件故障会让两条服务同时中断。
  4. 您的上游中转是从谁那里购买的?两家服务商若共用同一个上游,那个上游出问题时两家都会受影响。
  5. 最后一公里是同一种技术吗?两条共用同一条沟槽的光纤服务会一起出故障。光纤再加上一条真正独立的路径,例如另一家运营商的光纤、固定无线或 5G,就能独立地出故障,即使备用线路速度较慢。

一条刻意选择的、速度较慢但真正独立的第二路径,胜过一条与主线路共用管道的高速路径。在故障期间,服务降级和完全没有服务是截然不同的两回事。

真正的多宿主是什么样子

一旦物理部分做对了,技术部分就很简单。您获取自己的 IP 地址空间和自己的自治系统号,并使用 BGP 向两家服务商通告该地址空间。

关键特性在于地址归您所有。它们不属于任何一家服务商。当一号链路故障时,您的地址仍可通过二号链路访问。无需重新编址。没有 DNS 变更,也不用等待 TTL 过期。入站流量持续正常:您的邮件、您的 VPN、您面向客户的服务,以及合作伙伴三年前按 IP 加入白名单的 API。

这正是关键所在,也是更便宜的方案做不到的。

场景两条链路,不使用 BGPBGP 多宿主
故障时的出站流量恢复恢复
故障时的入站服务中断,公网 IP 改变持续正常
VPN 隧道需重新连接到新 IP不受影响
合作伙伴维护的 IP 白名单更新之前一直失败不受影响
日后更换服务商全部重新编址保留您的地址
部署复杂度低中等,需要专业知识

故障切换需要几秒到一两分钟才能传播开来,具体取决于计时器和检测方式。加入 BFD 后,故障检测可缩短到一秒以内。这比本地切换慢,但它是全局性的:互联网上的每个网络都会学到新的路径,这正是入站流量得以保持的原因。

您需要自己的 ASN 吗?

在本地区,ASN 和地址空间都需要向 APNIC 申请,通常通过成为会员的方式。这是一项需要说明理由的申请,而不是一次购买。您需要证明自己确实在做多宿主。

只要符合以下任何一条,就值得这样做:

  • 您运行入站服务:邮件、VPN 集中器、客户门户、API。
  • 合作伙伴或客户把您的 IP 地址加入了白名单。
  • 一小时停机的损失超过第二条服务一年的费用。
  • 您预计会更换服务商,而且不想重新编址。

如果您的互联网用途确实只有出站,就不值得这样做:员工上网和使用 SaaS,没有任何入站服务,所有系统都托管在其他云端。这种情况下,两条链路加上合理的故障切换就足够了,IPv4 稀缺带来的溢价加上 BGP 专业知识的投入,对您几乎没有回报。我们经常劝企业不要这样做。

关于 IPv4 的一点规划提示:地址分配一直很紧张,而且已经持续多年。IPv6 没有这个问题,既然您无论如何都要做这项工作,从第一天起就采用双栈几乎不会增加额外成本,还能省去日后的迁移。

SD-WAN 适合做什么,不适合做什么

SD-WAN 常被当作解决这个问题的方案来推销,它确实能很好地解决一个真实存在的问题。它按应用把出站会话分配到多条链路上,对延迟、丢包和抖动作出反应,而不只是对链路断开作出反应,在处理“视频通话很糟糕,但链路在技术上是通的”这类故障时,远比 BGP 做得好。

它做不到的,是为您提供独立于服务商的地址。如果您的公网 IP 来自服务商,那么该服务商的链路故障时它们仍会改变,您的入站服务仍会中断。SD-WAN 无法解决这一点,因为问题在于地址归谁所有。

两者是互补的。我们常构建的一种设计是:通过 BGP 通告您自己的地址空间,实现入站可达性和对服务商的独立性,同时由 SD-WAN 负责出站路径选择和应用流量调度。各自做自己擅长的事。

实话实说:成本是多少

第二条服务很少是昂贵的部分。让人措手不及的成本是:

  • 多样化的物理路径。如果真正的路径多样性需要新的土建工程,例如从不同方向新建第二个引入口,这一项可能超过其他所有项目的总和。在围绕它进行设计之前,先拿到报价。
  • 能正确运行 BGP 的硬件。承载完整的互联网路由表需要足够的内存。消费级和小型企业防火墙做不到。您可以用默认路由加部分路由表来避免这一点,这对大多数企业来说是正确的选择,也应该由工程师经过深思熟虑后决定。
  • APNIC 会员资格和资源。持续性的、不高的、可预测的费用。
  • 专业知识。BGP 配置错误特别容易造成故障而不是防止故障,而且会影响到其他人。一条范围设置错误的路由通告,可能会把本来不属于您的流量引入黑洞。生产环境不是学习的地方。

把这些和一个没人愿意计算的数字放在一起比较:断网一天实际会让您损失多少。员工无法工作,订单无法到达,如果使用 VoIP,电话也会中断。大多数算过这笔账的企业,大约十分钟内就会发现答案显而易见,无论是哪个方向。

如果您只记住一件事:去问问您的两家服务商,他们用的是谁的光纤。问这个问题不花钱,而正是这个问题本可以让我们那位客户免于损失一个下午。

常见问题

没有找到您的问题? 咨询工程师 →

什么是 BGP 多宿主?

指连接两家或更多互联网服务商,并使用边界网关协议(BGP)向所有服务商通告您自己的 IP 地址空间。因为地址归您所有,流量可以通过任何一家正常工作的服务商到达您。链路故障时您的 IP 保持不变,因此无需重新编址,也无需等待 DNS 变更生效。

为什么两条互联网服务不等于冗余?

因为两条服务经常共用物理基础设施。两家服务商可能转售同一条底层光纤,经过同一个楼宇引入口和管井,并终结在同一个交换局。一台挖掘机、该交换局的一次停电,或一次上游故障,都会让两条服务同时中断。冗余取决于相互独立的故障路径,而不是账单的数量。

实现多宿主需要自己的 ASN 吗?

要实现真正独立于服务商的多宿主,需要。您需要一个自治系统号(ASN)和自己的 IP 地址空间,在本地区两者都从 APNIC 获得。没有它们,您仍然可以运行两条带故障切换的链路,但切换时您的公网 IP 地址会改变,这会导致入站服务、VPN 以及所有按 IP 加入白名单的服务中断。

BGP 故障切换需要多长时间?

通常需要几秒到一两分钟,整个互联网才能完成收敛,具体取决于会话计时器以及故障被检测到的速度。使用 BFD 后,检测时间可降到远低于一秒。这比本地链路切换慢,但它是全局性的:互联网上的每个网络都会学到新的路径,正是这一点让您的入站流量保持正常。

SD-WAN 能替代 BGP 多宿主吗?

不能,它们解决的是问题的不同两半。SD-WAN 非常擅长处理出站流量:根据应用和链路健康状况把会话分配到多条链路上。但它不能提供独立于服务商的地址,因此主链路故障时入站服务仍会中断,除非您同时使用自己的地址空间运行 BGP。很多网络两者都用。