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. Linux驱动开发 -- 打开dev_dbg()

    Linux驱动开发 -- 打开dev_dbg() -- :: 分类: LINUX linux设备驱动调试,我们在内核中看到内核使用dev_dbg来控制输出信息,这个函数的实质是调用printk(KER ...

  2. [LeetCode#104, 111]Maximum Depth of Binary Tree, Minimum Depth of Binary Tree

    The problem 1: Given a binary tree, find its maximum depth. The maximum depth is the number of nodes ...

  3. France \'98(概率)

    题目描述 Today the first round of the Soccer World Championship in France is coming to an end. 16 countr ...

  4. Gold Balanced Lineup(哈希表)

    Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10711   Accepted: 3182 Description Farm ...

  5. -_-#【CSS3】CSS3 gradient transition with background-position

    CSS3 gradient transition with background-position <!DOCTYPE html> <html> <head> &l ...

  6. 【转】如何在github上fork一个项目来贡献代码以及同步原作者的修改 -- 不错

    原文网址:http://www.cnblogs.com/astwish/articles/3548844.html 作为一个IT人,通过github进行学习是最快的成长手段.我们可以浏览别人的优秀代码 ...

  7. C语言赋值运算符

    赋值运算符: 分类: 简单赋值 int a ;  a=10; 复合运算符 int a ;  a+=4; 复合位运算符 int a; a&=1:

  8. 动态规划——G 回文串

    G - 回文串 Time Limit:3000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Stat ...

  9. qemu kvm 虚拟化

    虚拟化: KVM是一个基于Linux内核的虚拟机,属于完全虚拟化.虚拟机监控的实现模型有两类:监控模型(Hypervisor)和宿主机模型(Host-based).由于监控模型需要进行处理器调度,还需 ...

  10. “VICUTU威克多”高档男装

    "VICUTU威克多"高档男装   北京威克多制衣中心是一家从事高档男装设计.制造和销售为一体的股份服装企业.主要经营品牌为"VICUTU"男装系列,主导产品为 ...