【概述】

Neutron是OpenStack中负责提供网络服务的组件,基于软件定义网络的思想,实现了网络虚拟化下的资源管理,即:网络即服务

【功能】

·二层交换

Neutron支持多种虚拟交换机,一般使用Linux Bridge和Open vSwitch创建传统的VLAN网络,以及基于隧道技术的Overlay网络,如VxLAN和GRE(Linux Bridge只支持VxLAN)。

·三层路由

Neutron从J版本开始,正式加入了DVR(Distributed Virtual Router)服务,将原本集中在网络节点上的部分服务分散到了计算节点上。

通过namespace中使用ip route或者iptables实现路由或者NAT,也可以通过openflow给OVS下发流表来实现。

·负载均衡

关于LBaaS的相关内容,可以参照:https://www.cnblogs.com/liuxia912/p/11209968.html

·防火墙

Neutron有两种方式来保证网络的安全性,分别为防火墙和安全组,均使用iptables实现,前者限制路由器的报文,后者限制进出虚机的报文。

【架构】

·neutron Server

守护进程和一些插件,可以安装在网络节点,也可以安装在控制节点。

neutron-server提供API接口,并把API的调用请求传给已经配置好的插件进行后续处理。

·neutron L2 agent

为虚拟机提供2层交换服务,传输以MAC地址为基础。

·neutron L3 agent

为虚拟机访问外部网络提供三层转发服务,负责路由浮动IP分配地址转换安全组管理

通过iptables实现安全组,路由和地址转换。

每个虚拟路由运行在一个network namespace中,每个namespace由qroute -< router -< UUID命名。

·neutron-dhcp-agent

为虚拟机提供DHCP服务。

【创建虚拟机的网络过程】

1. nova-compute向Neutron Server发送一个请求虚拟机IP地址的请求

2. Neutron Server收到请求后为虚拟机创建MAC和IP地址,并存储到数据库中

3. Neutron Server将信息发送给DHCP-agent

4. DHCP-agent收到信息后将对应信息发送给dnsmasq,dnsmasq将信息保存起来

5. nova创建虚机后会初始化MAC地址

6. 当虚机启动的时候,默认的ip地址是0.0.0.0,会发送一个广播,dnsmasq会监听到虚拟机发送的报文,然后将对应MAC地址的IP地址返回给虚拟机,这样虚拟机启动完成后就会有IP地址了

【网络虚拟化】

网络(network)是一个隔离的二层网段,类似于物理网络中的LAN(VLAN)。

具体一点,它是为创建它的租户保留的一个广播域

端口和子网始终被分配给某个特定的网络。

跨网络的子网之间的流量必须走L3 Vritual Router

每个网络使用自己的DHCP Agent,每个DHCP Agent在一个Network namespace内。

不同网络内的IP可以重复。

根据创建网络的用户,Neutron L2 network 可以分为:

Provider network: 管理员创建的和物理网络有直接映射关系的虚拟网络。

Tenant network: 租户(普通用户)创建的网络,物理网络对创建者透明,配置由 Neutron 的配置决定。

Provider Network 是由 OpenStack 管理员创建的,直接对应于数据中心的已有物理网络的一个网段。这种网络有三个和物理网络有关属性:

provider:network_type (网络类型,包括 vxlan, gre, vlan, flat, local)

provider:segmentation_id (网段 ID, 比如 VLAN 的 802.1q tag, GRE 网络的 Tunnel ID, VXLAN 网络的 VNI)

provider:physical_network (物理网络的逻辑名称,比如 physnet1, ph-eth1, etc)

【虚拟网络类型】

·Local

本地的Linux Bridge,除了虚拟机的网卡,不连接其他的网络设备,实际场景使用较少。

·Flat

不带vlan tag的网络,相当于local网络的Linux Bridge连接到一个物理网卡,该网络中的instance可以于网络中的instance通信。

所有的租户都在同一个网络内,没有进行网络隔离容易产生广播风暴

可以跨节点,实际场景也较少。

neutron net-create NAME --provider:network_type flat \

--provider:physical_network PHYS_NET_NAME

·VLAN

基于物理Vlan网络实现,共享同一个物理网络的多个Vlan网络是相互隔离的,甚至可以使用重叠的IP空间。

每个支持VLAN network的物理网络可以被视为一个分离的VLAN trunk,使用一组独占的vlan id。(有效段为1~4096

私有云网络应用较多。

neutron net-create NAME --provider:network_type vlan \

--provider:physical_network PHYS_NET_NAME \

--provider:segmentation_id VID

·VXLAN

基于隧道技术的 overlay 网络,通过唯一的 VNI 区分于其他的 vxlan 网络,不和具体的物理网络绑定

在 vxlan 中,数据包通过 VNI 封装成UDP包进行传输,因为二层的包通过封装在三层传输,能够克服vlan和物理网络基础设施的限制。

neutron net-create NAME --provider:network_type vxlan \

--provider:segmentation_id TUNNEL_ID

·GRE

与vxlan类似的一种overlay网络,使用IP包进行封装。
GRE 封装的数据包基于 IP 路由表来进行路由,因此 GRE network 不和具体的物理网络绑定。(基于隧道)

neutron net-create NAME --provider:network_type gre \

--provider:segmentation_id TUNNEL_ID

【虚拟网络类型特点以及应用场景】

模式

原理

优点

缺点

vlan

划分vlan,使用vlan_id隔离广播域

适合小规模网络部署
大二层广播通讯方式
可以不需要网络节点

必须和物理交换机的vlan_id绑定,最多只能有4096个
存在二层通讯的广播风暴问题
基于IP地址的子网划分问题

GRE

和vlan模式不同的.是vlan id 会被转换成gre id,外面在封IP.通过隧道转发出去.

2层的包,通过IP来转发.物理层的3层通信,虚拟上的2层通信.

gre id 可以有1600W个
没有广播风暴

没有mac地址表过大的问题,物理交换机,只需要记住一个eth0的mac地址

3层网络的通信

两个阶段需要建隧道,方案不成熟

VXLAN

相比较于gre,不使用隧道

本质: 2层的包+封装vxlan id + 组播地址+ + udp报头 + ip 报头+数据包

不需要建隧道,使用udp

方便的安全策略

和gre id一样,也有1600W可以使用

【参考】

https://www.jianshu.com/p/de03140fc60e

https://www.ait24.com/1066.html

https://www.ait24.com/1139.html

http://www.mamicode.com/info-detail-1749637.html

openstack-neutron基本的网络类型以及分析的更多相关文章

  1. openstack neutron 二/三层网络实现

    引用声明:https://zhangchenchen.github.io/2017/02/12/neutron-layer2-3-realization-discovry/ 一.概述 Neutron是 ...

  2. openstack neutron 各节点网络配置

  3. openstack——neutron网络服务

    一.neutron 介绍:   Neutron 概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要 ...

  4. openstack Neutron分析(3)—— neutron-dhcp-agent源码分析

    1.neutron dhcp3个主要部件分别为什么?2.dhcp模块包含哪些内容?3.Dnsmasq配置文件是如何创建和更新的?4.DHCP agent的信息存放在neutron数据库的哪个表中? 扩 ...

  5. Openstack neutron 网络服务 (七)

    引用: https://docs.openstack.org/ocata/zh_CN/install-guide-rdo/common/get-started-networking.html neut ...

  6. OpenStack (neutron 网络服务)

    neutron介绍 提供 OpenStack 虚拟网络服务,也是 OpenStack 重要的核心模块之一,该模块最开始是 Nova 的一部分,叫 nova-network,后来从 Nova 中分离出来 ...

  7. Openstack neutron:云数据中心底层网络架构

    目录 - 目录 - 云数据中心流量类型 - NSX整体网络结构 - 管理网络(API网络) - 租户网络 - 外联网络 - 存储网络 - openstack整体网络结构 - 管理网络:(上图中蓝线) ...

  8. 【openstack N版】——网络服务neutron

    一.openstack网络服务neutron 1.1neutron介绍 neutron是openstack重要组件之一,在以前是时候没有neutron项目,早期的时候是没有neutron,早期所使用的 ...

  9. 深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(一)

    VPC的概念与基于vxlan的overlay实现很早就有了,标题中的"新"只是一个和传统网络的相对概念.但从前年开始,不同于以往基础网络架构的新一代SDN网络才真正越来越多的走进国 ...

随机推荐

  1. 【转】编程之道 之 Rob Pike

    1.你无法断定程序会在什么地方耗费运行时间.瓶颈经常出现在想不到的地方,所以别急于胡乱找个地方改代码,除非你已经证实那儿就是瓶颈所在. 2.估量.在你没对代码进行估量,特别是没找到最耗时的那部分之前, ...

  2. Win10的UWP之标题栏的返回键(一)

    原文:Win10的UWP之标题栏的返回键(一) 关于返回键,放在标题栏是目前较为完美的一种方案.继前一篇的Hello World,博主进行一些修改实现该方法. - - - - - - - - - - ...

  3. Android零基础入门第70节:ViewPager轻松完成TabHost效果

    上一期学习了ViewPager的简单使用,本期一起来学习ViewPager的更多用法. 相信很多同学都使用过今日头条APP吧,一打开主界面就可以看到顶部有很多Tab,然后通过左右滑动来切换,就可以通过 ...

  4. 毕设(一)C#的百度api调用

    这个学期就要毕业了,选了一个无人机地面站软件设计的题目,这几天也开始着手做, 首先做了一个百度地图的调用,这里因为是上位机的开发,所有就不介绍Javascript的 调用方法,核心是用到一个类Http ...

  5. 声谱预测网络(Tacotron2)

    整个特征预测网络是一个带有注意力机制(attention)的seq2seq网络. 编码器-解码器(Encoder-Decoder)结构 在原始的编码器-解码器结构中,编码器(encoder)输入一个序 ...

  6. C# 遍历窗体控件顺序问题

    今天在做C# winform 窗体控件遍历时遇到控件顺序的问题,也就是控件被遍历的先后问题.实际情况如下所述. 窗体界面如下: 界面构成是:主界面有一个 Panel (Panel_14),Panel_ ...

  7. 开源玩家福利:十大Linux免费游戏

    假如当你考虑从Windows平台迁移至Linux平台时,“我能在Linux平台上游戏吗?”这类疑问正困扰着你,那么对此这有一个答案就是“快去Linux平台吧!”.感谢开源组织一直以来坚持不懈为Linu ...

  8. FireMonkey下的异形窗体拖动(需要使用FmxHandleToHwnd函数转化一下句柄)

    DelphiXE2 Firemoney FMX 的窗体不只是为windows的, 所以很多功能都没有了. 最常见的就是拖拽了 先看 VCL时代 一个经典拖动代码 ReleaseCapture(); S ...

  9. SYN591-B型 转速表

       SYN591-B型 转速表 光电转速表数显转速表智能转速表使用说明视频链接: http://www.syn029.com/h-pd-249-0_310_44_-1.html 请将此链接复制到浏览 ...

  10. SpringBoot2.1.6 整合CXF 实现Webservice

    SpringBoot2.1.6 整合CXF 实现Webservice 前言 最近LZ产品需要对接公司内部通讯工具,采用的是Webservice接口.产品框架用的SpringBoot2.1.6,于是采用 ...