( debtamas88 | 2020. 05. 19., k – 12:58 )

Kitaláltam egy megoldást, amihez nem kell iommu/sr-iov sem :)

Szükség van 1db - 2 portos 10G kártyára, ezt önmagával összekötjük.
Szükség van 1db - X portos 10G kártyára ez az uplink.

nic1 port-1: eth1 (észak)
nic1 port-2: eth2 (dél)
nic2 port-1: eth3 (uplink)

Létrehozzuk a trunk-t:
$> ovs-vsctl add-br brtrunk
$> ovs-vsctl add-port brtrunk eth1
$> ovs-vsctl add-port brtrunk eth2

Létrehozzuk a kimenő hálózatot (uplink)
$> ovs-vsctl add-br bruplink
$> ovs-vsctl add-port bruplink eth3

VM és az uplink közé létrehozzuk a kapcsolatot a következőképp:
->VM bridge: vmbr1000
->VM interface: tap1000i0

$> ip link add link eth1 name eth1.1000 type vlan id 1000
$> ip link add link eth2 name eth2.1000 type vlan id 1000

$> ovs-vsctl add-port vmbr1000 eth2.1000
$> ovs-vsctl add-port bruplink eth1.1000

Következőképpen fog kinézni:

vmbr1000
-tap1000i0
-eth2.1000

brtrunk
-eth1
-eth2

bruplink
-eth3
-eth1.1000

Lényegében a fizikai (loopback) kártyán megjáratjuk a forgalmat - így nem a CPU fog dolgozni, hanem a hálókártya ASIC/SOC-ja, így közel 10G duplex sebesség elérhető.
Legjobban 4portos NIC-kártya esetén működhetne, mert akkor uplink is ugyan azon menne át.

Mennyire működik, azt tesztelni kellene.