几种网络名词解释


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. 【Elasticsearch 7 探索之路】(二)文档的 CRUD 和批量操作

    上一篇,我们介绍了什么是 Elasticsearch,它能做什么用以及基本概念(索引 Index.文档 Document.类型 Type)理解.这篇主要对 文档的基本 CRUD 和 倒排索引进行讲解. ...

  2. jquery.eraser制作擦涂效果

    jquery.eraser制作擦涂效果 <pre><!DOCTYPE html><html> <head> <meta http-equiv=&q ...

  3. day1-习题

    # 1.使用while循环输入 1 2 3 4 5 6 8 9 10 count = 1 while count<11 : #使用while语句循环输入123...10 if count == ...

  4. 【自然语言处理】利用LDA对希拉里邮件进行主题分析

    首先是读取数据集,并将csv中ExtractedBodyText为空的给去除掉 import pandas as pd import re import os dir_path=os.path.dir ...

  5. js常用的array方法

      1. splice() splice()方法向/从数组中添加/删除项目,然后返回被删除的项目.(注释:该方法会改变原始数组.) arrayObject.splice(index,howmany,i ...

  6. 关于@Autowired 与@Resource的

    @Autowired注解是spring自己定义的,@Resource是由JSR-250规范定义的注解. @Resource的作用相当于@Autowired,只不过@Autowired按byType自动 ...

  7. nyoj 53-不高兴的小明 (遍历)

    53-不高兴的小明 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:28 submit:89 题目描述:    小明又出问题了.妈妈认为聪明的小明应该 ...

  8. markdown总结 (webstrom快捷键)

    # 在HbuilderX中写markdown(WebStrom快捷键配置)0. 一些快捷键和鼠标操作:1. ctrl+shift+↑  当前行或者选中的块整体向上移动  ↓同理2. 向两侧扩大选择:A ...

  9. F#周报2019年第47期

    新闻 相遇WebWindow,.NET Core上的跨平台webview类库 使用Bolero在WebAssembly中运行F# 用于你团队代码库的AI辅助IntelliSense Jupyter N ...

  10. caffe网络在多线程中无法使用GPU的解决方案 | cpp caffe net run in multiple threads

    本文首发于个人博客https://kezunlin.me/post/8d877e63/,欢迎阅读! cpp caffe net run in multiple threads Guide set_mo ...