【转载 来自sdnlab】 开放网络没那么简单

链接:开放网络没那么简单

本文是云杉网络工程师张攀对当前开源网络技术现状的一些思考和探索。

开放网元、释放数据的价值

从2012年开始至今,网络行业明显是O字辈的天下。所有我接触过了解过的组织和项目,都鲜有不含“Open”这个单词的。

ONF/OPNFV/ONOS/ODL/OVS/OpenStack/OPEN-O……名单还可以变得更长。但对在网络行业语境中“开放”这个词的理解,以我的观察,业界也是逐渐演进的。最开始的理解,是接口的开放和统一,将铁皮盒子打开,统一控制,所谓的“集中”与“解耦”,就是那个时候的SDN。所以有了当时大热的OpenFlow、有了ONF和ODL以及那个时候会议中密集的对SDN这个概念的讨论和纸上谈兵。

【转载 来自sdnlab】 开放网络没那么简单

就像所有极端激烈的革命一样,理想永远也填不满横亘在现实之间的鸿沟。完全的集中和解耦在现实部署中遇到了很多无法解决的困难,在这里不再一一赘述。SDN在“激情燃烧”的岁月之后,又回到了“螺旋上升”的一般规律。这个时候的“开放”,已经不再仅仅是一个北向或者南向接口,它的含义变得复杂、多变而暧昧。

  • 技术上,网络资源池化和Service-Chain可以算作开放;
  • 生态上,参与和维护开源社区,插入自家产品的agent可以算作开放;
  • 市场上,所有的宣传材料印上“开放”这个符号,就是政治正确。

这个时候OPNFV/ONOS/Open-O作为后起之秀开始崭露头角。而各厂的代表在会议上除了滔滔不绝地介绍自家的产品有多虚拟多灵活对接了多少开源项目之外,还是不免露出讳莫如深的破绽。当所有人都在谈论一件事的时候,恰恰证明这件事正是缺失的那块拼图。在2016年之前,我们对“开放”的理解,很多时候还停留在Teenage Sex的阶段:所有人都在谈论,却没人知道怎么做,但我们认为别的人都在做,所以只能声称自己也在做……在我们真正达到一个新的阶段之前,弯路其实也是必不可少的……

实际网络用户的需求,带来了对技术的反思。如今所谈的开放,已经抛弃了以前的那些技术上的繁文缛节和政治上的盘根错节,而真正关注于网络的细枝末节。它要将一张网络中流转的每一束流量,每一个报文,每一次以太网口的闪烁都展示给你。人们越来越明白,之前之所以说网络“封闭”,并不是因为没有CLI的编程接口,并不是因为没有x86和Linux服务器上的NFV,而是因为看不到到底什么东西在网络中流动,它们过去如何、现在如何、未来又将如何,无人知晓。封闭的不是网元,而是网线。而现在的开放,就是要将网线中的流量一层层剥开。剥出来的不仅仅是前端的一幅幅UI统计曲线,而是整个网络中最基础、也是最有价值的数据。依靠这些数据可以产生真正的价值。而开放,就是要取得这些数据、分发这些数据、处理这些数据、总结这些数据。这里仿佛又回到了SDN最初给大家构筑那幅愿景,唯一不同的是,这次已不再是一座空中楼阁。

开源项目为什么做不好?

业界对开源的热捧,给这些大名鼎鼎的项目笼罩上了一层不切实际的光环。单单从产品质量上来讲,开源项目不必,也不能做好。因为一旦有一个开源项目可以满足大部分客户的需求,那么这个行业的生态就宣告终结。如果任何人都可以连上网,点几下鼠标,就可以免费下载一个满足需求的软件,那谁还会参与这个生态呢?生态越繁荣,开源当然也可以火爆,但还是说明免费的软件有各种需要被填补的空缺。

在多数会议里,如果演讲人是开源软件的“一线用户”,那么很少会听到当前那几个热门开源软件的好话,理由也多是不具备生产环境商用的能力和价值,存在各种各样的坑和二次开发的必要。在我看来,现阶段正是下一代商用产品青黄不接的时间段,这种时候,谁都希望能开展一场轰轰烈烈的开源造神运动。即能拉帮结派,又能收到一些代码、标准和市场的实效,为自家的商用产品铺垫,何乐而不为呢?当自家投入甚多的开源软件“商用版本”出来之后,再借着用户习惯占领市场,不是最有效的方式吗?当越来越多的厂商有了自己成熟的商用产品,那个时候再来看开源软件,恐怕只能用“有高潮就有低谷”来形容了。

但开源并不仅仅是个炮灰的角色。很多大厂在介绍自己的商用产品的时候,总是不忘最后加上一句“回馈社区”来彰显自己一览众山小的气度。但这个链条往往到此为止,开源社区的大部分价值,甚或最大的价值,还没被攫取和利用。

在我看来,开源社区,是最好的营销平台、是点击率最高的公众号、是精准投放的广告渠道。很多厂商在开源社区投入很大但宣传的很少,或者宣传方式有那么一点点简单粗暴。导致自己的贡献要么说出去让人反感,要么说出去没人知道。如果能把自己的贡献和参与以群众喜闻乐见的方式投放出去,对技术知名度和品牌价值的作用,恐怕就像在北京买了一套房。毕竟开源的本质不是免费而是汇聚。有汇聚就会有广泛的联系,有了联系和交换,就有可能。

编程是一种心理活动

虽然上面谈到了一些不一定经得起时间考验的看法和见解,但无论是构建网络,还是开发一个产品,最终依赖的基石还是人。这几个人组成的团队才是改变真正“make a difference”的土壤。他们的所思所想,他们对产品的投入和态度,将会唯一性地、长时效性地,影响最终的产品。要想产品做得好,一定要先把团队建好。而对一个(技术)团队来说,最重要的东西——很直观的——就是编程开发。

但我们对编程开发的认识还不够深入。编程到底是什么?编程当然是一件脑力、技巧与经验相结合的活动,但这些并不是它的本质。从根本上讲,开发编程是一种心理活动。没有人能不带任何情绪地敲代码,也没有人能不把他的情绪敲到代码里。很多时候,我们需要不断地(自我)激励,需要不断地获得心理奖赏和反馈,才能把这项工作做好。因为与其说我们是搞定了Bug,搞定了算法,毋宁说是搞定了自己的心态。对于稳定心态来讲,最有用的事,可能并不是怀有一个盲目的信仰,而是有一个完整的逻辑链条,能够支撑这一行行代码的意义。虽然这些可能只是一个小小的commit,但它可能代表的是一副网络世界未来的景象。

包括我自己在内,很多时候也会埋首于一堆技术细节之中,而没有抬头看看的空隙。就像爬山,看不到山顶在哪,也不知道为什么要翻越这么多沟壑,再加上与一个行为方式完全“反人类”的计算机打交道,心理遭受的伤害可想而知。如果不及时“修复”,这种心理活动最终都会反映在产品之上。而若是你理解了自己的产品,理解了它将会在这个行业里所起的作用之后,你不但可以知道为什么要前进,并且可以量化今天前进了多少米,还能知道你在地图中的绝对位置,那么在心理方面的准备,就是足够了,这也其实就是开发一个好的产品的全部过程。

作者简介:
张攀,云杉网络工程师,专注于x86网络软件的开发与性能优化,深度参与ONF/OPNFV/ONOS等组织及社区,曾任ONF测试工作组副主席

上一篇:js里变量的作用域


下一篇:wget下载整个网站