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里发布了。我也写下了这个回顾。留个纪念吧。

Monday Mar 10, 2008

Partitioning Network Resources for a Virtualized World (New MAC Driver Interfaces in Crossbow)

I was so happy when the decision of publishing Crossbow Beta Release was made on last team meeting, because it was really a long way coming to today. Besides blogging the event here, I may summarize what changes we're introducing to GLDv3(a.k.a. Nemo) framework as part of Network Virtualization and Resource Control project.[Read More]

Sunday Aug 26, 2007

N in Nemo (NICs powered by GLDv3 framework)

The GLDv3 project (a.k.a Nemo) was originally integrated in Solaris in 2005, the new generation of Generic Lan Driver Architecture was implemented with three modules, MAC, DLS, and DLD. After then, Clearview project further modified the API introduced by Nemo, Nemo MAC-Type Plugin Architecture was implemented and WiFi type of MAC was originally supported by GLDv3.

When Nemo was initially integrated, bge(Broadcom GbE) and xge(Neterion Xframe 10GbE) were ported to the new framework as two example NIC drivers. Because the interfaces have been evolving, external developers and ISVs have not been able to take the advantage of  powerful new GLDv3, but Sun's internal development teams have ported most popular NIC drivers from DLPI or GLDv2(Generic Lan Driver) to GLDv3 framework. I'll try to list all Nemo based drivers so people can check out code from OpenSolaris to learn the latest GLDv3 architecture. 

  Driver Name   Driven NICs   Solaris Release   Comment
 bge  Broadcom Gigabit Ethernet  Solaris 10, OpenSolaris  
 nge  nVidia onboard Gigabit Ethernet  Solaris 10 update, OpenSolaris  
 e1000g  Intel Gigabit Ethernet (8254x, 8257x...)  Solaris 10 update, OpenSolaris  
 rge  Realtek Gigabit Ethernet RTL8169/8110  Solaris 10 update, OpenSolaris  
 xge  Neterion Xframe I/II 10 Gigabit Ethernet  Solaris 10, OpenSolaris  
 nxge  Neptune 10GbE  Solaris 10 update, OpenSolaris  
 ixgb  Intel 82597EX 10GbE  Solaris 10, OpenSolaris  
 rtls  Realtek Fast Ethernet  in progress  
 chxge  Chelsio 10GbE  in progress  
 ce  Cassini Gigabit Ethernet  in progress  
 hme  Sun hme Fast Ethernet  in progress  
 eri  Sun eri Fast Ethernet  in progress  

NOTE: This list is uncompleted, and more information will be added. Only Ethernet drivers are listed for now. Will add WiFi and other Nemo base drivers.

It's not easy to keep this list up to date on my blog, so I would like update the driver list on Device Driver Community so that everyone can seach Solaris supported NIC drivers and driver development statuses easily. But what a pity I don't know how to program HTML. :(

 

Thursday May 03, 2007

在MPK17庆祝的节日

        今天是 Cinco de Mayo, 一个墨西哥的节日,MPK17的同事在二层办了一个小Party来庆祝,准备了各种各样的墨西哥的点心和饮料,嗯,准备的各种啤酒也好像都是来自墨西哥。还有一种用三种东西混合在一起味道很奇怪的饮料,我忘记了名字,因为我不想再尝。:-P

        几个月前,MPK的园区里恢复了每周一次的Beer Bust,也就是在周五下午在MPK11门前的空地上提供免费的啤酒和各种零食让周五来上班的同事谈天放松。说到周五来上班,嘿嘿,在MPK,每到周五,好像总有三成到五成的人都在家工作,园区也显得格外安静。ERI的Tea Time也是在周五,很多活动也安排在周五,但到了MPK才发现,在ERI的周末活动虽然丰富多彩,但没有啤酒的周末未免显得单薄,嘿嘿。

        其实在这个每周一次(有时候隔周一次)的Beer Bust恢复之前,MPK17就有个每周一次的Beer Bust在三层的走廊里,很多人都会去喝上一杯,和大家聊一会儿天。这也是在周五,而周四下午在MPK17二层的一个拐角处,总有一个很小的Party,你可以尝到各种各样的葡萄酒(加州的葡萄酒很是出名)和奶酪(Cheese)。另外,每逢一个大的项目完成,或者什么重要的变化,总会有这样那样的Beer Bust来庆祝。

        啤酒在这里是最受欢迎的饮料,虽然一些同事因为宗教信仰的缘故不饮酒,各种聚会却都少不了啤酒。有些人还把自酿的啤酒带到办公室请大家品尝。很多次,我喝完啤酒再回来工作,那种感觉真的不错。:-)另外,各种非正式的培训和会议也少不了啤酒的出现,上周末和Intel的培训结束后就有一个小小的Beer Bust。像今天的情况,过去两个月里其实有很多次,复活节等就不用说了,还有些很奇怪的节日可能来自任何一个国家或宗教,以至于几次我都不知道那是庆祝什么,也许当时啤酒喝得太多了。嘿嘿。 

        有时候,这样的活动多得你应接不暇,上周周三到周五在这里总共有四个这样的Beer Bust,还有一个是去了附近的露天酒吧。要有兴趣想出现在每一个的话就别想工作了。不过这确实是个很好的社交的环境,只要你乐于并且敢于和别人聊天,即使用很生硬简单的英语。美国的文化中一个很重要的特点是“self-promotion”,而这个的前提就是表达自己。

 

        ERI的Tea Time好像发起于前院长,留英的背景让他把很英国化的Tea Time带来到了ERI。一个伦敦的朋友说在那边很多公司到了下午就去TeaTime,基本上不干活了,这在ERI是不可能的。一周一次好像就在北京很少见了。很多参加过ERI的Tea Time的老外问:为什么没有Tea?说来多少有点儿奇怪,在ERI所谓Tea Time主要提供冰淇淋、冰糕、冷饮和一些零食,好像从来没有过中国意义上的“茶”。而幸亏,这个“茶”其实不只指绿茶红茶乌龙茶的那个茶,也泛指类似于茶的饮料和点心,甚至在广东还把早点叫做“早茶”。但大多数人还是倾向于把Tea和茶理解为中国茶,尤其那些来ERI的老外们。不过这也没什么不对,那样的嘈杂的环境是不适合品茶的,冰茶例外。而且在ERI冰糕冰淇淋从来都格外受欢迎,即使在冬天里。而这个活动可能是ERI官方举办的最有生命力的活动了,我觉得,尽管参加的人总是局限于举行Team Time的那一楼层。(说到茶(本意),我相信美国人心中的Tea是完全不同于中国人的茶,为啥?在MPK的Pantry(食品间?)提供的可能有十几种的“Tea”里,没有一种是真正接近中国的绿茶的,美国人更喜欢把乱七八糟的东西例如柠檬薄荷香草等东西和劣质茶叶混合在一起来喝,比之与茉莉花茶都有很大的区别,别说中国人所习惯的绿茶了。这也难怪,即使在国内,也并非很多人懂得品茶,“明前狮峰龙井”对很多人来说可能都是一个有点儿熟悉也有点儿奇怪名字而已。天天喝袋装茶确确实实慢慢改变了“茶”的概念。前段时间一个朋友送了点儿从台湾带过来的阿里山茶(袋装),味道很是不错,可能使我所尝过的袋装茶里最好的了,我却不理解,在北京咋就没有这样品质的袋装茶呢?印度出名的Darjeeling茶我尝过,味道不能说差,但绝对没有龙井的清澈或毛尖的爽快,略苦微涩的口感让我总想把它和苦丁茶来做比较。)

        对比ERI的中国特色的Tea Time和MPK美国特色(?)的Beer Bust,之间的不同更支持了自己最初的判断:美国人的快乐指数远远高于北京。以前和朋友谈起来美国员工和中国员工(以工作地点划分)不同的工作态度,总觉得有些不可简单理解为轻松与否或责任心的不同,感觉工作态度更多是生活态度的一个反应。在ERI很多同事忙得不可开交,尽管也有一些同事轻松得一塌糊涂(管理上的问题?);而在MPK,人们似乎大都同时享受着工作和生活,而这并不妨碍足够高的工作效率。人没什么不同,只是态度不一样;工作也没什么不同,只是心态不一样;经验多少有点儿不同,更多的是自我姿态的不一样。我想。

        如果可能,在ERI举办每周一度的Beer Bust可能是比现在的Tea Time更好的一种放松员工增进同事相互了解的方式(是否会阻碍很多女同事的参加?)。但不要在每周轮流到某一楼层,找个公共场所,例如创新大厦门前的草坪上,让外边的人也了解一下Sun的与众不同的文化(我一直坚信Google的企业文化远不如Sun的给员工的空间更大)。同时呢,公司的老大领导们也最好可以去和那些不认识的员工们聊聊,好知道很多你直接下属所不可能告诉你的事情——更多数人的想法。中国有句古话:兼听则明,偏听则暗。原本是讲君主,现在应用到管理层未尝不是一个极其有意义的原则。嘿嘿,又表示不满呢?随便说说而已。

 

Wednesday Apr 04, 2007

一年半以后,用中文来记录在MPK的生活吧

 

[Read More]

Tuesday Sep 20, 2005

Start here!