1毫秒代码缺陷瘫痪整片天空:英国空管系统崩溃背后的安全熔断与网络代价
人眨一下眼睛,大概需要 300 毫秒。 但在英国的空管系统里,一场瘫痪全境的混乱,只发生在短短 1 毫秒之内。 就是这千分之一秒的系统错位,把 2163 架航班死死按在跑道上,让 30 万名旅客在候机厅里打地铺。 很多人看到新闻的第一反应,大概会以为遭遇了黑客攻击,或者雷达站被雷劈断了电。 英国空管局 NATS 刚公布的初步调查报告,却给出了一个让人意外的真相。 没有网络攻击,没有军方干扰,敲键盘的操作员也没有犯下任何违规失误。 整个国家空域停摆的导火索,只是一次普通的手动输入,不巧撞上了一个沉睡多年的并发缺陷。 要把这事看明白,得先知道什么是应答机编码。 飞机在高空以时速八百公里穿行,空管员在屏幕上光看一个雷达光点,是没办法指挥的。 每一架进入空域的客机,都必须被分配一个四位的八进制识别码,行业里叫 squawk code。 这个识别码相当于客机在空中的临时身份证。 飞机的机载设备把它发射回地面,雷达屏幕才会把空中的光点与具体的航班号、机型、航线和飞行高度绑定在一起。 9 月 8 日上午,位于斯旺威克的伦敦区调中心,一名操作员向英国国家空域系统 NAS 提交了一笔常规的手动分配申请。 报告白纸黑字写着:这笔请求没有任何异常,内容完全合规。 偏偏就在系统接收这笔申请、准备往内存里写入数据的瞬间,系统接到了另一笔优先级更高的任务。 在现代计算系统里,高优先级任务抢先插队是再正常不过的逻辑。 系统先暂停手头的活,切过去把要紧的事情办完,再回过头来继续刚才的工作。 但系统里负责这一小段流程的底层代码,埋着一个极难被发现的陈年缺陷。 这个缺陷发作的条件苛刻到了极点。 那个高优先级任务,必须精准地在原任务更新数据的窗口期内插入进来。 这个危险窗口有多宽? 大约只有 1 毫秒。 如果第二笔任务早到了哪怕一毫秒,第一笔数据根本还没开始动笔写,系统相安无事。 如果它晚到了一毫秒,第一笔数据已经安全落库,系统同样运转如常。 偏偏在那天上午,两笔互不相干的操作,以千分之一秒的精度在刀尖上重叠了。 核心系统处理完插队任务切回来的时候,状态恢复直接出错,原本生成的应答机数据被写入成了乱码。 很多人可能会纳闷:数据写错了,难道不能点一下重试或者刷新吗? 普通软件遇到数据错误可以弹个窗口报错,但在空管系统里,这套逻辑根本行不通。 空中交通管制只有一条不能动摇的铁律:宁可全停,绝不冒险。 错误数据刚一写入,伦敦区调系统就发现与主系统的数据交互频繁超时。 屏幕上的实时飞行数据一旦失真,空管员就无法确认眼前的数据到底对应天上哪架飞机。 让几十架满载乘客的客机在繁忙航路上凭直觉盲飞? 没人敢拿几百条人命开玩笑。 系统的防御机制瞬间被触发:安全熔断。 伦敦区调中心被迫主动切断连接,全线退回到人工纸质进程单的备用模式。 但人工处理飞行计划的通量,连电脑系统的零头都不到。 想要天上的飞机不发生危险,唯一的办法就是关紧地面水龙头,限制起飞。 麻烦的是,因为这个缺陷伪装成普通的连接超时,技术团队在事发整整两个半小时之后,才真正摸清故障的严重程度。 紧接着,流控禁令迅速席卷全英各大枢纽机场。 希思罗、盖特威克、斯坦斯特德、曼彻斯特,所有跑道上的排队客机全被定格。 已经飞在半空的航班只能在降落航道上盘旋耗油,最后纷纷被迫备降到爱尔兰、法国甚至荷兰。 工程师其实只用了 6 个小时就排查完问题并重启恢复了系统。 既然系统 6 小时就修好了,为什么混乱持续了整整两天? 这就是现代航空网络的关键特征:紧耦合。 一架客机不会只飞单程,它一天要在三四个城市之间像钟摆一样循环运转。 枢纽停摆 6 个小时,整张运行网络当场就被打得粉碎。 飞机停在了错误的停机坪,机组人员因为执勤时间超过法定安全上限必须强制原地休息 12 个小时,后续航班的飞行员甚至还在另一座城市的停机位上等待。 物理世界的人员和设备一旦脱节,恢复它们所需要的时间,远远超过敲键盘重启服务器的时间。 那么,谁来为这 1 毫秒的代价买单? 英国交通大臣海蒂·亚历山大(Heidi Alexander)出面表态,称这次混乱完全不可接受,并要求英国民航局 CAA 启动独立审查。 英国空管局首席执行官马丁·罗尔夫(Martin Rolfe)也公开致歉,并强调旅客的安全从始至终没有受到威胁。 可是到了赔偿账本面前,规则显露出了冷酷的一面。 依据英国现行的民航旅客权益法规 UK261,空管系统的意外瘫痪被明确界定为非常规情况,也就是不可抗力。 这意味着,航空公司只需要向滞留旅客提供基础的餐饮、饮水和住宿安置,依法免除了法定每人 220 到 520 英镑的现金延误赔偿。 而英国空管局是一家由英国政府持股 49%、航空公司联合体持股 42% 的公私合营实体,普通旅客在法律上根本无法向它发起直接索赔。 30 万人被打乱的假期、错过的商务安排,以及在机场冰冷长椅上熬过的难熬长夜,最后全部由旅客自己默默咽下。 我们坐在舒适的高空机舱里,看着舷窗外的云层,往往会觉得现代工程系统牢不可破。 但撑起整片天空繁忙秩序的,只是一堆常年在后台默默执行的底层逻辑。 千万次运算里它都分秒不差。 偏偏在千分之一秒的极窄缝隙里,两道指令打了个照面,一个国家的整片天空就只能乖乖停摆。
引用 / CITATIONS
No citations exported.
同领域解读 / SOFTWARE & ENGINEERING
导出 / EXPORT
订阅 · SUBSCRIBE
每周一封独立、不受审查的科技与 AI 深度评论,周一发出。带出处,可核查。