欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > 詳解基于KVM的SRIOV直通配置及性能測試

詳解基于KVM的SRIOV直通配置及性能測試

熱門標簽:高德地圖標注論壇 新科美甲店地圖標注 新邵電銷機器人企業 AI電銷機器人 源碼 蘭州ai電銷機器人招商 外呼系統打哪顯哪 湖北ai智能電銷機器人 江西外呼系統 北海市地圖標注app

SRIOV介紹、VF直通配置,以及包轉發率性能測試

目錄

  • 1. SRIOV介紹
  • 2. 環境說明
  • 3. 開啟SRIOV
  • 4. 生成VF
  • 5. VF直通
  • 6. 開啟irqbalance
  • 7. VM遷移
  • 8. 帶寬限速
  • 9. 安全
  • 10. 其他使用限制
  • 11. 性能測試
  • 12. windows虛擬機使用VF
  • 13. 運維命令
  • 14. 宿主屏蔽VF驅動
  • 附. 包轉發率測試方法
  • 附. 參考文檔

1. SRIOV介紹

▷ 傳統方式的瓶頸:qemu的網卡,傳統方式是使用tap網卡,橋接到宿主的bridge上,但性能很差,尤其是包轉發率很低,難以滿足對性能要求比較高的場景。性能差的主要原因是路徑太長,經過的內核設備太多,根本原因在于linux/unix內核本身就不是為高性能而設計的,linux/unix更適合做控制平面,而不是轉發平面。
▷ 解決思路:減少中間路徑,最簡單有效的方法就是bypass內核。SRIOV的作用就是bypass宿主內核。
▷ PF和VF:每個物理網卡(比如p1p1)就是一個PF,在開啟SRIOV后,每個PF可以生成固定數量的VF,每個VF都可以在宿主上作為一張網卡直接使用,或者直通到QEMU虛擬機里作為虛擬機里的網卡使用,這就實現了bypass宿主內核。

先給出性能測試的結論,SRIOV VF直通相比傳統tap+bridge方案,性能提升:

▷ 發包轉發率提高: 677%
▷ 收包轉發率提高: 171%

2. 環境說明

機型:Dell PowerEdge R620
網卡:Intel X520(82599ES)
宿主OS:CentOS 7
VM OS:CentOS 7

3. 開啟SRIOV

在BIOS里開啟SRIOV,如圖所示

注:即使BIOS里開啟全局SRIOV,網卡也依然可以當作普通網卡使用

需要在BIOS里開啟VT-d

grub配置iommu

iommu=pt intel_iommu=on

4. 生成VF

# 啟動網卡
ip link set p1p1 up

# 查看pf的pci編號
lshw -c network -businfo

# 查看網卡支持的vf數量
cat /sys/bus/pci/devices/0000:41:00.0/sriov_totalvfs

# 生成vf,建議加入開機啟動
echo 63 > /sys/bus/pci/devices/0000:41:00.0/sriov_numvfs

注意:若沒有屏蔽宿主的VF驅動,則在生成vf后還必須等待一會時間才能在宿主上看到所有命名完成的網卡(否則會看到一堆ethX網卡),vf數量越多需要等待時間越長,63個vf,差不多需要10秒

5. VF直通

如果qemu是通過libvirt管理的,有3種配置方法:

▷ 方法1(interface):在devices段落里加入

<interface type='hostdev' managed='yes'>
 <mac address='52:54:00:ad:ef:8d'/>
 <source>
 <address type='pci' domain='0x0000' bus='0x41' slot='0x10' function='0x0'/>
 </source>
 <vlan>
 <tag id='4010'/>
 </vlan>
</interface>

上面<source>中address的地址,可以根據“lshw -c network -businfo”來配置,比如

pci@0000:41:10.0 p1p1_0

▷ 方法2(hostdev):在devices段落里加入

<hostdev mode='subsystem' type='pci' managed='yes'>
 <source>
 <address domain='0x0000' bus='0x41' slot='0x10' function='0x0'/>
 </source>
</hostdev>

上面<source>中address的地址,也是根據“lshw -c network -businfo”來配置

▷ 方法3(net-pool)

為每個PF網卡定義一個net-pool,即分別編輯一個xml文件。這里僅展示一個PF,編輯sriov-int.xml

<network>
 <name>sriov-int</name>
 <forward mode='hostdev' managed='yes'>
 <pf dev='p1p1'/>
 </forward>
</network>

加入到libvirt net-pool、激活、并設置開機啟動

virsh net-define sriov-int.xml
virsh net-start sriov-int
virsh net-autostart sriov-int

雖然配置了net-autostart,但并不管用,因為物理機啟動時候,經常會在啟動生成vf(假設在rc.local里生成vf)之前就啟動libvirt,而這個net-pool(sriov-int)本應該在vf生成后才能啟動,因此建議在rc.local里增加如下內容來確保啟動

ip link set p1p2 up
echo 63 > /sys/bus/pci/devices/0000:41:00.0/sriov_numvfs
virsh net-start sriov-int

然后,在vm的xml里增加

<interface type='network'>
 <mac address='52:54:00:ad:ef:8d'/>
 <source network='sriov-int'/>
 <vlan>
 <tag id='4010'/>
 </vlan>
</interface>

3種方法如何選擇

▷ 方法1:功能多,可以配置mac和vlan
▷ 方法2:mac和vlan需要自己在宿主上敲ip命令設置
▷ 方法3:有2個問題

存在一個bug,當本宿主所有vm使用某個PF的VF總數超過VF上限后,不會報錯,也能啟動,但是可能會有異常,并且vm如果被destroy關機,那么對應的VF就會出問題,比如使用ip link set p1p1 vf 0 mac 00:00:00:00:00:00來做重置時候,會提示“RTNETLINK answers: Cannot allocate memory”,而且難以修復,即使修復,也不知道有沒有看不見的異常存在。

沒有辦法知道某個vm使用的是哪個vf,因此如果要對vf設置限速或者開關spoofchk時候,只能先在宿主上通過“ip link show dev p1p1 | grep MAC地址”方式來獲得vf號,然后才能設置限速等操作

綜上所述:使用方法3最便捷,但是存在bug,因此需要做好邏輯來防止vm使用vf總數超過上限的情況。

6. 開啟irqbalance

x520是2隊列,x710是4隊列,需要在vm里啟動中斷平衡服務(irqbalance),否則只會有一個cpu來處理數據包。

另外,這與宿主上vf的query_rss無關。

7. VM遷移

直通網卡屬于PCI設備,而libvirt和qemu卻不支持帶有非USB的PCI設備的vm做遷移,包括冷遷移和熱遷移。因此熱遷移無法實現。

冷遷移,有2種方案:

▷ detach掉vf網卡,然后使用libvirt做遷移,遷移過去后,再在新宿主上attach vf網卡
▷ undefine vm,然后在新宿主上重新渲染并define vm

注意:不能在vm關機時候用libvirt的遷移功能,有時候會導致虛擬機消失掉,包括原宿主和新宿主

8. 帶寬限速

只能限制出站帶寬,無法限制入站帶寬

ip link set p1p1 vf 0 max_tx_rate 100

表示出站帶寬限速100Mbps,不同網卡有差別:

▷ x520網卡最小限速11Mbps,最大限速10000Mbps,設為0表示不限速。若小于11或大于10000則會報錯
▷ x710網卡最小限速50Mbps,最大限速10000Mbps,設為0表示不限速。若小于50則自動設為50,若大于10000則會報錯

注意:vm關機后vf的帶寬限速不會復位

9. 安全

僅支持源mac過濾和網卡mac防篡改,不支持其他安全防護(防arp欺騙就無法實現)

源mac過濾

ip link set p1p1 vf 0 spoofchk on

表示vm里發出的包,如果源mac不是指定mac,那么數據包不允許通過。注意:vm關機后vf的spoofchk不會復位

網卡mac防篡改

▷ 在宿主上修改mac,vm里的mac不會跟著改;在vm里修改mac,在宿主上可以看到變化
▷ 如果在vm關機狀態下改了mac地址,那么當vm開機后會改為vm的mac,當vm又關機后,又回改為原先改的mac
▷ 只有在宿主上看到的當前vf的mac為全0,才能在vm里修改mac地址,即使vf的spoofchk為off。但有一種例外,若使用上面方法2來配置xml,雖然宿主上看到的vf的mac不為0,但vm里可以修改
▷ 當在宿主上設置了mac后,虛擬機里的mac就無法篡改了
▪ 方法1(interface)來配置xml,估計vm啟動時候就自動幫忙在宿主上設置了mac,所以就直接實現了防篡改功能
▪ 方法2(hostdev)來配置xml,需要在宿主上手動再設置一次mac地址才能實現防篡改

在宿主上手動修改mac方法(vm關機和開機情況下都可以改):

ip link set p1p1 vf 0 mac aa:bb:cc:dd:ee:ff

建議:

▷ 在vm啟動前對vf做一次重置
▷ 在vm undefine后對vf做一次重置

10. 其他使用限制

▷ 直通到vm里的vf網卡里無法橋接到vm里的linux bridge,這也導致ebtables無法使用,iptables可以使用
▷ 直通到vm里的vf網卡可以加入ovs橋接
▷ 一個vm最多只能支持32個vf,超過數量會報錯

11. 性能測試

測試方法:

▷ 多臺vm同時發包,一臺vm收包,分別觀察發包性能和收包性能
▷ 發包vm在同一臺宿主上,收包vm在另一臺宿主上
▷ 測試工具:modprobe pktgen
▷ 測試包大小: udp包,size為64 bytes

配置:

▷ vm配置均為4核8G
▷ 物理網卡均為x520(vf隊列默認為2)
▷ 宿主和vm均開啟irqbalance、均關閉numad
▷ 不配置cpu綁定、不配置numa綁定
▷ 開啟大頁

測試結果:

測試結論:

使用SR-IOV+VF直通方式可以明顯提升包轉發率,1對1的測試結果看到kernel態發包可以達到3.5Mpps,收包可以達到1.9Mpps

▷ 發包比vxlan提高: 1196%,比vlan提高: 677%。此結果參考1對1(1個發包vm,1個收包vm)
▷ 收包比vxlan提高: 363%,比vlan提高: 171%。此結果參考3對1(3個發包vm,1個收包vm)

說明:

▷ kernel態單核數據包(64B)處理能力為2Mpps
▷ 2Mpps是因為kernel態瓶頸是2Mpps,如果通過dpdk走用戶態,則可以大于2M,原因:收包端要將數據包中斷平衡到不同的cpu上,方法:可以通過多隊列方式,把每個隊列分配到單獨cpu上(irqbalance會自動均衡),然后source ip不一樣,就會對應到不同隊列,也就是不同的中斷上。即1個VF,2個隊列,VM有至少2核,那么當符合負載均衡條件(mac、ip不同),則理論上最大可以達到4Mpps

更多測試結果:

以下測試使用的packet大小為64B

▷ kernel態,3層轉發性能:發包器使用不同的source ip

▪ BCM57800:2Mpps
▪ Intel X520:10Mpps
▪ Intel X710:12Mpps

▷ kernel態,2層轉發性能:發包器使用不同的source mac

▪ BCM57800:2Mpps
▪ Intel X520:7.3Mpps
▪ Intel X710:7.8Mpps

▷ kernel態下vxlan封裝能力

▪ vxlan內層使用不同的source ip發包
▪ 收包在:1.1-1.2Mpps

▷ dpdk用戶態,2層轉發性能:發包器使用不同的source ip

▪ BCM57800:不支持
▪ Intel X520:14.8Mpps
▪ Intel X710:14.8Mpps

▷ SR-IOV模式

▪ X520總量11.2Mpps,每vm為11.2Mpps/vm總數(即VF數)

總結:

▷ kernel態下的中斷平衡的依據因素:2層依據source mac,3層依據source ip
▷ kernel態下使用傳統中斷模式的單核轉發能力極限2Mpps

注意:

▷ kernel態下,利用多隊列RSS中斷平衡提升吞吐率,會導致cpu非常高
▷ 用戶態下即使source mac或source ip固定,吞吐率基本接近限速14.8Mpps
▷ vxlan不能利用多核來提升吞吐,主要原因為外層source ip不夠多

12. windows虛擬機使用VF

到網卡官網下載對應驅動并安裝,經測試,win2012默認就有82599(x520)驅動,但版本舊

13. 運維命令

# 查看網卡支持的vf數量
cat /sys/bus/pci/devices/0000:41:00.0/sriov_totalvfs

# 宿主屏蔽VF驅動后查看vf和pf的對應
https://github.com/intel/SDN-NFV-Hands-on-Samples/blob/master/SR-IOV_Network_Virtual_Functions_in_KVM/listvfs_by_pf.sh
載下來后執行./listvfs_by_pf.sh即可

# 宿主屏蔽VF后查看哪些VF正在被使用
yum install dpdk-tools
dpdk-devbind --status

# 查看網卡對應哪個socket
lstopo-no-graphics

# lspci查看網卡信息
lspci -Dvmm|grep -B 1 -A 4 Ethernet

# 宿主上查看具體VF流量(僅支持x520,x710查不到)
ethtool -S p1p1 | grep VF

14. 宿主屏蔽VF驅動

echo "blacklist ixgbevf" >> /etc/modprobe.d/blacklist.conf

表示當物理機啟動時候,默認不加載ixgbevf驅動,但是如果手動modprobe ixgbevf,則也會加載驅動。

如果當前已經加載了ixgbevf,想卸載,則需要如下步驟

echo 0 > /sys/bus/pci/devices/0000:41:00.0/sriov_numvfs
rmmod ixgbevf
echo 63 > /sys/bus/pci/devices/0000:41:00.0/sriov_numvfs

附. 包轉發率測試方法

modprobe pktgen:發包通過pktgen來發,收包通過sar -n DEV來看,發的是udp包

#!/bin/bash

NIC="eth1"
DST_IP="192.168.1.2"
DST_MAC="52:54:00:43:99:65"

modprobe pktgen

pg() {
 echo inject > $PGDEV
 cat $PGDEV
}

pgset() {
 local result
 echo $1 > $PGDEV

 result=`cat $PGDEV | fgrep "Result: OK:"`
 if [ "$result" = "" ]; then
   cat $PGDEV | fgrep Result:
 fi
}
# Config Start Here -----------------------------------------------------------

# thread config
# Each CPU has own thread. Two CPU exammple. We add ens7, eth2 respectivly.

PGDEV=/proc/net/pktgen/kpktgend_0
echo "Removing all devices"
pgset "rem_device_all"
echo "Adding ${NIC}"
pgset "add_device ${NIC}"

# device config
# delay 0 means maximum speed.

CLONE_SKB="clone_skb 1000000"
# NIC adds 4 bytes CRC
PKT_SIZE="pkt_size 64"

# COUNT 0 means forever
COUNT="count 0"
DELAY="delay 0"

PGDEV=/proc/net/pktgen/${NIC}
echo "Configuring $PGDEV"
pgset "$COUNT"
pgset "$CLONE_SKB"
pgset "$PKT_SIZE"
pgset "$DELAY"
pgset "dst ${DST_IP}"
pgset "dst_mac ${DST_MAC}"

# Time to run
PGDEV=/proc/net/pktgen/pgctrl

echo "Running... ctrl^C to stop"
pgset "start"
echo "Done"

# Result can be vieved in /proc/net/pktgen/eth[3,4]

▷ 將腳本開頭的eth1改為發包對應的網卡
▷ 將腳本開頭的192.168.1.2改為目標ip
▷ 將腳本開頭的52:54:00:43:99:65改為目標mac

pktgen-dpdk

# 固定ip固定mac
set 0 dst ip 192.168.10.240
set 0 src ip 192.168.10.245/24
set 0 dst mac c8:1f:66:d7:58:ba
set 0 src mac a0:36:9f:ec:4a:28

# 可變source ip可變source mac
stop 0
range 0 src ip 192.168.0.1 192.168.0.1 192.168.200.200 0.0.0.1
range 0 dst ip 10.1.1.241 10.1.1.241 10.1.1.241 0.0.0.0
range 0 dst mac c8:1f:66:d7:58:ba c8:1f:66:d7:58:ba c8:1f:66:d7:58:ba 00:00:00:00:00:00
range 0 src mac a0:36:9f:ec:4a:28 a0:36:9f:ec:4a:28 a0:36:9f:ec:ff:ff 00:00:00:00:01:01
range 0 src port 100 100 65530 1
range 0 dst port 100 100 65530 1
range 0 size 64 64 64 0
enable 0 range
enable 0 latency
start 0

# 按50%的速率發包
set 0 rate 50

附. 參考文檔

openstack關于sriov的限制
https://docs.openstack.org/mitaka/networking-guide/config-sriov.html

遷移
https://wenku.baidu.com/view/d949db67998fcc22bcd10dfd.html
https://www.chenyudong.com/archives/live-migrate-with-pci-pass-through-fail-with-libvirt-and-qemu.html

sriov配置
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/virtualization_host_configuration_and_guest_installation_guide/sect-virtualization_host_configuration_and_guest_installation_guide-sr_iov-how_sr_iov_libvirt_works

線速
http://netoptimizer.blogspot.tw/2014/05/the-calculations-10gbits-wirespeed.html

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

標簽:池州 大理 黃石 黔東 自貢 阿克蘇 南陽 海南

巨人網絡通訊聲明:本文標題《詳解基于KVM的SRIOV直通配置及性能測試》,本文關鍵詞  詳解,基于,KVM,的,SRIOV,直通,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解基于KVM的SRIOV直通配置及性能測試》相關的同類信息!
  • 本頁收集關于詳解基于KVM的SRIOV直通配置及性能測試的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    国产在线一区观看| 91蜜桃免费观看视频| 在线观看日韩精品视频| 欧美日韩激情一区二区| 综合久久久久综合| 成人深夜福利app| 欧美性x x x| 欧美激情自拍偷拍| 国产精品白丝jk黑袜喷水| 成人av资源在线观看| 中日韩一级黄色片| 中文在线一区二区| 成人免费毛片高清视频| 精品国产欧美日韩不卡在线观看| 欧美激情一二三区| 成人自拍视频在线观看| 久热这里有精品| 亚洲欧美日本韩国| 自拍偷拍激情视频| 欧美肥妇bbw| 秋霞电影网一区二区| 精品成人av一区二区三区| 久久一留热品黄| 国产乱码一区二区三区| 中文字幕在线观看2018| 亚洲精品你懂的| 国产女主播在线播放| 7777精品伊人久久久大香线蕉 | 亚洲欧美在线视频观看| 福利一区二区在线| 色婷婷综合久久久中文一区二区| 亚洲人午夜精品天堂一二香蕉| 91免费视频观看| 在线不卡免费欧美| 久久9热精品视频| 五月天色婷婷丁香| 亚洲女人小视频在线观看| 人妻互换一二三区激情视频| 日韩三级电影网址| 国产九九视频一区二区三区| 草视频在线观看| 亚洲第四色夜色| 成都免费高清电影| 国产精品免费视频网站| gogo亚洲国模私拍人体| 日韩久久精品一区| 国产a区久久久| 欧美日本韩国一区二区三区视频| 免费成人在线视频观看| 日本爱爱小视频| 亚洲伊人伊色伊影伊综合网| 中国美女乱淫免费看视频| 中文字幕国产一区二区| 国产av一区二区三区传媒| 久久一区二区三区四区| 91色视频在线| 欧美精品一区二区蜜臀亚洲| 成人av高清在线| 日韩午夜激情av| 成人国产精品免费观看| 日韩一级黄色大片| 从欧美一区二区三区| 91精品国产色综合久久| 国产白丝网站精品污在线入口| 欧美日韩日日骚| 国产一区二区三区四区五区美女| 欧美在线免费观看亚洲| 欧美日韩国产精选| 久国产精品韩国三级视频| 色偷偷久久一区二区三区| 麻豆视频观看网址久久| 欧美一a一片一级一片| 青青草伊人久久| 91久久免费观看| 国产在线不卡一区| 88在线观看91蜜桃国自产| 国产99久久久国产精品潘金| 欧美一级在线免费| 成人app网站| 久久久久青草大香线综合精品| 中国男女全黄大片| 国产欧美精品一区二区色综合| 国产精品麻豆入口| 1024国产精品| 国产传媒在线看| 日本不卡视频在线| 欧美性一区二区| 粉嫩一区二区三区性色av| 精品三级在线看| 人妻互换一二三区激情视频| **欧美大码日韩| 国内精品卡一卡二卡三| 午夜精品福利一区二区三区蜜桃| 国产av 一区二区三区| 精品在线播放免费| 欧美一区二区福利视频| 99热这里只有精品2| 国产精品久久网站| 亚洲午夜精品久久久久久高潮| 日韩精品一区第一页| 欧美视频日韩视频在线观看| 成人看片黄a免费看在线| 久久一区二区视频| 99久久久无码国产精品性 | 色综合天天综合网天天狠天天| 精品午夜一区二区三区在线观看| 欧美一区二区三区啪啪| 秘密基地免费观看完整版中文| 亚洲柠檬福利资源导航| 国产色无码精品视频国产| 国内精品伊人久久久久av一坑| 日韩欧美中文字幕制服| 国产xxxx视频| 亚洲福利视频导航| 欧美日精品一区视频| 91免费观看视频| 亚洲欧美国产毛片在线| 色先锋aa成人| 99久久精品久久久久久清纯| 国产精品久久久爽爽爽麻豆色哟哟| 国产aaaaaaaaa| 国产综合色视频| 久久婷婷一区二区三区| 欧洲av一区二区三区| 免费人成在线不卡| 天堂网avav| 成人一区二区三区视频| 国产精品萝li| 日日噜噜夜夜狠狠久久波多野| 国产成人一区在线| 国产精品色婷婷| 欧美又粗又大又长| av电影天堂一区二区在线观看| 国产精品成人免费| 日本高清不卡aⅴ免费网站| 99久久婷婷国产综合精品| 欧美aaa级片| 国产一区二区三区香蕉| 中文字幕不卡在线观看| 亚洲怡红院在线观看| 波多野结衣亚洲| 亚洲三级电影全部在线观看高清| 在线亚洲一区二区| 亚洲AV成人精品| 视频一区视频二区在线观看| 日韩欧美久久久| 日韩女同一区二区三区| 国产精品影音先锋| 中文字幕一区二区三区蜜月| 在线观看国产91| 在线中文字日产幕| 热久久国产精品| 国产视频视频一区| 少妇久久久久久被弄高潮| 色欲无码人妻久久精品| 婷婷成人激情在线网| 精品国产欧美一区二区| 亚洲一区电影在线观看| 99国产精品视频免费观看| 亚洲一线二线三线久久久| 日韩三级在线免费观看| 337人体粉嫩噜噜噜| jiyouzz国产精品久久| 亚洲一区欧美一区| 欧美成人一区二区三区在线观看| 久久久久久久久福利| 99久久婷婷国产| 日韩综合小视频| 国产日韩精品久久久| 91官网在线免费观看| 中文字幕日韩三级片| 国产精品99久| 亚洲综合在线第一页| 精品日韩在线观看| 日韩女优一区二区| 亚洲色图14p| 国产成人免费在线观看| 亚洲午夜视频在线| 久久久国际精品| 欧美亚洲自拍偷拍| 亚洲黄色小说视频| 97精品视频在线观看自产线路二 | 一本一道久久a久久精品| 性活交片大全免费看| 国产一区二区视频在线| 夜夜亚洲天天久久| 精品久久久久久亚洲综合网| 色哟哟亚洲精品| 亚洲欧美色图视频| 成人av网址在线| 麻豆精品久久精品色综合| 亚洲欧美日韩中文字幕一区二区三区 | 亚洲激情自拍偷拍| 精品成人一区二区三区| 欧美性受极品xxxx喷水| 永久免费观看片现看| 久久性爱视频网站| 成人avav在线| 国产一区美女在线| 视频一区二区三区入口|