第2章 OpenDaylight社区
2.1 OpenDaylight社区介绍
OpenDaylight是Linux基金会负责管理的开源项目,旨在建设一个开放的SDN网络系统控制平台,推动SDN和NFV技术的创新实施和透明化。本章将详细介绍OpenDaylight社区,使读者能够更全面地了解OpenDaylight。
2.1.1 OpenDaylight开源社区
2013年4月,Big Switch、Brocade、思科、Citrix、Ericsson、IBM、Juniper、微软、Redhat、NEC、VMware、Arista、戴尔(Dell)、Fujitsu、惠普(hp)、英特尔(Intel)、Nuagenetworks以及Plumgrid等18个国际知名厂商联合建立了OpenDaylight项目(OpenDaylight Project, ODP),他们的共同目标是以透明、开放、公平、协作为原则建立一个供应商、客户、合作伙伴和开发人员可以共同使用的SDN开源平台,从而推动SDN的产品化和商业化[9]。
该项目主要由非营利性组织Linux基金会负责管理,任何厂商只需贡献一定量的资金和工程研发人员即可成为OpenDaylight社区会员。目前OpenDaylight的会员等级主要有铂金、金、银三类,会员等级越高影响力就越大,如铂金会员可指定一个代表作为技术指导委员会(Technical Steering Committee, TSC)成员。图2-1所示为现阶段OpenDaylight的铂金、金级会员和部分银级会员[10]。
图2-1 OpenDaylight会员示意
OpenDaylight社区将会定期组织一系列的活动帮助会员分享想法、创建代码,通过相互协作,最终将优秀代码和技术选入OpenDaylight基础设施软件平台中。任何开发人员都可以在该平台的基础上进行二次开发,并将其应用于实际生产环境中。
与其他开源项目一样,OpenDaylight社区提供多种参与方式:OpenDaylight新手可以从入门指南(Getting Started Guide)开始入手,而期望熟悉代码库的开发人员则可以访问开发者Wiki(Developer Wiki)。在研究ODP的过程中,遇到任何问题还可以通过邮件列表(mailing list)或freenode.net的IRC #opendaylight与OpenDaylight开发者社区的其他会员一起讨论。
2.1.2 OpenDaylight社区管理
大型开源社区通常有两类管理模式:业务管理和技术管理,ODP也不例外,其技术领导包含技术指导委员会和主要组件的项目管理者,而业务领导实例化为董事会。
OpenDaylight社区通过“技术指导委员会章程”规定两者的职责和权限,董事会主要负责设定ODP的策略方向(包括ODP的范围、技术愿景、方向),并对TSC提出的项目发布计划进行指导。而TSC则在董事会设定的策略方向内提供技术指导,制定发布规划、确立发布质量标准、挑选最佳的开发程序、监控技术进程,如果提交者和项目负责人之间出现技术冲突,TSC还需要负责调停。不仅如此,TSC还是ODP与其他联盟和组织之间的接口人。
那么,怎样才能成为TSC成员呢?
任何组织和个人都有可能成为TSC成员。TSC最初由白金会员分别指定一个代表组成,TSC组织成立之后,将会通过投票的方式将一些活跃的代码提交者选举为TSC成员。为了保证ODP的公平性和中立性,任何厂商都不可以控制投票权,如果发现与白金会员有关的非指定TSC成员(新选举出的TSC成员),该白金会员指定的TSC会员代表必须马上辞职。TSC还会选出一名主席负责与董事会沟通,主席可作为不投票的旁观者参与董事会的会议。对于TSC成员(包括主席)的选举办法,董事会每年都会重新评估。
ODP包含多个小项目,每个项目的运营都离不开以下几类角色:贡献者(contributor)、提交者(committer)和项目管理者(project leader)。
• 贡献者负责开发代码或贡献其他成果,通过贡献高质量修补程序和功能优化代码有可能被选举为提交者。
• 提交者负责控制技术方向,决定相应项目的设计、代码和修补等,具有将代码提交到源代码管理系统的权限,但其权限仅限项目本身,一个项目的提交者通常没有其他项目的提交权限。
• 项目管理者负责设定项目的整体方向并向TSC汇报,项目管理者通常从提交者中通过投票的方式选出。
2.1.3 OpenDaylight社区运营
OpenDaylight是一个多项目、多厂家的SDN开源软件生态系统,它的发展离不开行业领先的各大厂商不同程度的支持。在初创时期,Linux基金会为ODP提供了必要的组织和协作框架,在这个共同的框架下,很多公司和组织纷纷参与进来,贡献了不同的技术资源。创始阶段的部分贡献情况如下。
• 思科主要贡献了控制器技术,提供了控制器基础框架和一些控制器基本功能的代码。因此,OpenDaylight控制器的框架与思科的商用控制器OnePK较为相似。
• IBM贡献了虚拟网络覆盖技术DOVE的开源版本,可将现有物理网络的基础设施抽象为虚拟网络,这不仅能简化网络的设置和管理,还能灵活实现网络的收缩和扩展,从而加快业务的交付进程。
• Redhat主要致力于解决SDN解决方案与Linux系统、OpenStack、KVM平台整合的问题。
• NEX为OpenDaylight提供网络虚拟化支持,提交了VTN(Virtual Tenant Network,虚拟租户网络)模型和相应的代码,使用户可以更好地管理网络资源。
除此之外,还有很多厂商为ODP贡献了开源技术和代码,这里无法一一列出。在TSC和董事会的领导下,各大厂商各司其职,ODP在初创阶段的基础上迅速发展。现在,ODP已拥有30多个子项目,在本书的成稿过程中,也已发布开源软件的第三版——Lithium(锂)版本。那么,ODP的子项目是如何出现、如何运作的呢?
ODP的项目生命周期文件(daylight project lifecycle)将项目分为三个阶段:孵化期、成熟期和核心期。TSC根据该文件的精神制定了开发进程,开发进程将会为项目提供方向性指导。
任何人都可通过提交建议书的方式创建孵化期项目并提交给TSC审核,审核通过后项目开始运行,TSC根据开发进程监督和评估项目的变化,决定是否需要调整项目的状态。当达到一定的条件时,项目可能经历如图2-2所示的生命周期[11]。
图2-2 项目生命周期示意
• 孵化期:拥有实际的项目资源,但被公认为是初期阶段的项目。
• 成熟期:是一个成功的功能完整的开源项目。
• 核心期:OpenDaylight的核心项目。
通常将项目从孵化期推向核心期比创建一个新的孵化期项目的难度要高很多。