Hot Potato Routing——烫手的山芋。指的是 ISP 在路由转发的时候,不会选择最优的路线,而是会选择最快能把这个包转出自己的自治域的路线。
如下图的路由中,假设有 3 个 ISP,分别控制 3 个自治系统AS(Autonomous System)。如果有一个包要从 A 转发到 X,那么在 AS1 中,A 路由器将会把包转发给 B,B 如果采用 Hot Potato Routing,将会直接把包转发给 D,完整的路线是 B-D-G-F-X,图中蓝色线路所示。而实际上最短的路径应该是 A-B-E-F-X(假设途中所有线路的 metric 相等,我们只看跳数)。

B 路由器之所以这样做,是因为在运营商的网络里,质量是第二要考虑的内容,Policy 才是第一要考虑的。路由器 B 已经知道全局最优路线是 E,但是如果选择全局最优路线,那么就需要经过 AS1 的另一台路由器 E,即 B-E 要转发这个包,但是如果直接丢给 D,E 就不用做转发了,这样,AS1 的工作就最少。
维基百科中说,Hot Potato Routing 是大部分运营商的路由策略。Hot-potato routing (or “closest exit routing”) is the normal behavior generally employed by most ISPs.
每个人都在用最自私的策略来降低自己的工作量,但是却让全局的工作量增加了,自己的工作量实际上也是增加了的,整体的服务质量却降低了——用户的请求需要绕得更远才能到达目标。
这不就是很多大公司的工作方式吗?
大公司给每个人规定了 KPI(就不提 OKR 了,OKR 在大部分公司的实践其实就是 KPI)。收到新的任务,每个人做的最优选择就是把和 KPI 不相关的工作「转发」出去。
刚加入蚂蚁金服的时候,带我的师兄让我找 A 同事要一个测试环境,来熟悉我要接手的业务。于是我去找 A,A 让我找 B,B 让我找 C——一直找了 6 个人,给我一点小小的震撼,我上家公司技术人员才不过 20 人,现在入职 1 天就认识了 6 个人,不愧是大公司。最神奇的是,最后一个人也没给我答案,而是让我找第一个人 A,居然出现环路了。
在蚂蚁的时光,有一半是在「闭关室」度过的。「闭关」也是一个我第一次经历、现在想想很可笑的事情。「闭关」就是一个团队不在原来的工位办公了,大家都搬到一个会议室里面工作,会议室预定几个月。美名为「项目攻关」。别人过来问问题,提需求,我们都可以说「我们在闭关,需要专心做我们的项目。」但是我们的工作也会遇到问题,需要其他的团队配合,于是我们去找其他团队合作,其他团队也是「不好意思,我们在闭关。」最后就成了你也在闭关,他也在闭关,大家都在闭关。
我觉得最理想的工作方式是像 DNS Recursive Resolver 一样。有人来问我问题,我应该给他解答。如果我不知道答案,那么我应该去问知道答案的人,得到答案告诉原来的提问者,这样一来我也知道了答案,下次如果有人来问,我就可以直接回答了,就像 DNS Recursive Resolver 的缓存一样。如果比较忙,我没有时间去问下一个人,应该拉一个群,加上提问者和能解决问题的人,由我来解释一下问题和背景。因为我经过和提问者的沟通,多少理解需求和背景了,很多提问者无法一次性把我们需要的背景解释清楚,我现在如果在群里一次性说明背景,就可以减少提问者和其他人的沟通成本。如果每个人都这么做的话,那么所有的问题都可以用最快的方式解决,整体花费的工作量就可以变小。
但是实际是行不通的,因为公司给每个人都安排好了 KPI。这些事情不在 KPI 里面,做这些工作实际上是不被绩效系统承认的,每个人要专注于完成自己的 KPI。更糟糕的是,如果做一个糟糕的「转发者」,一问三不知只会转发,那么收到的请求就越来越少,别人知道,问你不会得到答案,下次就不会问了。相反,如果这次别人问你得到了满意的答案,那么下次他还会来问你,每次都会来问你,收到的问题会越来越多,提问者甚至会变成「转发者」,他知道你能回答某些方面的问题,那么别人来问他的时候,他会立即转发给你。
也许 Hot Potato Routing 才是在大公司的生存之道,只有在小而美的公司才能做到用不自私的工作方式来工作。当初那些有理想的前同事,现在几乎都已经离职了(当然,没有离职的也有有理想的)。























