在一个现代的数据中心,网络设备要比以前复杂的多。服务器,交换机,路由器,存储系统和防火墙安全设备等都可能是以虚拟机和虚拟网络设备的形式存在。这些设备对传统网络管理系统造成巨大压力,因为它们无法提供可扩展的自动化方法来管理下一代网络。现在,用户希望通过更快的配置实现灵活控制基础设施。OpenStack就能满足用户这种需求。

什么是OpenStack Networking

OpenStack Networking是一个可插拔,可扩展和API驱动的系统,用于在基于OpenStack的云中管理网络和IP地址。 与其他核心OpenStack组件一样,管理员和用户可以使用OpenStack Networking来最大限度地利用现有数据中心资源。

Neutron是OpenStack Networking的代号,它是一个独立的服务,可以独立于其他OpenStack服务,如Nova(计算服务),Glance(映像服务),Keystone(认证服务),Cinder(块存储)和 Horizon(UI界面)。 OpenStack网络服务可以在多个主机之间运行,以提供弹性和冗余,也可以将它们配置在单个节点上运行。

OpenStack Networking向用户提供应用程序可编程接口或API,并将请求传递到配置的网络插件以进行相应处理。 用户能够在云中定义网络连接,并允许云运营商利用不同的网络技术来增强和支持云。与许多其他OpenStack服务一样,Neutron需要访问数据库来存储网络配置。

OpenStack网络的特性

OpenStack网络包括许多技术,例如交换,路由,负载均衡,防火墙和虚拟专用网络。这些功能可以配置利用开源或商业软件,并为云运营商提供所有工具 需要建立一个功能完整的云环境。 OpenStack Networking还为第三方供应商提供了一个框架,用于构建和增强云的功能。

交换机

虚拟交换机可以理解为将虚拟机连接到OSI模型的第2层或数据链路层的虚拟网络软件应用程序。 Neutron支持多个虚拟交换平台,包括由bridge内核模块实现的Linux桥接和Open vSwitch。Open vSwitch(也称为OVS)是一种开源虚拟交换机,支持标准管理接口和协议,包括NetFlow,SPAN,RSPAN,LACP和802.1q ,VLAN标记。然而,这些功能中的许多功能并不向用户公开OpenStack API。除了VLAN标记之外,用户还可以使用L2-in-L3隧道协议(如GRE或VXLAN)在软件中构建overlay网络。 Open vSwitch可用于虚拟机和OpenStack控制之外的设备之间通信,例如硬件交换机,网络防火墙,存储设备,专用服务器等。

路由器

OpenStack网络通过使用IP转发,iptables和网络命名空间技术实现路由和NAT功能。在网络命名空间中,我们可以在命名空间中创建套接字,绑定端口和接口。每个网络命名空间都有自己的路由表,接口和iptables进程用来提供过滤和网络地址转换。通过利用网络命名空间来分隔网络,不必担心由租户创建的网络之间重叠的子网。在Neutron中配置路由器使虚拟机能够与云环境的外部网络或其他网络进行交互和通信。路由器命名空间也被防火墙服务(Firewall as a Service)和虚拟专用网络服务(Virtual Private Network as a Service)利用。

负载均衡

这个技术首先在Grizzly版本的OpenStack中引入,负载平衡服务(也称为LBaaS)为用户提供了跨多个实例或服务器分发客户端请求的能力。 用户可以创建监视器,设置连接限制等。 Kilo版本的OpenStack在实验状态中引入了第2版的LBaaS API。 v2 API比版本1有了很大的改进,在Liberty版本中,它应该是稳定的。 OpenStack Networking配有一个用于LBaaS的插件,在开源参考实现中使用HAProxy。

防火墙

在OpenStack的kilo版本中,有两种为实例提供安全性的方法:安全组和防火墙。 使用安全组时,实例将放置在共享公共功能和规则集的组中。 Iptables规则在计算节点上配置,并过滤流入和流出连接到每个实例的Linux桥接器的流量。 在参考实现中,当使用由防火墙服务(也称为FWaaS)提供的虚拟防火墙时,安全服务工作在网络的边缘处而不是在计算节点处处理。 Liberty版本的OpenStack,FWaaS API仍然处于实验状态,在将来的版本中不能保证向后兼容性。

虚拟专用网络

虚拟专用网络或VPN在诸如因特网的公共网络上扩展专用网络。 VPN使计算机能够跨公共网络发送和接收数据,就像它直接连接到专用网络一样.Neutron提供了一组API,允许用户在使用开放网络时创建从Neutron路由器到远程网关的基于IPSec的VPN隧道。

网络功能虚拟化

网络功能虚拟化或NFV是一种网络架构概念,其建议使用传统的虚拟化技术来替代网络中的独立网络设备。这些功能包括入侵检测,缓存,网关,WAN加速器,防火墙等。 OpenStack中对NFV的支持正在加强,但是需要在当前设计模型中进行重大转变,以支持诸如直接到虚拟化实例,未分配IP的接口和其他网络设备可能需要的功能。在Juno中,支持SR- IOV,也称为single root I/O虚拟化。使用SR-IOV后,不再需要虚拟机来使用半虚拟化驱动程序或连接到主机中的虚拟网桥。相反,虚拟机绑定到利用虚拟功能(virtual function:VF)实现的SR-IOV端口,从而允许虚拟机直接访问NIC硬件。解释如何配置对SR-IOV的支持超出了本书的范围,但更多信息可以访问【OpenStack Wiki】。

网络类型

OpenStack网络的架构可以知道,在网络上看到的至少四种不同类型的流量。

管理网络

管理网络(也称为内部网络)用在主机之间的内部通信,例如消息传送服务和数据库服务之类的服务。 所有主机将通过此网络彼此通信。 在许多情况下,该相同的接口也可以用于主机之间的Glance图像传输或一些其它带宽密集的业务。管理网络可以被配置在隔离的专用网络接口上或者与另一网络组合。

API 网络

API网络用于向云中的用户和云中的服务交互的。 服务的endpoint地址(如Keystone,Neutron,Glance和Horizon)是从API网络获取的。通常的做法是对API端点使用单个接口和IP地址,以及通过SSH对主机本身进行管理访问。

外部网络

外部网络为Neutron路由器提供网络访问。 一旦路由器已配置并连接到外部网络,该外部网络将成为虚拟机和其他网络资源的浮动IP地址的来源。 外网IP地址预能路由到达并且可由内部网络或因特网上的客户端访问。

访客网络

访客网络是专用于虚拟机流量的网络。 访客网络的选项包括局限于特定节点的本地网络,flat或VLAN tag网络,或通过GRE或VXLAN封装实现的虚拟overlay网络。 用于外部网络和访客网络的物理接口可以是专用接口或与其他类型流量共享的接口。


本文翻译自Learning OpenStack Networking (Neutron) Second Edition James Denton

仅供学习交流

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

  1. 开发人员必读openstack网络基础

    云计算中的网络非常复杂,需要对网络的基础理论有一定的认识和了解,转载网上针对openstack中涉及到网络概念的文章 开发人员必读openstack网络基础1:什么是L2.L3 开发人员必读opens ...

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

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

  3. 深入理解openstack网络架构(3)-----路由

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

  4. 深入理解openstack网络架构(1)

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

  5. openstack 网络架构 nova-network + neutron

    openstack网络架构(nova-network/neutron) openstack网络体系中,网络技术没有创新,但用到的技术点很庞杂,包含bridge.vlan.gre.vxlan.ovs.o ...

  6. openstack 网络简史

    openstack 网络简史 研究openstack有2个月的时间,这段时间从网上获取N多宝贵资料,对我的学习有非常大帮助,在加上我自己的研究,最终对openstack整个网络体系有了个浅显的认识,写 ...

  7. 清除OpenStack网络与路由

    下面,我们以删除一个路由设备为例,讲解整个过程(以下命令都在控制节点执行) 列出所有路由设备,获得要删除的路由器id # neutron router-list [root@controller ~] ...

  8. OpenStack 网络服务 Neutron 私有网络构建(十九)

    本章内容基于之前提供者网络构建的基础上进行改动,之前文章参考如下: Openstack 网络服务 Neutron介绍和控制节点部署 (九) Openstack 网络服务 Neutron计算节点部署(十 ...

  9. OpenStack 网络服务 Neutron 多网卡(提供者网络)(十八)

    OpenStack 网络服务 Neutron 多网卡,分为内部网络.外部网络 使用vmware模拟两张网卡 添加网卡 网卡配置 cd /etc/sysconfig/network-scripts cp ...

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

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

随机推荐

  1. Okhttp3源码解析

    首先是Okhttp的使用: //缓存文件夹 File cacheFile = new File(getExternalCacheDir().toString(), "cache") ...

  2. 单元测试JUnit案例

    被测试模块 package packagedemo; public class Largest { public int minimal(int [] array1) { int index = 0 ...

  3. T-SQL Part IX, PIVOT and UNPIVOT

    不同于CROSS JOIN, CROSS APPLY, OUTER APPLY,MSDN文档对PIVOT和UNPIVOT 想得重视了一点,单独做了一个页面来介绍. 简单来说,PIVOT用来把行转成列, ...

  4. 微信小程序 js 计时器

    function timing(that) {  var seconds = that.data.seconds  if (seconds > 21599) {    that.setData( ...

  5. 你不知道的JS系列【1】- 什么是作用域

      几乎所有的编程语言都能够储存变量,并且能在之后对这个变量值进行访问或修改,正是储存和访问变量的能力将状态带给了程序,那么,这些变量储存在哪里呢?程序需要时又是如何找到他们?这些问题说明需要一套设计 ...

  6. 张孝祥java高新技术 --- jkd1.5 新特性 -- 精华总结

    1. 抽象方法的使用 如果一个方法中大量出现if语句, 那么, 就应该考虑使用抽象来处理. 如下例: package com.lxl; public class Weekend { //周日 publ ...

  7. requests模块使用代理

    1.创建try_proxies.py文件import requestsproxies = {"http":"http:117.135.34.6:8060"}he ...

  8. C语言|博客作业02

    这个作业属于哪个课程 C程序语言设计 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/8654 我在这个课程的目标是 ...

  9. easyui+ef实现省市区三级联动

    1.引用easyui样式及脚本文件 2.数据库创建表(自联表)及数据建模(Code First) use DataBase go CREATE TABLE OP_SJ ( CID UNIQUEIDEN ...

  10. vux组件的全局注册引入

    安装好vux后,要引入全局组件是要在main.js中使用Vue.component引入的,不能直接使用Vue.use,不能直接使用Vue.use,不能直接使用Vue.use import router ...