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的更多相关文章

  1. OpenStack 网络服务 Neutron 私有网络构建(十九)

    本章内容基于之前提供者网络构建的基础上进行改动,之前文章参考如下: Openstack 网络服务 Neutron介绍和控制节点部署 (九) Openstack 网络服务 Neutron计算节点部署(十 ...

  2. OpenStack 网络服务 Neutron 多网卡(提供者网络)(十八)

    OpenStack 网络服务 Neutron 多网卡,分为内部网络.外部网络 使用vmware模拟两张网卡 添加网卡 网卡配置 cd /etc/sysconfig/network-scripts cp ...

  3. Openstack 网络服务 Neutron介绍和控制节点部署 (九)

    Neutron介绍 neutron是openstack重要组件之一,在以前是时候没有neutron项目. 早期的时候是没有neutron,早期所使用的网络的nova-network,经过版本改变才有个 ...

  4. OpenStack 网络:Neutron 初探

    OpenStack Neutron 网络模型 OpenStack nova-network 独立成为单独的组件 Neutron 后,形象的网络模型的多平面网络.混合平面私有网络.如图 3,图 4,图 ...

  5. 2.OpenStack 网络简介(neutron)

    OpenStack 网络简介(neutron) 概述和组件 OpenStack 网络允许您创建和管理网络对象, 如网络.子网和端口, 其他 OpenStack 服务可以使用.插件可以实现, 以适应不同 ...

  6. 云计算管理平台之OpenStack网络服务neutron

    一.简介 neutron的主要作用是在openstack中为启动虚拟机实例提供网络服务,对于neutron来讲,它可以提供两种类型的网络:第一种是provider network,这种网络就是我们常说 ...

  7. openstack网络(neutron)模式之GRE的基本原理

    neutron网络目的是为OpenStack云更灵活的划分网络,在多租户的环境下提供给每个租户独立的网络环境. neutron混合实施了第二层的VLAN和第三层的路由服务,它可为支持的网络提供防火墙, ...

  8. OpenStack点滴01-概览

    OpenStack项目由Rackspace和NASA(美国国家航空航天局)共同发起,它是一个旨在为公共及私有云的建设与管理提供软件的开源项目. 作为一个开源云平台,OpenStack的首要任务是简化云 ...

  9. OpenStack/devstack with Neutron on Ubuntu 14 (1)

    安装前,推荐安装一个全新的Ubuntu Server14.04,如果使用之前的ubuntu, 中间可能遇到各种的python包依赖,以及软件版本不对应的问题 环境准备,新建stack用户,给予sudo ...

随机推荐

  1. oracle number 和sqlserver numeric的区别

    number如果不指定范围默认是可以输入所有位数的小数,numeric如果不指定小数默认是不允许输入小数

  2. 矢量做图组件OTGisX的使用(类似Mapbase)

    一:组件添加到工具栏 要在应用程序中应用OTGisX控件,首先要把所下载的OTGisX组件添加到.Net工程中.并将其添加到工具箱托盘中.添加方式为:在工具箱上单击右键,选择“选择项”,会出现“选择工 ...

  3. Foundation Data Structure

    LinkedList : /** * 考虑的比较的周全,并且包含了全部的情况,代码也不乱<b></b> * * @param index * 插入的位置 * @param c ...

  4. 【2013杭州区域赛】部分题解 hdu4770—4780

    1008: 题意: 有20W个数,每个数都在20W以内,现在有20W个询问,每次询问L,R区间内不会打架的数有多少个 定义两个数不互质 就会打架 解法: 脑洞很大的一道题,先要进行预处理,对每一个数预 ...

  5. [Design Pattern] Command Pattern 命令模式

    发现公司的代码好像有用到 Command Pattern,回顾重温下. Command Pattern 的类图结构如下: 参考 <Head First Design Patterns(英文版)& ...

  6. c31 rotc_百度百科

    c31 rotc_百度百科 c31 rotc

  7. objc_msgSend iOS8 EXC_BAD_ACCESS

    如果方法是没有返回值的,需要强转一个返回类型为void的临时函数指针, void (*objc_msgSendTyped)(id self, SEL _cmd, id obj, id arg1) = ...

  8. [置顶] VB 中chr(10)、chr(13)和vblf、vbcr、vbcrlf的分别

    1.共同点: chr(10):换行,相当于VBLF chr(13):回车,相当于VBCR chr(13)+chr(10):回车+换行,相当于VBCRLF cr是回车,只有回车,是到本行的最头上:lf是 ...

  9. hyperv虚拟机网络速度慢问题的解决办法

    服务器安装了windows2012R2进行虚拟化,虚拟机也是用的是windows2012R2的操作系统,这样可以一次激活对应的虚拟机. 在使用虚拟机的过程中发现问题,虚拟机主机的网速正常,无论是ftp ...

  10. Java基础知识强化95:Calendar类之Calendar类的add()和set()方法

    1. Calendar的add()和set()方法: public void add(int field,int amount):根据给定的日历字段和对应的时间,来对当前的日历进行操作 public ...