OVS HW Offload in SmartNIC


I am trying HW offload of OVS in Bluefield SmartNIC.

I’m using 25Gbe one, and actually it seemed I succeeded.

I referred documents in this link (https://docs.mellanox.com/display/BlueFieldSWv22011000).

I attach two pictures about iperf.

Both are the result of iperf with below commands.

Server side: iperf -s

Client side: iperf -c $SERVER_IP -w 416K -P 8

The picture with name “iperf_smartNIC_SW” is the iperf result between x86 host and remote client after I made a bridge in smartNIC OVS with below commands.

ovs-vsctl add-br bf

ovs-vsctl add-port bf p0

ovs-vsctl add-port bf pf0hpf

ifconfig p0 up

ifconfig pf0hpf up

As the picture shows, the iperf performance is just 2.7 Gbit/s.

Then, I typed below commands to make ovs hw-offloaded.

ovs-vsctl set Open_vSwitch . other_config:hw-offload=true

systemctl restart openvswitch

The picture with name “iperf_smartNIC_HW” shows the iperf performance after hw-offload, which almost saturates the link.

Because the throughput differs significantly, I thought hw-offload is done.

The attached picture with name “dump_flows” is a screenshot of the result when I tried to dump flow rules in the SmartNIC ARM core.

When I tried ovs-ofctl dump-flows, I could find a rule that forwards packets between network interfaces.

However, when I tried ovs-dpctl dump-flows, there was not any rules while the manual document says I could check offloaded rules by the command.

(I ignored warning message about meters as it is not important)

Can you explain about how does the rules are offloaded to hardware, and how can I check them explicitly?




What is the output of commands bellow?

#ovs-vsctl show

#ovs-vsctl get Open_vSwitch . Other_config

Run iperf c -t 300 and query existing rules with while iperf is running?

#ovs-dpctl dump-flows

It is also recommended to use the latest BLuefield software available. For now is 2.4



The issue is not reproducible on internal setup.