1.为什么还需要linux bridge的部署方式?
2.哪一个网桥起着交换机的作用?
3.neutron如何实现私有网络的隔离

==================================================

很久之前写了一篇关于OpenStack Neutron解析的文章,那时只是粗略的写了一下把Neutorn的整体架构分析了一下,后来一直忙于其他事情,也就忘了去详细分析一下Neutron的架构。这次这篇算是完成未完之事,同时也是对之前的一个知识的总结及恢复。

OpenStack的Neutron自从由nova-network从Nova中分离出来之后,一直感觉十分的不稳定,而且初期其结构也是十分的复杂。很
多人刚刚接触Neutron,甚至刚刚接触OpenStack的时候,都是被困在Neutron异常复杂的机制。尤其当我们部署了一套由Neutron管
理网络的OpenStack环境时,会发现很多时候都是在解决各种莫名奇妙的问题,但我们纠察问题时,总是会涉及Neutron。所以,我总是一直认为在
实际的生产环境中,如果不是对于网络真的有着很特殊的需求,直接部署OpenStack的Essex版本,别人问我,我也是如是的回答。但是,我们如果是
想研究OpenStack的话,Neturon的可玩性还是很大的,尤其是其支持SDN等一些很前瞻性的特性。所以,对于Neturon我们有必要深入的
研究一番。
接着上次的那篇
章,我们再来重新回顾一下Neutron的架构,从物理上划分的话,我们的Neutron主要部署在两类节点上:Compute节点和Network节
点,而至于Controller节点,那不是主要的所在,因为几乎所有的组件都要在部署一个server服务在Controller节点上。从网络分层上
来看,主要分为二层网络L2-Agent,三层网络L3-Agent,以及DHCP-Agent。借用官网上几张图片,按照物理划分的方式,大致分析一下
Neutron架构。

Compute节点

这张图摘自官网,为Compute节点的网络架构及流程分析图。这张图中,我们可以清楚的看到网络相关的一些设备(其实就是一些进程或者系统接口)被分为
四类:TAP device,veth pair,Linux Bridge,Open vSwitch,这里其实用的Open
vSwitch的方式部署Neutron,而我之前也一直使用Open vSwitch部署的,但是这里却也是有着Linux
Bridge的,正如之前文章所言,这个是为了实现安全组功能,但Open vSwitch暂不支持OpenStack的实现方式,所以只好用Linux
Bridge实现qbr网桥作为一个折衷方案。接下来就是最为大头的Open
vSwitch,它在Neutron中构建了一个虚拟的交换机,而这个虚拟交换机由L2-Agent控制着,最终所有Compute节点中的虚拟交换机统
一构成一个巨大的虚拟交换机,统一控制虚拟机在二层网络的数据交换和接入功能。从图中我们可以看出每个Compute节点有两个Open
vSwitch网桥,其实br-int才是真正扮演交换机角色的,而br-eth1则是通过GRE通道在所有节点之间构成一个统一的通信层,实现各个
Compute节点上虚拟机之间的通信。

Network节点
接下来就是看看Network节点上的情况,下面的是Network节点的原理图:

这张图上,我们可以清楚看到Network节点被分为三大部分:Configured by L2-Agent,Configured by
L3-Agent,Configured by
DHCP-Agent,而L2-Agent那部分和我们在Compute节点讨论的是一致的,所以此处就忽略了。接着我们看L3-Agent,在
Neutron中,出现了私有网络这一概念,当然也是实际存在的。而依据以前的nova-network,是无法实现这一功能的,nova-
network顶多能使用VLAN技术实现网络隔离,而无法实现真正的私有网络。在物理网络中,我们要想实现一个私有网络,那么就必须有个路由器才行,而
L3-Agent正是Neutron中实现这个路由器而存在的(事实上,我们在Havana版本中部署的环境中,网络拓扑图中就很形象的显示了这些
routers),L3-Agent的底层实现采用的是Linux系统自带的iptables技术,通过动态的生成配置iptables规则,实现网络的
路由功能以及floatip功能。而每个用户都要一个私有网络的话,一个路由肯定是不够用的,接着就是Linux中namespace技术的用武之地了,
事实上,Neutron为每个私有网络都配置一个router和dnsmasq,而这个就是依靠namespace进行规则和配置的隔离。如下图所示:

现在,每个私有网络可以建立了,但是我们总不能为每个虚拟机手动配置私有ip的,所以这时候DHCP-Agent就显示了其用处,DHCP-Agent通过控制dnsmasq实现了DHCP功能,这样每个虚拟机在启动的时候就可以动态获取私有ip了。

-----------------

转载自:

http://www.aboutyun.com/thread-8716-1-1.html

http://panpei.net.cn/2014/05/22/openstack-neutron-analyse/

[转]OpenStack Neutron解析的更多相关文章

  1. [转]OpenStack Neutron运行机制解析概要

    转载自:http://panpei.net.cn/2013/12/04/openstack-neutron-mechanism-introduce/ 自从开学以来,玩OpenStack也已经3个月了, ...

  2. Openstack Neutron OVS ARP Responder

    ARP – Why do we need it? In any environment, be it the physical data-center, your home, or a virtual ...

  3. Openstack Neutron L2 Population

    Why do we need it, whatever it is? VM unicast, multicast and broadcast traffic flow is detailed in m ...

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

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

  5. openstack neutron中涉及的网络设备

    一.openstack neutron网络设备介绍 Bridge(网桥) 用于将两个LAN连接起来,主要靠的MAC地址学习机制.当网桥的Port收到包时会将包的源mac和port ID关联起来记入ma ...

  6. OpenStack Neutron配置虚拟机访问外网

    配置完成后的网络拓扑如下: 当前环境: X86服务器1台 Ubuntu 16.04 DevStack搭建OpenStack 网络拓扑: 外部网络:192.168.98.0/24 内部网络:10.0.0 ...

  7. openstack neutron L3 HA

    作者:Liping Mao  发表于:2014-08-20 版权声明:能够随意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 近期Assaf Muller写了一篇关于Neutro ...

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

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

  9. OpenStack Neutron 之 Load Balance

    OpenStack Neutron 之 Load Balance 负载均衡(Load Balance)是 OpenStack Neutron 支持的功能之一.负载均衡能够将网络请求分发到多个实际处理请 ...

随机推荐

  1. 安装drools workbench

    从drools官网下载tomcat7版本的Drools  Tomcat 7+ WAR, Workbench,实际就是一个war包,需要严格按照里面的readme的要求,配置好tomcat才可以运行起来 ...

  2. Maven最佳实践-distributionManagement

    分发构件至远程仓库 mvn install 会将项目生成的构件安装到本地Maven仓库,mvn deploy 用来将项目生成的构件分发到远程Maven仓库.本地Maven仓库的构件只能供当前用户使用, ...

  3. [NSURL URLWithString:] returns nil

    You need to escape the non-ASCII characters in your hardcoded URL as well: //localisationName is a a ...

  4. Thinkphp5 iis环境下安装报错400 500

    要求一:服务器需要开启伪静态功能 要求二:新建文件夹web.config 放到入口目录下(如public/web.config  或者/web.config),内容如: <?xml versio ...

  5. vue如何加入百度ssp广告位代码

    vue如何加入百度联盟广告,可以参考 :http://www.cnblogs.com/beileixinqing/p/8379184.html 这里讲述vue如何加入百度ssp媒体的广告 这里是百度异 ...

  6. 我的Oracle控制台创建数据库的工具

    Oracle windows 11.2.0.4 在控制台cmd下的创建工具,不依赖于服务和监听 工具及下载:Oracle控制台工具 注意:其中的 “seeddatabase.gbk.7z”文件为从Or ...

  7. java字符集

    在utf-8编码中,unicode(编码字符集)是utf-8(字符编码)的表现形式 http://www.cnblogs.com/hanruyue/p/5859107.html

  8. 源码分析八(org.springframework.util包之StringUtils类))

    一:spring框架util包中的StringUtils类主要是处理关于字符串 的功能方法,下面直接结合代码分析: //判断字符串是否为空,如果为nul或者""则返回true,否则 ...

  9. linux如何通过脚本来修改用户的密码?脚本自动化修改用户密码?

    需求描述: linux环境中在创建用户的时候,涉及到修改用户的密码,一般是通过passwd命令进行修改,需要多次的确认,这里考虑通过一条命令直接对密码进行修改 不需要进行交互的方式.在此记录. 操作过 ...

  10. css段落首字母下沉

    摘要: 段落首字母放大是指放大段落开头的字母或者汉字,主要使用了css的first-letter伪类选择器. 单行放大: 在第一行内放大,效果如下: <!DOCTYPE html> < ...