Neutron/ML2

  1. Neutron ML2

模块层2(ml2)插件是一种允许OpenStack网络同时地利用在复杂现实数据中心发现的各种第二层网络技术的框架。目前它与存在的openvswitch、linuxbridge和hyperv L2代理共同存在,而且想要替换和否决与那些L2代理相关联的巨大插件。ml2框架也想要大大简化增加对新L2网络技术的支持,并且比那些要求添加新的巨大核心插件需要更少的初始和持续的努力。模块化代理可能作为后续开发工作。

1.1.        ML2驱动

ml2驱动分别实现可扩展的网络类型和访问那些类型网络机制的集合。与metaplugin不同的是,多种机制被同时地用于访问相同虚拟网络的不同端口。这些机制能通过RPC和/或使用驱动原理利用L2代理来与外部设备或者控制器相互联系。类型和进程驱动程序被加载为python入口点使用stevedore库。

1.1.1.   驱动类型

每个可用的网络类型被ml2驱动类型管理。驱动类型维持任何需要指定类型的网络状态,并且执行供应商网络验证和租户网络配置。Ml2插件同时包含本地、扁平、vlan、gre和vxlan网络类型的驱动程序。

1.1.2.   驱动机制

每个网络进程被ml2驱动机制管理。驱动机制对已建立的类型驱动获取的信息有责任,以及确保能够恰当的应用到所给的能工作的网络进程。

驱动机制接口同时支持创建、更新和删除网络和端口资源。对每个在资源上采取行动,进程驱动使用两种方法——ACTION_RESOURCE_precommit,一种称为数据库事务处理上下文和ACTION_RESOURCE_postcommit,称为数据库事务完成后。Precommit方法被驱动机制用于验证采取的行动和做任何需要改变驱动机制的私有数据库。Precommit方法不应该阻塞以及因此不能和任何外部Neutron通信。Postcommit方法负责适当推动改变资源的实体负责应用改变。例如,postcommit方法将推动一个外部网络控制器改变,那负责适当地更新网络资源基于这些改变。

支持驱动机制目前在先行版本Havana中是半成品,同时它的接口在Havana推行前会发生改变。在未来的版本中,驱动机制接口也被称为用来建立端口绑定,决定VIF类型和网段。

1.2.           多区段网络

虚拟网络有多段相同或者不同类型组成的。数据库决策和驱动程序APIs支持多区段网络,但是对于多区段网络的客户端APIs现在还没有实现。

2.   ML2配置

2.1.           在Devstack中使用ML2

ML2插件在Devstack中完全支持。支持配置VLAN、GRE和VXLAN网络模式。配置这些模式如下:

2.2.           用VLANs模式的ML2配置Devstack

为配置ML2使用控制和计算结点的localrc文件如下所述,用来运行VLANs模式的Devstack。这等价于运行OVS或者LinuxBridge插件在VLAN模式下。

如下在你的控制节点添加如下的localrc文件:

Q_PLUGIN=ml2

ENABLE_TENANT_VLANS=True

ML2_VLAN_RANGES=mynetwork:100:200

为VLAN类型驱动程序设置指定的VLAN参数,在localrc下列变量被使用。这是一个空间独立的分配值列表:

Q_ML2_PLUGIN_VLAN_TYPE_OPTIONS=(network_vlan_ranges=600:700)

2.3.           用隧道网络模式的ML2配置Devstack

一个控制和计算结点localrc文件显示在这里为了配置ML2运行隧道网络的Devstack。这是最基本的配置ML2的形式,而且等价于运行GRE隧道的OVS插件。

在控制节点localrc添加如下:

Q_PLUGIN=ml2

ENABLE_TENANT_TUNNELS=True

在计算结点,添加到你的localrc中:

Q_PLUGIN=ml2

ENABLE_TENANT_TUNNELS=True

改变GRE关键的范围使用隧道关键,添加到localrc:

TENANT_TUNNEL_RANGE=50:100

上面将启用OVS的GRE隧道。如果你想要使用OVS的VXLAN,确保你正在运行至少1.10版本的OVS,包括从上游领域的OVS项目中的Open vSwitch KLM。一旦你有了,下面就可以启用VXLAN隧道模式的ML2:

在控制节点上添加下列到localrc:

Q_PLUGIN=ml2

Q_ML2_TENANT_NETWORK_TYPE=vxlan

计算结点上添加下列代码到localrc中:

Q_PLUGIN=ml2

Q_ML2_TENANT_NETWORK_TYPE=vxlan

改变VXLAN VNIs的范围到使用,添加到localrc:

Q_ML2_PLUGIN_VXLAN_TYPE_OPTIONS=(vni_ranges=400:500)

2.4.           在Devstack中高级ML2配置

Devstack缺省运行OVS代理的ML2.使用不同的代理,在localrc中如下设置:

Q_AGENT=linuxbridge

ML2缺省不加载任何进程驱动程序,仅与OVS、LinuxBridge和Hyper-V代理共存。为了改变这个,在localrc中设置如下。有效参数是你想要使用的进程驱动程序的名字:

Q_ML2_PLUGIN_MECHANISM_DRIVERS=<list of MechansimDrivers>

默认地,所有的ML2类型驱动被加载。改变这个行为,在localrc设置如下。有效选项如下设置:local、flat、vlan、gre、vxlan。

Q_ML2_PLUGIN_TYPE_DRIVERS=vlan,gre

Neutron/ML2学习的更多相关文章

  1. openstack学习之neutron ml2初始化代码分析

    这里没有 去详细考虑neutron server怎么初始化的,而是直接从加载插件的地方开始分析.首先我们看下下面这个文件. Neutron/api/v2/router.py class APIRout ...

  2. Neutron 理解(14):Neutron ML2 + Linux bridge + VxLAN 组网

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  3. Neutron网络学习

    学习 Neutron 系列文章: 转http://www.cnblogs.com/sammyliu/p/4622563.html (1)Neutron 所实现的网络虚拟化 (2)Neutron Ope ...

  4. 学习OpenStack之(6):Neutron 深入学习之 OVS + GRE 之 Compute node 篇

    0.环境 硬件环境见上一篇博客:学习OpenStack之(5):在Mac上部署Juno版本OpenStack 四节点环境 OpenStack网络配置:一个tenant, 2个虚机 Type drive ...

  5. neutron ml2

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhoumingbo532/article/details/27964675 在介绍ml2之前,先介绍 ...

  6. Neutron 理解 (2): 使用 Open vSwitch + VLAN 组网 [Netruon Open vSwitch + VLAN Virutal Network]

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  7. Neutron 理解 (3): Open vSwitch + GRE/VxLAN 组网 [Netruon Open vSwitch + GRE/VxLAN Virutal Network]

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  8. 理解 neutron

    之前大师发个结构图. understanding_neutron.pdf 自己走读了代码: 1.  get_extensions_path() # 在/opt/stack/neutron/neutro ...

  9. Neutron 理解 (2): 使用 Open vSwitch + VLAN 组网 [Neutron Open vSwitch + VLAN Virtual Network]

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

随机推荐

  1. LNMP一键安装脚本

    #!/bin/bash #LNMP(Fastcgi) #CentOS + MySQL 5.5 #-- iptables -F iptables -X iptables -Z iptables -A I ...

  2. Merge Intervals——LeetCode

    Given a collection of intervals, merge all overlapping intervals. For example,Given [1,3],[2,6],[8,1 ...

  3. IGeometry 中取指定的点

    private static IGeometryCollection MakeMultiPoint(IGeometry geometry,int pointcount) {          IGeo ...

  4. C++引用变量学习

    版权所有,转载请注明来源 (1)reference variable(rv) 主要用处是作为方程的形式参数,使用rv 可以直接对原数据进行操作而不是该数据的拷贝,节省了时间和空间,尤其是对于结构体以及 ...

  5. [转]浏览器如何和Web服务器通信

    http://hi.baidu.com/ywqme/item/b5297014b2e58f4e6826bb74 概述 普通网民打开网页,访问网站,并不需要了解所谓HTTP协议.作为软件工程师,了解一下 ...

  6. L - Subway - POJ 2502

    题意:在一个城市里,分布着若干条地铁线路,每条地铁线路有若干个站点,所有地铁的速度均为40km/h.现在你知道了出发地和终点的坐标,以及这些地铁 线路每个站点的坐标,你的步行速度为10km/h,且你到 ...

  7. C语言判断系统数据大/小端存储方式

    小端存储:数据的低位部分,存储于存储器的低地址空间里. 大端存储:数据的低位部分,存储于存储器的高地址空间里. 首先,一般PC数据存储方式是小端存储. 基本实现思想是:将存储器中所存的数据按字节以地址 ...

  8. Android 4.4(KitKat)中VSync信号的虚拟化

    原文地址:http://blog.csdn.net/jinzhuojun/article/details/17293325 Android 4.1(Jelly Bean)引入了Vsync(Vertic ...

  9. XMPPFrameWork IOS 开发(二)- xcode配置

    原始地址:XMPPFrameWork IOS 开发(二) 译文地址:   Getting started using XMPPFramework on iOS 介绍 ios上的XMPPFramewor ...

  10. android:Adb connection Error:远程主机强迫关闭了一个现有的连接

    用真机调试程序的时候,eclipse的console总是出现如下的错误“Adb connection Error:远程主机强迫关闭了一个现有的连接” 问题出现的原因:这是ddms调用adb引发的. 经 ...