OpenStack点滴03-Neutron
OpenStack Neutron是一个比较复杂的组件,如果说OpenStack安装部署过程哪一个组件最麻烦,那就肯定是网络组件Neutron了。
因为我对OpenStack网络这块也不是很熟,就把我所了解的记录一下。
典型的OpenStack网络分为管理网络、数据网络、外部网络,以下是一个图例:
外部网络:用户调用Openstack的API;虚拟机要访问外网;外网要ssh到虚拟机。
数据网络:虚拟机之间的数据传输;虚拟机连接到虚拟路由。
管理网络:各模块之间交互;Message Queue。
在安装部署方面,Neutron分成多个模块分布在3个节点上。
Controller节点
neutron-server,用于接收API请求。
Network节点
neutron-l3-agent,用于创建和管理虚拟路由、namespace、iptables。
neutron-dhcp-agent,创建和管理DHCP服务器,每个虚拟网络都有一个DHCP服务器。
neutron-openvswitch-agent,创建虚拟的L2 switch,Router和DHCP Server都会连接到二层的switch上。
Compute节点
neutron-openvswitch-agent,创建虚拟的L2的switch的,虚拟机的网卡连接到二层的switch上。
下图是一个简单的场景:1个租户,2个网络和1个路由。

分析Compute Host和Network Host上网络虚拟化的实现:
Compute Host

TAP device:KVM和Xen等hypervisor实现的虚拟网卡(eg VIF、vNIC),比如图中的vnet0。发送到TAP设备的frame会被guest OS收到。
veth pair:一对直接连接的虚拟网络接口。以太网帧发送到其中一个veth pair,另一个veth pair就会收到。
Linux Bridge:就像一个简单的交换机。
Open vSwitch:一个虚拟交换机软件,网络接口连接到openvswitch的port,port可以像物理交换机一样配置,包括VLAN配置。
Integration bridge
br-int:所有guest都连接到br-int,通过配置br-int ports可以实现网络隔离。
Physical connectivity bridge
br-eth1:提供到物理网卡eth1的连接,通过veth pair连接br-int。
VLAN translation
net01和net02各自有VLAN ID号 1 和 2,分别对应物理网络VLAN ID 101和102,openvswitch agent负责在br-int和br-eth1上配置flow rule,使其对应上。
Security groups: iptables and Linux bridges
理想情况下,TAP device直接连接到br-int,但是为了实现安全组,所以中间加了linux bridge以及其他。因为OpenStack在TAP device(比如vnet0)上实现了安全组,但是带安全组的TAP device不能直接连接到openvswitch端口。
Network Host

br-ex:和连接到外网的网卡(eth0)连接。
Open vSwitch internal ports
openvswitch internal ports使得可分配多个地址给openvswitch。
DHCP agent
DHCP agent用dnsmasq进程来提供DHCP服务。每个需要DHCP服务的网络都会有一个internal port,并且attach 一个dnsmasq进程给这个port。在之前的例子中,tapXXX对应net01_subnet01,tapWWW对应net02_subnet01。
L3 agent (routing)
上例中,qr-YYY接口对应net01_subnet01,IP地址为192.168.101.1/24。qr-ZZZ对应net02_subnet01,IP地址为192.168.102.1/24。qg-VVV的IP地址为10.64.201.254/24。每个接口操作系统可见的,网络节点可以转发这个packets。
L3 agent用iptables实现floating IP network address translation(NAT)。
Overlapping subnets and network namespaces
有一个问题,就是如果管理网络也用了192.168.101.0/24地址段,那么host就会区分不开。所以通过namespaces来避免冲突,这里的namespace和编程语言中的作用空间有类似的效果。
下图有三个namespace。分别是qdhcp-aaaa、qrouter-bbbb和qdhcp-cccc

OpenStack点滴03-Neutron的更多相关文章
- OpenStack 网络服务 Neutron 私有网络构建(十九)
本章内容基于之前提供者网络构建的基础上进行改动,之前文章参考如下: Openstack 网络服务 Neutron介绍和控制节点部署 (九) Openstack 网络服务 Neutron计算节点部署(十 ...
- OpenStack 网络服务 Neutron 多网卡(提供者网络)(十八)
OpenStack 网络服务 Neutron 多网卡,分为内部网络.外部网络 使用vmware模拟两张网卡 添加网卡 网卡配置 cd /etc/sysconfig/network-scripts cp ...
- Openstack 网络服务 Neutron介绍和控制节点部署 (九)
Neutron介绍 neutron是openstack重要组件之一,在以前是时候没有neutron项目. 早期的时候是没有neutron,早期所使用的网络的nova-network,经过版本改变才有个 ...
- OpenStack 网络:Neutron 初探
OpenStack Neutron 网络模型 OpenStack nova-network 独立成为单独的组件 Neutron 后,形象的网络模型的多平面网络.混合平面私有网络.如图 3,图 4,图 ...
- 2.OpenStack 网络简介(neutron)
OpenStack 网络简介(neutron) 概述和组件 OpenStack 网络允许您创建和管理网络对象, 如网络.子网和端口, 其他 OpenStack 服务可以使用.插件可以实现, 以适应不同 ...
- 云计算管理平台之OpenStack网络服务neutron
一.简介 neutron的主要作用是在openstack中为启动虚拟机实例提供网络服务,对于neutron来讲,它可以提供两种类型的网络:第一种是provider network,这种网络就是我们常说 ...
- openstack网络(neutron)模式之GRE的基本原理
neutron网络目的是为OpenStack云更灵活的划分网络,在多租户的环境下提供给每个租户独立的网络环境. neutron混合实施了第二层的VLAN和第三层的路由服务,它可为支持的网络提供防火墙, ...
- OpenStack点滴01-概览
OpenStack项目由Rackspace和NASA(美国国家航空航天局)共同发起,它是一个旨在为公共及私有云的建设与管理提供软件的开源项目. 作为一个开源云平台,OpenStack的首要任务是简化云 ...
- OpenStack/devstack with Neutron on Ubuntu 14 (1)
安装前,推荐安装一个全新的Ubuntu Server14.04,如果使用之前的ubuntu, 中间可能遇到各种的python包依赖,以及软件版本不对应的问题 环境准备,新建stack用户,给予sudo ...
随机推荐
- -_-#【Backbone】Router
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 编写高质量js代码
原文链接:http://code.tutsplus.com/tutorials/24-javascript-best-practices-for-beginners--net-5399 jquery代 ...
- 微信小程序实例源码大全
微信小程序实例源码大全下载 微信小应用示例代码(phodal/weapp-quick)源码链接:https://github.com/phodal/weapp-quick 微信小应用地图定位demo( ...
- mongodb清洗数据
1,数据库连接超时:DBPool的连接时的配置: 自己进行设置: MongoClientOptions mco = new MongoClientOptions.Builder() ...
- gcc编译命令
g++ demo.cpp -o demo.exe
- ANT打包 小实例
ANT打包 package src; public class Hello { /** * @param args */ public static void main(String[] a ...
- Oracle 数据库基本操作——用户管理与文件管理
目录: 1.初始状态 2.登录数据库 3.创建表空间 1)概念 2) 基本表空间 3)表空间管理 4.创建新用户 5.删除用户 6.用户的授权 1)定义 2)授予权限的方法 3)权限分类 4)授权注意 ...
- 安装apache重启的时候,报错端口被占用,错误1
在cmd中执行以下命令来重新分配. netsh winsock reset. 还不行的话可以重启电脑,再不行就算apache配置文件错误.
- 第三章:真正弄清楚一个Mod的组织结构
<基于1.8 Forge的Minecraft mod制作经验分享> 首先看看一个mod的文件结构,懂Java的应该都看得懂: src/main/ --java/com.xxxxxxxx.x ...
- MM32 RTC学习(兼容STM32)
RTC学习 RTC简述 实时时钟是一个独立的定时器. RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能. 修改计数器的值可以重新设置系统当前的时间和日期. RTC模块和时钟配 ...