一、Neutron概述

Neutron是 OpenStack项目中负责提供网络服务的组件,它基于软件定义网络的思想,实现了网络虚拟化下的资源管理。Neutron 的设计目标是实现网络即服务(Networking as a Service),在设计上遵循了基于 SDN 实现网络虚拟化的原则,在实现上充分利用了 Linux 系统上的各种网络相关的技术。

二、Neutron 功能

Neutron 为整个 OpenStack 环境提供网络支持,包括二层交换,三层路由,负载均衡,防火墙等。Neutron 提供了一个灵活的框架,通过配置,无论是开源还是商业软件都可以被用来实现这些功能。

1、二层交换Switch

L2其实是指七层网络协议中的第二层数据链路层,它的传输是以mac地址为基础。Nova 的 Instance 是通过虚拟交换机连接到虚拟二层网络的。Neutron 支持多种虚拟交换机,包括 Linux 原生的 Linux Bridge 和 第三方Open vSwitch。

Open vSwitch ­­ (OVS)是一个开源的虚拟交换机,它支持标准的管理接口和协议。比Linuxbridge的功能更强大,是为了配合neutron而产生的。

利用 Linux Bridge 和 OVS,Neutron 除了可以创建传统的 VLAN 网络,还可以创建基于隧道技术的 Overlay 网络,比如 VxLAN 和 GRE(Linux Bridge 目前只支持 VxLAN,此外,由于GRE容易单点故障已经被弃用)。

2、三层路由 Routing

L3指网络层:是以ip地址为基础 。Instance 可以配置不同网段的 IP,Neutron 的 router(虚拟路由器)实现 instance 跨网段通信。Neutron从Juno版开始正式加入的DVR(Distributed Virtual Router)服务,它将原本集中在网络节点的部分服务分散到了计算节点上。可以通过namespace中使用ip route或者iptables实现路由或NAT,也可以通过openflow给OpenvSwitch下发流表来实现。

3、负载均衡

提供了将负载分发到多个 instance 的能力。LBaaS 支持多种负载均衡产品和方案,不同的实现以 Plugin 的形式集成到 Neutron,目前默认的 Plugin 是 HAProxy。所以不用搭建LVS,直接设置策略就可以。

4. 防火墙

Security Group 通过 iptables 限制进出 instance 的网络包。

Firewall­as­a­Service FWaaS,限制进出虚拟路由器的网络包,也是通过 iptables 实现。

防火墙的本质都是使用内核挂载的filter模块,只不过实现的方式有所区别,firewalld是利用分区实现,iptables是利用三表五链实现。Neutron有两种方式来保障instance和网络的安全性,分别是安全组以及防火墙功能,均可以通过iptables来实现,前者是限制进出instance的网络包,后者是进出虚拟路由器的网络包。

网络-network

1. Local:本地的一个Linux Bridge,除了虚拟机的虚拟网卡不连接其他的网络设备,实际场景很少使用,可以忽略。网络中的 instance 只能与位于同一节点上同一网络的 instance 通信,local 网络主要用于单机测试。

2. Flat:不带vlan tag的网络,其实就是交换机形成的二层网络,和网桥一样,相当于Local网络的Linux Bridge连接到一个物理网卡,该网络中的instance能与同网络的instance通信,且可以跨多个节点,flat 网络中的 instance 能与位于同一网络的 instance通信,并且可以跨多个节点,实际场景也很少用到。

3. VLAN:可以跨节点,是具有 802.1q tagging 的网络,一共可以划分4095个子网。vlan 是一个二层的广播域,同一 vlan 中的instance 可以通信,不同 vlan 只能通过 router 通信。vlan 网络可以跨节点,是应用最广泛的网络类型。目前是私有云网络应用较多。

4. VXALN:是基于隧道技术的 overlay 网络,通过唯一的VNI区分于其他 vxlan 网络。vxlan中数据包通过VNI封装成UPD包进行传输,因为二层的包通过封装在三层传输,能够克服vlan和物理网络基础设施的限制。是VLAN的扩展,VxLAN有1600万个VNI编号,足够在云计算平台使用了。vxlan 网络通过唯一的 segmentation ID(也叫VNI)与其他 vxlan 网络区分。vxlan 中数据包会通过 VNI 封装成 UPD 包进行传输。因为二层的包通过封装在三层传输,能够克服 vlan 和物理网络基础设施的限制。Linuxbridge只支持VxLAN。

5. GRE:与vxlan类似的一种overlay网络,主要区别在于使用 IP 包而非 UDP 进行封装。不同 network 之间在二层上是隔离的。现在已经被弃用了。

network 必须属于某个 Project( Tenant 租户),Project 中可以创建多个 network。network 与 Project 之间是 多对1的关系。

注意:虚拟专用网络,还没有加到openstack的功能中。

子网-subnet

subnet 是一个 IPv4 或者 IPv6 地址段。instance 的 IP 从 subnet 中分配。每个 subnet 需要定义 IP 地址的范围和掩码。 subnet 与 network 是 1对多 关系。一个 subnet 只能属于某个 network;一个 network 可以有多个 subnet,这些 subnet 可以是不同的 IP 段,但不能重叠。例如,以下这两种设置都是被允许的:

port-端口

port 可以看做虚拟交换机上的一个端口。port 上直接定义了 MAC 地址和 IP 地址,当 instance的虚拟网卡 VIF(Virtual Interface) 绑定到 port 时,port 会将 MAC 和 IP 分配给 VIF。而原来我们做网桥时,是虚拟机的网卡eth0在物理机里对应的是vnet0,vnet0是加在br0上的。

port 与 subnet 是 1对多 关系。一个 port 必须属于某个 subnet;一个 subnet 可以有多个port。有了port直接定义MAC与IP就不用使用ARP与RARP协议了。

综上所述,我们可以知道neutron定义的三大网络资源只是二层的网络资源,与三层的没有关系。

Neutron架构

core API ——对外提供管理 network, subnet 和 port 的 RESTful API。

extension API —— 对外提供管理 router, load balance, firewall 等资源 的 RESTful API。

common service ——认证和校验 API 请求。

neutron core­­ Neutron server 的核心处理程序,通过调用相应的 Plugin 处理请求。

core plugin API­­ 定义了 Core Plgin 的抽象功能集合,Neutron Core 通过该 API 调用相应的 Core Plgin。

extension plugin API­­ 定义了 Service Plgin 的抽象功能集合,Neutron Core 通过该 API调用相应的 Service Plgin。

core plugin API­­ 实现了 Core Plugin API,在数据库中维护 network, subnet 和 port 的状态,并负责调用相应的 agent 在 network provider 上执行相关操作,比如创建 network。

service plugin­­ 实现了 Extension Plugin API,在数据库中维护 router, load balance,

security group 等资源的状态,并负责调用相应的 agent 在 network provider 上执行相关操作,比如创建 router

(五)云计算技术学习--OpenStack之Neutron相关推荐

  1. (七)云计算技术学习--OpenStack之Cinder和Swift

    目录 一.存储知识 1.存储技术 2.存储方式 二.Cinder介绍 1.Cinder核心组件 2.Cinder设计思想 三.Swift介绍 1.Swift工作组件 2. Swift数据模型 3.Sw ...

  2. (八)云计算技术学习--OpenStack之Heat

     一.Heat简介 Heat 是一套业务流程平台,旨在帮助用户更轻松地配置以 OpenStack 为基础的云体系.利用Heat应用程序,开发人员能够在程序中使用模板以实现资源的自动化部署.Heat能够 ...

  3. 小五思科技术学习笔记之SSH

    下面介绍一下相关概念: SSH的概念: SSH的英文全称为Secure Shell,SSH使用TCP的22号端口,其目的是要在非安全的网络上提供安全的远程登陆和其他安全的网络服务, 为什么要使用SSH ...

  4. (一)云计算技术学习--基础概念

    目录 Linux的用户管理 Yum 命令 Python SELinux vsftpd etcd Session.Cookie.Token LNMP VMware Docker Kubernetes(K ...

  5. 小五思科技术学习笔记之EIGRP

    EIGRP知识概要 增强型内部网关路由协议(EIGRP) EIGRP是一种高级距离矢量路由选择协议,并且是CISCO专用的路由协议融合了距离矢量和链路状态两种协议的特性距离矢量特性:传言机制,主类网络 ...

  6. (一)云计算技术学习--虚拟化vSphere学习

    虚拟化的工作原理是直接在物理服务器的硬件或主机操作系统上面运行一个称为虚拟机管理程序(Hypervisor)的虚拟化系统.通过虚拟机管理程序,多个操作系统可以同时运行在单台物理服务器上,共享服务器的硬 ...

  7. 华为网络技术学习打卡8(云计算大数据,openstack,docker)

    云计算 产生背景(云计算的驱动力) 技术驱动( 需求驱动(海量的数据信息给现阶段设备带来巨大的压力,云计算技术可以降低成本 商业模式转变( 其他方面,海量的数据及信息.各种各样的终端设备也促使着现阶段 ...

  8. 学习openstack(五)

    OpenStack OpenStack介绍 OpenStack是一种免费的开源平台,帮助服务提供商实现类似于亚马逊EC2和S3的基础设施服务.OpenStack当前有三个核心项目:计算(Nova),对 ...

  9. 云计算技术分享:linux云计算课程学习大纲

    云计算是分布式计算.并行计算.效用计算.网络存储.虚拟化.负载均衡.热备份冗余等传统计算机和网络技术发展融合的产物.千锋云计算课程融合产品运维与云计算运维量大热门方向,学员可胜任Linux高级运维工程 ...

最新文章

  1. 递归删除目录下的所有文件
  2. KenBurns特效组件KenBurnsView
  3. linux程序运行段错误,Linux下段错误调试技巧
  4. 轻松解决MYSQL数据库连接过多的错误
  5. 交叉编译器的命名规则及详细解释(arm/gnu/none/linux/eabi/eabihf/gcc/g++)
  6. PKU 学生的反馈 2009 –2
  7. linux pe大小,lvm中的pe默认是4M 最大能支持多大 1T?2T
  8. python决策树逻辑回归_百面机器学习(逻辑回归以及决策树,leetcode)
  9. linux下各种小命令
  10. java 双等于 equals_在Java中等于equals vs Arrays.equals
  11. 年报掘金:机构增仓路线图曝光(2010-03-06转载)
  12. 最新Tuxera NTFS for mac2020读写NTFS磁盘工具 更新详情介绍
  13. 61. Catalog 分类页面商品排序
  14. C语言图形编程|设置位置
  15. 计算机技术手段在材料中的应用,计算机在材料加工中的应用.docx
  16. 解决scala 2.10.X 无法导入 actors的问题
  17. Node-RED使用指南:5:设置管理员的登录密码
  18. 大数据是让人幸福的科学
  19. 带货直播源码,浅谈直播实现过程和技术
  20. Spring的下载及目录结构

热门文章

  1. 一次超帅的代码生成设计
  2. 情人节送什么礼物给男朋友合适?送男朋友最实用的礼物
  3. 关于Proteus 8仿真STM32串口通信时显示数据错误或乱码问题解决!
  4. 页面载入进度条 nprogress的使用
  5. 【Excel 教程系列第 2 篇】同一行不同列的数据,如何快速合并与拆分?
  6. 牛牛截图控件与利洽远程控制产品升级-支持证书自动升级
  7. 主题模型 LDA 入门(附 Python 代码)
  8. Unity2d游戏项目--小狐狸
  9. Spark SQL:从入门到精通(五)[开窗函数]
  10. 程序员的RSS手机阅读器,升级