BGP 多线机房是什么:单线、双线、BGP 与“伪多线”的辨别方法
“几线”这个词在商品页上出现过无数次,但它描述的是机房的接入关系,不是质量等级。单线是只接一家运营商,双线常见是一家加另一家,三线再加一家,多线通常指接入了三家以上。这些说法全部只讲了“接了几家”,没有讲“接进来之后怎么用”。
真正决定体验的恰恰是后半句:接进来的多家运营商,是否由同一套路由决策来调度。这就是 BGP 多线与伪多线的分界。判据只有一条,而且很硬:同一个 IP 是否对所有运营商都能最优到达。
本文只讲机制。单线、双线、三线、多线的接入结构各是什么样,真 BGP 需要哪些构成要件,伪多线通常怎么实现,怎么用 AS 号与回程路径验证,以及 BGP 到底能解决什么、不能解决什么。具体线路的谱系与测法属于另一个层面,不在这里展开。
一、把“几线”这个词拆开看
1.1 线路、运营商与自治系统不是同一个概念
这三个词经常被混用,但它们的层次不同。运营商是持有网络的公司,自治系统是它在全球路由表里的身份,线路是流量实际走过的那一串连接。谈“线路好不好”时,说的是第三层的实际表现;谈“几线”时,说的其实是第一层的数量。
把三者分开之后,很多说法就不再含糊:一家机房可以只接一家运营商,但它接的那家运营商内部有多个出口与多条路径;也可以同时接五家运营商,却因为每家只买了很小的容量,每条都很拥塞。数量与质量从来是两件事,把两者混在一起谈,讨论就没法收敛。更完整的线路分层与判读方法可以参考 海外服务器线路谱系。
自治系统这个概念后面会反复用到。每个自治系统有一个全球唯一的 AS 号,并对外宣告自己负责的 IP 段。谁持有 AS 号,谁就有资格与别的自治系统谈路由,这个资格是 BGP 多线的前提。没有它,机房在自己网络内部怎么调都可以,但对外的路径走向仍由上游决定。
1.2 “几线”说的是接入关系,不是质量等级
“双线机房”“三线机房”听起来像分级,其实是在描述接入了几家运营商。一个双线机房如果两条上行的容量都很小,表现可能远不如一个单线但容量充裕的机房。反过来,一个单线机房如果买的是高等级线路且容量宽松,在自家运营商方向上的体验可能好过多线机房的对应方向。
同理,“BGP 多线”也不是一个等级,而是一种接入方式。它说明这家机房自己持有 AS 号,把网段同时向多家运营商宣告,由运营商之间的路由决策决定路径。它不承诺容量、不承诺延迟,也不承诺不丢包。这三件事分别由带宽采购、线路等级和骨干拥塞状况决定,与是否 BGP 无关。
理解这一层,采购时的提问方式就会变:不要问“你们是几线”,而要问“你们的 AS 号是多少、向上接了几家、每条上行多少容量、是否做了双向优化”。前一个问题得到的通常是形容词,后一个问题得到的才是事实。
二、单线、双线、三线与多线的实际差别
2.1 单线:只接一家运营商
单线机房只与一家运营商互联。它的路径最可预测,成本也最低,因为只需要买一家运营商的带宽,不需要为多家互联分别付费。代价是其他运营商的用户必须经过跨网互联点才能到达,而这一段互联的容量通常不由你控制,晚高峰排队明显。
单线并不等于不能用。如果业务面向的用户高度集中在某一家运营商,例如某个区域的企业内网用户;或者你已经在前面加了 CDN,把绝大部分回程压力从源站移走,那么单线的性价比可能优于多线。选单线的关键不是省钱,而是确认用户结构与源站角色。
2.2 双线与三线:覆盖主流用户
双线通常是电信加联通,三线再加移动。它的思路是覆盖主流用户群体,而不是追求全向最优。这个思路在成本上很合理:三家运营商覆盖了绝大多数宽带与移动用户,剩下的边际收益递减。
但“三线”的实现方式可以很不一样。有的机房真的为每家运营商购买了容量并安排了对外的路由宣告,路径由网络计算;有的机房只是买了三个不同运营商的 IP 段,让用户或 DNS 自己去选。这两种实现都符合“三线”的字面描述,实际表现却相差一个层级。差别就在下一章要讲的:谁在做路由决策。
2.3 多线与 BGP 多线:自己持有 AS 号
多线一般指接入了三家以上运营商。BGP 多线在此之上还有一个关键条件:机房自己持有 AS 号与 IP 段,与多家运营商建立 BGP 邻居,把同一段 IP 同时向所有邻居宣告。
这样做的效果是,任何运营商的用户访问这个 IP 时,路径都由运营商之间的路由决策算出来,而不是由机房内部的分流设备指定。这也意味着机房对自己的 IP 拥有更强的可控性:更换上行、新增运营商、做故障切换,都可以在自己的路由策略里完成,不需要更改客户的配置。
| 接入方式 | 接入的运营商 | IP 与 AS 归属 | 路径由谁决定 | 典型故障表现 |
|---|---|---|---|---|
| 单线 | 一家 | 多为上游分配 | 唯一一条上行 | 上行中断即整体不可用 |
| 双线 | 常见两家 | 多为上游分配,或机房自持 | 策略路由或对外宣告 | 一条中断时部分来源不可达 |
| 三线 | 常见三家 | 混合,取决于实现 | 策略路由、DNS 或 BGP | 分流规则失效则退化为单线 |
| BGP 多线 | 三家以上 | 机房自持 AS 号与 IP 段 | 运营商之间的路由决策 | 会话断开后自动收敛到剩余上行 |
这张表只对比接入结构,不涉及质量。判断质量还要看每条上行的容量与线路等级。
三、真 BGP 的构成要件
3.1 AS 号与 IP 段:宣告权在谁手里
真 BGP 的第一个要件是宣告权。机房必须持有自己的 AS 号,并且拥有可以向外界宣告的 IP 段。如果一家机房用的是上游运营商分配给它的一段地址,那么这段地址的路由宣告权在上游手里,机房最多只能在自己网络内部做局部调整,对外无法表达“我这边有多条路”。
判断方法很直接:查这个 IP 属于哪个 AS。如果它属于机房自己的 AS,说明机房是宣告方;如果它属于某家运营商或某个转售商,说明机房在这段地址上没有路由自主权。这一条可以单独筛掉相当一部分自称 BGP 的机房。
需要说明的是,持有 AS 号本身有门槛但不神秘:申请、维护、与上游建立会话都需要成本与运维能力。所以小机房只有一个 AS 号、两条上行,也是完全正常的形态,它符合 BGP 的定义,只是规模小。
3.2 BGP 邻居与路由决策:走哪条路由谁决定
第二个要件是邻居关系。机房需要与多家上游建立 BGP 会话,互相交换可达性信息。建立之后,走哪条路由不再由管理员手工指定,而是由选路过程决定:先比较本地优先级与 AS 路径长度,再依次比较其他属性,最后选出最优路径写入转发表。
这一点是理解“伪多线”的关键。如果一个方案里,路径是由机房的策略路由、静态路由或者 DNS 决定的,那么真正的路由决策并没有在运营商之间发生,流量只是在机房内部被分配到某条上行。用户到机房的这一段可能被调得不错,但从机房回到用户的那一段仍然只挂在一条运营商上。
选路过程的另一个含义是:BGP 选的是“按属性最优”,不是“延迟最低”。默认属性算出来的路径,可能比另一条可达路径多绕一段。这也是为什么有些机房需要额外做路由策略调整,才能让特定方向走得更顺。
四、“伪多线”的三种常见形态
4.1 形态一:策略路由与静态分流
第一种做法是在机房内部按源地址或按目标网段做策略路由。流量进来后,设备根据规则把它推向某条上行。对外看,这家机房确实接了多家运营商,也确实能让不同来源的流量走不同出口,用 traceroute 看甚至有模有样。
问题出在回程。策略路由影响的是机房往外发的方向,而回程路径由对端运营商的选路决定。如果机房的 IP 段只在一家运营商那里宣告,其他运营商用户的回程仍然要经过跨网互联,前面省下的那点路径优势会被回程抵消掉。
还有一种变体是“分方向优化”:去程走 A,回程走 B。这种不对称本身很常见,甚至可能是花钱买来的优化结果。但如果 A 与 B 中只有一条是真正优质线路,而宣传口径按最好的那条描述,体验就会与描述产生落差。
4.2 形态二:多 IP 加 DNS 分线路解析
第二种做法是买多个运营商的 IP 段,再用 DNS 分线路解析:电信用户解析到 A 地址,联通用户解析到 B 地址,移动用户解析到 C 地址。这种做法在外表上最难分辨,因为用户在自己那条宽带上测出来的路径确实是对的。
它的代价主要在运维上。多个 IP 意味着证书、白名单、监控、日志、防火墙规则都要成倍处理;DNS 缓存会让切换变慢,故障时用户可能长时间解析到已经不通的地址;任何一个使用固定 IP 的第三方调用方,都会被牢牢固定在一条线路上。这种做法适合对成本敏感、且能接受运维复杂度的场景,但它不是 BGP。
DNS 分线路解析本身是有价值的机制,与 CDN 调度属于同一类思路,可以对照 DNS 智能解析与线路分流 理解它的适用边界。区别在于:DNS 决定用户连到哪个 IP,BGP 决定同一个 IP 的路径怎么走。前者在解析层做选择,后者在网络层做选择。
4.3 形态三:双网卡双 IP,让用户自己选
第三种做法最原始:机器上挂两块网卡、两个地址,分别接不同运营商,由用户自己选择连哪个。这种做法有时被包装成“双线接入”,甚至被包装成“多线机房”。
它的问题很明显:选择权在用户手里,而绝大多数用户并不知道自己该选哪个,也不知道自己那条宽带实际走的是哪家运营商的出口;即使知道,一个域名在 DNS 里也只能返回其中一个地址。这种方式本质上没有解决跨网问题,只是把问题转移给了用户。
| 判据 | 真 BGP 多线 | 伪多线 |
|---|---|---|
| IP 与 AS 归属 | 机房自持 AS 号与 IP 段 | 多为上游分配,或买多家零散地址 |
| 对外宣告 | 同一 IP 向所有邻居宣告 | 不宣告,或按线路分别宣告不同 IP |
| 路由决策位置 | 运营商之间,按选路属性计算 | 机房内部,按策略或 DNS 指定 |
| 回程是否最优 | 回程同样参与选路 | 回程通常仍走单运营商 |
| 故障切换方式 | 会话断开后路由自动收敛 | 依赖脚本改策略、改解析或人工切换 |
| 客户端复杂度 | 一个 IP 即可 | 多 IP、多域名或多拨号方案 |
这张表可以直接当作采购时的提问清单。对方能清楚回答前四行的,基本可以判断是真实的宣告结构;回避其中任何一行,都值得追问。
五、怎么验证一个机房是不是真 BGP
5.1 看 AS 号:whois 与路由查询
第一步是查地址属于哪个 AS。方法有两类:命令行用 whois 查这个地址的注册信息,或者用公开的路由查询服务看这个前缀当前由哪个 AS 宣告、经由哪些上游可见。两者要一起看,因为注册信息记录的是分配关系,路由表反映的是当下实际的宣告关系。
如果这个前缀的 origin AS 是机房自己的 AS 号,并且路由表里能看到它的多条上游路径,说明它至少在真实宣告。如果 origin AS 是某家运营商,那这家机房只是在使用别人的网段。商用网络平台的结构说明也可以作为参考,例如 Zenlayer 这类平台的网络页面会列出互联与接入信息。
whois 203.0.113.10
mtr -rwzc 100 203.0.113.10
traceroute 203.0.113.10
上面三个命令给出的信息并不相同:whois 给注册与分配信息,traceroute 给实际转发路径,mtr 在路径之上再叠一层逐跳统计。注册信息可能滞后,实际路径才是当下的真相。
5.2 逐跳看路径,并且一定要看回程
第二步是逐跳看路径里的 AS 号。traceroute 或 mtr 的每一跳都可以反查所属 AS,把整条路径的 AS 序列列出来,就能看出流量经过了几家运营商、有没有绕到与目的地无关的地区、有没有在某一跳之后突然掉进低优先级骨干。
关键在于回程。很多人在自己的机器上 traceroute 到服务器,看到的只是去程;而用户的体验主要由回程决定,因为网页、接口返回、视频流都是回程方向的数据。要判断回程,需要在服务器上反向 traceroute 回你自己的地址,并把结果与去程并排比较。单看去程就下结论,是这类判断中最常见的错误。
如果是自建业务,这一步可以自己完成;如果是采购决策,可以要求服务商提供分运营商、分时段的双向路径截图,并注意截图上的时间戳。没有时间戳的路径截图价值有限,因为路径随时段变化。
5.3 去程与回程为什么常常不对称
同一台机器,去程走一家运营商、回程走另一家,是完全正常的现象。原因是两家运营商之间的互联是双向的,但两侧的容量、策略与结算关系不对称,回程可能选择另一条更空的路。跨境链路上这种现象尤其普遍。
不对称本身不是缺陷,甚至有时正是优化的结果。问题在于不对称会让单侧测速失真:你看到的延迟数字,可能是在描述一条用户根本不会走的路径。这也是为什么判断多线质量必须以回程为准,并且要分运营商分别看。具体到某个方向上的线路等级差异,可以参考 CN2 GIA 线路完全指南 里的路径判读方法。
六、BGP 能解决什么、不能解决什么
6.1 BGP 不等于快
BGP 的价值是路径选择,不是更低延迟。它做的事情是在多条可达路径里挑一条当前最优的,而“最优”是按路由属性算出来的,不一定是延迟最小的那条,也不保证那条路径的容量宽松。
一个机房做了 BGP,只能说明它在故障时有替代路径,不说明它在正常情况下比单线更快。把 BGP 当成加速手段是常见误解。真正的加速要靠线路等级与容量:同样是 BGP 多线,接高等级线路与接普通线路,体验可以完全不同,而这两者的差别不在 BGP 这个机制上。
6.2 BGP 不等于不丢包,“BGP 机房”也不是质量背书
拥塞发生在运营商骨干上。BGP 能做的只是在检测到某条路径不可达时换一条,但换过去的那条同样可能拥塞,甚至在高峰时段更拥塞。BGP 的收敛是为了保持连通性,不是为了消除拥塞带来的丢包与抖动。
同样,“我们是 BGP 机房”这句话不构成任何质量承诺。一家小机房可能只有一个 AS 号、两条上行、很小的容量,它完全符合 BGP 多线的定义,但表现可能远不如一个容量充裕的双线机房。判断质量仍然要回到三条:每条上行的容量、线路等级、晚高峰的实际表现。
七、把机制换成选型判据
7.1 多线的价值在稳定性,不在延迟
真正值得为多线付钱的理由是故障切换:一条上行抖动或中断时,路由自动收敛到另一条,业务不至于整体不可用。这是单线做不到的,也是多线溢价最实在的回报。延迟方面的收益是附带品,而且不一定存在。
如果你的业务对连续性要求高,例如在线交易、对外 API、需要长时间保持连接的实时通信,那么多线带来的冗余是有意义的。如果只是展示型站点,且已经用 CDN 把用户请求挡在前面,源站只服务回源流量,多线的边际价值会明显下降。
7.2 上行带宽是共享的,出口数字要看口径
BGP 多线机房宣传的“XX Gbps 出口”,通常是整个机房所有客户共享的总容量,而不是分给单台机器的带宽。两者相差可能好几个数量级,把出口总量当成自己的可用带宽,是最常见的误读。托管型机房可以把总容量堆得很高,但单机限速往往只有几十 Mbps 甚至更低,这类结构可以参考 ColoCrossing 这类以机房资源起家的服务商的产品描述来对照理解。
问清三件事就能避免误判:这台机器实际限速多少、限速是在机房入口做还是在交换机端口做、超出售卖值之后的处理是丢包还是降速。这三个答案决定你在高峰时段的真实体验,比任何一个出口总量数字都重要。共享出口的具体计费口径与带宽池机制,可以接着看 服务器带宽计费模型。
回到最初的问题:单线、双线、三线、多线描述的是接入关系,BGP 描述的是路由自主权,两者叠加才构成“BGP 多线”。它买到的能力是路径可以由网络自己算、上行断了能自动切,而不是更快、更不丢包或者更便宜。地区性的线路取舍可以参考 香港服务器线路怎么看;如果还在整理需求,服务器选型的基本决策顺序 提供了从用户结构出发的判断路径;更多同类内容见 云服务器 分类。
来源:16IDC 原创,具体计费口径、线路与条款以各服务商官网文档及合同为准。
原文来源:16IDC ↗