文章目录

  • 本文章由公号【开发小鸽】发布!欢迎关注!!!
  • 一.Neutron
    • (一)Neutron介绍
    • (二)Neutron功能
      • 1.二层交换Switching
      • 2.三层路由Routing
      • 3.负载均衡Load Balancing
      • 4.防火墙Firewalling
        • (1)Security Group
        • (2)Firewall-as-a-Service
    • (三)Neutron网络的基本概念
      • 1.network
        • (1)local
        • (2)flat
        • (3)vlan
        • (4)vxlan
        • (5)gre
      • 2.subnet
      • 3.port
      • 4.Project,Network,Subnet,Port和VIP的关系
    • (四)Neutron的架构
      • 1.Neutron的架构图
        • (1)Neutron Server
        • (2)Plugin
        • (3)Agent
        • (4)network provider
        • (5)Queue
        • (6)Database
      • 2.Neutron子服务的物理部署方案
        • (1)第一种方案
          • a)控制节点
          • b)计算节点
        • (2)第二种方案
          • a)控制节点
          • b)网络节点
          • c)计算节点
      • 3.Neutron Server
        • (1)Core API
        • (2)Extension API
        • (3)Common Service
        • (4)Neutron Core
        • (5)Core Plugin API
        • (6)Extension Plugin API
        • (7)Core Plugin
        • (8)Service Plugin
      • 4.Neutron怎样支持多种network provider
        • (1)Type Driver
        • (2)Mechansim Driver
      • 5.Service Plugin/Agent
        • (1)DHCP
        • (2)Routing
        • (3)firewall
        • (4)Load Balance
    • (五)网络拓扑
      • 1.OpenStack中的网络
        • (1)Management网络
        • (2)API网络
        • (3)VM网络
        • (4)External网络

本文章由公号【开发小鸽】发布!欢迎关注!!!

老规矩–妹妹镇楼:

一.Neutron

(一)Neutron介绍

传统的网络管理方式依赖于管理员手工配置和维护各种网络硬件设备,而云环境下的网络非常复杂,在多租户的场景下,用户可能随时需要创建,修改和删除网络,因此需要自动地对网络进行修改。软件定义网络(SDN)所具有的灵活性和自动化优势成为了云时代的网络管理的主流方式。Neutron的设计目标是“网络即服务“,在设计上遵循了基于SDN实现网络虚拟化的原则,充分利用了Linux系统上的各种网络相关技术。

(二)Neutron功能

Neutron为整个Openstack环境提供了网络支持,包括二层交换,三层路由,负载均衡,防火墙和VPN等功能。

1.二层交换Switching

Nova的Instance是通过虚拟交换机连接到虚拟的二层网络上的,Neutron支持多种虚拟交换机,包括Linux原生的Linux Bridge和Open vSwitch(OVS)。利用虚拟交换机,Neutron除了可以创建传统的VLAN网络外,还可以创建基于隧道技术的Overlay网络,如VxLan和GRE。

2.三层路由Routing

Instance可以配置不同网段的IP,Neutron的router(虚拟路由器)实现Instance 跨网段通信。虚拟路由器会通过IP forwading,iptables等技术实现路由和NAT。

3.负载均衡Load Balancing

Openstack在Grizzly版本引入了Load-Balancing-as-a-service(LBaaS),提供将负载分发到多个Instance的能力。

4.防火墙Firewalling

Neutron通过两种方式来保障instance和网络的安全性。

(1)Security Group

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

(2)Firewall-as-a-Service

限制进出虚拟路由器的网络包,通过iptables实现。

(三)Neutron网络的基本概念

Neutron管理的网络资源包括network, subnet和port:

1.network

network是一个隔离的二层广播域,Neutron支持多种类型的network,包括local, fla, VLAN, VxLAN和GRE。不同的network在二层上是隔离的,但是如果借助了路由器的haunt,则network可以在三层之上通信。
      注意,network必须属于某个Project(Tenant租户),一个Project可以创建多个network。

(1)local

local网络与其他网络和节点隔离,local网络中的instance只能与位于同一节点上的同一网络的instance通信,local主要用于单机测试。

(2)flat

flat网络是无vlan tagging的网络,其中的instance能够与同一网路中的instance通信,并且可以跨越多个节点。

(3)vlan

vlan是一个二层的广播域,同一个vlan的instance可以通信,不同的vlan只能够通过router通信,vlan网络可以跨节点,是应用最广的网络类型。

(4)vxlan

vxlan是基于隧道技术的overlay网络。

(5)gre

gre也是overlay网络,使用的是IP包进行封装。

2.subnet

subnet是一个IPV4或IPV6地址段,即子网。instance的IP从subnet中分配,每个subnet需要定义IP地址的范围和掩码。一个subnet只能够属于某个network,一个network可以有多个subnet,这些subnet可以是不同的IP段,但是每个subnet的CIDR不能重叠。如下所示:

network A
subnet A-a : 10.10.1.0/24 {“start” : “10.10.1.1”, “end” : “10.10.1.50”}
subnet A-b : 10.10.1.0/24 {“start” : “10.10.1.51”, “end” : “10.10.1.100”}

虽然两个子网的IP地址没有重叠,但是它们的子网段都是10.10.1.0/24,因此是重叠的。

如果subnet在不同的network中,则CIDR和IP都是可以重叠的。那么这样不就会造成IP冲突了吗?
      答案是不会的,因为Neutron的router是通过Linux network namespace实现的,network namespace是一种网络隔离机制,通过它,每个router有自己独立的路由表。因此,如果两个subnet是通过同一个router路由,根据router的配置,只有指定的一个subnet可以被路由;如果两个subnet是通过不同的router路由的,因为router的路由表是独立的,所以两个subnet都可以被路由。

3.port

port是虚拟交换机上的一个端口,定义了MAC地址和IP地址,当instance的虚拟网卡VIF(virtual Interface)绑定到port时,port会将MAC和IP分配给VIF。一个port必须属于某个subnet,一个subnet可以有多个port。

4.Project,Network,Subnet,Port和VIP的关系

(四)Neutron的架构

1.Neutron的架构图

(1)Neutron Server

对外提供Openstack网络的API,并调用Plugin处理请求。

(2)Plugin

处理Neutron Server发来的请求,维护Openstack逻辑网络的状态,并调用Agent处理请求。按照功能分为两类:core plugin和service plugin,core plugin维护Neutron的network,subnet和port等信息;service plugin提供routing, firewall, load balance等服务。

(3)Agent

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

(4)network provider

提供网络服务的虚拟或物理网络设备,例如Linux Bridge, Open vSwitch等虚拟交换机或物理交换机。

(5)Queue

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

(6)Database

存放Openstack的网络状态信息,包括network , subnet, port, router等。

注意,plugin,agent和network provider是配套使用的,如过network provider是Linux Bridge,那么就需要使用Linux Bridge 的 plugin 和 agent。

2.Neutron子服务的物理部署方案

(1)第一种方案

控制节点 + 计算节点。注意,由于core plugin 和 service plugin已经集成到了neutron server中,不需要运行独立的plugin服务。控制节点和计算节点都需要部署core plugin的agent,因为通过该agent控制节点与计算节点才能够建立二层连接。

a)控制节点

neutron server, core plugin的agent和service plugin的agent。

b)计算节点

core plugin的agent,负责提供二层网络功能。

(2)第二种方案

控制节点 + 网络节点 + 计算节点。将所有的agent从控制节点分离出来,部署到独立的网络节点上。可以增加网络节点承担更大的网络负载,适合规模较大的Openstack环境。

a)控制节点

neutron server服务。

b)网络节点

core plugin的agent和service plugin 的agent。

c)计算节点

部署core plugin的agent,负责提供二层网络功能。

3.Neutron Server

包括两部分功能,提供API服务与运行Plugin。以下是它的架构图:

从上而下的组件:

(1)Core API

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

(2)Extension API

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

(3)Common Service

认证和校验API请求。

(4)Neutron Core

核心处理程序,调用相应的Plugin处理请求。

(5)Core Plugin API

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

(6)Extension Plugin API

定义了Service Plugin的抽象功能集合,Neutron Core通过该API调用响应的Service Plugin。

(7)Core Plugin

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

(8)Service Plugin

实现了Extension Plugin API,在数据库中维护router, load balance, security group等资源的状态,并负责调用相应的agent在network provider上执行操作。

4.Neutron怎样支持多种network provider

由于network provider, core plugin, agent都是配套使用的,如一个Linux Bridge就只能使用linux Bridege core plugin和linux bridge agent。由于core plugin负责管理和维护network, subnet和port的状态信息,这些信息是全局的,因此只能使用一个core plugin,多种network provider无法共存,且不同的plugin之间存在大量重复代码,开发新的plugin工作量大。

Moduler Layer2(ML2)是Neutron在Havana版本实现的一个新的core plugin,用于替代原有的linux bridge plugin 和 open vswitch plugin。ML2提供了一个框架,允许在OpenStack网络中同时使用多种Layer2网络技术,不同的节点可以使用不同的network provider。

采用ML2 plugin之后,可以在不同的节点上分别部署linux bridge agent, open vswitch agent, hyper-v agent等。
      ML2对二层网络进行了抽象和建模,引入了type driver和mechansim driver,这两类driver解耦了Neutron所支持的网络类型type和访问这些网络类型的机制mechanisum,使得ML2有很好的弹性。

(1)Type Driver

Neutron支持的每一种网络类型都有一个对应的ML2 Type Driver,负责维护网络类型的状态,执行验证,创建网络。

(2)Mechansim Driver

每一种网络类型都有一个对应的ML2 Mechansim Driver。它负责获取网络状态,并确保在相应的网络设备上正确实现这些状态。

5.Service Plugin/Agent

之前我们说到Neutron core plugin及其agent负责将instance连接到layer2虚拟网络,所提供的资源包括network, sbunet和port。
      而Service Plugin及其agent提供更多扩展功能,包括router, load balance, firewall。

(1)DHCP

DHCP agent通过dnsmasq为instance提供DHCP服务。

(2)Routing

L3 Agent可以为Project创建router,提供subnet之间的路由服务。路由的功能默认由Iptables实现。

(3)firewall

L3 Agent可以在router上配置防火墙策略,位于router上,保护的是某个project上的所有network。另一个安全功能是security group,也是通过iptables实现的,位于单个instance上。

(4)Load Balance

默认通过HAProxy为Project中的多个instance提供load balance服务。

(五)网络拓扑

1.OpenStack中的网络

(1)Management网络

用于节点之间消息队列的内部通信以及访问数据库服务,所有的节点都需要连接到management网络。

(2)API网络

Openstack各个组件通过该网络向用户暴露API服务,即endopoints都配置在API网络上,通常,管理员也通过API网络SSH管理各个节点。该网络可以和Managent网络合并在一起。

(3)VM网络

即Tenant网络,用于instance之间的通信,VM网络可以选择的类型包括local, flat, vlan, vxlan和gre,VM网络由Neutron配置和管理。

(4)External网络

External网络指的是VM网络之外的网络,该网络不由Neutron管理,Neutron可以将router连接到External网络,为instance提供访问外部网络的能力。External网络可能是企业的intranet或是internet。

【云计算学习笔记(二十一)】之Neutron子服务详细介绍相关推荐

  1. python3.4学习笔记(二十一) python实现指定字符串补全空格、前面填充0的方法

    python3.4学习笔记(二十一) python实现指定字符串补全空格.前面填充0的方法 Python zfill()方法返回指定长度的字符串,原字符串右对齐,前面填充0. zfill()方法语法: ...

  2. [MyBatis学习笔记] 二、Mybatis基本操作及相关标签介绍

    [MyBatis学习笔记] 二.Mybatis基本操作及相关标签介绍 一.Mybatis简介 二.简单的CRUD操作 1.构建SqlSessionFactory (1)编辑mybatis-config ...

  3. Mr.J-- jQuery学习笔记(二十一)--模拟微博页面

    先看之前的节点操作方法:Mr.J-- jQuery学习笔记(二十)--节点操作方法 Mr.J-- jQuery学习笔记(五)--属性及属性节点 Mr.J-- jQuery学习笔记(十一)--事件委托  ...

  4. kvm虚拟化学习笔记(二十一)之KVM性能优化学习笔记

    本学习笔记系列都是采用CentOS6.x操作系统,KVM虚拟机的管理也是采用virsh方式,网上的很多的文章都基于ubuntu高版本内核下,KVM的一些新的特性支持更好,本文只是记录了CentOS6. ...

  5. linux驱动开发学习笔记二十一:异步通知

    一.异步通知简介 我们首先来回顾一下"中断",中断是处理器提供的一种异步机制,我们配置好中断以后就可以让处理器去处理其他的事情了,当中断发生以后会触发我们事先设置好的中断服务函数, ...

  6. opencv学习笔记二十一:使用HSV颜色空间实现颜色识别

    一.颜色空间介绍        RGB 颜色空间是大家最熟悉的颜色空间,即三基色空间,任何一种颜色都可以由该三种 颜色混合而成.然而一般对颜色空间的图像进行有效处理都是在 HSV 空间进行的,HSV( ...

  7. IOS学习笔记二十一(NSDictionary、NSMutableDictionary)

    1.NSDictionary.NSMutableDictionary 可以理解为java里面的map,一个key对应一个value,key不可以重复 NSDictionary不可变,NSMutable ...

  8. java自定义一个timeout,Timeout操作符 RxJava 学习笔记二十一

    timeout用于检测在给定时间内observables没有及时响应.如果指定的时间量没有发出任何项目,则超时会使observables失败并出现TimeoutException. 我们将从debou ...

  9. 立创eda学习笔记二十一:添加、移除泪滴

    在PCB电路板设计中,为了让焊盘更坚固,防止机械制板时焊盘与导线之间断开,常在焊盘和导线之间用铜膜布置一个过渡区,形状像泪滴,故常称做补泪滴(Teardrops). 泪滴的作用 避免电路板受到巨大外力 ...

最新文章

  1. 今天晴朗,但是由于晚上睡眠不是很好就头昏眼花
  2. C#json数据的序列化和反序列化(将数据转换为对象或对象集合)
  3. 智能一代云平台(一):一些思考
  4. 工具| PocSuite 使用介绍
  5. 4. mac xdebug
  6. php自定义按钮,vue实现自定义按钮的方法介绍(附代码)
  7. 软件工程导论复习之可行性研究
  8. 联想小新13pro锐龙版网卡_联想小新Pro 13标压锐龙版评测:比香还香 买就完了
  9. [区块链]区块链技术在冷链运输领域的应用
  10. .axf文件_Keil开发环境如何生成BIN文件
  11. 夏天吃海鲜的八大禁忌
  12. 零中频接收机主要问题
  13. TOM企业邮箱登录入口在哪里?分享企业邮箱登录入口手机网页版
  14. web服务器没有对应站点,原因:您的请求在Web服务器中没有找到对应的站点的解决方法...
  15. 阿里云HaaS100物联网开发板学习笔记(二)硬件控制初步--让小灯闪烁起来
  16. CVPR2020 | MAL:联合解决目标检测中的定位与分类问题,自动选择最佳anchor
  17. 考试必备技能--自制题库
  18. 如何简单的实现一个遮罩层
  19. java基础-day08-面向对象(三) this关键字、继承、static关键字
  20. 泡脚最补肾,时间有讲究。手脚凉的人必看

热门文章

  1. MySQL学习笔记(2):MySQL的基本指令
  2. 用matlab绘制信源熵函数曲线,绘制信源熵函数曲线.doc
  3. java char字节数_Java中char到底是多少字节?
  4. OpenCV-Python (Sobel算子)
  5. “马云,未来十年我们拼什么”
  6. Sparsity Quantization 之自我理解
  7. 小学生图片_小学生作文让猪来接我火了!全篇都是笑点,老师:天才服你
  8. 15款最好的Windows系统安全检测工具
  9. HS6621 串口透传 模式 - [详解]
  10. 量子计算机容易应用宝,只能工作数毫秒?量子计算机快要陷入困境