OpenStack Neutron中的ML2 Plugin.docx

上传人:牧羊曲112 文档编号:3162563 上传时间:2023-03-11 格式:DOCX 页数:4 大小:38.69KB
返回 下载 相关 举报
OpenStack Neutron中的ML2 Plugin.docx_第1页
第1页 / 共4页
OpenStack Neutron中的ML2 Plugin.docx_第2页
第2页 / 共4页
OpenStack Neutron中的ML2 Plugin.docx_第3页
第3页 / 共4页
OpenStack Neutron中的ML2 Plugin.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《OpenStack Neutron中的ML2 Plugin.docx》由会员分享,可在线阅读,更多相关《OpenStack Neutron中的ML2 Plugin.docx(4页珍藏版)》请在三一办公上搜索。

1、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类

2、的实现。 drivers.py,定义了Type Driver、Mechanism Driver的实现。 3、类ML2Plugin ML2Plugin继承自众多Mixin,其主要作用是完成一些数据库操作,致力于正确有效地管理三种核心资源极其相互关系,同时正确地和Agent交互,从而完成虚拟网络部署。 ML2除了三种核心资源外,也支持许多扩展资源。类ML2Plugin需要实现这些资源的操作接口,供Controller调用。 3.1、创建一个网络 当需要创建一个网络时,可以执行Neutron的客户端创建命令,该命令经过路由以后,最终由Plugin的create_network函数完成。 该函数取出传

3、递进来的参数,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 Exte

4、nsion API。 当一个虚拟网络可以包括多个不同的provider network时,这个虚拟网络就称为Multi-Segment Network。 4 、Type Manager,Mechanism Manager 负责加载对应的Driver,并将具体的操作分发到具体的Driver上,同时也提供一些Driver通用的代码。 Type Manager在初始化时,会加载对应的Type Driver,二者共同提供了对segment的各种操作,包括存储、验证、分配和回收等。 在创建network的时候,会从传递的参数中提取出segment的信息,并将其传向type manager。type ma

5、nager会从参数中提取出的相关信息建立一个segment结构,然后告诉typer driver保留这个segment。 Mechanism Manager提供两个结构,其中precommit接口在数据库session时调用,而postcommit在数据库提交完成时调用。Mechanism Manager分发操作并具体传递操作到Mechanism Driver的方式与Type Manager相同。由于Mechanism Driver对应的是具体的物理实现方式,故而需要Mechanism Driver处理的操作都会按照配置的顺序依次调用每一个具体的Driver对应的函数来完成。 5、type D

6、river 其主要功能是管理网络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

7、、Mechanism Driver 分为一些针对采用了Agent实现虚拟网络的Driver和其他Driver。前者没有去实现MechanismDriver的类,而是引入了一个新类AgentMechanismDriverBase类,主要做Port Binding相关的处理。 二、port binding 1、Neutron中扩展资源的方法 Extension API有两种方式扩展资源:1) 为核心资源添加属性 2)增加一些新的资源,如VPNaaS; 需要扩展资源时,需要通过neutron/api.extensions.py文件中的基类Extension Descriptor实现方法get_res

8、ources或者get_extended_resources; 2、Port Binding 在port创建时,只有MAC地址等少量的信息。虚拟机创建时,会为虚拟机指定一个port,随后虚拟机被调度器分配到一个计算节点上,这时port也来到这个计算节点上。port就又增加了一个属性host-id; Port Binding可理解为对Port属性的扩展。 Neutron通过Port Binding Extension API 对port的信息进行扩展,比如设置VIF_TYPE等。有了这些扩展的信息,nova可以根据这些信息调用libvirt等库来创建VIF(virtual network int

9、erface)和相关的Bridge。 前面的Mechanism Driver的主要工作就是进行port binding,它会依次调用所有Driver去进行binding,也即去具体的物理交换机或者虚拟交换机上去设置port binding扩展的那些属性。的Driver,他们会使用binding:host_id这个属性查询保存Agent信息的数据库,来确定节点上是否有对应的Agent运行,如果有,则进一步检查Agent配置,看是否支持其相应的扩展。如果一个binding成功,则不再进行后面的操作。) port binding时,涉及到的主要由类ML2Plugin,Mechanism Manage

10、r,Mechanism Driver。 其中ML2Plugin主要负责把握Port Binding的时机,根据时机调用具体的port方法。需要Port Binding 的时机有三个:1)创建port的时候 2)update_port的时候 3)Agent通过RPC从Plugin中获取port信息时。 Mechanism Manager中的处理很简单,即实现了bind_port的方法去尝试调用每个注册的Mechanism Driver,直到成功扩展。 Mechanism Driver的处理:寻找port所在host所有该Driver的Agent,对live的Agent的每个Segment进行检查,如果能够提供符合条件的port,则返回binding信息给类ML2Plugin。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号