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. UNIX环境编程学习笔记(13)——文件I/O之标准I/O流

    lienhua342014-09-29 1 标准 I/O 流 之前学习的都是不带缓冲的 I/O 操作函数,直接针对文件描述符的,每调用一次函数可能都会触发一次系统调用,单次调用可能比较快捷.但是,对于 ...

  2. 【VirtualBox】共享文件夹失效问题

    fix: sudo ln -f -s /opt/VBoxGuestAdditions-5.1.20/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vb ...

  3. Spring Boot项目使用Eclipse进行断点调试Debug

    1.在命令行下定位到项目根目录,启动Spring Boot项目,命令如下: java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=80 ...

  4. 制作做最小的fedora、ubuntu , jeos系统

    之前做过, 2018年4月底,最新的fedora28 .ubuntu18.04发布后,自己又尝试做了下. ubuntu的成功了,比较简单: fedora的其实不用自己去制作,直接定制官方的Atomic ...

  5. IBM Personal Communications 软件:精简绿色版TN3270终端模拟器:经测试可以在 (winxp、win2003、win764)上运行

    全系列版本啊!耗费了我大量的时间和精力,深夜熬到3点! 注意:如何使用?解压后,里面有个reg注册表文件,以管理员权限用户双击加载即可. http://files.cnblogs.com/files/ ...

  6. [OpenCV] Samples 06: logistic regression

    logistic regression,这个算法只能解决简单的线性二分类,在众多的机器学习分类算法中并不出众,但它能被改进为多分类,并换了另外一个名字softmax, 这可是深度学习中响当当的分类算法 ...

  7. IOS端的摇一摇功能

    //微信的摇一摇是怎么实现的~发现原来 ios本身就支持 //在 UIResponder中存在这么一套方法 - (void)motionBegan:(UIEventSubtype)motion wit ...

  8. SPOJ QTREE5 lct

    题目链接 对于每一个节点,记录这个节点所在链的信息: ls:(链的上端点)距离链内部近期的白点距离 rs:(链的下端点)距离链内部近期的白点距离 注意以上都是实边 虚边的信息用一个set维护. set ...

  9. 如何在O(n)的时间复杂度内找出数组中出现次数超过了一半的数

    方法一:每次取出两个不同的数,剩下的数字中重复出现次数超过一半的数字肯定,将规模缩小化.如果每次删除两个不同的数,这里当然不是真的把它们踢出数组,而是对于候选数来说,出现次数减一,对于其他数来说,循环 ...

  10. Oracle批量执行SQL语句

    SQLServer的场合,用";"分割SQL语句即可正常执行. Oracle的场合,会报ORA-00911错误.Oracle中需要加上begin end才正确. Dim Sql A ...