为什么 软路由/nas 的网卡更多选择 PCI-E 直通,而不是 SR-IOV - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
echo1937
V2EX    服务器

为什么 软路由/nas 的网卡更多选择 PCI-E 直通,而不是 SR-IOV

  •  
  •   echo1937 2024-01-07 15:38:08 +08:00 4390 次点击
    这是一个创建于 644 天前的主题,其中的信息可能已经有所发或是发生改变。

    常用的 I/O 虚拟化有三种形式:

    • 虚拟网卡:通过软件模拟物理网卡的功能,使得虚拟机可以与外部网络互联。
    • PCI 网卡直通:将主机上的网卡作为 PCI 直通网卡透传给虚拟机使用,该网卡由这台虚拟机独占。
    • SR-IOV 直通:将一个支持 SR-IOV 的物理网卡虚拟化出多个 VF (Virtual Function),作为 SR-IOV 直通网卡直接挂载给虚拟机使用,可实现多个虚拟机共享同一个物理网卡的通信能力。

    部分背景信息: 超融合虚拟化下的网络 I/O 虚拟化技术

    个人的需求其实很简单,就是把全部的虚拟机都桥接到宿主机的物理网络下,这样所有的设备都在拨号路由器下属的同一子网内,省去了很多的麻烦。

    实践方面遇到了一些问题:

    • 虚拟网卡:性能很差,无论是 vmware workstation 那种 vmnet0 的直通,还是 hyper-v 建立外部交换机进行桥接(无论是宿主机通过网桥,还是虚拟机通过外部交换机,千兆的公网 1000mbps 下行都只能跑 100 多 mbps),性能很难让人满意
    • PCIE 网卡直通,这是网络上比较常用的方法,各路 PVE ,ikuai ,黑群晖用这个方法是最多的,但是也有缺陷,PCIE x4 槽也就能出 4 口,而且口子还必须连接到上行交换机,网口和网卡很多。
    • SR-IOV 直通,这个资料比较少,大致就是一个物理网卡可以虚拟化为多个 VF ,然后再将 VF 直通给虚拟机,无论多少个 VF ,只要插一根网线就可以了,所有这些 VF 共享单个物理网卡的带宽。

    在我看来,SR-IOV 显然是技术上最佳的方案,比如说单个万兆口可以分为 10 个 VF ,10 个 VF 单独都是万兆,10 个 VF 共享了万兆的总带宽,线路管理和扩展上限都很方便。似乎困难在于需要主板、网卡和系统的支持。

    不知道个人对相关内容的认知是否正确,为什么现在类似畅网的软路由 mini 主机,都是选择方案 2 ;个人的 all in boom 也是方案 2 ,其背后的原因是什么。

    万能的水友们,有相关的网卡产品和技术方案推荐吗,还请不吝赐教。

    18 条回复    2024-03-17 22:02:08 +08:00
    renothing
        2
    renothing  
       2024-01-07 16:24:09 +08:00
    因为软路由多数用的低功耗板子。没那些企业级功能
    TsubasaHanekaw
        3
    TsubasaHanekaw  
       2024-01-07 16:33:48 +08:00   1
    因为虚拟网卡:性能很差,无论是 vmware workstation 那种 vmnet0 的直通,还是 hyper-v 建立外部交换机进行桥接(无论是宿主机通过网桥,还是虚拟机通过外部交换机,千兆的公网 1000mbps 下行都只能跑 100 多 mbps),性能很难让人满意
    你这个前提就是错的
    rrfeng
        4
    rrfeng  
       2024-01-07 17:24:57 +08:00 via Android
    sriov 太高级了…那是数据中心虚拟化用的
    0044200420
        5
    0044200420  
       2024-01-07 17:34:20 +08:00
    @TsubasaHanekaw 对,为什么少人用是因为消耗 cpu 而不是性能,这么慢肯定哪里搞错了
    shinko
        6
    shinko  
       2024-01-07 17:48:40 +08:00 via iPhone
    @rrfeng 畅网的新款 intel U 现在都支持了。不过现在性能过剩,虚拟化网卡也够用
    helleon
        7
    helleon  
       2024-01-07 17:56:59 +08:00
    虚拟网卡 1000m 只能跑到 100m 绝无可能。
    这三个的区别最多就是 950m, 990m, 980m 的区别
    echo1937
        8
    echo1937  
    OP
       2024-01-07 18:42:28 +08:00
    @helleon 测试方法,https://www.speedtest.cn/ 没有用 iperf

    场景 1:开 vmware workstation 的的 windows 虚拟机,网络模式选择桥接,虚拟机内部测速下行 100mbps
    场景 2:启动 hyper-v ,增加一个外部交换机,选择“允许管理操作系统共享此网络适配器”,然后在管理操作系统跑 speedtest ,也是只有 100 多 mbps
    helleon
        9
    helleon  
       2024-01-07 18:49:27 +08:00
    @echo1937 你用那玩意测出来的那不是出口带宽的性能么,能说明啥?

    我贴个第一种虚拟网卡的 iperf 结果吧,古老的 Gen8 跑 PVE ,VirtIO 网卡,中间是个垃圾红米路由器的 LAN 口


    D:\Soft\iperf-3.1.3-win64>iperf3.exe -c 10.1.1.7
    Connecting to host 10.1.1.7, port 5201
    [ 4] local 10.1.1.8 port 51471 connected to 10.1.1.7 port 5201
    [ ID] Interval Transfer Bandwidth
    [ 4] 0.00-1.00 sec 22.5 MBytes 189 Mbits/sec
    [ 4] 1.00-2.01 sec 19.0 MBytes 158 Mbits/sec
    [ 4] 2.01-3.00 sec 31.0 MBytes 263 Mbits/sec
    [ 4] 3.00-4.00 sec 36.5 MBytes 306 Mbits/sec
    [ 4] 4.00-5.00 sec 36.4 MBytes 305 Mbits/sec
    [ 4] 5.00-6.01 sec 35.4 MBytes 296 Mbits/sec
    [ 4] 6.01-7.00 sec 33.6 MBytes 283 Mbits/sec
    [ 4] 7.00-8.00 sec 34.2 MBytes 287 Mbits/sec
    [ 4] 8.00-9.00 sec 33.4 MBytes 280 Mbits/sec
    [ 4] 9.00-10.00 sec 36.5 MBytes 306 Mbits/sec
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval Transfer Bandwidth
    [ 4] 0.00-10.00 sec 318 MBytes 267 Mbits/sec sender
    [ 4] 0.00-10.00 sec 318 MBytes 267 Mbits/sec receiver

    iperf Done.
    helleon
        10
    helleon  
       2024-01-07 18:50:38 +08:00
    Sorry 贴成无线的了,下面这个才是

    D:\Soft\iperf-3.1.3-win64>iperf3.exe -c 10.1.1.7
    Connecting to host 10.1.1.7, port 5201
    [ 4] local 10.1.1.8 port 51534 connected to 10.1.1.7 port 5201
    [ ID] Interval Transfer Bandwidth
    [ 4] 0.00-1.00 sec 112 MBytes 940 Mbits/sec
    [ 4] 1.00-2.00 sec 112 MBytes 936 Mbits/sec
    [ 4] 2.00-3.00 sec 112 MBytes 936 Mbits/sec
    [ 4] 3.00-4.00 sec 110 MBytes 919 Mbits/sec
    [ 4] 4.00-5.00 sec 113 MBytes 944 Mbits/sec
    [ 4] 5.00-6.00 sec 113 MBytes 949 Mbits/sec
    [ 4] 6.00-7.00 sec 109 MBytes 916 Mbits/sec
    [ 4] 7.00-8.00 sec 112 MBytes 941 Mbits/sec
    [ 4] 8.00-9.00 sec 113 MBytes 949 Mbits/sec
    [ 4] 9.00-10.00 sec 110 MBytes 922 Mbits/sec
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval Transfer Bandwidth
    [ 4] 0.00-10.00 sec 1.09 GBytes 935 Mbits/sec sender
    [ 4] 0.00-10.00 sec 1.09 GBytes 935 Mbits/sec receiver

    iperf Done.
    echo1937
        11
    echo1937  
    OP
       2024-01-07 19:15:49 +08:00
    @helleon #10 我大概了解你的意思了。

    方案一虚拟网卡本身种类很有多种的,VirtIO 算是开销相对较小的吧,我这创建出来的网卡有且只有 Intel 82574L ,表现不一样很正常吧。

    为什么用 speedtest 的出口带宽测试,因为场景 2 中,未进行操作前,同样的 windows 物理机可以轻松测速跑到 960 多 mbps ,只是为了粗略体现一下差别。
    Fish1024
        12
    Fish1024  
       2024-01-07 20:10:52 +08:00
    虚拟网卡性能不差啊,hyperV 的虚拟交换机下的 win11 实例,内网 2.5G 能跑满,外网千兆跑下载也有 120-150MB/s 。
    zhangckid
        13
    zhangckid  
       2024-01-07 23:06:37 +08:00 via Android
    @echo1937 搜下 virtio-net 你就知道…你的 1 就不成立…随随便便跑个几个 g
    tywtyw2002
        14
    tywtyw2002  
       2024-01-08 06:28:18 +08:00 via iPhone
    现在家用 sriov 的卡基本都是二手洋垃圾 10g/40g 的卡吧

    这种卡 sriov 说实话性能有点差。

    先说驱动
    pcie pass through 的网卡驱动是在虚拟机,支持全功能网卡功能,而且可以在虚拟机里面随便改驱动。这种想的等于虚拟机有个硬件网卡。

    sriov 的驱动跑在母鸡的上,虚拟机里面是没法直接控制硬件的。我的那几张 10g 洋垃圾卡都不支持 mac 层操作,比如硬件 vlan ,旁路端口镜像抓包等。sriov 的卡 相当等于高级一点的 vmxnet 卡,网卡的 ic 帮助 cpu offload 一些工作,节约母鸡 cpu 。但是也是个虚拟网卡。
    helleon
        15
    helleon  
       2024-01-08 18:05:35 +08:00
    @echo1937 我的意思是就算虚拟化也不可能掉 90%的性能,你这要么是驱动要么是网线啥的,具体只能你自己排查了。但是这个锅虚拟化肯定不背
    wm5d8b
        16
    wm5d8b  
       2024-01-08 18:31:11 +08:00 via Android
    我花两倍价格,从小黄鱼买了 sriov 网卡,然后主板不支持,我怎么用?
    echo1937
        17
    echo1937  
    OP
       2024-01-09 08:53:04 +08:00
    @wm5d8b 层主你买的什么卡,我也想买张来玩玩。
    nicai
        18
    nicai  
       2024-03-17 22:02:08 +08:00
    个人的 all in boom 也是方案 2 ,其背后的原因是什么。

    这个是你了解的少把?我的 AIO 就是一张 10G 卡一张 40G 卡,所有 LXC 和 VM 都走的 sriov 后 VF 直通,不走虚拟网桥,小包转发性能那不是 virtio 能比的且不占 cpu 开销。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2810 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 13:22 PVG 21:22 LAX 06:22 JFK 09:22
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86