Openstack中OVS SRIOV混杂模式的支持
/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
保证虚拟机之间可以正常通信
实验步骤
- 在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
- 在规范之外,另外在虚拟机上添加其它操作
将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场景下测试方法相同。
问题
- Neutron中,如果安全组由iptables(即存在Linuxbridge)实现,那么组播报从虚拟机出来后,无法到达qbr上,目前原因未知;
- 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混杂模式的支持相关推荐
- 【genius_platform软件平台开发】第三十七讲:网卡混杂模式和原始套接字
Linux下网卡的混杂模式 混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包,即不验证MAC地址.普通模式下网卡只接收发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃.一般来说,混 ...
- 【博客635】tcpdump原理与网卡混杂模式
tcpdump原理与网卡混杂模式 案例分析 场景: k8s机器上由于桥上未打开hairpin mode,使得流量通过service回到本身的时候不通了,但是使用tcpdump抓包的时候,流量就通了,不 ...
- 说说ESXi虚拟交换机和端口组的“混杂模式”
很多Up主在ESXi虚拟机软路由教程里都提到了ESXi虚拟交换机的安全里要设置"混杂模式",但基本没有太详细说明什么是"混杂模式",什么情况要开启"混 ...
- 将网卡设为混杂模式_网卡混杂模式实现方法
一.在普通程序中设置网卡混杂模式. 在普通程序中普遍用ioctl函数来设置,该函数很值得大家好好的了解,因为它的使用非常的广泛.下面 给出设置网卡混杂模式的实现代码: #include #includ ...
- sriov开启混杂模式
sriov开启混杂模式: 1.需要网卡硬件支持,如x700系列支持,82599不支持 2.宿主机将vf设置trust on ,关闭spoof check : 3.vm内设置网卡为混杂模式 参考资料: ...
- linux socket 模式,pythonsockets:如何在linux中启用混杂模式
根据python文档,我们可以构建简单的嗅探器,比如:import socket # the public network interface HOST = socket.gethostbyname( ...
- 用ARP探测网络中的混杂模式节点
用ARP探测网络中的混杂模式节点 作者:Refdom 由于sniffer的危害,检测网络中是否存在sniffer也非常重要.Anti-Sniff就相应地产生,来检测网络中的sniffer. 检测sni ...
- Linux中如何将网卡设置为混杂模式
本文介绍网卡的混杂模式,以及在Linux系统中,如何将网卡设置为混杂模式. 网卡本身有混杂模式和非混杂模式两种工作模式.网卡正常情况下,即非混杂混杂模式下,只接收目的地址是本机的数据包.在以太网上,有 ...
- openstack网络(neutron)模式之GRE的基本原理
https://www.cnblogs.com/starof/p/4142856.html neutron网络目的是为OpenStack云更灵活的划分网络,在多租户的环境下提供给每个租户独立的网络环境 ...
最新文章
- 在SQL Server中将数据导出为XML和Json
- Mysql之复制一张表的内容到新表中
- linux显卡烤机操作,显卡拷机必备:FurMark时隔一年全新升级
- 程序员最反感的十件事,你有同感吗?
- encoding/json 方法Marshal的说明
- Python之路【第三篇】:Python基础(二)
- 书单|阅读让人越来越低
- 手把手教你使用 VuePress 搭建个人博客
- mysql group by cube_SparkSQL 中group by、grouping sets、rollup和cube方法详解
- mysql中首字母大写的函数,如何借助MySQL函数将字符串的首字母大写?
- JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度
- php金税系统打印接口,金税开票接口解决方案
- c语言中文件的四种读取方法
- 亲密关系“恋爱心理学”
- js:ajax post与get的区别,getjson的使用
- Date的after和before方法
- 字符串水题——相对分子质量
- js事件案例——小人快跑JavaScript
- 微信小程序中开发的小坑
- 关于RT-Thread多串口,不能使用或中断冲突卡死的问题