1. 去混杂模式

1.1 背景

混杂模式(Promiscuous Mode)是指一台机器能够接收所有经过它的数据流,而不论其目的地址是否是它。是相对于通常模式(又称“非混杂模式”)而言的。

这被网络管理员使用来诊断网络问题,但是也被无认证的想偷听网络通信(其可能包括密码和其它敏感的信息)的人利用。

在云计算openstack背景下,去混杂模式就是要抑制未知单播,只让目的mac是自身的报文或者广播/组播报文才允许进入虚拟机,减少不必要的虚拟机对报文处理所需的性能消耗。

1.2 未知单播

未知单播,即设备MAC表中没有该单播帧的目的MAC条目。

在交换机工作原理中,当交换机起动时,MAC地址表是空的,所以如果此时A主机发送一个帧给主机B,那么当交换机接受此帧的时候,查看源地址(主机A),并将它添加到MAC地址表中,但是交换机并不知道主机B在哪个端口上(MAC地址表中没有主机B的MAC地址),所以这个帧就是 未知单播帧 。交换机会泛洪这个帧。

1.3 组网图

1.4 流表分析

混杂模式时,policy网桥流表类似"...actions=normal...",不对流量进行区别,按正常转发即可。

去混杂模式时,policy网桥会添加以下相关流表:

priority=,in_port=,dl_dst=:::::/:::::,action=normal  //广播、组播报文正常转发
priority=,in_port=,dl_dst=$vm_mac,actions=normal //对目的地址是VM本身mac的报文则正常转发
prrority=,in_port=,actions=drop //其他报文就丢弃

2. vlan in vxlan

2.1 作用

虚拟机之间通信的vlan报文能够封装到vxlan中在外部网络中传输,类似于qinq(vlan in vlan)。

2.2 组网图

2.3 流表分析

  • policy网桥
    • 虚拟机出来的报文

      不带vlan信息的报文,在pkt_mark做下标记后往下送,pkt_mark 信息存储在寄存器中:

vlan_tci = 0x0000/0x1ffff actions=load:1 -> NXM_NX_PKT_MARK[..], normal

      带vlan的报文,将vlan信息(共12bit)保存在pkt_mark后往下送:

actions = move:OXM_OF_VLAN_VID[..] -> NXM_NX_PKT_MARK[..], load: 0-> NXM_NX_PKT_MARK[..], strip_vlan, normal
    • 进入虚拟机的报文

      pkt_mark为0x1的报文,直接送往虚拟机:

pkt_mark = 0x00000001 actions = normal

      pkt_mark不为0x1的报文,从pkt_mark获取到vlan信息后送往虚拟机:

actions = move:NXM_NX_PKT_MARK[..] -> OXM_OF_VLAN_VID[..], normal
  • br-tun网桥
    • 虚拟机出来的报文

      pkt_mark为0x1的报文,按正常流程直接走table 20/22 :

pkt_mark = 0x00000001, actions = resubmit(,) / (,)

      pkt_mark不为0x1的报文,获取并设置vlan信息,设置vni后走vxlan隧道出主机:

actions = move:NXM_NX_PKT_MARK[..] -> OXM_OF_VLAN_VID[..], set_tunnel:0x1388, output:
    • 进入虚拟机的报文

      报文不带vlan信息时,设置pkt_mark标志后,按照正常流程走table 10:

vlan_tci = 0x0000/0x1fff, tunnel_id = 0x1388, actions = load: -> NXM_NX_PKT_MARK[..], resubmit(, )

      报文带vlan信息时,保存vlan信息到pkt_mark中,并将vxlan的vni修改为local vlan

tun_id = 0x1388, actions = move: OXM_OF_VLAN_VID[..] -> NXM_NX_PKT_MARK[..], load: ->NXM_NX_PKT_MARK[..], mod_vlan_vid:, resubmit(, )

虚拟机去混杂模式与 vlan in vxlan 特性的更多相关文章

  1. 快速简单的了解VLAN(VXLAN)和端口链路类型

    目录 前言 一.VLAN是什么? 1.优点 2.为什么推出VXLAN 二.VXLAN又是什么? 1.优点 三.创建VLAN 四.介绍端口链路类型 五.Access 1.特性 六.Trunk 1.特性 ...

  2. VLAN,GRE,VXLAN

    https://www.cnblogs.com/charles1ee/p/6629009.html VLAN介绍 局域网LAN(多个机器连接一个Hub或者Switch),是一个广播域 VLAN:一台S ...

  3. VMWare虚拟机 网络连接模式

    这个是rocks 群里面我的一个朋友分享的,我觉很好而且描述的很清楚,这是一个做事的态度问题.   1 VMWare虚拟机bridged.host-only和NAT网络模式的区别和用法 VMWare提 ...

  4. linux虚拟机网络连接模式 bridged, host-only, NAT

    最近安装了fedora9.0,却一直不能连接到外网,我用的是3G无线网卡上网的,起初以为是linux不支持3G无线方式的,可后来装了虚拟机ubuntu却可以上网,在后来用有ADSL网络连接的电脑安装f ...

  5. Doctype 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义?

    Doctype:(Document Type)文档类型,它位于文档中最前面的位置,处于标签之前.如果你想制作符合标准的页面,一个必不可少的关键组成部分就是DOCTYPE的声明.确定了正确的Doctyp ...

  6. BackTrack 5无线网卡混杂模式设置

    用ifconfig查看网络设备 主机无线网卡名称一般为wlan0,USB网卡一般为wlan1 虚拟机中USB网卡一般无法自动识别,可以用ifconfig wlan1 up启用 用ifconfig wl ...

  7. VM虚拟机的网卡模式介绍

    (1)Bridged方式 用这种方式,虚拟系统的IP可设置成与本机系统在同一网段,虚拟系统相当于网络内的一台.独立的机器,与本机共同插在一个Hub上,网络内其他机器可访问虚拟系统,虚拟系统也可访问网络 ...

  8. centos6.5虚拟机配置Nat模式连接外网

    想来在虚拟机上搭点软件,于是乎就想让虚拟机连上外网,就用到了Nat模式,自己对网络了解不是太深,以至于配置联网花了一下午.总结下联网步骤. (1)点击虚拟网络编辑器 (2)注意以下几点标红处 (3)点 ...

  9. 实战Java虚拟机之二“虚拟机的工作模式”

    今天开始实战Java虚拟机之二:“虚拟机的工作模式”. 总计有5个系列 实战Java虚拟机之一“堆溢出处理” 实战Java虚拟机之二“虚拟机的工作模式” 实战Java虚拟机之三“G1的新生代GC” 实 ...

随机推荐

  1. selenium如何分别启动IE、firefox、chrome浏览器

    1.火狐浏览器 /* * 初始化火狐浏览器 * */ public static WebDriver initFireFox(WebDriver dr) { String key = "we ...

  2. 计算机网络: IP地址,子网掩码,默认网关,DNS服务器详解

    楔子: 以Windows系统中IP地址设置界面为参考(如图1), IP地址, 子网掩码, 默认网关 和 DNS服务器, 这些都是什么意思呢? 学习IP地址的相关知识时还会遇到网络地址,广播地址,子网等 ...

  3. 请叫我机智-巧用ios朗读kindle图书

    想必大家都有想过kindle出中文的有声阅读刊物吧? 今天突发奇想想到一招能够让我们听自己拿kindle买的中文图书.当然这是有条件的. 前提是你得有一个ios设备,不管是iphone还是ipad,i ...

  4. ZOJ 2674 Strange Limit

    欧拉函数. #include<iostream> #include<stdio.h> #include<string.h> #include<algorith ...

  5. BZOJ 1500 维修数列【Splay】

    注意:1,内存限制,所以需要回收删除的点 2,当前节点的左连续区间和最大值=max(左子树的左连续区间和最大值,左子树的总和+当节点的值+max(右子树的左连续区间和最大值,0)):右连续区间和最大值 ...

  6. liunx中的进程与线程

    1. 进程和线程 进程和线程是程序运行时状态,是动态变化的,进程和线程的管理操作(比如,创建,销毁等)都是有内核来实现的. Linux中的进程于Windows相比是很轻量级的,而且不严格区分进程和线程 ...

  7. 转载 ---> UITableViewCell的分割线

    在iOS7中,表格中经常看到的一个情况是如下所示, 解决方法: 1,手写代码控制   1 self.tableView.separatorInset = UIEdgeInsetsMake(0, 0, ...

  8. 元祖签约K2 BPM,引领绿色健康食品!

    漫步街头,我们经常会被一些鲜艳的红色招牌所吸引,走进去会发现这里有一些普通西饼店不会卖的东西,比如红蛋.年糕.粽子.喜饼.等上海传统食品等......这就是元祖食品. 随着人们生活品质的不断提升,元祖 ...

  9. 通信vue2.0组件

    vue2.0组件通信各种情况总结与实例分析   Props在vue组件中各种角色总结 在Vue中组件是实现模块化开发的主要内容,而组件的通信更是vue数据驱动的灵魂,现就四种主要情况总结如下: 使用p ...

  10. 如何在 kernel 和 hal 层读取同一个标志

    很多时候我们需要从 HAL 层(Hardware Abstract Layer)传一个标志给 kernel 层.一般这种传递是不能直接通过定义全局变量来实现的. 此时可以通过读写文件来实现该标志. 譬 ...