在火山口上谈谈我对SD-WAN的冷思考

SDWAN将是2018年最具有投资价值的风口,这不是预言,因为2017年就已经是了,只不过GARTNER不一定看得到。如果连GARTNER都能画出曲线图,那就已经不算是机会了。

然而自古以来,真正的风口必定是火山口,只有极少量碳元素能够在瞬间的高温高压下成为钻石,大部分红红火火的岩浆,24小时之内就会化为尘与土。

在和SDWAN短兵相接的2017年,我遇到了很多问题,解决了很多问题,进而有机会与新的问题格斗。但是有一个问题始终在我脑海里盘旋,面对一个完全不可能用数学模型来描述的互联网,模型化的控制算法有用吗?

在火山口上谈谈我对SD-WAN的冷思考

昨天晚上,我终于把这事想明白了,没用。

如果有用,1997年的互联网就已经被算法统治,不需要等待20年,更何况就洞察问题的眼光和解决问题的能力而言,互联网的第一代开拓者要比后世高明得多。到今天为止,除了虚拟化和云计算,我们找不出任何能够与奠基性互联网技术相提并论的东西。直到2018年,整个互联网仍然是在沿着1988年就已经形成的趋势发展,只是前进的速度越来越快而已。即使是AI,也只是提高了加速度,还远远达不到变革趋势的地步。

任何一种互联网产品,一定是因为与一代人紧耦合而成功,当这一代人逐步老去,产品也随之凋零。无论是FACEBOOK、TWITTER还是微信、QQ,都会是我们的陪葬品。

但是在远离用户的TCP/IP协议栈,TCP、IP及其衍生品却已经安然陪伴了几代人,至今没有衰落的迹象,而且除了学术圈,从来没有人认为它们已经衰老。

TCP/IP协议栈里的那几个基础协议,两只手就能数过来,为什么能够打破周期律的魔咒?

其中的原因,是人性,或者说,人性中的最大公约数。

从有文字记载的那一代人开始至今,人性中共通的部分几乎没有发生过变化,而且是以矛盾的形式成对出现:贪婪、恐惧、从众、独行........

TCP/IP的核心协议之所以能够持久到无人怀疑其持久性,恰好是因为设计理念与人性中的最大公约数紧耦合,坚持中庸之道,而与其中个性化的部分松耦合甚至隔离。

而我们日常打交道的互联网产品设计理念,恰好相反。

在人性的共性与特定人群的个性之间如何取舍,决定了一项技术的寿命以及存活形式。但这种取舍,又由产品和技术的定位决定,应用层的技术和产品,只能追逐特定群体的个性化需求,而底层的技术,则必须与个性化保持距离。

那么问题来了,SDWAN这个精神分裂症患者,应该如何选择自己的落脚点?

首先SDWAN属于地地道道的网络技术,然而服务的对象又是极度个性化的客户需求。网络中共性的需求,网络基础设施已经满足得很好,不需要SDWAN。SDWAN的生存空间,在巨无霸SP、CP们无力或者无暇顾及的缝隙中。

服务于运营商和大型互联网公司的SDWAN技术,我始终认为应该归于基础网络技术,这类技术首先考虑的不是个性化、灵活性,而是稳定性和可用性。这类技术的特点,是防守而不是进攻,是弥补广大用户日益增长的普遍需求与基础设施尽力而为服务能力滞后之间的差距,而不是先行满足少数用户的个性化需求。

这就是为什么国内三大运营商虽然在战略层面高度重视SDWAN,但在战术层面莫衷一是甚至自相矛盾的原因。防守还是进攻,这是一个问题。

初创型SDWAN公司的优势在于,根本不需要纠结于选择题,只能进攻,防守即死亡。

为了达成持续攻击的目标,SDWAN只有一种选择,在运动中持续寻找个性化需求与复杂网络状态之间可控的交集,并迅速榨取其中的资源。

国内外初创型SDWAN公司很多,但是据我的观察和了解,真正具备良好盈利能力的,都是运动战、游击战高手,技术粗糙、身手敏捷。而那些技术精致、身手笨拙的公司,都没有挣到钱

现在越来越多的人在各种宏大的场合讲SDWAN,如果粗略划分一下,可以分为架构、算法两大流派,但是很不幸,这个行当里最不值钱的恰好就是架构和算法。

先说架构,大部分人认为架构即规划,只要有了好的架构就等于成功了一多半。这个观念至少落后时代30年。所有的架构都必须建立在对网络的正确理解之上,正确理解的东西越多,架构就越精细,反之则越粗犷,甚至看起来根本不像个架构。但是对于互联网这个复杂巨系统,没有人能够提前获得足够的正确理解,甚至少得可怜的正确理解都不可得,在这个空洞的基础上,架构从何而来?如果稍微留心一下那些热衷于谈论架构的会虫,很容易发现他们往往醉心于编织一个精致完美的系统架构图,但是对于网络中到底发生了什么却几乎一无所知。这样的架构,连他们自己都不敢用。在互联网这个领域,架构历来只是对既成事实的总结,而且是对影响足够广泛的既成事实的总结,这就是为什么谷歌最近4年来发布的关于SDWAN的论文,口气越来越谨慎,越来越不像SDWAN,而更像是对一个公司内部技改项目的经验总结。

至于算法,现在已经有人考虑用AI解救网络工程师了。但是别忘了一切算法的血液都来自输入数据,算法越复杂,对输入数据的精确性和全面性要求越苛刻。而互联网的窘境恰恰在于,无论是运营商还是互联网公司,都缺乏足够支撑稍微复杂一点的网络工程师替代算法的数据。

但是,这些宏观上的困境,并不影响SDWAN在围观世界中有所作为。

刚才我们提到,SDWAN属于精神分裂型技术,既要紧贴用户的个性化需求,又要顺应广域网的复杂特性,这是不利的一面。但是精神分裂症患者有精神分裂症的玩法,那就是在宏观不确定性中捕捉暂时、局部的确定性。

下面,回归正题,谈一谈我的一些冷思考。

首先,SDWAN的核心,不是控制,而是管理,而管理的核心,是网络状态一致性维护的能力。

当无数人在各种场合大谈SDWAN控制面如何如何的时候,任何一个知道点常识的人都应该自然而然地想到以下个问题。

第一,控制的核心是算法,也就是模型化的解决方案,但是模型化的解决方案必定面向可以模型化的问题,那些控制算法所面向的问题,是可以模型化的吗?

第二,如果算法是问题的核心,为什么二十年前的工程师没有想到使用这些算法,难道是前人愚钝?

第三,今天被热议的这些控制算法,大部分在至少十年前就已经被尝试过了,只不过那时候还没有SDWAN这个东西,当时为什么失败了?导致失败的因素,今天都被消灭了吗?

上述三个问题的答案,大部分是否定的。因为要获得控制算法对输入数据所要求的准确性和时效性,控制面本身帮不上任何忙,只能依靠管理面。而管理面的效率,取决于网络状态信息获取和测量的手段。在过去的几十年里,这些手段的进步非常缓慢,并且常常被“测得快和测得准”之间的矛盾所困扰。现在你能够见到的大部分SDWAN体系架构中,管理面只是一个配角,采用的技术也和传统的网管处在同一个水平,这样的系统设计,我实在看不出来能比一个传统的网管系统强到哪去。

网络信息的采集只是网络状态一致性维护的一部分,信息采集不全、不准,降低控制的效率即可,不会有什么害处。但是网络状态一致性维护的另一个方面,在控制平面和数据平面保持控制状态的一致性,却只能做好不能做坏。一旦数据平面出现了应该撤销而没有撤销的僵尸流表或转发表,就如同给自己埋下不定时炸弹,积累到一定程度,足够摧毁整个网络。然而不幸的是,这个问题也被广泛地忽略了。

什么才是好的网络状态一致性维护?在SDWAN这个领域,做的最好的是谷歌。但是如果把视野放宽,那些古老的协议甚至足以令谷歌望尘莫及。例如饱受诟病的分布式路由协议。

几乎所有华丽的SDWAN系统架构都会以批评分布式路由协议傻、笨、慢开场。但是事实恰好相反,分布式路由协议的设计之智慧,完全不是现有的SDWAN可以相提并论。因为这些协议牢牢把握住了以网络状态一致性维护为核心这个精髓。

以OSPF为例,整个协议的核心根本不是迪杰斯特拉算法,而是路由器应该“与谁交换信息、交换什么信息、什么时机交换信息”。这个信息,就是网络拓扑信息。由于分布式实施,每个路由器并不知道自己获得的拓扑信息是否全面、实时和精确,也不知道以多快的频率测量和更新拓扑信息能够达到最佳效果。这是OSPF的困境。为此OSPF的设计中采用了两个巧妙的机制,第一是利用广播的绝佳渗透性确保信令消息的可达性不受拓扑变更以及路由失效的影响,构造出一个独立、弹性的信令平面。第二是我行我算,无论LSDB是什么样、应该是什么样,只要有变化就计算,尽管就单次计算而言,结果可能错误百出,但是这种持续的计算行为迟早会收敛到正确的状态,而且绝不会出现僵尸路由表这样的问题。所以OSPF对网络状态一致性的维护完全可以在不知道真实网络状态的情况下展开,而且总是趋向于正确的方向,具备自我清洁功能。反观SDWAN,控制消息传递的可靠性几乎完全依赖于预设专线或者靠天吃饭,而最常见的网络状态一致性维护机制只是转发设备与控制器失联之后仍然能够存续转发策略,并在一定的时间之后彻底删除。仅此而已。

这意味着SDWAN无论是在获取网络状态还是保持控制策略一致性方面,都存在明显的脆弱性,当网络不那么完美的时候,SDWAN系统既没有能力为控制面提供准确实时的输入,也没有能力对错误的计算结果进行抑制和清除,更不可能在网络恢复稳态之前朝着正确的方向自动驾驶。

大部分SDWAN并非工作在完美的环境之下,要么以OVERLAY的形式立于危墙,要么租用并不完全可靠的专线资源,这种场景下,脆弱的管理面之所以没有引起足够的重视,我认为主要是因为现有的SDWAN系统规模仍然非常有限,依靠人工也能收拾残局。但是一旦系统体量突破某个限度,管理面的问题必定会浮出水面。体量如谷歌者,无论是在数据中心内部SDN还是DCI皆非常倚重分布式路由协议的设计理念,而Juniper引以为荣的segment routing则重新皈依源路由技术,也是因为管理面瓶颈难以突破所致。

任何一个商用的系统都必须以提供稳定的输出预期为前提,这个稳定的输出,显然取决于管理面而非控制面。这和AI的命门是数据而非算法是一个道理。

第二,网络状态一致性维护的能力,并不总是需要依托控制器实现,中小规模网络中,人工的效率甚至有可能更高。

在过去的两年中,每与同行谈论SDWAN,被问的最多的问题并不是我们用SDWAN解决了什么问题、满足了哪些特殊的需求,而是“你们的控制器是基于ODL还是ONOS”。这代表了一种根深蒂固的误解,干SDWAN,必须先有控制器,控制器是系统的核心。但是根据我的经验,控制器不仅不是核心,而且完全可以不存在。尤其是在中小规模的SDWAN系统中,雇佣一个经验丰富的网络工程师所能带来的收益,远远胜过雇佣一群码农开发一个复杂的控制系统。这样的例子我可以随手举出三个以上,而且都是这个行当里的吸金翘楚。一旦你掌握了网络的特性,并且这种特性具备长期稳定性,剩下的事情就只是用最廉价的方式利用和驾驭这种特性了,这件事情远比想象的要简单得多。

当然,如果想迅速吸引眼球,也可以给自己披上SDWAN的外衣。

很多只顾埋头赚钱的公司,确实是在经过大师点拨之后才恍然大悟,┗|`O′|┛ 嗷~~,原来我干的就是SDWAN啊!

所以说架构这种东西,确实是只能总结,而不能用来规划的。

如果一个初创公司告诉你说,我们目前还没有赚钱,但是正在奋力开发SDWAN控制器,那么至少有百分之百的可能,这公司离死不远。

但是,当SDWAN的规模突破某个限度,人工的劣势就会显现,运维自动化的重要性必然浮现。这个临界点将出现在网络状态一致性维护难以维计的时刻。但即使是在这个时刻,控制器仍然不是必需品。

第三,SDWAN的生存之道,是去生产环境中扩大与真实问题的接触面,并藉此遏制不切实际的想法。

SDWAN最重要的任务,可能就是要在充满不确定性的宏观网络环境中捕捉暂时、局部性的确定性。这件事情也指望不上算法,因为所有的算法都依赖于确定性的输入和确定性的模型。效率最高的方法,是先冲上去再说,在生产环境中与真实的问题充分接触,藉此区分哪些是主要矛盾,哪些是次要矛盾,顺便搞清楚哪些事情确实有利可图,而哪些事情只是看起来很美。

人人皆知奥卡姆剃刀原则,如无必要勿增实体。但是SDWAN本身所处环境以及面临问题的复杂性,会让这个领域看起来如同AD HOC一样遍地都是创新性的问题,但是到底哪些问题值得解决,仍然要靠生产环境来检验。

相关推荐