OpenStack网络

网络是openstack最重要的资源之一,没有网络,虚拟机将被隔离。Openstack的网络服务最主要的功能就是为虚拟机实例提供网络连接,最初由nova的一个单独模块nova-compute实现,但是nova-compute支持的网络服务有限,无法适应大规模、高密度和多项目的云计算,现已被专门的网络服务项目Neutron所取代。
Neutron为整个openstack环境提供软件定义网络支持,主要功能包括二层交换、三层路由、防火墙、VPN,以及负载均衡等。Neutron在由其他openstack服务(如nova)管理的网络接口设备(如虚拟网卡)
z间提供网络连接即服务。

Linux虚拟网络

Linux网络虚拟化

openstack网络服务最核心的任务就是对二层物理网络进行抽象和管理。

Linux网络虚拟化
实现虚拟化后,多个物理服务器可以被虚拟机取代,部署在同一台物理服务器上。虚拟机由虚拟机管理器(Hypervisor)实现,在Linux系统中Hypervisor通常采用kvm。在对服务器进行虚拟化的同时,也对网络进行虚拟化。
Hypervisor为虚拟机创建一个或多个虚拟网卡(vNIC),虚拟网卡等同于虚拟机的物理网卡。物理交换机在虚拟网络中被虚拟为虚拟交换机(vSwitch),虚拟机的虚拟网卡连接到虚拟交换机上,虚拟机交换机再通过物理主机的物理网卡连接到外部网络。
对于物理网络来说,虚拟化的主要工作是对网卡和交换设备的虚拟化。

Linux虚拟网桥

与物理机不同,虚拟机并没有硬件设备,但是也要与物理机和其他虚拟机进行通信。Linux KVM的解决方案是提供虚拟网桥设备,像物理交换机具有若干网络接口(网卡)一样,在网桥上创建多个虚拟的网络接口,每个网络接口再与KVM虚拟机的网卡相连。
在Linux的KVM虚拟系统中,为支持虚拟机的网络通信,网桥接口的名称通常以vnet开头,加上从0开始顺序编号,如vnet0、vnet1,在创建虚拟机时会自动创建这些接口。虚拟网桥br1和br2分别连接到物理主机的物理网卡1和物理网卡2。

虚拟局域网

一个网桥可以桥接若干虚拟机当多个虚拟机连接在同一网桥时,每个虚拟机发出的广播包会引发广播风暴,影响虚拟机的网络性能。通常使用虚拟局域网(VLAN)将部分虚拟机的广播包限制在特定范围内,不影响其他虚拟机的网络通信。通常使用VLAN将部分虚拟机的广播包限制在特定范围内,不影响其他虚拟机的网络通信。将多个虚拟机划分到不同的VLAN中,同一VLAN的虚拟机相当于连接同一网桥上。
在Linux虚拟化环境中,通常会将网桥与VLAN对应起来,也就是将网桥划分到不同的VLAN中VLAN协议为802.1Q,VLAN是具有802.1Q标签的网络。

开放虚拟交换机

开放虚拟交换机(Open vSwitch)是与硬件交换机具备相同特性,可在不同虚拟平台之间移植,具有产品级质量的虚拟交换机,适合在生产环境中部署。
交换设备的虚拟化对虚拟网络来说至关重要。在传统的数据中心,管理员可以对物理交换机进行配置,控制服务器的网络接入,实现网络隔离、流量监控、QoS配置、流量优化等目标。在云环境中,采用Open vSwitch技术的虚拟交换机可使虚拟网络的管理、网络状态和流量的监控得以轻松实现。Open Switch在云环境中的虚拟化平台上实现分布式虚拟交换机,可以将不同主机上的Open
vSwitch交换机连接起来,形成一个大规模的虚拟网络。


OVS特性:
①可跨虚拟平台移植(移植性)、
②产品质量、相对于物理交换机,管理更为轻松
③分布式大规模集群

OpenStack网络基础服务

OpenStack网络服务提供一个API让用户在云中建立和定义网络连接。该网络服务的项目名称是Neutron,。OpenStack网络负责创建和管理虚拟网络事础架构,包括网络交换机、子网和路由器,这
些设备由OpenStack计算服务,Nova管理,同时,网络服务还提供防火墙和VPN这样的高级服务可以将网络服务部署到特定主机上。OpenStack网络组件与身份服务,十算服务和仪表板等多OpenStack组件进行整合

Neutron网络结构

一个简化的典型的Neutron网络结构如图所示,包括一个外部网络、一个内部网络和一个路由器。
外部网络负责连接OpenStack项目之外的网络环境,又称公共网络。与其他网络不同,它不仅仅是一个虚拟网络,更重要的是,它表示OpenStack网络能被外部物理网络接入并访问。外部网络可能是企业的局域(Intranet),也可能是互联网(Internet),这类网络并不是由Neutron直接管理。
内部网络完全由软件定义,又称私有网络。它是虚拟机实例所在的网络,能够直接连接到虚拟机。项目用户可以创建自己的内部网络。默认情况下,项目之间的内部网络是相互隔离的,不能共享。该网络由Neutron直接配置与管理。
路由器用于将内部网络与外部网络连接起来,因此,要使虚拟机访问外部网络,必须创建一个路由器。Neutron需要实现的主要是内部网络和路由器。内部网络是对二层(L2)网络的抽象,模拟物理网络的二层局域网,对于项目来说,它是私有的。路由器则是对三层(L3)网络的抽象,模拟物理路由器,为用户提供路由、NAT等服务。

网络子网与端口

网路:一个隔离的二层广播域,类似交换机中的VLAN。Neutron支持多种类型的网络,
如FLAT、VLAN、VXLAN等。
子网:一个IPV4或者IPV6的地址段及其相关配置状态。虚拟机实例的IP地址从子网中分配。每个子网需要定义IP地址的范围和掩码(这个有点像DHCP中定义的作用域的概念)。
端口:连接设备的连接点,类似虚拟交换机上的一个网络端口。端口定义了MAC地址和IP地址,当虚拟机的虚拟网卡绑定到端口时,端口会将MAC和IP分配给该虚拟网卡。
通常可以创建和配置网络、子网和端口来为项目搭建虚拟网络。网络必须属于某个项目,一个项目中可以创建多个网络。一个子网只能属于某个网络,一个网络可以有多个子网。一个端口必须属于某个子网,一个子网可以有多个端口。

网络拓扑类型

Local
Local网络与其他网络和节点隔离。该网络中的虚拟机实例只能与位于同一节点上同
-网络的虚拟机实
例通信,实际意义不大,主要用于测试环境。位于同一Local网络的实例之间可以通信,
位于不同Local网
络的示例之间无法通信。一个Local网络只能位于同一个物理节点上,无法跨节点部署。
Flat
Flat是一种简单的扁平网络拓扑,所有的虚拟机实例都连接在同一网络中,能与位于同一网络的实例进行通信,并且可以跨多个节点。这种网络不使用VLAN,没有对数据包打VLAN标签,无法进行网络隔离。Flat是基于不使用VLAN的物理网络实施的虚拟网络。每个物理网络最多只能实现一个虚拟网络。
VLAN
VLAN是支持802.1q协议的虚拟局域网,使用VLAN标签标记数据包,实现网络隔离。同一VLAN网络中的实例可以通信,不同VLAN网络中的实例只能通过路由器来通信。VLAN网络可以跨节点,是应用最广泛的网络拓扑类型之一。

VXLAN

VXLAN(虚拟扩展局域网)可以看作是VLAN的一种扩展,相比于VLAN,它有更大的扩展性和灵活性,是目前支持大规模多租户网络环境的解决方案。由于VLAN包头部限长是12位,导致VLAN的数量限制是4096 (2^12)个,不能满足网络空间日益增长的需求。目前VXLAN的封包头部有24位用作VXLAN标识符(VNID)来区分VXLAN网段,最多可以支持16777216 (2^24)个网段。
VXLAN使用STP防止环路,导致一半的网络路径被阻断。VXLAN的数据包是封装到UDP迪过二层传翮和转发的,可以完整地利用三层路由,能克服VLAN和物理网络基础设施的限制,更好地利用已有的网络路径。

GRE

GRE(通用路由封装)是用一种网络层协议去封装另一种网络层协议的隧道技术。GRE的隧道由两端的源IP地址和目的IP地址定义,它允许用户使用IP封装lP等协议
并支持全部的路由协议。在OpenStack环境
中使用GRE意味着“IP over lP”,GRE与VXLAN的主要区别在于,它是使用IP包而非UDP进行封装的。

GENEVE
GENEVE(通用网络虚拟封装)的目标宣称是仅定义封装数据格式,尽可能实现数据格式的弹性和扩展性。GENEVE封装的包通过标准的网络设备传送,即通过里描或多播寻址,巴从一个陛追缅点传运到力一19%多个隧道端点。GENEVE帧格式由一个封装在IPV4或IPV6的UDP里的简化的隧道头部组成。GENEVE推出的主要目的是为了解决封装时添加的元数据信息问题(到底多少位,怎么用GENEVE自动识别与调整),以适应各种虚拟化场景。

总结
随着云计算、大数据、移动互联网等新技术的普及,网络虚拟化技术的趋势在传统单层网络基础上叠加一层逻辑网络。这将网络分为两个层次,传统单层网络称为Underlay(承载网络),叠加其上的逻辑网络称为Overlay(叠加网络或覆盖网络)。Overlay网络的节点通过虚拟的或逻辑的连接进行通信,每一个虚拟的或逻辑的连接对应于Underlay网络的一条路径,由多个前后衔接的连接组成。Overlay网络无须对基础网络进行大规模修改,不用关心这些底层实现,是实现云网融合的关键。
VXLAN、GRE和GENEVE都是基于隧道技术的Overlay网络。

网络基本架构

Neutrqn仅有一个主要服务进看neutron-server。它是运行在控制节点上的,对外提供Openstack网络API作为访问Neutron的入口,收到请求后调用插件进行处理,最终由计算节点和网络节点上的各种代理完成请求。

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

与其他服务一样,Neutron的各组件服务之间需要相互协调和通信,neutron-server、插件和代理之间通过消息队列进行通信和相互调用。

数据库用于存放OpenStack的网络状态信息,包括网络、子网、端口、路由器等。

客户端是指使用Neutron服务的应用程序,可以是命令行工具、Horizon和Nova计筒服务等

实例:以一个创建VLAN 100虚拟网络的流程为例说明这些组件如何协同工作。

reutron-server收到创建网络的请求,通过消息队列通知已注册的Linux Bridge插件。(插件可以有很多,这里举例创建虚拟网络的插件是Linux Bridge插件)

该插件将要创建的网络信息(如名称、VLAN ID等)保存到数据库中,并通过消息队列通知运行在各节点上的代理

代理收到消息后会在节点上的物理网卡上创建VLAN设备(比如eth1.100),并创建一个网桥(比如brqxxx)来桥接VLAN设备。

Neutron-server
RESTfulAPI:直接对客户端提供API服务,属于最前端的API,包括Core APl和Extension API两种类型。Core API提供管理网络、子网和端口核心资源的RESTfulAPl; Extension API则提供管理路由器、防火墙、负载均衡、安全组等扩展资源的RESTful API。

Common Service:通用服务,负责对API请求进行检验、认证,并授权。Neutron Core:核心处理程序,调用相应的插件API来处理API请求。

Plugin API:定义插件的抽象功能集合,提供调用插件的API接口,包括Core Plugin APl和ExtensionPlugin API两种类型。Neutron Core通过Core Plugin APl调用相应的Core Plugin,通过Extension Plugin API调用相应的Service Plugin。


neutron-server
①接收、响应请求restuful api(core api和ext api)
②认证通用服务和核心处理程序来实现
③分发任务调用具体的插件core plugin api和ext plugin api

Neutron遵循OpenStack的设计原则,采用开放性架构,通过插件、代理与网络提供者的配合来实现各种网络功能。
插件是Neutron的一种API的后端实现,目的是增强扩展性。插件按照功能可以分为Core Plugin和Service Plugin两种类型。Core Plugin提供基础二层虚拟网络支持,实现网络、子网和端口等核心资源抽象。Service Plugin是指Core Plugin之外的其他插件,提供路由器、防火墙、安全组、负载均衡等服务支持。从H版开始,Neutron提供一个名为L3 Router Service Plugin的插件支持路由服务。
插件的调用由neutron-server的Core Plugin APl和Extension Plugin API调用,用于确定具体的网络功能,即要配置什么样的网络。
工作流程:插件处理neutron-server发来的请求,主要职责是在数据库中维护Neutron网络的状态信息(更新Neutron数据库),通知相应的代理实现具体的网络功能。每一个插件支持一组API资源并完成特定的操作,这些操作最终由插件通过RPC调用相应的代理来完成。代理处理插件转来的请求,负责在网络提供者上真正实现各种网络功能。代理使用物理网络设备或虚拟化技术完成实际的操作任务,如用于路由器具体操作的L3代理。

Neutron主要插件、代理与服务

Neutron插件、代理和服务的层次结构如下

ML2插件
Neutron可以通过开发不同的插件和代理来支持不同的网络技术,这是一种相当开放的架构。不过随着所支持的网络提供者种类的增加,开发人员发现了两个突出的问题。一个问题是多种网络提供者无法共存。Core Plugin负责管理和维护Neutron二层虚拟网络的状态信息,一个Neutron网络只能由一个插件管理,而Core Plugin插件与相应的代理是一一对应的。如果选择Linux Bridge插件,则只能选择Linux Bridge代理,必须在OpenStack的所有节点上使用Linux Bridge插件,则只能选择Linux Bridge代理,必须在OpenStac
kR的所有节点上使用Linux Bridge作为虚
拟交换机。另一个问题是开发新的插件的工作量太大,而所有传统的Core Plugin之间存在大量反复代码。

为解决这两个问题,从OpenStack的H版开始,Neutron实现了一个插件ML2,旨在取代所有的Core Plugin,允许在OpenStack网络中同时使用多种二层网络技术,不同的节点可以使用不同的网络实现机制。ML2能够与现有的代理无缝集成,以前使用的代理无须变更,只需将传统的Core Plugin替换成ML2。ML2使得对新的网络技术的支持更为简单,无须从头开发Core Plugin,只需要开发相应的机制驱动,大大减少编写和的代码。

Linux Bridge代理
Linux Bridge是成熟可靠的Neutronf层网络虚拟化技术,支持Local、Flat、VLAN和VXLAN这4种网络类型。
Linux Bridge可以将一台主机上的多个网卡桥接起来,充当一台交换机。它既可以桥接物理网卡,又可以是虚拟网卡。用于桥接虚拟机网卡(虚拟网卡)的是Tap接口,这是一个虚拟出来的网络设备,称为Tap设备,作为网桥的一个端口。Tap接口在逻辑上与物理接口具有相同的功能,可以接收和发送数据包。
如果选择Linux Bridge代理,在计算节点上数据包从虚拟机发送到物理网卡需要
经过以下设备

Tap接口:用于网桥连接到虚拟网卡,命名规则为tapxxXX。
Linux网桥:作为二层交换机,命名规则为brqxxXX。
VLAN接口:在VLAN网络中用于连接网桥,命名为ethx.y (x为网卡名称,y为VLAN ID)。
VXLAN接口:在VXLAN网络中用于连接网桥,命令为vxlan-z(z是VNID)
物理网络接口:用于连接到物理网络。

neutron网络服务相关推荐

  1. openstack-9:安装neutron网络服务

    neutron网络服务 注册neutroon账号 openstack user create --domain default --password=neutron neutron openstack ...

  2. openstack第四章:neutron— 网络服务

    第四篇neutron- 网络服务 一.neutron 介绍:   Neutron 概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是 ...

  3. 5 安装Neutron网络服务

    5.1通过脚本安装neutron服务 5.2-5.11网络服务的操作命令已经编写成shell脚本,通过脚本进行一键安装.如下: #Controller节点 执行脚本iaas-install-neutr ...

  4. OpenStack之Neutron网络服务

    Neutron 网络服务 网络是openstack最重要的资源之一, 没有网络,虚拟机将被隔离.Openstack的网络服务最主要的功能就是为虚拟机实例提供网络连接,最初由nova的一-个单独模块no ...

  5. 云计算之openstack(N版)neutron网络服务最佳实践

    2.6网络服务 2.6.1neutron的概况 网络服务提供网络,子网以及路由这些对象的抽象概念.每个抽象概念都有自己的功能,可以模拟对应的物理设备:网络包括子网,路由在不同的子网和网络之间进行路由转 ...

  6. CentOS7安装OpenStack(Rocky版)-06.安装Neutron网络服务(控制节点)

    上一章介绍了独立的nova计算节点的安装方法,本章分享openstack的网络服务neutron的安装配制方法 ------------------- 完美的分割线 ----------------- ...

  7. Neutron 网络服务

    ​ 项目介绍​Openstack Networking(neutron)管理所有虚拟网络,包括网络基础设施(VNI)和访问层方面的物理网络(PNI).它允许租户创建高级的虚拟网络拓扑结构,包括的服务有 ...

  8. neutron网络服务部署

    安装部署操作 登录数据库 mysql -uroot -p123 建立数据库 CREATE DATABASE neutron; 建立数据库用户,分别允许本地和远程登录 GRANT ALL PRIVILE ...

  9. openstack网络服务neutron

    一.环境准备 1.虚拟机准备 IP地址 主机名 操作系统 192.168.56.11 linux-node1 CentOS7 192.168.56.12 linux-node2 CentOS7 其中, ...

最新文章

  1. cocos2d-x环境配置和常见问题
  2. linux lvm 镜像,LVM实现逻辑卷镜像
  3. Cocos2d-x 中 CCProgressTimer
  4. Java程序创建Kafka Topic,以及数据生产消费,常用的命令
  5. Windows10/11安装Linux子系统Ubuntu 20.04LTS,轻松使用生信软件,效率秒杀虚拟机
  6. B2憨宝275版本暖岛正版子主题-wordpress主题
  7. Verilog HDL中阻塞语句和非阻塞语句的区别
  8. 20200713:动态规划复习day04
  9. 实验记录一 初步接触cortex-M3
  10. java直白解释,关于java的static和final关键字的直白、简单解释
  11. 软件需求规格说明书范例
  12. oracle常用函数详解(详细)
  13. 简单将xml数据转换为txt数据
  14. 我连鼠标光标都是爱你的形状——MATLAB自定义光标及png转化为光标数组
  15. c语言中文网qq,c语言写的qq连看辅助
  16. 如何批量删除Word中向下箭头的符号
  17. Ubuntu14.04 学习一:adobe Flash 下载和安装
  18. 小程序 导航按钮列表实现navigator
  19. 远程桌面--某些设置由你的组织管理
  20. 学到微笑之 - 自定义 MVC 框架

热门文章

  1. AppScan 安全测试详解+实操
  2. python箱线图异常值_Python数据清洗--异常值识别与处理01
  3. 今天竟然有人模仿我的QQ号进行骗钱
  4. 两千行PHP学习笔记
  5. Java循环嵌套,实现输出菱形图案
  6. 自助全兜张家界——特荐杨家寨   1089
  7. ROS安装与Rviz的摄像头视频采集与标定
  8. LSTM和双向LSTM讲解及实践
  9. pycharm的使用技巧与遇到的问题
  10. mysql dnslog_mysql-dnslog注入