openstack网络(四)-虚机流量分析
几种网络名词解释
1、local网络:local网络是与其他网络和节点隔离的网络。连接到本地网络的实例可以与相同计算节点上的相同网络中的其他虚拟机通信,但是可能无法与驻留在另一主机上的相同网络中的虚拟机通信。由于这种设计限制,local网络仅推荐用于测试目的。
2、flat网络:在flat网络中,不会有VLAN标记或其他网络隔离。在一些配置中,虚拟机可以驻留在与主机相同的网络中。
3、VLAN网络:VLAN网络是利用802.1q标记来隔离网络流量的网络。同一VLAN中的虚拟机被认为是同一网络的一部分,并且在同一二层广播域中。 跨VLAN通信只能通过使用路由器。
4、VXLAN网络:VXLAN网络使用唯一的分段ID(称为VNI)来区分来自其他VXLAN网络的流量。从一个虚拟机到另一个虚拟机的流量由主机使用VNI封装,并使用UDP在现有的3层网络上发送,在那里它被解封装并转发到虚拟机。使用VXLAN在现有网络上封装数据包意在解决VLAN和物理交换基础设施的限制。关于VXLAN封装如何工作的更多信息在RFC 7348中描述,可参考:https://tools.ietf.org/html/rfc7348。
使用LinuxBridge时虚机流量分析
VLAN
假设OpenStack云由VLAN 100的单个网络组成。 计算节点内的网络体系结构类似下图:
三个虚拟机实例通过各自的tap接口连接到名为brqXXXX的Linux网桥。 当映射到VLAN 100的网络中启动虚拟机时,Neutron自动创建了一个名为eth1.100的虚拟接口并连接到网络桥接器。 eth1.100接口绑定到物理接口eth1。 当来自虚拟机的流量穿过Linux网桥并流向物理接口时,eth1.100接口将此流量标记为VLAN 100,并将其放置在eth1上。 通过eth1到虚拟机的入口流量由eth1.100反向去标记,并通过网桥发送到目的虚拟机。
使用brctl show命令,上面的图可以在Linux CLI中显示如下:
输出中的网桥ID是基于虚拟VLAN接口的父网卡动态生成的。 在此网桥中,父接口为eth1。
以brq前缀开头的网桥名称是基于与之相关联的相应Neutron网络的UUID生成的。 每个网络使用自己的网桥。
如果需要多个VLAN,将创建另一个包含单独的虚拟VLAN接口的Linux网桥。 新的虚拟接口eth1.101连接到新的桥接器brqYYYY,如下图所示:
FLAT
Neutron中的flat网络旨在描述不会发生VLAN标记的网络。 与VLAN标记的网络不同,flat网络需要与网络相关联的主机的物理接口直接连接到网桥。 这意味着每个网桥和物理接口只能存在单个flat网络。
eth1连接到名为brqXXXX的桥以及对应于客户机实例的三个tap接口。 Linux内核不在主机上执行任何VLAN标记。
当创建多个flat网络时,必须将单独的物理接口与每个flat网络相关联。
Local
在Neutron中创建本地网络时,无法指定VLAN ID或甚至物理接口。 LinuxBridge插件代理将创建一个网桥,并仅将虚拟机的接口连接到网桥。 同一本地网络中的虚拟机将被连接到同一网桥,并且彼此之间自由通信。 由于主机没有连接到网桥的物理或虚拟VLAN接口,虚拟机之间的流量仅限于其所在的主机。
两个本地网络:brqXXXX和brqYYYY。 连接到同一网桥的虚拟机可以彼此通信,但在网桥外部没有其他任何东西。 当使用本地网络时,不允许不同网桥或主机上的虚拟机之间的通信。
VXLAN
当创建VXLAN网络时,LinuxBridge代理使用iproute2在用户空间创建相应的VXLAN接口,并将其连接到网桥,以代替带标签或物理接口。 VXLAN接口使用VNI和本地VTEP地址等信息。
当配置L2驱动时,Neutron将虚拟机的MAC地址及其各自的主机VTEP地址组成的静态条目存储到数据库。 当来自实例的分组穿过网桥时,主机通过查找转发数据库来确定如何转发分组。 如果找到一个条目,Neutron将把数据包转发出相应的本地接口,并相应地封装流量。 要查看每个主机上的桥接表,请使用bridge fdb show命令。
使用OVS时虚机流量分析
使用OVS的架构的可视化表示如下图所示:
虚拟机通过各自的tap接口连接到单独的Linux网桥。 Linux网桥使用veth连接到OVS集成网桥br-int。 br-int上的OpenFlow规则规定了如何通过虚拟交换机转发流量。 br-int使用OVS跳线连接到提供商网桥br-ethx。 最后,provider bridge连接到物理网络接口,允许流量进入和流出主机到物理网络基础设施。
当使用Open vSwitch驱动时,环境中的每个网络和计算节点都有自己的br-int,provider network和tunnel bridge。 跨节点的虚拟交换机通过物理网络有效地相互交叉连接。 可以在主机上配置多个provider bridge(br-ethx),但它通常需要为每个provider bridge使用专用物理接口(ethx)。
本文翻译自Learning OpenStack Networking (Neutron) Second Edition James Denton
仅供学习交流
openstack网络(四)-虚机流量分析的更多相关文章
- Openstack之Nova创建虚机流程分析
前言 Openstack作为一个虚拟机管理平台,核心功能自然是虚拟机的生命周期的管理,而负责虚机管理的模块就是Nova. 本文就是openstack中Nova模块的分析,所以本文重点是以 ...
- openstack kilo版本控制节点异常流量分析
- openstack nova 创建虚机流程
1文件 nova.api.openstack.coumpute.servers1函数 def create(self, req, body):1调用 (instances, resv_id) = se ...
- OpenStack 创建虚机过程简要汇总
1. 总体流程 翻译自原文(英文):https://ilearnstack.com/2013/04/26/request-flow-for-provisioning-instance-in-opens ...
- OpenStack 虚机网卡的创建过程
原文链接:https://www.cnblogs.com/potato-chip/p/9127083.html OpenStack虚机网卡的创建过程 OpenStack最基本和常用的操作就是启动虚机. ...
- OpenStack虚机网卡的创建过程
OpenStack虚机网卡的创建过程 OpenStack最基本和常用的操作就是启动虚机.虚机启动的过程中涉及很多内容,其中非常重要的一个环节就是创建并绑定虚机的虚拟网卡.虚机的创建和管理是Nova的任 ...
- VMWare 安装ubuntu,虚机设置静态IP接入公网
本文提供的kafka安装配置为Linux(ubuntu-16.04.3) 1.首先安装VMarea(14.0.0 build-6661328) 2.到http://www.ubuntu.org.cn/ ...
- 虚机中访问外网;NAT中的POSTROUTING是怎么搞的?
看下docker中是怎么配置的网络 在虚机中访问外网:设定了qemu,在主机上添加路由:sudo iptables -t nat -I POSTROUTING -s 192.168.1.110 -j ...
- Neutron 理解 (9): OpenStack 是如何实现 Neutron 网络 和 Nova虚机 防火墙的 [How Nova Implements Security Group and How Neutron Implements Virtual Firewall]
学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...
随机推荐
- jdk8 函数式编程概念
yls 2019/11/7 函数式接口 如果一个接口只有一个抽象方法,那么该接口就是函数式接口 如果我们在某接口上声明了FunctionalInterface注解,那么编译器就会按照函数式接口的定义来 ...
- Ansible之templates模板
一.jinja2简介解 Jinja2是Python下一个被广泛应用的模版引擎,他的设计思想来源于Djanjo的模板引擎,并扩展了其语法和一系列强大的功能.ansible的模板配置文件就是用jinja2 ...
- 力扣(LeetCode)二进制间距 个人题解
输入:6 输出:1 解释: 6 的二进制是 0b110 . 示例 4: 输入:8 输出:0 解释: 8 的二进制是 0b1000 . 在 8 的二进制表示中没有连续的 1,所以返回 0 . 提示: 1 ...
- API的描述语言--Swagger
Swagger是一种Rest API的表示方式. 有时也可以作为Rest API的交互式文档,描述形式化的接口描述,生成客户端和服务端的代码. 一,描述语言:Spec Swagger API Spec ...
- python_08
一.作业 ''' 主页: 图标地址.下载次数.大小.详情页地址 详情页: 游戏名.好评率.评论数.小编点评.下载地址.简介.网友评论.1-5张截图链接地址. https://www.wandoujia ...
- Python 命令行之旅:深入 click 之子命令篇
作者:HelloGitHub-Prodesire HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...
- convert svn repo to git
https://john.albin.net/git/convert-subversion-to-git 1. 抓取Log 在linux 上做的,其余是在win上做的. 2. svn co svn:/ ...
- vue router路由跳转了,但是页面没有变(已解决)
小白学习 router.js:两个组件之间跳转 但是路由变了,页面没有改变的原因是因为app.vue里面没有router-view(很关键)
- 【Stream—6】BufferedStream相关知识分享
一.简单介绍以下BufferedStream 在前几章的讲述中,我们已经能够掌握流的基本特性和特点,一般进行对流的处理时,系统肩负着IO所带来的开销,调用十分频繁,这时候就应该想个办法减少这种开销,而 ...
- 20190926-2 选题 Scrum立会报告+燃尽图05
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/8678 一.小组情况组长:迟俊文组员:宋晓丽 梁梦瑶 韩昊 刘信鹏队名:扛 ...