短评一个新看到的 Google 去中心化 SDN:A Decentralized SDN Architecture for the WAN (SIGCOMM’24, Paper 707),论文在 这里 可读。

SDN 很好,但随网络规模扩大(比如 WAN),故障影响也会扩散,针对这事,无法靠开发一些新技术,部署一些新机制来减少故障或降低故障影响,因为故障多是由于多个系统组件之间复杂且意外的交互引起,而不是协议和机制引起,这些交互不可预知:

消除重大故障的根本挑战在于其复杂性:它们涉及多个组件中的错误,这些组件跨越不同团队的不同代码库,以不可预见的方式相互作用。

这些不可预知的故障无法通过密集测试发现和验证,更严重的是,为缓解故障,越加入更多新机制,潜在地越会增加新故障,因为又增加了新组件。

作者提出,直接解决复杂性才能减少故障,解决复杂性就要简化网络。因此,根本的解决之道不是增加机制,不是增加冗余,而是在不影响 SDN 能力的前提下移除组件,这就直接大量减少了组件之间的交互,从而大量减少了交互的组合空间,最终减少了故障。

直观上,这一策略提供了:(i) 更少的故障点和故障模式,(ii) 更小的测试和验证搜索空间,从而提高覆盖率,(iii) 更少的维护“接触点”,因此减少了出错的机会。

具体的措施很简单,就是将集中式的 SDN 控制器拉回分布式数据平面,在带内执行集中控制,这就是 dSDN(decentralized SDN)。

dSDN 架构代表了当前 WAN 的重大简化,它在带内执行基本控制平面洪泛,在每个路由器上形成统一视图并执行 TE 算法,消除了对数据平面外部组件和传统协议的任何依赖。dSDN 保留了传统集中式 cSDN 的逻辑能力,同时恢复了传统分布式网络的命运共享,从而提供了弹性。

与此同时,带外的网络依然存在可发挥作用:

我们的重点并不是必须消除外部控制基础设施。相反,这种基础设施可能仍然需要用于配置路由器、监控、升级等。相反,我们的重点是避免将这些组件放在网络可用性的关键路径上。

这就很像生物体了,比如人体,分布式神经系统就是控制平面,附着在全身,但又有一个总控,人体各部位器官偶有缺失,还能继续生存,非常满足 CAP 定理的描述。

SDN 旨在建立一种思想,而不求特定的实现形式,因此转控逻辑分离,物理统一就不失为一种高尚的实现方式。在 dSDN 中,SDN API 还是那些 API,能力编排照旧,只是代码执行的位置从集中式控制器转移到了分布式的每个路由器中,谁在乎呢。

这里最重要的是命运共享的概念,它的背景是经典的两方之争:数据包各自携带状态 vs. 路由器维护所有状态。而这个争论来自中心控制的电话网阵营和分布式控制的分组交换网阵营,最后,显然后者获得了优势,成就了胖端瘦网的总架构,这基础上才孕育了我们现在使用的互联网。

现在,同样的理念在 SDN 上再运用一次,将分离后的控制平面从集中控制演进到分布式命运共享,就是这篇论文的核心了。这里描述了一次典型的技术演进:

  • 电话网集中式控制;
  • 对电话网的否定促成了分布式控制网络;
  • 分布式网络转控分离,控制平面集中式控制,cSDN;
  • 分布式网络转控分离,对控制平面集中式控制的否定促成了分布式控制平面,dSDN;

dSDN 虽尚未规模化部署,但很看好。

既然命运共享的分布式控制这么好,为什么不一开始就使用,偏要作为对上一代集中式控制进行否定的结果被采纳。答案都是时间里。集中式控制最简单,最容易被想到,当它刚被用采用时,对分布式控制肯定是既没需求,又没能力。需求和能力都是随着时间发展产生。

电话网刚诞生时,打电话的人并不多,没有计算机,没有分时突发复用,集中式电话网已足够,这说明了没需求,即使有需求,彼时的理论和硬件均无法支撑存储转发和分组交换,统计学理论不完善,排队论尚无,离晶体管还有几十年。同理,SDN 刚被提出部署,试验网络规模小,逻辑简单,交互少,故障不扩散,少数几个控制器已足够,这说明没需求,即便有需求,2010 年代早期路由器资源尚不足以支撑稍具规模的计算,转发资源并未完全分离。

所以,合足够久了才必分,分足够久了才必合,在这个足够久的时间里,需求在酝酿,能力在增长。

论文后半部分给出了评估。dSDN 和 cSDN 执行相同的代码,因此它们行为等效,dSDN 的优势在于简单和更快收敛。为评估 dSDN 在收敛上的优势,有收敛时间和影响范围两个指标。论文中下图说明收敛时间优势:
在这里插入图片描述

而 blast radius(爆炸半径) 则用来量化重收敛的影响范围:
在这里插入图片描述

评估下来,dSDN 都挺好。祝好,祝大卖。

“爆炸半径” 有点意思,我一直以为爆炸半径是那些大厂 KPI/OKR 经理硬造的词,没想到还真有这词,且作者没有大陆背景,甚是惊讶。

其实互联网一直在经历这种从集中式到分布式的循环,OSPF 就是集中式路由的分布式实现,BGP 也是,真正的分布式协议只有 RIP,STP 等这类。分布式以增强可扩展性,但视图可以依旧是全局的,若集中式实现,便没了可扩展性,无法适应大规模网络。

即使分布式适应了扩展,可我们终究没有见到方圆几千公里的城市,我们也没有见过全球蔓延在一个路由域,世界依然还是一个个独立的系统通过边界与外界交互。这就涉及重力模型(参见 Little 定律与重力模型)了,这是另一个话题。简单说,城市规模受限当前普遍交通工具一小时的行驶距离,网络域受限于信号传播时延(受介质光速限制和路由计算时间复杂度约束下的收敛时间。

浙江温州皮鞋湿,下雨进水不会胖。

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐