只需点击上面蓝色字即可享用所有精彩文章!
SDN若想融入下一代互联网,必须放弃非此即彼的二元思维,承认世界的多样性,并且认同一个基本的理念,即混乱和无序才是驱动互联网持续发展的动力之源。
软件定义网络(SDN)的概念源自斯坦福大学的OPENFLOW项目,想法其实很简单,就是用一个计算能力强的服务器来控制所有交换机的转发行为,这样就让原来傻乎乎的网络变得聪明起来,可以根据一些比较复杂和多样化的规则来控制数据在网络中传输的方式。后来,这种思路被推广到广域网,研究者们希望把分散在各个路由器上的智能集中到一个控制器上,每个路由器简化为只有转发功能的交换机,从而实现控制和转发的彻底分离。
这就好像是在城市交通系统中,本来红绿灯都是按照固定的节奏变色,开车也纯属于驾驶者个人行为,现在交管局想优化车流量的分布,于是搞了个服务器,不停地计算拥堵解决方案,并且用这个计算结果调整各个路口红绿灯的切换节奏,甚至强行命令一些司机改变路线,显然,从理论上来说,这要比原来那个傻乎乎的交通管控系统好使多了。
之所以说是理论上,是因为这种集中控制系统往往无法获得真正的完全主导权。如果把整个交通行业视为一个游戏,其中的玩家将包括驾驶者、交通规则制定者、交通管理局、市*道路建设方,甚至汽车制造企业、石油化工行业,每个玩家都对交通行业拥有一定的影响力,交通管理局只是其中一个拥有显性权力的部门,但整个行业的发展、乃至某一个具体时段的交通状况,并不完全取决于交通管理局的*策。所以交通管理更多是一种博弈,而不是控制。
在互联网中,任何控制也是博弈。在这个开放的平台上,玩家的数量、种类以及玩家之间博弈的复杂性远远超过交通系统。早在年,David.D.Clark就在《TussleinCyberspace:DeningTomorrow’sInternet》中清晰地勾画出了互联网的这一本质特征,但是真理永远只能被少数人所识破。在整个21世纪,互联网研究领域最为热衷的方向就是将这个怪物置于完全的掌控之下,令其言行举止皆中绳墨。第一波浪潮以GENI、FIND为发端,潮水退去之后,沙滩上并没有剩下裸泳者,因为一个新的浪潮已经起于青萍之末,这就是SDN。
在SDN的身上,下一代互联网体系架构的色彩渐次褪去,业界更多地将其视为一种技术,一种能够以集中控制超越分布式控制的解决方案。通信网中集中控制的历史比互联网要长得多,现在的电信网也是典型的集中控制模式,但互联网的奇特之处就在于,分布式控制占据了压倒性的优势。互联网的前身DARPANET采用分布式控制的初衷是为了对付核战,避免控制中心被毁之后整个通信网陷于瘫痪,但很快另一种更为强大的需求出现了,那就是开放系统互联。和电信网不同,互联网的首要任务是把归属于不同所有者、采用不同技术的烟囱式网络连接成一个信息的无障碍交互平台,而实现这一目标必须求同存异,这个同,是指互联互通的共同理想,而异则是保持各个网络在控制权以及技术体制上的独立性。分布式控制不要求天下一统,大家只要遵循一些简单的规则就可以,因而能够实现开放性和独立性的统一。
这种开放性,为互联网时代打开了大门,造就了一大批重塑世界形态的互联网企业。然而有意思的是,在最具影响力的SDN国际组织——ONF中,除了电信运营商和设备制造商外,还有谷歌、雅虎、微软、百度这样的互联网公司,它们为什么会对集中控制产生兴趣?
对于这个问题,坊间的判断是,SDN是互联网公司颠覆电信行业的最佳切入点。一旦整个互联网实现了SDN,原有分散、封闭、种类繁多的网络设备操作系统将被一个统一、开放的网络控制系统所取代,思科之类传统设备制造商在专用和封闭设备上的优势将会消失殆尽,而擅长应用开发的互联网公司,则可以在这样一个巨无霸级别的系统上尽情发挥,如同开发手机APP一样创造出各种网络管理和控制的应用,完成那些在分布控制模式下不可能完成的任务。谷歌在年的SIGCOMM大会上,也确实展示过这方面的雄心和成就。当时谷歌明确表示,传统的路由器应该被无情地替换掉。IP之父VINTCERF之前也说过类似的狠话,不过互联网企业的话语权已远远超过其他行业。
但实际情况并非如谷歌所言那么乐观。在全世界范围,尽管以SDN取代传统路由器网络的呼声此起彼伏,但只有谷歌真正使用SDN技术实现了多个异地数据中心之间的组网。在这个跨越多个大洲的数据中心网络中,谷歌使用自己研发的OPENFLOW交换机作为网络节点,使用QUAGGA作为控制服务器上的路由计算软件。
这是典型的SDN控制与转发分离模式,但是注意,谷歌并不是在全网只保留了一个路由服务器,而是在每一个节点(也就是一个数据中心,对应于下图中的一个SITE)都部署了一个控制器,并把路由计算软件部署在上面,不同节点的控制器在执行路由计算功能时,仍然像传统路由器那样交换网络状态信息,这和传统的分布式控制并没有本质的区别。
同时,谷歌在全网配备了一个流量工程服务器,用来为全网的流量计算优化分布的策略。可以说,流量工程才是谷歌使用SDN的根本目的,如果仍然采用按照最大需求配置冗余带宽的模式,则必须按照峰值流量来租用带宽,这会导致在大部分时间里,带宽利用率只有30%左右。如果能够将带宽利用率提升到90%以上,相当于节约了2/3的带宽成本。在B4网络中,流量工程完全采用了集中控制模式,各个站点把采集的流量信息上报到流量工程服务器,计算之后输出的结果发送到每个站点的控制器,再由控制器下发到交换机执行。
因此,谷歌的B4网络,是一个分布式控制与集中式控制的混合体,在每个站点内,路由计算是由控制器集中完成的,但在站点之间,路由仍然采用了分布式控制模式,而全网的流量工程策略则由一个独立的服务器集中计算完成。
谷歌之所以采用分布式的路由控制模式,并不是谷歌的开发能力不足,而是受到集中控制的“阿克琉斯之踵”——控制消息传递可靠性的制约。在几乎所有讨论SDN的文献中,这个致命的弱点都被有意或无意地忽略掉了,但在工程实践中,即便强大如谷歌这样的公司,也仍然无法保证控制器到各个交换机的连接能够万无一失,而分布式最大的优点恰好就是柔韧性强。因此谷歌将分布式路由作为网络可靠性的最后一道屏障,即使流量工程服务器瘫痪或失联,只要网络中各个站点的控制器还没有被斩尽杀绝,分布式路由技术总是有办法把整个网络重新连接起来。
另外一点需要注意的是,B4尽管跨越了广大的地域,但仍然是一个企业的内部网络,整个网络的设备、流量尽在谷歌掌控之中,并不会面临互联网所处的那种多域、异构、复杂、多样和难以预测的运行环境。因此谷歌的经验,仍然不足以推广到广域互联网。
现在,我们回到文章的标题,是软件定义网络,还是网络定义软件?
在回答这个问题之前,首先需要搞清楚,软件适合解决什么问题,不适合解决什么问题。
我的看法是,软件适合解决那些能够模型化的问题,这类问题有明确的输入、明确的计算方法以及明确的输出,B4网络中的流量工程问题就属于此类。但软件并不适合处理那些难以模型化的问题,因为这种问题要么没有或不可能获得精确的输入,要么就是影响因素的数量和复杂性皆难以用数学模型进行精确的描述。这类问题的背后,大多隐藏着商业利益、*治考量等非技术力量的角逐,也就是DAVID.D.CLARK所说的缠斗(TUSSLE)。和这些问题相比,谷歌所面临的控制消息可靠传递问题实在是太小巫见大巫了。
但在互联网上,占据主导地位的恰恰就是这种无法模型化的问题,无法模型化也就意味着不可预测。很多人有预测强迫症,比如经常会看到一些国际知名的专家教授在批评互联网不能算是科学的时候把无法用数学进行描述拿出来说事。互联网的复杂性不知道超出股票市场多少个量级,但我从来没听说哪个经济学家说要通过改造股市的体系架构让这东西科学起来。
既然如此,为什么集中控制会突然受到各方青睐?要知道,在第一波改造互联网体系架构的大潮中,冲浪的都是象牙塔里的专家教授,工业界冷眼旁观不置可否。可到了SDN,工业界倾巢出动,鼓噪勒兵,教授们反倒成了路人甲路人乙。为什么这些深谙互联网本性的巨头会对SDN表现出如此巨大的兴趣?
我认为这是互联网由以网络为中心的时代进入以用户为中心的时代的标志,表明与用户关系最为密切的应用开始正式作为一个新的实力玩家登场。
在分布式控制的年代,网络的控制权尽管看起来不掌握在任何一个运营商的手里,但仍然是掌握在运营商这个群体的手中,用户和应用几乎没有发言权。看看P2P兴起最初几年的境遇,就知道什么叫人为刀俎我为鱼肉。那是一个网络基础设施雄踞互联网产业链上游的时代,得网络者得天下。可是现在攻守易形,网络沦为管道,应用掌握了话语权,用户第一次真正站到了中央。这带来一个前所未有的挑战,如何才能满足用户多样化的需求?
虽然服务质量保证这事已经被研究了几十年,但一直是站在网络的角度看用户,所有的解决方案都必须建立在不改变网络管控模式的基础上,因而才有了INTSERVE、IPMULTICAST等等中看不中用的技术,到了实际的网络运营环节,第一要务仍然是保持网络的稳定性以及普遍转发的可靠性,至于那些特殊的需求,还得靠应用层自己动手丰衣足食。
但现在,应用占了上风,不甘心站在网络资源的餐桌边上流口水,希望通过直接操控网络资源的方式来更大限度优化自身的服务质量。分布式控制的特质就是好死不如赖活着,虽然很难被弄死,但天生及格的命,要做到优秀实在是天资匮乏,于是简单、好用、强大的集中控制备受青睐。OPENFLOW和SDN生逢其时,正应了雷*的那句名言,坐到风口上,就算是一头猪也能飞起来。
我相信SDN这头猪一定会飞起来,这不是技术泡沫,但也不会飞得太高。到目前为止,SDN的成功案例仍然局限在局域网以及数据中心网络,思科、华为等设备制造商虽然都推出了自己的SDN解决方案,但标准各异,除了支持OPENFLOW这一点相同以外,几乎没有共同之处。而且,也没有任何公司推出可商用的广域网SDN产品线,各家争夺的主战场,还是封闭、同构、单一管理域的网络系统,包括移动核心网。
在真正的广域网上,分布式控制的地位仍然不可撼动,但我相信应用的力量将改变这一局面。
首先,应用所关心的是面向特定用户的特定业务的服务质量,是有限目标,与此相关的网络资源以及影响要素有可能从互联网这个复杂的混合体中剥离出来,构造一个单独的模型并交由软件来实施计算和调控,当然前提是这种局部和有限的控制不能损害分布式控制的效能。所以我相信SDN的前途取决于能否针对细分领域合理剥离问题并与分布式控制模式共存共赢,而不是如何将分布式控制赶尽杀绝。
应用和用户的崛起带给互联网两个方面的影响,第一是出现了新的超级玩家,原有的平衡被打破,但新的平衡尚未建立;第二是原有的游戏规则开始被改写,但新的规则尚未确立。在这个变化的世界中,似乎一切皆有可能发生,但我相信两个基本的规则不会发生变化:
第一,互联网仍将是一个多方博弈的多极世界,单一强权不可能出现;
第二,这种多方博弈的结果一定是建立在某种共识之上的妥协折衷。
SDN是应用和用户这个新玩家手里攥着的一张大牌,但如果牌桌上只剩下这一个玩家和这一张牌,游戏就会终结,互联网的好时光也会到此为止。所以我认为未来的互联网将是一个集中控制和分布式控制犬牙交错的混合体,SDN将占据一席之地,而分布式控制仍将作为基础设施的主要控制模式继续存在下去。在这个看起来更加混乱的世界里,最有价值的将不是针对具体问题的计算模型或开发技艺,而是将复杂问题隔离解耦为多个独立、简单问题的智慧。比如路由结构中的层次化管理、大隐隐于2.5层的MPLS技术都属于这种智慧的产物。对于SDN来说,这种智慧的重要性又恰恰来自集中控制本身的两个孪生特性:既精致又脆弱。
任何控制模式都是由输入、处理、输出三个基本环节构成,分布式控制皮糙肉厚憨傻呆萌,在输入不精确、处理不精细的情况下仍然能够获得一个说得过去的输出。而且,分布式路由协议依靠逐跳广播模式扩散网络状态或路由信息,广播的渗透性无人能敌,只要网络没有被撕裂,广播就有办法把信息传送到每一个路由器,挡都挡不住。集中控制就不一样了,输入要精确,处理要精细,输出才有可能精致,而且,集中控制为了追求时效性和可控性,通常依靠一个独立的专用网络来传输控制信息。但不幸的是,专用网络也是网,也有其他网络的各种毛病和不足,并非金刚不坏之身。而模型的精致性使输入和输出之间无法构成稳定的正相关关系,即便输入的正确率达到99%,仍然有可能导致一个完全失败的输出,而且,一旦错了,没有其他人能纠正或遏制这个错误,分布式控制就不一样,一个控制实体错了没关系,只要不是大家都错了,这事的危害就无法放大到全网,这就是集中控制独有的脆弱性。放到互联网这个大环境下,集中控制面临的问题更加复杂:
首先任何集中式的计算模型一定是针对某一时刻或某一时段内的网络状态展开,所以输入不仅要精确,还要满足时间上的同步性要求。但不幸的是,网络与生俱来的传输延迟、排队延迟、故障等等因素都会干扰数据采集的同步性,而这些因素通常无法消除。
第二就是前面提到的那个阿克琉斯之踵问题,即便数据采集%可靠,传输是无论如何也不可能做到完全可靠的,因而输入数据不完备的情况将无法避免。对于集中控制模型来说,某个数据的缺失完全有可能铸成大错,不仅无益,反而有害。
第三,SDN的控制流程并没有止于输出,后面还有一个环节:执行。输出的结果必须下发到每个节点执行成功才算是完成了完整的控制过程。显然,和数据上传一样,计算结果下发也会面临延迟、故障等因素的干扰,而每个节点处理能力的差异也会影响到执行的同步性。不幸的是,计算结果下发的成功率与执行效果之间也不是正相关关系,哪怕只有一个节点没有收到或执行下发的命令,都有可能满盘皆输。而执行的不同步性则有可能引起各种意想不到的错误,令网络陷入新的混乱状态。
为什么分布式控制没有上面这些问题?因为分布式控制从来就不追求一步到位,一开始就承认存在一个混乱的收敛过程,但这种混乱一定是逐步向有序逐步逼近的,虽然在收敛过程中每个控制实体对网络状态的认知不仅不一致而且缺点各异,但靠近网络异常位置的节点一定能对这个异常做出准确的反应。再加上广播的无敌渗透性,收敛过程虽然是每个节点各自为战的集合体,但达到完美却是一个确定性事件。在这个混乱的世界上,在没有什么比明确的预期更让人向往的了。集中控制虽然可以在完美的条件下一步到位,直接跨域漫长的收敛过程,但在不完美的世界里,并不能提供这么一个明确的预期。所以对于集中控制而言,瑕不掩瑜并不适用,一颗老鼠屎坏掉一锅汤倒是恰如其分。而造成这种局面的原因,就是互联网与生俱来的无序混乱特性以及这种特性的不可控属性。刚上大学那会,曾经看过一本讲中国文化的小册子,里面有一句话至今记忆犹新:“文化除了不在你的手中之外,无处不在”。这句话也可以用来形容互联网的混乱和无序特性。
这种无序和混乱是否可以消除?我认为既无可能也无必要。只要多方博弈仍然存在,混乱和无序就一定会不断地演化下去。而且,正是这种混乱和无序孕育出了那些改变世界的伟大创新,包括SDN这样的创新。而电信网,正是因为缺乏这种混乱和无序而绝无产生谷歌、FACEBOOK这类伟大公司的可能性。
现在可以回答标题的问题了,我坚信与网络有关的一切技术要素,包括软件,都是由网络孕育和塑造出来的,就像我们即便穷尽世界的计算资源也不可能定义股市一样,软件只能影响网络在特定区域和特定时间的运行状态,但不可能定义网络。
在细枝末节中,分享独立思考的乐趣。
按照文章标题下的提示操作,只需一次点击,即可完成