← 全部文章

你的骨干不是互联网的骨干

五个网络触达了我表中 94% 的起源方。把观测点挪一个 AS_PATH 跳,就换成另外五个了。

Michel Wijnberg

上一篇的结尾是一个看起来像是关于互联网的事实:在一张百万路径的表里,五个自治系统触达了 94% 的起源 AS。它们是:

AS2516、AS7575、AS2497、AS6939、AS1221。

现在说要紧的部分。这些是亚太网络,它们在这里的主导地位是这个观测点及其两条上游的性质,而不是 对某个全球骨干的测量。我刻意不主张是采集器的地理位置导致了这一点:表所显示的,是这两条特定 上游把哪些网络放在了这些特定路径上,而上游选择、策略与商业关系全都缠在里面。在同一次测量中, Lumen 占 11%,Cogent 占 6%,如果让工程师列举互联网骨干,多数人会毫不犹豫地说出这两家。

把馈送沿 AS_PATH 挪一跳,答案就是另外五个名字。

本文讲的就是这件事,因为它不是奇闻。它是决定一个工具究竟在告诉你关于互联网的事、还是关于你自己 接入状况的事的那个性质,而几乎没有什么会标明是哪一种。


那个排名实际在测量什么

“中转触达”听起来像一个全局性质。它的计算方式是:我表里的起源 AS 中,有多少落在这个 AS 的锥 之内。这句话里的每一个词都被限定在馈送范围内,而这个锥是在支配树上取的,而上一篇已经说明支配树 是真实图的一个近似,而不是对它的描述。

所以上面五个名字的诚实读法不是”这就是互联网的核心”。而是:

鉴于这台路由器所处的位置,以及它的两条上游选择发送了什么,它的可达性所依托的就是这五个网络。

这是一个真正有用的答案。在决定重谈哪份中转合同之前,你想要的正是它。它只是无法转让给别人;一个 把它当作可转让之物来呈现的产品,等于把作者的地理位置当功能出货。

因此 Osprey 的代码里没有任何一级网络(tier-1)清单,将来也不会有。排名是按馈送、从你的表出发、 每一次重新计算的。写死的清单对写它的人是对的,对其他所有人则是悄然错误的,而且这种失败不可见: 那些名字看上去都很合理。


同一张表,第三个问题,第四个答案

到目前为止的系列:按前缀数排名,你得到的是拆分广告者。按中转触达排名,你得到的是上面那五个。 下面是第三根轴,我们做它是因为”我该和谁对等互联”又是另一个问题。

按起源方,对经由中转到达你的地址空间排名,跳数取二及以上:

AS1136 (KPN)、AS6805 (Telefónica Germany)、AS9644 (SK Telecom)、AS3243 (MEO)、 AS4739 (iiNet)。

接入网。前面两份列表里一个都没有。这些是其用户目前正经由你付费的对象抵达的网络,而这恰好就是 对等互联负责人想要的那个集合。

而且这根轴比前缀数陡峭得多,这正是它可用的原因。下面两列是在同一个总体上测量的,即经由中转到达 的起源方,因此彼此可以直接比较。(它们不能与上一篇的 8.3% 比较:那一个是对整张表按前缀数取 前 12,分母不同。)

对经由中转总体的覆盖按地址空间按前缀数
前 1242.2%10.9%
前 4863.5%27.9%
同一个视图切换到地址空间轴之后的样子,跑的是 DN42 馈送而不是全表。只有被命名的候选者被画出来,而表头把残余写明了:984 个只经由中转才能到达的网络,被命名的十二个握有 150 万地址中的 96.4%,其余不予绘制
同一个视图切换到地址空间轴之后的样子,跑的是 DN42 馈送而不是全表。只有被命名的候选者被画出来,而表头把残余写明了:984 个只经由中转才能到达的网络,被命名的十二个握有 150 万地址中的 96.4%,其余不予绘制

那是这根轴跑在另一条馈送上的样子,是 DN42 而不是全表,所以那些名字和百分比都是它自己的。能迁移的 是表头那一行:它说明这根轴谈的是多少个网络、被画出来的那些握有其中多少空间,以及剩下的并不在 屏幕上。一个把最后这半句丢掉的视图,看上去一模一样,意思却全然不同。

三根轴,三个互不相交的答案,一张表。没有哪一个是那个排名。每一个都在回答某人真正抱有的问题, 而这里唯一可能的不诚实,就是把其中之一不加标注地端出来。


我们自己的实现假设了两处并不存在的形状

两处都值得记下来,因为它们是同一个错误换了身衣服:从局部结构计算全局性质。

对子树求和不是并集。 最初的设计在客户端计算中转空间,做法是把某个节点之下所有东西的地址空间 加起来。相对真实的并集,这会偏差 1.3 到 3.6 倍,因为一个起源方的地址空间并不会全都经由同 一个中转到达。经两条路到达你的空间会被数两次,而这个误差不是一个可以标定掉的常数;它取决于客户 恰好有多少是多宿的。这个字段现在改为在服务端计算,作为对穿过该 AS 的前缀所取的真正并集,否则 就干脆不提供。

DN42 馈送上某个 AS 的档案卡。中转触达被给出了两次:作为树求和的 1,112 个地址,以及真正经由这个 AS 到达的、去重后的 3,112 个地址空间,并附有一条注记说明树求和会把每个起源方只归到一个父节点之下,而并集才是更大、也更真实的那个数字
DN42 馈送上某个 AS 的档案卡。中转触达被给出了两次:作为树求和的 1,112 个地址,以及真正经由这个 AS 到达的、去重后的 3,112 个地址空间,并附有一条注记说明树求和会把每个起源方只归到一个父节点之下,而并集才是更大、也更真实的那个数字

这处修正是摆在产品里的,而不是藏在产品背后。两个数字都被显示出来,较小的那个被标注为树求和, 下面的注记说明哪一个才是诚实的答案以及为什么。这比只给一个数字要多花不少字,而这正是”一个数字” 与”一个你可以据以行动的数字”之间的差别。

候选者未必是叶子。 第三根轴的第一版实现只取叶子节点,理由是起源方位于边缘。它因此跳过了 承载全部起源前缀 37% 的 276 个 AS。AS9808 起源了 14,214 个前缀,同时底下还有五个客户。 这正是上一篇那个 94.4% 的数字以缺陷而非统计的形式现身:如果几乎每个中转自身也起源,那么”起源方 就是叶子”就不是一种简化,而是一个丢掉你三分之一答案的过滤器。

两处都是靠对着一张真实的表做测量才抓到的。两处都不会被 DN42 抓到,那里结构小到近似恰好成立。


一个在这里毫无作用、在你那里却会起效的过滤器

再来一个观测视角的产物,这个几乎有点好笑。

第三根轴有一个跳数过滤器:只显示距离二及以上的起源方,以排除你的直连邻居。在这条馈送上,它移除 了 7,578 个起源方中的 3 个。它基本什么也没做,因为这个观测点是一个只有两条上游的末梢网络, 因而几乎没有直连邻居可排除。

在一个有真实对等互联的网络里,同一个控件就很有分量。同样的代码、同样的默认值,其有用程度会随着 运行地点在”决定性”和”形同虚设”之间摆动。

我们保留了它,因为这根轴的价值在于空间测量而不在过滤器,也因为另一个选项是照着单一观测点去调 一个控件。但它很好地说明了”网络就该长这样”的直觉,可以离任何一个具体网络有多远。


缺席同样是观测视角形状的

第 13 篇论证过:你表里缺的东西不是远,而是缺席,而这种缺席 没有半径。观测视角这个角度把那个想法收了尾。

一条路径缺席的四个原因,每一个都是你的位置的性质。有东西没有被广告给你。你的策略拒绝 了它。你的馈送上游的某个聚合器把它压平了。你所在其后的某台路由服务器没有留下跳。把同一 套代码指向另一张表,就会有另一组东西变得不可见,无声无息,而且没有一个会被标记出来。

所以这些空缺不是可以靠在同一个地点增加馈送来平均掉的噪声。它们是由你所处的位置结构化出来的, 而这是本文一路所作论证的最强形式:你的观测视角不只是把互联网排出了不同的次序,它决定了互联网的 哪些部分对你而言存在。


要点

本文中的每一个数字都是从一张真实的表里正确算出来的,而它们没有一个是关于互联网的事实。

你的表所依托的五个网络、那个会收敛的排名、某个过滤器是否起作用,乃至”起源方是叶子”是否是一个安全 的简化:这一切都随着观测视角的移动而移动,其中有两处移动得足够远,构成了缺陷。

一个运营者问”从这里看互联网是什么样”,问的是对的问题。真正在起作用的词是从这里,而一个把它 丢掉的视图并不是变得更简单了。它是在用别人的连通性,回答一个没有人提出的问题。


下一篇:维持一条全量馈送要花多少代价,用测量而不是估算,包括被这次测量干掉的我们自己的一个默认值。 一条全量馈送的真实代价。