大家好,欢迎来到IT知识分享网。
/Contents
概述
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包,也可以通过思博伦仪器打流。
from
scapy.all import *
while
True:
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.
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/12130.html