虚拟机去混杂模式与 vlan in vxlan 特性

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=2,in_port=2,dl_dst=01:00:00:00:00:00/01:00:00:00:00:00,action=normal  //广播、组播报文正常转发
priority=2,in_port=2,dl_dst=$vm_mac,actions=normal  //对目的地址是VM本身mac的报文则正常转发
prrority=1,in_port=2,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[31..31], normal

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

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

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

pkt_mark = 0x00000001 actions = normal

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

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

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

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

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

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

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

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

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

tun_id = 0x1388, actions = move: OXM_OF_VLAN_VID[0..11] -> NXM_NX_PKT_MARK[0..11], load: 0->NXM_NX_PKT_MARK[31..31], mod_vlan_vid:1, resubmit(, 10)
时间: 2024-12-16 21:20:18

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

网络叠加模式:gre、vlan、vxlan

一.网络叠加模式: 一个数据包(或帧)封装在另一个数据包内;被封装的包转发到隧道端点后再被拆装. 叠加网络就是使用这种所谓"包内之包"的技术安全地将一个网络隐藏在另一个 网络中,然后将网络区段进行迁移. 二.gre: 1.隧道技术 (1)什么是隧道技术 隧道技术(Tunneling)是一种通过使用互联网络的基础设施在网络之间传递数据的方式. 使用隧道传递的数据(或负载)可以是不同协议的数据帧或包.隧道协议将其它协议的数据帧或包重新封装然后通过隧道发送.新的帧头提供路由信息,以便通过互联

VMWare虚拟机 网络连接模式

1 VMWare虚拟机bridged.host-only和NAT网络模式的区别和用法 VMWare提供了三种工作模式,它们是bridged(bridged模式:对应网卡vment0).NAT(网络地址转换模式:对应网卡vment8)和host-only(主机模式:对应网卡vment1).三个网卡可以理解为三个通道.要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式.(在Linux下面ifconfig显示eth0第一个网卡IP,(eth就是ethernet以太网,在这里指网络接口

VLAN,GRE,VXLAN

https://www.cnblogs.com/charles1ee/p/6629009.html VLAN介绍 局域网LAN(多个机器连接一个Hub或者Switch),是一个广播域 VLAN:一台Switch划分出多个虚拟机的LAN,每个vlan中的主机连接交换机的端口是access口,从而保证了交换机只在同一个vlan中转发包 IEEE802.1Q标准定义了VLAN Header的格式.他在普通以太网帧结构的SA(src addr)之后键入了4bytes的VLAN tag/Header数据,

vSphere虚拟交换机安全策略解读-混杂模式、MAC地址更改、伪传输

数据安全战略非常重要,必须做好计划; 特别是在数据中心,所有虚拟资产都必须得到很好的保护. 一个图谋不轨的hacker可能会劫持VM并重新配置以满足他的邪恶目的.本文详细讲述了vSphere虚拟交换机基于2层的安全策略. 有3个安全策略可供选择:混杂模式.MAC地址更改.伪传输. 既然是2层安全策略,而MAC地址又是处于2层,所以这3个策略都与MAC地址有关,可称之为“MAC防火墙”. 背景知识: 对于物理机,有2个MAC地址: ■固化在物理网卡ROM中的MAC地址,不可更改,该地址称为”初始M

严格模式和混杂模式

严格模式是浏览器根据web标准去解析页面,是一种要求严格的DTD,不允许使用任何表现层的语法,如<br/>.什么是混杂模式? 混杂模式则是一种向后兼容的解析方法,说的透明点就是可以实现IE5.5以下版本浏览器的渲染模式.触发严格模式 触发严格模式很简单,就是正常的建立网页,声明正确的DTD,便是严格模式.触发混杂模式 而混杂模式的触发可以通过在HTML文档开始不声明DTD,或者在DOCTYPE前加入XML声明l<?xml version="1.0" encoding=

Doctype作用?严格模式与混杂模式如何区分?它们有何差异?

一.Doctype作用是什么? <!DOCTYPE>声明叫做文件类型定义(DTD),声明的作用为了告诉浏览器该文件的类型.让浏览器解析器知道应该用哪个规范来解析文档.<!DOCTYPE>声明必须在 HTML 文档的第一行,这并不是一个 HTML 标签. 二.严格模式与混杂模式如何区分?它们有何意义? 严格模式:又称标准模式,是指浏览器按照 W3C 标准解析代码. 混杂模式:又称怪异模式或兼容模式,是指浏览器用自己的方式解析代码. 如何区分:浏览器解析时到底使用严格模式还是混杂模式,

在实践中深入理解VMware虚拟机的上网模式:NAT模式

0.说明 本篇博文为<在实践中深入理解VMware虚拟机的上网模式>系列的其中一篇:NAT模式. VMware虚拟机在我们学习过程中必不可少,不管是安装Linux操作系统来进行学习.搭建各种网络服务,拟或者是用来做集群测试.云计算平台OpenStack等的搭建,可以说,VMware虚拟机为我们带来了极大的便利,最直观的好处就是,我们可以节省很多用来购买各种设备的资金,同时也可以达到了学习各种技术的目的. 然而只要涉及到通过宿主机与VMware虚拟机中的操作系统进行通信,或者是VMware虚拟机

严格模式与混杂模式

区别:严格模式是浏览器根据规范去显示页面:混杂模式是以一种向后兼容的方式去显示 意义:决定浏览器如何渲染网站(浏览器使用那种规范去解析网页) 触发:浏览器根据doctype是否存在和使用的是那种DTD来决定. 这篇内容是在了解了<!DOCTYPE>之后,需要知道的. Doctype可声明三种DTD类型,分别表示严格版本.过渡版本以及基于框架的 HTML 文档. 当浏览器厂商开始创建与标准兼容的浏览器时,他们希望确保向后兼容性.为了实现这一点,他们创建了两种呈现模式:标准模式和混杂模式 在标准模

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

Doctype:(Document Type)文档类型,它位于文档中最前面的位置,处于标签之前.如果你想制作符合标准的页面,一个必不可少的关键组成部分就是DOCTYPE的声明.确定了正确的Doctype,xhtml里面的标识和css才能正常生效(也就是说它会很负责地告诉浏览器怎么解释你的这个标签和你写的css).既然它是一种声明,它的责任就是告诉浏览器文档使用哪种html或者xhtml规范.为了获取正确的Doctype声明,关键就是让dtd与文档所遵循的标准对应.例如:假定文档遵循的是xhtml