/Contents

  • 概述
  • 环境
  • 验证前配置工作
  • OVS场景下混杂模式支持测试
    • 准备
    • 实验步骤
    • 组播报文测试
  • SRIOV场景下混杂模式支持测试
  • 问题
  • 参考

概述

NFV场景下,为了虚拟网元可以接收到其它的报文,就需要支持混杂模式。NFV往往需要调用IAAS层资源,就需要支持OVS和sriov场景下的混杂模式,即在计算节点上打开全局“混杂模式”开关后,该计算节点上、同一个二层网络域下、所有虚拟机的网卡可以收到所有不是发送给自己的报文。
OVS场景下,需要修改现有流表,以支持混杂模式;SRIOV场景则需要物理网卡的支持。

环境

Openstack

验证前配置工作

在计算节点关闭安全组、关闭ovs-agent下发的setup_arp_spoofing_protection流表

OVS场景下混杂模式支持测试

准备

同一节点、同一网段两台虚拟机
vm1
Ip: 192.168.7.9
Mac: fa:16:3e:d3:58:26

vm2
Ip: 192.168.7.12
Mac: fa:16:3e:bd:6a:52

保证虚拟机之间可以正常通信

实验步骤

  1. 在vm2中添加新网卡和网桥
    添加veth
# ip link add name veth0 type veth peer name veth1

添加linux bridge

# brctl addbr br0

将veth1加入br0

# brctl addif br0 veth1

删除网卡的ip地址

# ip a del 192.168.7.12/24 dev eth0

将网卡eth0的地址加入到veth1上

# ifconfig veth1 192.168.7.12
  1. 在规范之外,另外在虚拟机上添加其它操作

将eth0加入到br0上

# brctl addif br0 eth0

Up起br0

# Ifconfig br0 up


可以在eth0和虚拟机的tap和qvo口上抓到广播包

组播报文测试

注意:这里测试组播,安全组需要由Openvswitch流表实现

在发送端,使用python发送组播报如下(组播源mac可以修改):

需要安装python-scapy包,也可以通过思博伦仪器打流。

  fromscapy.all import *whileTrue:pkt=Ether(dst='33:33:00:00:00:01',src='33:33:00:00:00:11',type=0x0800)/IP(dst='224.0.0.1',src='224.0.0.3')/TCP(dport=1,sport=2)sendp(pkt, iface='eth0')

在接收端可以收到组播报文,如下

SRIOV场景下混杂模式支持测试

SRIOV场景下,目前进行混杂测试选取了intel 82599/X710[^1]和Mellonax ConnectX-4 Lx。发现82599由于硬件限制,不支持单播混杂模式[^2]。
这里不再赘述测试步骤,与ovs场景下测试方法相同。

问题

  1. Neutron中,如果安全组由iptables(即存在Linuxbridge)实现,那么组播报从虚拟机出来后,无法到达qbr上,目前原因未知;
  2. SRIOV场景下混杂模式需要网卡支持,需要对多个厂家的网卡进行全量测试。

参考

[1]. x710对混杂模式的支持,https://www.sealingtech.org/2018/07/30/sr-iov-and-promiscuous-mode/
[2]. sriov ixgbe drivers limitation and improvement, https://events.static.linuxfound.org/sites/events/files/slides/20160715_LinuxCon_sriov_final.pdf2.

Openstack中OVS SRIOV混杂模式的支持相关推荐

  1. 【genius_platform软件平台开发】第三十七讲:网卡混杂模式和原始套接字

    Linux下网卡的混杂模式 混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包,即不验证MAC地址.普通模式下网卡只接收发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃.一般来说,混 ...

  2. 【博客635】tcpdump原理与网卡混杂模式

    tcpdump原理与网卡混杂模式 案例分析 场景: k8s机器上由于桥上未打开hairpin mode,使得流量通过service回到本身的时候不通了,但是使用tcpdump抓包的时候,流量就通了,不 ...

  3. 说说ESXi虚拟交换机和端口组的“混杂模式”

    很多Up主在ESXi虚拟机软路由教程里都提到了ESXi虚拟交换机的安全里要设置"混杂模式",但基本没有太详细说明什么是"混杂模式",什么情况要开启"混 ...

  4. 将网卡设为混杂模式_网卡混杂模式实现方法

    一.在普通程序中设置网卡混杂模式. 在普通程序中普遍用ioctl函数来设置,该函数很值得大家好好的了解,因为它的使用非常的广泛.下面 给出设置网卡混杂模式的实现代码: #include #includ ...

  5. sriov开启混杂模式

    sriov开启混杂模式: 1.需要网卡硬件支持,如x700系列支持,82599不支持 2.宿主机将vf设置trust on ,关闭spoof check : 3.vm内设置网卡为混杂模式 参考资料: ...

  6. linux socket 模式,pythonsockets:如何在linux中启用混杂模式

    根据python文档,我们可以构建简单的嗅探器,比如:import socket # the public network interface HOST = socket.gethostbyname( ...

  7. 用ARP探测网络中的混杂模式节点

    用ARP探测网络中的混杂模式节点 作者:Refdom 由于sniffer的危害,检测网络中是否存在sniffer也非常重要.Anti-Sniff就相应地产生,来检测网络中的sniffer. 检测sni ...

  8. Linux中如何将网卡设置为混杂模式

    本文介绍网卡的混杂模式,以及在Linux系统中,如何将网卡设置为混杂模式. 网卡本身有混杂模式和非混杂模式两种工作模式.网卡正常情况下,即非混杂混杂模式下,只接收目的地址是本机的数据包.在以太网上,有 ...

  9. openstack网络(neutron)模式之GRE的基本原理

    https://www.cnblogs.com/starof/p/4142856.html neutron网络目的是为OpenStack云更灵活的划分网络,在多租户的环境下提供给每个租户独立的网络环境 ...

最新文章

  1. 在SQL Server中将数据导出为XML和Json
  2. Mysql之复制一张表的内容到新表中
  3. linux显卡烤机操作,显卡拷机必备:FurMark时隔一年全新升级
  4. 程序员最反感的十件事,你有同感吗?
  5. encoding/json 方法Marshal的说明
  6. Python之路【第三篇】:Python基础(二)
  7. 书单|阅读让人越来越低
  8. 手把手教你使用 VuePress 搭建个人博客
  9. mysql group by cube_SparkSQL 中group by、grouping sets、rollup和cube方法详解
  10. mysql中首字母大写的函数,如何借助MySQL函数将字符串的首字母大写?
  11. JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度
  12. php金税系统打印接口,金税开票接口解决方案
  13. c语言中文件的四种读取方法
  14. 亲密关系“恋爱心理学”
  15. js:ajax post与get的区别,getjson的使用
  16. Date的after和before方法
  17. 字符串水题——相对分子质量
  18. js事件案例——小人快跑JavaScript
  19. 微信小程序中开发的小坑
  20. 关于RT-Thread多串口,不能使用或中断冲突卡死的问题

热门文章

  1. vivoXFold参数配置 vivo X Fold评测
  2. 怎么给计算机主机设置密码,如何给电脑硬盘设置密码
  3. 大数据讲课笔记3.3 Hadoop集群配置
  4. Mac 查看隐藏文件
  5. 百科 | 企业管理系统:是什么、用途、类型
  6. 企业知识管理系统对企业的意义
  7. Redis 主从搭建
  8. 【防火墙源NAT转换-多对一】
  9. Linux系统之部署Yearning SQL审核平台
  10. 百度人脸识别技术简单入门