openstack网络架构

Neutron中的基本网络元素

Neutron使用所有网络管理员熟悉的元素来构建虚拟网络,包括网络,子网,端口,路由器,负载均衡器等。使用2.0版本核心Neutron API,用户可以构建一个由以下实体组成的网络:

网络:网络(Network)是一个隔离的2层广播域。 通常保留给创建它们的租户,如果相应地配置网络可以在租户之间共享。 网络是Neutron API的核心实体。 子网和端口必须始终与网络相关联。

子网:子网(subnet)是IPv4或IPv6地址块,可以将IP地址分配给虚拟机实例。 每个子网必须具有CIDR并且必须与网络相关联。 多个子网可以与单个网络相关联,并且可以是不连续的。 子网设置DHCP分配范围后可以限制提供给虚拟机的IP地址。

端口:Neutron中的端口(port)表示逻辑虚拟交换机上的虚拟交换机端口。 虚拟机接口映射到Neutron端口,并且端口定义要分配给插入其中的接口MAC地址和IP地址。 Neutron端口定义存储在Neutron数据库中,然后由相应的插件代理使用,以构建和连接虚拟交换基础设备。

管理员和用户可以通过创建和配置网络、子网来配置网络拓扑,然后指示Nova等服务将虚拟设备连接到这些网络上的端口。 用户可以创建多个网络,子网和端口,但限于由云管理员设置的每个租户配额定义的阈值。

插件扩展功能

Neutron引入了对扩展网络功能和Neutron API实现的第三方插件和驱动程序的支持。 可以创建使用各种基于软件和基于硬件的技术来实现由运营商和用户构建的网络的插件和驱动程序。

Neutron架构中有两种主要的插件类型:

•核心插件

•服务插件

核心插件实现核心Neutron API,并负责将网络,端口和子网所描述的逻辑网络适配成可由主机上运行的L2代理和IP地址管理系统实现的东西。服务插件提供额外的网络服务,如路由,负载均衡,防火墙等。

每种plugin代表了一种网络虚拟化的实现技术。不同的实现技术所提供的对外管理接口各不相同,plugin用来实现neutron rest api和相应实现接口之间的适配。

ML2(Modular Layer 2 plugin)

Ml2插件是一种允许OpenStack网络同时地利用多种二层网络技术的框架。目前与openswitch、linux bridge、hyperv L2 agent协同工作。ml2框架对简化新增L2网络技术的做了很好支持,比起以往新增加的核心插件,ML2框架需要更少的初期以及后期维护工作。

ML2驱动包括类型驱动和机制驱动,分别实现了网络类型和网络机制的可扩展性。

1)类型驱动(TypeDriver):

类型驱动可以管理多种网络类型,目前支持local, flat, vlan, gre, vxlan等。

2)机制驱动(MechanismDriver):

ML2机制驱动程序负责获取由类型驱动程序建立的信息, 机制驱动处理由类型驱动建立的信息(例如网络、子网、端口的创建、更新、删除操作),并且确保能够用于指定的网络机制,并确保其正确实现。 多个机制驱动可以被配置为同时操作(如有些节点可以使用openvswitch,有些则使用cisco Nexus 1000V等),并且可以使用三种类型的模型来描述:

• Agent-based:这包括LinuxBridge,Open vSwitch和其他

• Controller-based:这包括OpenDaylight,VMWare NSX和其他

• Top-of-Rack:这包括Cisco Nexus,Arista,Mellanox和其他

LinuxBridge和Open vSwitch ML2机制驱动程序用在托管实例和网络服务的节点内配置各自的交换技术。 LinuxBridge驱动程序支持local,flat,vlan和vxlan网络类型,而Open vSwitch驱动程序支持所有这些以及gre网络类型。

L2驱动器通过设置网络结构来限制广播流量的量。传统的交换行为如单播,多播和广播业务会被洪泛到所有交换机端口,直到学习到了地址。这种行为可能对网络结构产生负面影响,特别是随着云中的主机数量的增加。Neutron可以在所有主机上预填充转发数据库,​​以避免昂贵的学习操作。当使用ARP代理时,Neutron以类似的方式预填充所有主机上的ARP表,以避免ARP流量通过网络广播。

Neutron架构图



1、Neutron Server

对外提供 OpenStack 网络 API,接收请求,并调用 Plugin 处理请求。

2、Plugin

处理 Neutron Server 发来的请求,维护 OpenStack 逻辑网络状态, 并调用 Agent 处理请求。

3、Agent

处理 Plugin 的请求,负责在 network provider 上真正实现各种网络功能。

4、Network provider

提供网络服务的虚拟或物理网络设备,例如 Linux Bridge,Open vSwitch 或者其他支持 Neutron 的物理交换机。

5、Queue

Neutron Server,Plugin 和 Agent 之间通过 Messaging Queue 通信和调用。

6、Database

存放 OpenStack 的网络状态信息,包括 Network, Subnet, Port, Router 等。

参考资料

1、Learning OpenStack Networking (Neutron) Second Edition James Denton

2、https://mp.weixin.qq.com/s/IDjOy7TTQbaj-TJ4u0ixXA CloudMan公众号推送文章

openstack网络(三)的更多相关文章

  1. 深入理解openstack网络架构(4)-----连接到public network

    原文地址: https://blogs.oracle.com/ronen/entry/diving_into_openstack_network_architecture3 译文转自:http://b ...

  2. OpenStack云计算(一)——OpenStack 网络

    关于OpenStack OpenStack它是 Rackspace Cloud 和 NASA 负责的一个开源基础架构即服务的云计算项目. OpenStack 是一个由开发者和云计算技术人员的全球协作开 ...

  3. 深入理解 Neutron -- OpenStack 网络实现(3):VXLAN 模式

    问题导读1.VXLAN 模式下,网络的架构跟 GRE 模式类似,他们的不同点在什么地方?2.网络节点的作用是什么?3.tap-xxx.qr-xxx是指什么? 接上篇:深入理解 Neutron -- O ...

  4. 深入理解 Neutron -- OpenStack 网络实现(2):VLAN 模式

    问题导读 1.br-int.br-ethx的作用是什么?2.安全组策略是如何实现的?3.VLAN 模式与GRE模式有哪些不同点?流量上有哪些不同?4.L3 agent实现了什么功能? 接上篇深入理解 ...

  5. Openstack网络相关概念比较复杂,经常使人混淆,本文进行相关说明。

    Openstack网络相关概念比较复杂,经常使人混淆,本文进行相关说明. 文中相关术语与缩写 英文 缩写 中文 Virtual Local Area Network VLAN 虚拟局域网 Virtua ...

  6. OpenStack 网络:Neutron 初探

    OpenStack Neutron 网络模型 OpenStack nova-network 独立成为单独的组件 Neutron 后,形象的网络模型的多平面网络.混合平面私有网络.如图 3,图 4,图 ...

  7. openstack网络(二)

    连接物理服务器 单网卡 多网卡 跨主机安装网络服务 使用单个控制节点安装 使用专用网络节点安装 连接物理服务器 每个物理主机所需的网卡数量取决于云平台使用领域,组织的安全性和性能要求以及硬件的可用性. ...

  8. OpenStack(三)——allinone云平台的使用方法

    接着OpenStack(二)——使用Kolla部署OpenStack-allinone云平台继续操作. 特别感谢https://www.cnblogs.com/openstackteam/p/5519 ...

  9. 学习openstack(三)

      一.OpenStack初探 1.1 OpenStack简介 OpenStack是一整套开源软件项目的综合,它允许企业或服务提供者建立.运行自己的云计算和存储设施.Rackspace与NASA是最初 ...

随机推荐

  1. 易初大数据 2019年10月20日 spss习题 王庆超

    一.选择题 1.有关spss数据字典的说法,正确的是:D A.SPSS数据集的数据字典可以复制到其他数据集中 B.SPSS数据集的数据字典是不能复制的 C.SPSS的数据字典可以通过“复制”和“黏贴” ...

  2. js获取文件里面的所有文件名

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. PHP代码安全有必要了解下

    攻击者通过构造恶意SQL命令发送到数据库,如果程序未对用户输入的 SQL命令执行判断过滤,那么生成的SQL语句可能会绕过安全性检查,插入其他用于修改后端数据库的语句,并可能执行系统命令,从而对系统造成 ...

  4. [增强for循环] 格式

    比如:

  5. Netty学习篇⑤--编、解码

    前言 学习Netty也有一段时间了,Netty作为一个高性能的异步框架,很多RPC框架也运用到了Netty中的知识,在rpc框架中丰富的数据协议及编解码可以让使用者更加青睐: Netty支持丰富的编解 ...

  6. 用PHP+Redis实现延迟任务,实现自动取消订单

    简单定时任务解决方案:使用redis的keyspace notifications(键失效后通知事件) 需要注意此功能是在redis 2.8版本以后推出的,因此你服务器上的reids最少要是2.8版本 ...

  7. TestNg练习001

    15分钟入门TestNG 阅读目录 TestNG介绍 在Eclipse中在线安装TestNG 在Eclipse中离线安装TestNg TestNG最简单的测试 TestNG的基本注解 TestNG中如 ...

  8. Openlayers Projection导致经纬度颠倒问题

    问题: openlayers3调用TileWMS接口,实现Openlayers加载Geoserver转发的ArcGIS切片时,web墨卡托(wkid3857)没有问题,但是WGS84(wkid4326 ...

  9. Roarctf 几道pwn 复现

    1.easy_pwn 可以利用的点: __int64 __fastcall sub_E26(signed int a1, unsigned int a2) { __int64 result; // r ...

  10. SpringBoot 项目脚手架

    写在前面 之前也一直很少有写SpringBoot项目相关的文章,今天 准备整理一个我自己初始化SpringBoot项目时的一个脚手架,便于自己后面查阅.因为SpringBoot的约定大于配置,在整合各 ...