0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SR-IOV研究:一個(gè)簡(jiǎn)單的測(cè)試環(huán)境

冬至子 ? 來源:布魯斯的讀書圈 ? 作者:BruceL ? 2023-06-14 11:34 ? 次閱讀

簡(jiǎn)單地說,SR-IOV是一種讓一臺(tái)主機(jī)上的多臺(tái)虛擬機(jī)和主機(jī)系統(tǒng)本身合用同一張物理網(wǎng)卡的技術(shù),每臺(tái)虛擬機(jī)都認(rèn)為自己擁有一張獨(dú)立的網(wǎng)卡(即一個(gè)VF),而其實(shí)它們都被騙了~~

由于手上只有一臺(tái)Linux主機(jī)和一張Mellanox ConnectX-4 LX 10G網(wǎng)卡(雙物理網(wǎng)口),為了研究SR-IOV,我只能搭建了如下圖所示的極簡(jiǎn)測(cè)試環(huán)境。這塊網(wǎng)卡支持RoCE(RDMA),但在這里只使用它的以太網(wǎng)功能。

圖片

對(duì)于宿主機(jī)的操作系統(tǒng)來說,這塊網(wǎng)卡的兩個(gè)物理網(wǎng)口可以看作兩個(gè)獨(dú)立的網(wǎng)卡/網(wǎng)絡(luò)接口。如果運(yùn)行ifconfig,可以看到系統(tǒng)中存在enp6s0f0np0和enp6s0f1np1兩個(gè)網(wǎng)口。

之所以會(huì)這樣,是因?yàn)?a href="http://www.ttokpm.com/v/tag/1751/" target="_blank">硬件向系統(tǒng)展現(xiàn)了兩個(gè)PCIe設(shè)備,準(zhǔn)確地說是兩個(gè)功能號(hào)。

比如用下面這個(gè)命令,可以看到這兩個(gè)PCIe設(shè)備的"bus:slot.func",即"總線號(hào):設(shè)備號(hào):功能號(hào)"。

$ lspci -D | grep Mellanox

0000:06:00.0 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx]

0000:06:00.1 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx]

一旦網(wǎng)卡被插在PCIe插槽上,它的bus和slot就確定了,并且是唯一的。但硬件只要提供兩個(gè)獨(dú)立的func,就會(huì)被Linux檢測(cè)為兩個(gè)獨(dú)立的PCIe設(shè)備,從而對(duì)應(yīng)兩個(gè)獨(dú)立的網(wǎng)口。

準(zhǔn)備好上述硬件連接和操作系統(tǒng)(Ubuntu 20.04.6)后,我們需要做如下幾件事才能使用SR-IOV功能。此處主要的參考文獻(xiàn)為《HOWTO CONFIGURE SR-IOV FOR CONNECTX-4/CONNECTX-5/CONNECTX-6 WITH KVM (ETHERNET)》。本文并非操作手冊(cè),所以一些網(wǎng)上可以很容易搜到的東西我就不詳細(xì)說明了。

  1. 在BIOS中打開SR-IOV功能,一般位于PCI配置中。
  2. 在Linux啟動(dòng)命令行中添加“intel_iommu=on iommu=pt”(對(duì)于Intel CPU)。
  3. 在Ubuntu中安裝虛擬機(jī)(只安裝virt-manager就幾乎把所有組件都安裝了)。
  4. 在宿主機(jī)安裝Mellanox網(wǎng)卡驅(qū)動(dòng)。

安裝文件為MLNX_OFED_LINUX-5.8-2.0.3.0-ubuntu20.04-x86_64.tgz,需要從NVIDIA網(wǎng)站下載。

如果以后要看代碼還需要下載MLNX_OFED_SRC-debian-5.8-2.0.3.0.tgz 。

  1. 設(shè)置網(wǎng)卡的固件,使其支持SR-IOV。比如運(yùn)行如下命令,將網(wǎng)卡最大支持的VF數(shù)量設(shè)置為8個(gè)。

*sudo mlxconfig -d /dev/mst/mt4117_pciconf0 set SRIOV_EN=1 NUM_OF_VFS=8*

  1. 設(shè)置MLNX_OFED驅(qū)動(dòng)(最終也會(huì)設(shè)置硬件),打開SR-IOV功能。

比如運(yùn)行如下命令,使能4個(gè)VF。

echo 4 > /sys/class/net/enp6s0f1np1/device/sriov_numvfs

此時(shí)系統(tǒng)中會(huì)呈現(xiàn)4個(gè)VFs(每個(gè)都是一個(gè)PCIe設(shè)備),分別對(duì)應(yīng)下面的后四行,即0000:06:00.2(后三個(gè)數(shù)就是"bus:slot.func")、0000:06:00.3、0000:06:00.4和0000:06:00.5。

$ lspci -D | grep Mellanox

0000:06:00.0 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx]

0000:06:00.1 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx]

0000:06:01.2 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx Virtual Function]

0000:06:01.3 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx Virtual Function]

0000:06:01.4 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx Virtual Function]

0000:06:01.5 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx Virtual Function]

  1. 把第一個(gè)VF添加到虛擬機(jī)中,虛擬機(jī)會(huì)把它認(rèn)做一個(gè)獨(dú)立的PCIe設(shè)備。

這里給一個(gè)配置虛擬機(jī)的參考圖。

圖片

  1. 在虛擬機(jī)中安裝MLNX_OFED驅(qū)動(dòng)。

此時(shí)我們會(huì)得到如下圖所示的測(cè)試環(huán)境。

圖片

如果我們?cè)谔摂M機(jī)里把enp6s0的IP設(shè)置為192.168.8.1。

然后在宿主機(jī)里把兩個(gè)原有的非VF的系統(tǒng)網(wǎng)口的IP設(shè)置為192.168.8.2(enp6s0f0np0)和192.168.8.3(enp6s0f1np1),并把VF3(在宿主機(jī)中)對(duì)應(yīng)的網(wǎng)口enp6s0f1v3的IP設(shè)置為192.168.8.4。

在虛擬機(jī)中是可以ping通上述后三個(gè)IP的。

當(dāng)然在這三種情況下數(shù)據(jù)走的物理通路是不同的。

按照我淺薄的認(rèn)識(shí),我認(rèn)為從虛擬機(jī)中ping后面三個(gè)IP時(shí),應(yīng)該對(duì)應(yīng)下圖中三條彩色虛線所示的數(shù)據(jù)通路。

圖片

對(duì)于不同的物理網(wǎng)口,數(shù)據(jù)肯定會(huì)通過光纖。

對(duì)于屬于相同物理網(wǎng)口的PF(對(duì)應(yīng)原系統(tǒng)網(wǎng)口)和VFs,我認(rèn)為網(wǎng)卡硬件中存在一個(gè)內(nèi)部的交換機(jī)機(jī)制,使得所有PF和VFs之間都可以轉(zhuǎn)發(fā)數(shù)據(jù)包。之所以這樣想,是由于做了如下測(cè)試:

①在虛擬機(jī)中連續(xù)地ping 192.168.8.5,這是一個(gè)并不存在的地址。

②同時(shí)在宿主機(jī)上依次用“tcpdump -i enpXXXX”命令監(jiān)視每個(gè)網(wǎng)口,包括未配置IP的VF。

可以發(fā)現(xiàn)每個(gè)網(wǎng)口都會(huì)持續(xù)收到ARP報(bào)文。如果數(shù)據(jù)沒有經(jīng)過硬件而是在操作系統(tǒng)內(nèi)部直接處理掉了,那這么做是完全沒必要的,因?yàn)橄到y(tǒng)知道每個(gè)網(wǎng)口的IP。并且ifconfig命令輸出中也會(huì)顯示每個(gè)網(wǎng)口的RX計(jì)數(shù)在持續(xù)增加,這種計(jì)數(shù)一般在驅(qū)動(dòng)中實(shí)現(xiàn),而且只有驅(qū)動(dòng)真正從硬件收到包時(shí)才會(huì)增加計(jì)數(shù)。

在今后閱讀相關(guān)驅(qū)動(dòng)代碼時(shí)我還會(huì)關(guān)注這一點(diǎn)。歡迎高手來拍磚。

本文只是搭建了一個(gè)簡(jiǎn)單的測(cè)試環(huán)境,嘗試使用SR-IOV功能。接下來我會(huì)研究Linux系統(tǒng)和Mellanox驅(qū)動(dòng)中做了哪些事情支持SR-IOV功能,以及猜測(cè)需要硬件做哪些工作。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 以太網(wǎng)
    +關(guān)注

    關(guān)注

    40

    文章

    5288

    瀏覽量

    169688
  • Linux系統(tǒng)
    +關(guān)注

    關(guān)注

    4

    文章

    587

    瀏覽量

    27183
  • 虛擬機(jī)
    +關(guān)注

    關(guān)注

    1

    文章

    888

    瀏覽量

    27815
  • RDMA
    +關(guān)注

    關(guān)注

    0

    文章

    74

    瀏覽量

    8896
  • PCIe接口
    +關(guān)注

    關(guān)注

    0

    文章

    116

    瀏覽量

    9627
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    GPU虛擬化在哪里發(fā)生?

    GPU虛擬化在哪里發(fā)生?它是否出現(xiàn)在GRID卡中,然后將vGPU呈現(xiàn)給管理程序然后呈現(xiàn)給客戶?或者,GPU的虛擬化和調(diào)度是否真的發(fā)生在管理程序上安裝的GRID管理器軟件?是否使用了SR-IOV?我
    發(fā)表于 09-28 16:45

    正在使用SR-IOV功能,請(qǐng)問能不能再VF端口中啟動(dòng)MAC學(xué)習(xí)?

    我在我的PC中使用X710進(jìn)行自定義應(yīng)用程序。我正在使用SR-IOV功能。我已為每個(gè)VF分配了MAC地址。有沒有辦法在VF端口啟用MAC學(xué)習(xí)?我的應(yīng)用程序?qū)⑹褂蒙傻膍ac地址與對(duì)等方進(jìn)行通信
    發(fā)表于 10-31 19:22

    基于PCI Express SR-IOV的大量虛擬化功能

    當(dāng)今數(shù)據(jù)中心用的PCI Express最強(qiáng)大的個(gè)功能是I/O虛擬化。I/O虛擬化讓虛擬機(jī)直接訪問I/O硬件設(shè)備,提高了企業(yè)級(jí)服務(wù)器的性能。單根I/O虛擬化(SR-IOV)技術(shù)規(guī)范拉動(dòng)了市場(chǎng)
    發(fā)表于 07-17 06:18

    如何將Virtex 7 PCI Express Gen3集成模塊遷移到Kintex 7

    親愛的大家,我目前正在開發(fā)個(gè)Vivado 2013.4項(xiàng)目,我需要利用物理和虛擬功能以及SR-IOV。我作為個(gè)例子
    發(fā)表于 07-16 10:12

    Intel圖形SR-IOV增強(qiáng)工具箱使用指南

    的標(biāo)準(zhǔn)方法。每個(gè)虛擬功能都被直接分配給個(gè)虛擬機(jī),從而實(shí)現(xiàn)虛擬機(jī)接近本機(jī)的性能。 英特爾圖形公司SR-IOV的主要好處是: 種標(biāo)準(zhǔn)方法,即與虛擬機(jī)器共享有形的GPU,從而允許在虛擬
    發(fā)表于 08-02 16:07

    PXIe萬兆網(wǎng)卡資料 雙路

    (DCB)支持128個(gè)虛擬機(jī)(SR-IOV)支持邊帶管理協(xié)議,支持IPSEC分載,支持ISCSI加速,支持RSS/TX隊(duì)列,支持VMDQ、SR-IOV接口標(biāo)準(zhǔn)支持PCI-E x8,支持PCIE3.0
    發(fā)表于 08-22 11:53

    SR-IOV創(chuàng)建虛擬函數(shù)

    This video demonstrates how to create virtual functions using SR-IOV mode.
    的頭像 發(fā)表于 10-18 05:42 ?2925次閱讀

    SR-IOV在云計(jì)算數(shù)據(jù)中心的應(yīng)用方法、價(jià)值和前景

    傳統(tǒng)虛擬化系統(tǒng)中大量的資源和時(shí)間損耗在Hypervisor(或者VMM)軟件層面,PCIe設(shè)備的性能優(yōu)勢(shì)因此無法徹底發(fā)揮。而SR-IOV的價(jià)值在于消除這軟件瓶頸,助力多個(gè)虛擬機(jī)實(shí)現(xiàn)物理資源共享,同時(shí)使得虛擬機(jī)可以使用到NVMe SSD的高性能。
    的頭像 發(fā)表于 04-19 17:16 ?5149次閱讀
    <b class='flag-5'>SR-IOV</b>在云計(jì)算數(shù)據(jù)中心的應(yīng)用方法、價(jià)值和前景

    如何使用STM32 MDK開發(fā)環(huán)境建立個(gè)簡(jiǎn)單工程

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何使用STM32 MDK開發(fā)環(huán)境建立個(gè)簡(jiǎn)單工程。
    發(fā)表于 10-18 17:11 ?7次下載
    如何使用STM32 MDK開發(fā)<b class='flag-5'>環(huán)境</b>建立<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>最<b class='flag-5'>簡(jiǎn)單</b>工程

    Switchtec PAX網(wǎng)絡(luò)互聯(lián)Gen 4 PCIe交換機(jī)系列現(xiàn)已投產(chǎn)

    Microchip的Switchtec PAX PCIe系列交換機(jī)為需要多主機(jī)共享訪問單根I/O虛擬化(SR-IOV)、非易失性存儲(chǔ)器(NVMe)、固態(tài)硬盤(SSD)、圖形處理器(GPU)和其他PCIe終端的系統(tǒng)提供了個(gè)交鑰匙
    的頭像 發(fā)表于 06-24 16:24 ?2562次閱讀

    什么是SR-IOV呢?SR-IOV技術(shù)的優(yōu)缺點(diǎn)及應(yīng)用場(chǎng)景

    SR-IOV全稱為Single Root I/O Virtualization(單根輸入/輸出虛擬化),是種硬件加速的虛擬化技術(shù),它允許多個(gè)虛擬機(jī)同時(shí)訪問物理設(shè)備,從而提高虛擬機(jī)的性能和可靠性。
    的頭像 發(fā)表于 06-06 14:58 ?2.7w次閱讀

    慧榮科技于FMS 2023展出企業(yè)級(jí)和即將上市的消費(fèi)級(jí)PCIe Gen5 SSD主控,以及全球首款支持SR-IOV的車用級(jí)SSD主控

    Memory Summit 2023)展示專為服務(wù)器和數(shù)據(jù)中心打造的企業(yè)級(jí)PCIe Gen5 SSD開發(fā)平臺(tái)和全球首款支持SR-IOV(Single Root-IO Virtualization
    發(fā)表于 08-09 17:36 ?467次閱讀
    慧榮科技于FMS 2023展出企業(yè)級(jí)和即將上市的消費(fèi)級(jí)PCIe Gen5 SSD主控,以及全球首款支持<b class='flag-5'>SR-IOV</b>的車用級(jí)SSD主控

    憶聯(lián)多項(xiàng)存儲(chǔ)產(chǎn)品通過Intel VROC技術(shù)認(rèn)證

    UH711a面向數(shù)據(jù)中心應(yīng)用場(chǎng)景而開發(fā),針對(duì)數(shù)據(jù)中心級(jí)業(yè)務(wù)場(chǎng)景及負(fù)載Workload IO模型,UH711a具有全面的性能優(yōu)化能力,結(jié)合One Time Read、智能多流、SR-IOV等多種特性,可為數(shù)據(jù)中心提供更高性價(jià)比的存儲(chǔ)解決方案。
    發(fā)表于 01-09 09:40 ?380次閱讀
    憶聯(lián)多項(xiàng)存儲(chǔ)產(chǎn)品通過Intel VROC技術(shù)認(rèn)證

    如何將HC-SR04連接到Arduino并編寫個(gè)簡(jiǎn)單的程序來測(cè)量距離

    種流行的Arduino超聲波傳感器是HC-SR04。它廣泛用于非接觸式距離測(cè)量,通常用于機(jī)器人和自動(dòng)化項(xiàng)目。本指南將向您展示如何將HC-SR04連接到Arduino并編寫
    的頭像 發(fā)表于 02-11 10:17 ?1851次閱讀
    如何將HC-<b class='flag-5'>SR</b>04連接到Arduino并編寫<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>簡(jiǎn)單</b>的程序來測(cè)量距離

    如何設(shè)計(jì)個(gè)簡(jiǎn)單且高度集成的電池測(cè)試系統(tǒng)

    電子發(fā)燒友網(wǎng)站提供《如何設(shè)計(jì)個(gè)簡(jiǎn)單且高度集成的電池測(cè)試系統(tǒng).pdf》資料免費(fèi)下載
    發(fā)表于 09-18 14:53 ?0次下載
    如何設(shè)計(jì)<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>簡(jiǎn)單</b>且高度集成的電池<b class='flag-5'>測(cè)試</b>系統(tǒng)