设备共享分配:虚拟化和 SRIOV
SRIOV 简介
SRIOV 配置
NovaPCIPassthrough:
- devname: "ens10"
trusted: "true"
physical_network: "sriov-a"
- devname: "ens11"
trusted: "true"
physical_network: "sriov-b"
- devname: "ens20"
trusted: "true"
physical_network: "sriov-a"
- devname: "ens21"
trusted: "true"
physical_network: "sriov-b"
NeutronPhysicalDevMappings: "sriov-a:ens10,sriov-a:ens20,sriov-b:ens10f1,sriov-b:ens21"
[root@compute-1 home]# cat /sys/class/net/ens10/device/sriov_
sriov_drivers_autoprobe sriov_offset sriov_totalvfs
sriov_numvfs sriov_stride sriov_vf_device
[root@compute-1 home]# cat /sys/class/net/ens10/device/sriov_numvfs
16
[root@compute-1 home]# cat /sys/class/net/ens10/device/sriov_totalvfs
63
[root@compute-1 home]# lspci | grep Eth
09:00.0 Ethernet controller: Intel Corporation 82599 10 Gigabit Dual Port Backplane Connection (rev 01)
09:00.1 Ethernet controller: Intel Corporation 82599 10 Gigabit Dual Port Backplane Connection (rev 01)
09:10.0 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01)
09:10.1 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01)
09:10.2 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01)
... [root@compute-1 home]# ip link show ens10
4: ens10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 48:df:37:0f:19:f0 brd ff:ff:ff:ff:ff:ff
vf 0 MAC 2e:c7:47:d8:26:ea, spoof checking on, link-state auto, trust off, query_rss off
vf 1 MAC 06:13:09:1d:10:47, spoof checking on, link-state auto, trust off, query_rss off
vf 2 MAC fa:f9:c0:ea:17:79, spoof checking on, link-state auto, trust off, query_rss off
...
创建带 VF 的 VM
$ openstack network create --provider-physical-network physnet2 \
--provider-network-type vlan --provider-segment 1000 \
sriov-net $ openstack subnet create --network sriov-net \
--subnet-pool shared-default-subnetpool-v4 \
sriov-subnet
$ openstack port create --network $net_id --vnic-type direct \
sriov-port
+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| admin_state_up | UP |
| allowed_address_pairs | |
| binding_host_id | |
| binding_profile | trusted='true' |
| binding_vif_details | |
| binding_vif_type | unbound |
| binding_vnic_type | direct |
| created_at | 2020-06-14T03:10:13Z |
| data_plane_status | None |
| description | |
| device_id | |
| device_owner | |
| dns_assignment | None |
| dns_domain | None |
| dns_name | None |
| extra_dhcp_opts | |
| fixed_ips | ip_address='192.168.2.87', subnet_id='35b2c708-ab7b-4a22-8ae4-d6ecd5e8a5ed' |
| id | 815f26de-ba36-4c9b-b8e2-b052fdb7d28d |
| location | cloud='', project.domain_id=, project.domain_name='Default', project.id='b336e515d511487db8d359e8722c3d7c', project.name='admin', region_name='regionOne', zone= |
| mac_address | fa:16:3e:46:43:be |
| name | sriov-port |
| network_id | 23b60822-b4c7-4501-b509-e9deb92ae925 |
| port_security_enabled | True |
| project_id | b336e515d511487db8d359e8722c3d7c |
| propagate_uplink_status | None |
| qos_policy_id | None |
| resource_request | None |
| revision_number | 1 |
| security_group_ids | 1777fd33-ffd9-404d-b58e-0eb15e0b2c13 |
| status | DOWN |
| tags | |
| trunk_details | None |
| updated_at | 2020-06-14T03:10:13Z |
+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
[root@compute-1 home]# ip link show ens10 | grep fa:16:3e:8b:c6:51
vf 11 MAC fa:16:3e:8b:c6:51, spoof checking on, link-state auto, trust off, query_rss off
$ openstack server create --flavor m1.large --image ubuntu_18.04 \
--nic port-id=$port_id \
test-sriov
[root@controller-0 ~]# openstack server show demo | grep compute
| OS-EXT-SRV-ATTR:host | compute-1.localdomain
+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| admin_state_up | UP |
| allowed_address_pairs | |
| binding_host_id | compute-1.localdomain |
| binding_profile | pci_slot='0000:87:13.4', pci_vendor_info='8086:10ed', physical_network='sriov-a' |
| binding_vif_details | connectivity='l2', port_filter='False', vlan='0' |
| binding_vif_type | hw_veb |
| binding_vnic_type | direct |
| created_at | 2020-06-05T01:39:41Z |
| data_plane_status | None |
| description | |
| device_id | 322443ba-91da-472f-88d5-9e300797d457 |
| device_owner | compute:nova |
| dns_assignment | None |
| dns_domain | None |
| dns_name | None |
| extra_dhcp_opts | |
| fixed_ips | ip_address='192.168.2.7', subnet_id='35b2c708-ab7b-4a22-8ae4-d6ecd5e8a5ed' |
| id | cd35f343-774e-4a31-a353-328e2fbad125 |
| location | cloud='', project.domain_id=, project.domain_name='Default', project.id='b336e515d511487db8d359e8722c3d7c', project.name='admin', region_name='regionOne', zone= |
| mac_address | fa:16:3e:46:43:be |
| name | demo-sriov_a |
| network_id | 23b60822-b4c7-4501-b509-e9deb92ae925 |
| port_security_enabled | True |
| project_id | b336e515d511487db8d359e8722c3d7c |
| propagate_uplink_status | None |
| qos_policy_id | None |
| resource_request | None |
| revision_number | 6 |
| security_group_ids | 1777fd33-ffd9-404d-b58e-0eb15e0b2c13 |
| status | ACTIVE |
| tags | |
| trunk_details | None |
| updated_at | 2020-06-05T01:40:21Z |
+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
验证 SRIOV
[root@demo1:/home/robot]
# ip a | grep eth0
18: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
inet 10.57.0.3/27 brd 10.57.0.1 scope global f1om [root@demo:/home/robot]
# ip a | grep eth0
14: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
inet 10.57.0.2/27 brd 10.57.0.1 scope global f1om # 从 VM1 ping VM2,在 eth0 端口上抓包:
[root@demo:/home/robot]
# ping -I 10.57.0.2 -c 4 10.57.0.3
PING 10.57.0.3 (10.57.0.3) from 10.57.0.2 : 56(84) bytes of data.
64 bytes from 10.57.0.3: icmp_seq=1 ttl=64 time=0.383 ms
64 bytes from 10.57.0.3: icmp_seq=2 ttl=64 time=0.103 ms
64 bytes from 10.57.0.3: icmp_seq=3 ttl=64 time=0.274 ms
64 bytes from 10.57.0.3: icmp_seq=4 ttl=64 time=0.146 ms --- 10.57.0.3 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3089ms [root@demo1:/home/robot]
# tcpdump -i f1om host 10.57.0.2 -nn
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on f1om, link-type EN10MB (Ethernet), capture size 262144 bytes
22:51:48.904493 ARP, Request who-has 10.57.199.65 tell 10.57.0.2, length 42
22:51:49.146108 IP 10.57.0.3 > 10.57.0.2: ICMP echo reply, id 15, seq 1, length 64
22:51:50.187253 IP 10.57.0.3 > 10.57.0.2: ICMP echo reply, id 15, seq 2, length 64
22:51:51.211443 IP 10.57.0.3 > 10.57.0.2: ICMP echo reply, id 15, seq 3, length 64
22:51:52.235339 IP 10.57.0.3 > 10.57.0.2: ICMP echo reply, id 15, seq 4, length 64
22:51:54.453779 ARP, Request who-has 10.57.0.2 tell 10.57.0.3, length 28
22:51:54.453885 ARP, Reply 10.57.0.2 is-at fa:16:3e:46:43:be, length 42
22:51:54.475245 ARP, Request who-has 10.57.0.3 tell 10.57.0.2, length 42
22:51:54.475260 ARP, Reply 10.57.0.3 is-at fa:16:3e:d6:f0:b6, length 28
22:51:58.917049 ARP, Request who-has 10.57.199.65 tell 10.57.0.2, length 42
22:52:08.936950 ARP, Request who-has 10.57.199.65 tell 10.57.0.2, length 42
Trust mode
[root@compute-1 home]# ip link show ens10 | grep fa:16:3e:8b:c6:51
vf 11 MAC fa:16:3e:8b:c6:51, spoof checking on, link-state auto, trust off, query_rss off
$ ip link set ens10 vf 19 trust on
openstack port create --network sriov111 \
--vnic-type direct --binding-profile trusted=true \
sriov111_port_trusted
[root@controller-0 ~]# cat /sys/class/net/ens10/flags
0x1003
[root@controller-0 ~]# ifconfig ens10 promisc
[root@controller-0 ~]# cat /sys/class/net/ens10/flags
0x1103
设备共享分配:虚拟化和 SRIOV的更多相关文章
- KVM 介绍(4):I/O 设备直接分配和 SR-IOV [KVM PCI/PCIe Pass-Through SR-IOV]
学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...
- KVM(四) I/O 设备直接分配和 SR-IOV
(4):I/O 设备直接分配和 SR-IOV 本文将分析 PCI/PCIe 设备直接分配(Pass-through)和 SR-IOV, 以及三种 I/O 虚拟化方式的比较. 1. PCI/PCI-E ...
- 网络I/O虚拟化,SR-IOV技术
1.简介 网络I/O虚拟化是服务器虚拟化技术的重要组成部分,在服务器虚拟化技术领域,计算虚拟化(如CPU和内存虚拟化)已经日趋成熟,但是,网络I/O虚拟化技术的发展相对比较滞后.当前,主流的网络I/O ...
- 操作系统-I/O(2)设备的分配
作业执行前对设备提出申请时,指定某台具体的物理设备会让设备分配变得简单,但如果所指定设备出现故障,即便计算机系统中有同类设备也不能运行 设备独立性:用户通常不指定物理设备,而是指定逻辑设备,使得用户作 ...
- 【整理】--【字符设备】分配设备号register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()
(1) 分配设备编号,注册设备与注销设备的函数均在fs.h中声明,如下: extern int register_chrdev_region(dev_t,unsigned int,const char ...
- Ubuntu和Windows设备共享
http://blog.csdn.net/pipisorry/article/details/51725942 蓝牙设备如键盘.鼠标都可以. 装的双系统win7和Ubuntu,如果只使用一个系统,蓝牙 ...
- [图解tensorflow源码] [转载] tensorflow设备内存分配算法解析 (BFC算法)
转载自 http://weibo.com/p/1001603980563068394770 @ICT_吴林阳 tensorflow设备内存管理模块实现了一个best-fit with coales ...
- cgroup测试存储设备IOPS分配
1 使用:创建树并且attach子系统 首先要创建文件系统的挂载点作为树的根 mkdir /cgroup/name mkdir /cgroup/cpu_and_mem Mount这个挂载点到一个或者多 ...
- linux设备号分配
参考:http://blog.chinaunix.net/uid-24460251-id-2606762.htmlhttp://blog.csdn.net/zjjyliuweijie/article/ ...
- virtualbox之usb设备的分配
来源:http://www.cnblogs.com/fsjohnhuang/p/3987545.html 首先下载安装virtualbox的扩展包,因为box原本不支持usb设备.www.virtua ...
随机推荐
- [python]数据分析--数据清洗处理case1
数据预处理案例1 主要涉及pandas读取csv文件,缺失值和重复值处理,分组计数,字段类型转换 ,结果写入到Excel. 根据要求对CSV数据集进行处理要求如下: 保留数据关键信息:time.lat ...
- 若依集成mybatisplus实现mybatis增强
- IDEA创建MyBatis项目--实现简单的查操作
IDEA创建MyBatis项目--实现简单的查操作 1.创建一个maven工程,不使用模板 2.通过maven加载Mybatis依赖包 在pom文件中导入maven坐标 <dependencie ...
- TypeScript开篇
1.什么是TypeScript(TS)? Typescript 为 JS 带来了类型能力,如今已被越来越多的大型前端项目选用.Typescript 的出现大大改善了开发体验,增强了代码的可维护性和稳定 ...
- BFS(三)单词接龙 ⅱ
对应 126. 单词接龙 II 问题描述 按字典 wordList 完成从单词 beginWord 到单词 endWord 转化,一个表示此过程的 转换序列 是形式上像 beginWord -> ...
- LeetCode 二分查找篇(69、33、704)
69. x 的平方根 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: ...
- Java 给PPT中的表格设置分布行和分布列
在表格中可设置"分布行"或"分布列"将行高.列宽调整为协调统一的高度或宽度,是一种快速实现表格排版的方法之一.下面,通过Java后端程序代码介绍如何在PPT幻灯 ...
- 神经网络入门篇:激活函数的导数(Derivatives of activation functions)
激活函数的导数 在神经网络中使用反向传播的时候,真的需要计算激活函数的斜率或者导数.针对以下四种激活,求其导数如下: 1)sigmoid activation function 图1.8.1 其具体的 ...
- 十问Huawei Cloud Toolkit:开发插件如何提升云上开发效能
本文分享自华为云社区<[云享问答]第2期 十问Huawei Cloud Toolkit:开发插件如何提升云上开发效能>,作者:华为云社区精选. 众所周知,桌面集成开发环境(IDE)已经融入 ...
- 云小课 | 守护网络安全不是问题,iptables的四表五链为你开启“八卦阵”
摘要:担心网络基本安全?iptables八卦阵为您守护!本文带您一起了解iptables的相关知识. 网络世界就和现实世界一样,总是会有些不怀好意的"人"出现,扫扫你的端口啊,探测 ...