OpenStack Neutron中的ML2 Plugin.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
OpenStack Neutron中的ML2 Plugin

本文包含两部分内容:ML2Plugin Port Binding 1、 ML2 Plugin 既实现了核心资源,也包括了port binding等部分扩展资源。它完成了网络拓扑类型与底层虚拟网络实现的解耦,分别通过Type Manager,Mechanism Manager管理Type Driver、Mechanism Driver去实现。2、ML2 Plugin的源码结构中比较关键的文件为: plugin.py ?类ML2Plugin的实现?manager.py,定义了Type Manager,Mechanism Manager类的实现。 drivers.py,定义了Type Driver、Mechanism Driver的实现。3、类ML2Plugin?ML2Plugin继承自众多Mixin(Mixin是JavaScript中用的最普遍的模式,几乎所有流行类库都会有Mixin的实现。可以就任意一个对象的全部或部分属性拷贝到另一个对象上。),其主要作用是完成一些数据库操作,致力于正确有效地管理三种核心资源极其相互关系,同时正确地和Agent交互,从而完成虚拟网络部署。??ML2除了三种核心资源外,也支持许多扩展资源。类ML2Plugin需要实现这些资源的操作接口,供Controller调用。3.1、创建一个网络 当需要创建一个(核心资源)网络时,可以执行Neutron的客户端创建命令,该命令经过路由以后,最终由Plugin的create_network()函数完成。 该函数取出传递进来的参数,ML2Plugin类完成数据库模型的创建,然后通过Type Manager调用Type Driver的接口;通过Mechanism?Manager先后调用调用Mechanism?Driver的precommit、postcommit接口;3.2 关于概念segment的说明 可理解为对物理网络一部分的描述,比如众多VLAN中的一个VLAN可以理解为一个segment。segment有类型、物理网络,segment_ID三个标记。3.3 关于概念provider的说明 provider用于在创建虚拟网络时指定这个虚拟网络所占用的物理网络资源。其有对应的Provider Extension API。?当一个虚拟网络可以包括多个不同的provider network时,这个虚拟网络就称为Multi-Segment Network。4 、Type Manager,Mechanism Manager 负责加载对应的Driver,并将具体的操作分发到具体的Driver上,同时也提供一些Driver通用的代码。 Type Manager在初始化时,会加载对应的Type Driver,二者共同提供了对segment的各种操作,包括存储、验证、分配和回收等。 在创建network的时候,会从传递的参数中提取出segment的信息,并将其传向type manager。type manager会从参数中提取出的相关信息建立一个segment结构,然后告诉typer driver保留这个segment。 Mechanism Manager提供两个结构,其中precommit接口在数据库session时调用,而postcommit在数据库提交完成时调用。Mechanism Manager分发操作并具体传递操作到Mechanism Driver的方式与Type Manager相同。由于Mechanism Driver对应的是具体的物理实现方式,故而需要Mechanism Driver处理的操作都会按照配置的顺序依次调用每一个具体的Driver对应的函数来完成。5、type Driver?其主要功能是管理网络segment,对segment进行验证、分配和释放等。分为Flat type Driver、Tunnel??type Driver、VLAN??type Driver。?对Flat type Driver来说,segment的分配很简单。只需将Type Manager传递过来的segment保存在数据库即可。 VXLAN、GRE都是使用Tunnel??type Driver。其引入了TunnelTypeDriver类,实现了Type Driver要求的接口外,还实现了与Agent的接口。?VLAN??Type Driver必须指定PHYSICAL_NETWORK。6、Mechanism Driver分为一些针对采用了Agent实现虚拟网络的Driver和其他Driver。前者没有去实现MechanismDriver的类,而是引入了一个新类AgentMechanismDriverBase类,主要做Port Binding相关的处理。二、port binding

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档