Hi,
I’m using OVS on a DPU with DOCA and have a bridge br-inside with ports P1 and pf1hpf. I want to create a mirror from P1 to pf1hpf for using Flow Inspector, but when I do, the hardware offload is lost and everything goes to software.
Is this expected when doing mirroring with DOCA? Is there a way to keep hardware offload while mirroring in a Smart Flow?
I applied this conf:
Create SF
/opt/mellanox/iproute2/sbin/mlxdevm port add pci/0000:03:00.0 flavour pcisf pfnum 0 sfnum 1
/opt/mellanox/iproute2/sbin/mlxdevm port add pci/0000:03:00.0 flavour pcisf pfnum 0 sfnum 2
/opt/mellanox/iproute2/sbin/mlxdevm port function set pci/0000:03:00.0/229441 hw_addr 02:25:f2:8d:a2:1c trust on state active
/opt/mellanox/iproute2/sbin/mlxdevm port function set pci/0000:03:00.0/229442 hw_addr 02:25:f2:8d:a2:2c trust on state active
echo mlx5_core.sf.3 > /sys/bus/auxiliary/drivers/mlx5_core.sf_cfg/unbind
echo mlx5_core.sf.3 > /sys/bus/auxiliary/drivers/mlx5_core.sf/bind
echo mlx5_core.sf.4 > /sys/bus/auxiliary/drivers/mlx5_core.sf_cfg/unbind
echo mlx5_core.sf.4 > /sys/bus/auxiliary/drivers/mlx5_core.sf/bind
add to bridge
ovs-vsctl add-port br-inside en3f0pf0sf2 -- set Interface en3f0pf0sf2 type=dpdk
ovs-vsctl add-port br-outside en3f0pf0sf1 -- set Interface en3f0pf0sf1 type=dpdk
#Mirror
#pf1hpf->en3f0pf0sf2
ovs-vsctl – --id=@p1 get port en3f0pf0sf2
– --id=@p2 get port pf1hpf
– --id=@m create mirror name=mirror_inside select-dst-port=@p2 select-src-port=@p2 output-port=@p1
– set bridge br-inside mirrors=@m
#p1->en3f0pf0sf2
ovs-vsctl – --id=@p1 get port en3f0pf0sf2
– --id=@p2 get port p1
– --id=@m create mirror name=mirror_inside select-dst-port=@p2 select-src-port=@p2 output-port=@p1
– set bridge br-inside mirrors=@m
#pf0hpf->en3f0pf0sf1
ovs-vsctl – --id=@p1 get port en3f0pf0sf1
– --id=@p2 get port pf0hpf
– --id=@m create mirror name=mirror_outside select-dst-port=@p2 select-src-port=@p2 output-port=@p1
– set bridge br-outside mirrors=@m
#p0->en3f0pf0sf1
ovs-vsctl – --id=@p1 get port en3f0pf0sf1
– --id=@p2 get port p0
– --id=@m create mirror name=mirror_outside select-dst-port=@p2 select-src-port=@p2 output-port=@p1
– set bridge br-outside mirrors=@m
if lost offload I get traffic
_uuid : 9ce194a9-31e2-4b4d-8c21-f947a9b4c3aa
external_ids : {}
name : mirror_inside
output_port : b056fc1f-8905-4940-960a-4486fb5b00de
output_vlan : []
select_all : false
select_dst_port : [0b782bdf-1ce0-4e2e-80ac-88c9d5ba4753]
select_src_port : [0b782bdf-1ce0-4e2e-80ac-88c9d5ba4753]
select_vlan : []
snaplen : []
statistics : {tx_bytes=35836, tx_packets=188}
if offload is working don’t have traffic in mirror
_uuid : 827b2d06-ea63-4548-8f23-d185c764d671
external_ids : {}
name : mirror_inside
output_port : bdef92ab-6f62-4dae-938a-2c0959fd49ac
output_vlan : []
select_all : false
select_dst_port : []
select_src_port : []
select_vlan : []
snaplen : []
statistics : {tx_bytes=0, tx_packets=0}
LOG Flow
I can see action unsupported: output port’
ufid:357c2b8a-d2c7-4e41-b8f1-9ad17e1979f5, recirc_id(0),dp_hash(0/0),skb_priority(0/0),nv_mp_pid(0/0),nv_mp_preferred(0/0),nv_mp_strict(0/0),in_port(p1),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),packet_type(ns=0,id=0),eth(src=10:f9:20:90:47:a8,dst=00:1e:bd:c4:d8:ff),eth_type(0x8100),vlan(vid=100,pcp=0/0x0),encap(eth_type(0x0800),ipv4(src=172.28.20.105/0.0.0.0,dst=172.28.20.10/0.0.0.0,proto=17/0,tos=0/0,ttl=250/0,frag=no),udp(src=5277/0,dst=5247/0)), packets:1394, bytes:489376, used:0.846s, dp:ovs, actions:en3f0pf0sf2,pf1hpf, dp-extra-info:miniflow_bits(4,2), dp-offload-info:'action unsupported: output port'
ufid:6376a820-a1e4-4b03-84d8-750e9d2f8e97, recirc_id(0),dp_hash(0/0),skb_priority(0/0),nv_mp_pid(0/0),nv_mp_preferred(0/0),nv_mp_strict(0/0),in_port(pf1hpf),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),packet_type(ns=0,id=0),eth(src=00:1e:bd:c4:d8:ff,dst=48:8b:0a:30:0c:60),eth_type(0x8100),vlan(vid=100,pcp=0/0x0),encap(eth_type(0x0800),ipv4(src=172.28.20.10/0.0.0.0,dst=172.28.20.106/0.0.0.0,proto=17/0,tos=0xc0/0,ttl=64/0,frag=no),udp(src=5246/0,dst=5260/0)), packets:668, bytes:295192, used:2.063s, dp:ovs, actions:p1,en3f0pf0sf2, dp-extra-info:miniflow_bits(4,2), dp-offload-info:'action unsupported: output port'
ufid:ca3591d5-aa5b-42d8-86e0-0ec337402d0b, recirc_id(0),dp_hash(0/0),skb_priority(0/0),nv_mp_pid(0/0),nv_mp_preferred(0/0),nv_mp_strict(0/0),in_port(pf1hpf),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),packet_type(ns=0,id=0),eth(src=48:e1:e9:ca:ad:0b,dst=58:97:bd:27:55:08),eth_type(0x8100),vlan(vid=600,pcp=0/0x0),encap(eth_type(0x0800),ipv4(src=172.31.30.68/0.0.0.0,dst=44.213.225.164/0.0.0.0,proto=6/0,tos=0/0,ttl=255/0,frag=no),tcp(src=56061/0,dst=443/0),tcp_flags(0/0)), packets:1, bytes:64, used:1.030s, flags:., dp:ovs, actions:p1,en3f0pf0sf2, dp-extra-info:miniflow_bits(4,2), dp-offload-info:'action unsupported: output port'
ufid:092218b4-f724-4230-bdf3-6f14d9116b02, recirc_id(0),dp_hash(0/0),skb_priority(0/0),nv_mp_pid(0/0),nv_mp_preferred(0/0),nv_mp_strict(0/0),in_port(pf1hpf),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),packet_type(ns=0,id=0),eth(src=00:1e:bd:c4:d8:ff,dst=10:f9:20:90:47:a8),eth_type(0x8100),vlan(vid=100,pcp=0/0x0),encap(eth_type(0x0800),ipv4(src=172.28.20.10/0.0.0.0,dst=172.28.20.105/0.0.0.0,proto=17/0,tos=0/0,ttl=255/0,frag=no),udp(src=5247/0,dst=5277/0)), packets:1, bytes:311, used:0.849s, dp:ovs, actions:p1,en3f0pf0sf2, dp-extra-info:miniflow_bits(4,2), dp-offload-info:'action unsupported: output port'