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. -_-#【Backbone】Router

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. lr 自带的例子,如何进行关联,通过代码的函数进行实现

    本篇主要介绍如何来进行把参数进行关联,首先对web tours进行设定 如下图 点击“administration”j进入跳转页面,如下图所示 勾选第三项,下拉下方,点击“update”按钮, 关闭浏 ...

  3. Java连接MySQL中文乱码处理【转载】

    本文转载地址:http://developer.51cto.com/art/200906/130425.htm 感谢相关作者! MySQL默认编码是latin1 mysql> show vari ...

  4. 设计模式学习--复合模式(Compound Pattern)

    设计模式学习--复合模式(Compound Pattern) 概述 ——————————————————————————————————————————————————— 2013年8月4日<H ...

  5. nginx往后端转发时需要注意的两个问题

    1.nginx后端有做redirect和rewrite时,需要要注意以下问题:          (1)nginx本身使用的是非80和443端口,例如8080,并且与后端的端口不一致,例如后端为808 ...

  6. hibernate初涉

    好久都不曾写写总结一些东西了,惰性真的是令人难以克制!虽然和许多北漂族一样,艰苦而又迷茫,但是我总能找到一些方向,一点期盼,因为你就我的目标.我会坚持下去,重拾青春的热血,既然人生如戏,那我不当猪脚. ...

  7. Media层

    媒体层包含图形技术.音频技术和视频技术,这些技术相互结合就可为移动设备带来最好的多媒体体验,更重要的是,它们让创建外观音效俱佳的应用程序变得更加容易.您可以使用iOS的高级框架更快速地创建高级的图形和 ...

  8. swift实现ios类似微信输入框跟随键盘弹出的效果

    封面(图文无关) 为什么要做这个效果 在聊天app,例如微信中,你会注意到一个效果,就是在你点击输入框时输入框会跟随键盘一起向上弹出,当你点击其他地方时,输入框又会跟随键盘一起向下收回,二者完全无缝连 ...

  9. Linux设备驱动——内核定时器

    内核定时器使用 内核定时器是内核用来控制在未来某个时间点(基于jiffies)调度执行某个函数的一种机制,其实现位于 <Linux/timer.h> 和 kernel/timer.c 文件 ...

  10. Visual Studio 2012 Ultimate 上安装 Python 开发插件 PTVS

    1.我的环境 操作系统:32位 Win7 旗舰版 Service Pack 1 VS版本:Microsoft Visual Studio Ultimate 2012 版本 11.0.50727.1 R ...