Monday Jan 12, 2009

过去这两年——在Crossbow项目上的日子

      瑾以此献给我和那些一起“拼搏”在这个项目上的同事的过去的两年。(最后还是决定用中文完成这篇关于Crossbow项目的记录,作为一个不算轻松的回顾。)

      提前休假去了Death Valley,利用元旦之前的时间在那里好好放松了一下。 这得“感谢”到Solaris Kernel部门的VP,是他决定为我们的项目亮绿灯——我们在二零零八年冬休前两周把这个十几个人“拼搏”了将近三年的项目整合进去了Solaris。嘿嘿,对我来说基本上是两年整。也是俺从北京来到湾区之后的几乎所有工作经历。

      一般说来,项目完成是一个令人欣喜的事情,可目前全球的经济形势实在不让人乐观。客观一点儿,现在,坐在办公室里回忆起这过去的两年时光,心里的感觉是“相当得”复杂。凤兮凤兮,何德之衰,往事不可鉴,来者犹可追。不过,无论如何也得完成这篇博客,作为一个不明所以的交代,也记录一些将来会忘记的事情。

     第一组问题是为什么我们花了那么长的时间来完成这个项目,这个项目到底做了什么,对比竞争对手有什么技术优势。积极地来说,长时间的项目是用来解决更复杂的问题的,那么“大”的项目难免得用超乎寻常的长时间来完成——别人这么说,我也这么说——尽管这样说也有一点儿道理。在公司里,工程师都被一种级别系统来标识,俺们这个牛项目从人员组成来看,长期参与的十来个工程师里,俺这样工作了七八年的竟然是最年轻的。全组有将近一半的人员属于SeniorStaff以上“职称”。“高级”工程师多了,“新颖”的想法难免多一些,思想难免难统一,而又为了“高质量”,进度难免慢一些。而说起来我们项目做的事情,那可就不含糊了:网络资源虚拟化和管理。两三年前开始热起来的“虚拟化”促生了这个项目,而“资源管理”是把项目做大的关键。什么是网络虚拟化呢?请参考项目主页:http://opensolaris.org/os/project/crossbow/. 两年前,我们的想法和实现还是相当先进的。主要有几个方面:首先是FLOW在MAC层的实现和管理,把网络资源管理引入了Solaris内核;然后是虚拟网络接口,就是虚拟出多个网络接口,这个虽然没什么新鲜,但在这个层次实现倒也算上“新颖”;还有就是为了现有网卡设计的虚拟化接口(Driver Interfaces),因为我自己直接参与了设计和实现,怎么说也得说点儿好听的吧。嘿嘿。

      说来说去就不想说了。简单记录一下自己参与的部分设计和实现吧,试图按时间顺序整理出来。

+ 2006.7 为Crossbow移植了XGE Driver(for Neterion Xframe II)。

+ 2007.1 正式加入Crossbow Team,开始的工作是去在当时的设计下实现更多XGE的虚拟化特性。而之前的移植工作中的遇到的困难让我们不得不开始考虑重新设计Driver Interface。

+ 2007.9 完成了对Driver API的重新设计,并且和Kais一起完成了设计文档。计划外的收获,能够在这个项目组里完成一部分接口的设计。感激Kais的帮助和信任。

+ 2007.10 开始实现新设计的Driver Interface,并且信心十足地完成了直接相关的硬件资源管理部分。期望这个重新设计的底层接口可以让项目进展更顺利一些。

+ 2008.1 终于把三个月前实现的代码放进的项目里。千辛万苦之后。结果是将近百分之六十的代码被要求删除,原因是我无法理解。高兴的是,终于看到推动项目的曙光。再次感激Kais的支持和帮助,还有经理Markus的支持。在新实现的Driver Interface下,XGE是第一个试验品。

+ 2008.2 开始协助其他工程师移植其他Drivers。也同时在验证新接口的易用性。发现了这么一个问题:设计文档不够详尽和成熟。惭愧。

+ 2008.4 开始清除那些旧接口和遗留问题,同时继续完善着底层的接口定义。也开始放弃了一些最初比较理想的设计,因为比较“资深”的工程师认为这样太激进。控制项目的一个重要环节就是让项目的定义清楚,尤其要让能做决定的人清楚。这是铁律。

+ 2008.6 开始把最初删掉的一些实现加回来,在一个很多人“集思广益”“众志成城”以后的代码上。无奈,完成工作。

+ 2008.8 终于在一年以后把最初的那些负责的接口全部删掉了,MAC_CAP_RINGS用来实现了所有Crossbow需要的Driver Capabilities的的注册和管理。比最初的期望推迟了将近六个月。这就是大项目吧。奥运会终于开始了在北京的狂欢。

+ 2008.9 完成了新的MAC Addresses的管理以及相应的安全检查。在Tim的提示下,开始了对虚拟化安全的关注。一用安全的角度审视这个项目,感觉要做的事情太多了。

+ 2008.10 Bugfix之余,开始协助项目测试。发现跑测试是一个调整心态的好办法。

+ 2008.12 项目整合了,开始休假,嘿嘿。

+ 2009.1 Crossbow在OpenSolaris里发布了。我也写下了这个回顾。留个纪念吧。

Comments:

的确不容易,也再次祝贺一下 :)

Posted by Oliver on January 14, 2009 at 08:40 PM PST #

Post a Comment:
  • HTML Syntax: NOT allowed