几种网络名词解释


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网络(四)-虚机流量分析的更多相关文章

  1. Openstack之Nova创建虚机流程分析

    前言        Openstack作为一个虚拟机管理平台,核心功能自然是虚拟机的生命周期的管理,而负责虚机管理的模块就是Nova. 本文就是openstack中Nova模块的分析,所以本文重点是以 ...

  2. openstack kilo版本控制节点异常流量分析

  3. openstack nova 创建虚机流程

    1文件 nova.api.openstack.coumpute.servers1函数 def create(self, req, body):1调用 (instances, resv_id) = se ...

  4. OpenStack 创建虚机过程简要汇总

    1. 总体流程 翻译自原文(英文):https://ilearnstack.com/2013/04/26/request-flow-for-provisioning-instance-in-opens ...

  5. OpenStack 虚机网卡的创建过程

    原文链接:https://www.cnblogs.com/potato-chip/p/9127083.html OpenStack虚机网卡的创建过程 OpenStack最基本和常用的操作就是启动虚机. ...

  6. OpenStack虚机网卡的创建过程

    OpenStack虚机网卡的创建过程 OpenStack最基本和常用的操作就是启动虚机.虚机启动的过程中涉及很多内容,其中非常重要的一个环节就是创建并绑定虚机的虚拟网卡.虚机的创建和管理是Nova的任 ...

  7. VMWare 安装ubuntu,虚机设置静态IP接入公网

    本文提供的kafka安装配置为Linux(ubuntu-16.04.3) 1.首先安装VMarea(14.0.0 build-6661328) 2.到http://www.ubuntu.org.cn/ ...

  8. 虚机中访问外网;NAT中的POSTROUTING是怎么搞的?

    看下docker中是怎么配置的网络 在虚机中访问外网:设定了qemu,在主机上添加路由:sudo iptables -t nat -I POSTROUTING -s 192.168.1.110 -j ...

  9. 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 ...

随机推荐

  1. jdbc 加载数据库驱动如何破坏双亲委托模式

    导读      通过jdbc链接数据库,是每个学习Java web 方向的人必然一开始会写的代码,虽然现在各路框架都帮大家封装好了jdbc,但是研究一下jdbc链接的套路还是很意义     术语以及相 ...

  2. 46 Linden Street ACT II

    46 Linden Street ACT II Excuse me , officer. Can you help me? Sure. Can you tell me, How to get to L ...

  3. mariadb数据类型

    MariaDB 数据类型: MariaDB数据类型可以分为 数字,日期和时间以及字符串值. 使用数据类型的原则:够用就行,尽量使用范围小的,而不用大的 常用的数据类型: a. 整数:int, bit ...

  4. 宋宝华:Linux设备驱动框架里的设计模式之——模板方法(Template Method)

    本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者: 宋宝华 来源: 微信公众号linux阅码场(id: linuxdev) 前言 <设计模式>这本经典 ...

  5. nyoj 242-计算球体积 (pi*r*r*r*4/3)

    242-计算球体积 内存限制:64MB 时间限制:3000ms 特判: No 通过数:21 提交数:74 难度:1 题目描述: 根据输入的半径值,计算球的体积. 输入描述: 输入数据有多组,每组占一行 ...

  6. Code Runner for VS Code 突破 1000 万下载量!支持运行超过 40 种语言

    记得三年多前,韩老师那时还在写 PHP(是的,没错!在微软写 PHP),同时需要写 Python 和 Node.js .所以在那时,支持多种语言的 VS Code 已经是笔者的主力编辑器了.唯一不足的 ...

  7. Java Import的使用

    这里根据上一篇中ClassObject.java的例子改编的:https://www.cnblogs.com/jizizh/p/11938574.html 一.创建ClassObjectImport. ...

  8. AntDeploy一键发布netcore3.0Windows服务到远程服务器

    *:first-child { margin-top: 0 !important; } .markdown-body>*:last-child { margin-bottom: 0 !impor ...

  9. 【Android - 控件】之V - Toolbar的使用

    Toolbar是Android V7包中的一个控件,用来代替Action Bar作为界面的头部标题栏布局.Toolbar相对于Action Bar的特点是更加灵活,可以显示在任何位置. 首先先来看To ...

  10. kubeadm join 超时报错 error execution phase kubelet-start: error uploading crisocket: timed out waiting for the condition

    解决: swapoff -a kubeadm reset systemctl daemon-reload systemctl restart kubelet iptables -F && ...