openstack-neutron基本的网络类型以及分析
【概述】
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个 |
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基本的网络类型以及分析的更多相关文章
- openstack neutron 二/三层网络实现
引用声明:https://zhangchenchen.github.io/2017/02/12/neutron-layer2-3-realization-discovry/ 一.概述 Neutron是 ...
- openstack neutron 各节点网络配置
- openstack——neutron网络服务
一.neutron 介绍: Neutron 概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要 ...
- openstack Neutron分析(3)—— neutron-dhcp-agent源码分析
1.neutron dhcp3个主要部件分别为什么?2.dhcp模块包含哪些内容?3.Dnsmasq配置文件是如何创建和更新的?4.DHCP agent的信息存放在neutron数据库的哪个表中? 扩 ...
- Openstack neutron 网络服务 (七)
引用: https://docs.openstack.org/ocata/zh_CN/install-guide-rdo/common/get-started-networking.html neut ...
- OpenStack (neutron 网络服务)
neutron介绍 提供 OpenStack 虚拟网络服务,也是 OpenStack 重要的核心模块之一,该模块最开始是 Nova 的一部分,叫 nova-network,后来从 Nova 中分离出来 ...
- Openstack neutron:云数据中心底层网络架构
目录 - 目录 - 云数据中心流量类型 - NSX整体网络结构 - 管理网络(API网络) - 租户网络 - 外联网络 - 存储网络 - openstack整体网络结构 - 管理网络:(上图中蓝线) ...
- 【openstack N版】——网络服务neutron
一.openstack网络服务neutron 1.1neutron介绍 neutron是openstack重要组件之一,在以前是时候没有neutron项目,早期的时候是没有neutron,早期所使用的 ...
- 深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(一)
VPC的概念与基于vxlan的overlay实现很早就有了,标题中的"新"只是一个和传统网络的相对概念.但从前年开始,不同于以往基础网络架构的新一代SDN网络才真正越来越多的走进国 ...
随机推荐
- 16.Nov Working Note
05 今天也很忙,版本发布在即,但之前的日志系统发现了bug:在中文模式下python读写抛出异常,通过转化为utf8除去异常,上传到服务器还有乱码. 另外,就是多组件安装时,多线程发生冲突.因为每一 ...
- 修改Android Studio默认的API Level(SDK版本)
原文:修改Android Studio默认的API Level(SDK版本) Android Studio(2.1.2)新建工程的时候只会让你选择最低支持的SDK版本,默认的目标编译SDK版本会以系统 ...
- 简单图标转xaml代码
工具 PhotoShopCC(2017) Blend 2017 原图 步骤 1,使用钢笔工具勾勒出大致路径 2,将工作路径转为形状路径 3,图层右键->复制SVG <svg xmlns=& ...
- CKEditor 4.5 beta 发布,可视化 HTML 编辑器
分享 <关于我> 分享 [中文纪录片]互联网时代 http://pan.baidu.com/s/1qWkJfcS 分享 <HTML开发MacOSAp ...
- 查看SharePoint文档库是,显示层次目录,可以点击返回层次
在sharepoint 2013中,Documnet library(文档库)包含多层文件夹,当进入到文件夹后,返回指定层次了(例如返回上一层),需要用浏览器的返回. 使用起来不方便,而且浏览器的返回 ...
- acl_cpp 的编译与使用
注:因为现在 acl_cpp 已经合并进 acl 项目中,本文仅是介绍了老版本的 acl_cpp 的编译过程,新版本的介绍及编译请参考:acl 框架库简介. acl_cpp 是基于 acl 为基础开发 ...
- 做个知识回顾目录,打算每日更新一下ios的基础知识
一.基础技能列表: 01 面向对象特性 类与方法封装 通过继承扩展类 抽象类与方法覆盖 多态.动态类型和动态绑定 分类和协议 ...
- 共识协议——RAFT&PBFT
区块链是一个没有中央权威的分布式对等系统.虽然权力下放可以防止各方的腐败行为,但是它必需要有一个可靠的共识协议来作出决策,让分散在世界各地的节点可以形成一致的意见.常见的共识算法有比特币采用的POW, ...
- 容器化之Docker小知识普及
Docker确实是个好东西,相当于一个小型虚拟机,里面环境隔离只要有对应的镜像就能运行业务应用.运行基础应用.能跑数据库等等,还能跑linux等等. Docker 从狭义上来讲就是一个进程,从广义上来 ...
- Android项目开发之--------地铁时光机(一,搭建主框架)
一:先看一下框架搭建后的效果图 , 二:框架结构 (1)底部导航栏采用的是: MainActivity(主框架), MsgFragment(首页), HistoryFragment(历史清单 ...