系统与基础设施blog.benjojo.co.uk
通过 BGP 玩战舰游戏
Playing battleships over BGP
2018 — 2021,它一次次回到首页
黑点是上首页(≥ 50 分)的那次投稿,空心点是没冲上去的投稿,点越大分数越高。
导读
作者 Ben Cox 把 Battleship(海战棋)的每一步棋编码进 BGP 路由通告,通过真实的互联网路由系统与对手对弈——用宣告/撤销 IP 前缀来传递坐标和结果。文中记录了实验过程与副作用:频繁的宣告与撤销触发了 BGP 的 route flap damping,导致有 45 分钟无法落子,并让上游运营商(Level 3)在此期间对他的流量走了次优路径,于是双方改为每步间隔 90 秒。
为什么经久不衰:它把枯燥的路由协议变成了一场荒诞又精巧的游戏,同时直观展示了 BGP 通告在真实网络中会产生的连锁影响,兼具娱乐性和教学价值。
HN 评论精选
海战棋简单到可以在任何环境里实现,作者分享了自己在 Excel 里做联机版的趣事。
我喜欢各种海战棋的恶搞实现。这游戏因为规则简单,天生适合被塞进任何地方。在学编程之前,我 2002 年左右就在 MS Excel 里实现过一个版本:通过局域网共享文件来玩,靠手动刷新(重新载入文件)和玩家自觉(别偷看对手的工作表)。我在 IT 管控很严的环境里和同事利用休息时间玩,他们没封 Excel。
ademarre查看英文原文
I love Battleship hacks. The game begs to be implemented everywhere for its simplicity. Before I learned to program I implemented it in MS Excel circa 2002. It was played over a local network as a shared file, and it relied on manual polling (file reload) and honor (don't peek at your opponent's worksheet). I played it with a coworker during breaks in an environment that IT had locked down, but they didn't block Excel.
引用原文中 flap damping 导致运营商路由次优的细节,调侃运维支持人员接到这种报障时的反应。
> 游戏进展顺利,除了有 45 分钟双方无法落子,因为前面提到的 route flap damping 被触发了。这发生在我这边,导致 Level 3 在那 45 分钟里为我的流量选择了次优路由。为了以后不再发生,我们决定给每一步棋加 90 秒冷却。 那通客服电话一定很有意思。
empath75查看英文原文
> The game went smoothly, apart from a 45 minute period where no moves were exchanged due to causing the previously mentioned route flap damping to activate. This happened on my side and caused Level 3 to have a less optimal route for my traffic in the 45 minute period. To mitigate this from happening again later on the game, we decided to move to a 90 second cooldown period on every move. Must have been an interesting support call.
由原文的“餐巾纸协议”梗延伸:好的协议应当简单到能在餐巾纸上讲明白。
> 对于一个 1989 年在两张餐巾纸上诞生的协议…… 我不太确定自己想不想用一个没法在一两张餐巾纸上讲清楚的协议。UTF-8 是在餐馆餐垫上设计出来的。
throw0101a查看英文原文
> For a protocol that was produced on two napkins in 1989 [...] I'm not sure I'd want to deal with a protocol that can't be explained on a napkin or two. UTF-8 was design on a diner placemat: * https://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt
肯定创意与趣味性,但质疑在生产级互联网路由上做这种实验的风险。
这非常酷,但在我看来也非常不负责任。
efitz查看英文原文
This was very cool and also IMO very irresponsible.
历次讨论
同类还值得读
TTY 揭秘(2008)
The TTY demystified (2008)
经典文章深入剖析了 Unix/Linux 中 TTY 子系统的工作原理,包括线路规程、终端驱动、信号与控制字符等机制。
系统与基础设施上首页 11 次 · 2009–2025linusakesson.net编辑精选为什么 GNU grep 这么快
Why GNU grep is Fast
FreeBSD 邮件列表上一篇广为流传的帖子,解释 GNU grep 为什么快:核心在于 Boyer-Moore 字符串搜索算法配合精心优化的内部循环和 I/O,让程序在搜索时“…
系统与基础设施上首页 9 次 · 2010–2022lists.freebsd.orgXplain:为普通人讲解 X11
Xplain – Explaining X11 for the rest of us
《Xplain》是作者(HN 用户 Jasper_)写的一系列 X11 长文,用他在浏览器中重建的 X11 绘图模型做交互演示,讲解 X11 的绘图模型与窗口系统设计。
系统与基础设施上首页 6 次 · 2013–2020magcius.github.io编辑精选旋风教程:为 Linux 创建极小 ELF 可执行文件(1999)
A Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux (1999)
breadbox 写于 1999 年的经典教程,主题是如何为 Linux 手工构造并裁剪出体积极小的 ELF 可执行文件。
系统与基础设施上首页 6 次 · 2007–2025muppetlabs.comPostgreSQL 内部原理
The internals of PostgreSQL
《The Internals of PostgreSQL》是一本免费在线书籍,系统讲解 PostgreSQL 的内部实现,包括查询处理、并发控制、WAL、缓冲区管理等核心机制。
系统与基础设施上首页 5 次 · 2017–2025interdb.jp编辑精选