![77b65749f8a84877f43aa7b0bbfdb573.png](https://i-blog.csdnimg.cn/blog_migrate/a8da03644177a677356b4a9487558240.png)
![2bef98291f7a79f9bb8f2294747de38f.png](https://i-blog.csdnimg.cn/blog_migrate/fbc73e16609534415179d2ed3e132964.jpeg)
/ 一 /
Ovs partial offload简介
为了提升OVS(openvswitch)的转发性能,近年来的一个发展趋势是利用智能网卡将OVS的datapath整体offload到网卡中,如图1所示。
![1bdb7409e51b29f034e54b6d39351b01.png](https://i-blog.csdnimg.cn/blog_migrate/a0dee3aa8ca3637bab7564c85b56841d.jpeg)
图1 Ovs full offload
这样做的好处是用网卡来处理包头解析和流表查找等耗费计算资源的事情,可以大量节省cpu资源,同时提升网络吞吐,减小时延。难点在于硬件开发周期长,full offload是全新的功能会有一些bug,且出现问题不易定位。如果想做OVS的datapath的full offload,目前只有少量的几款网卡支持(Mellanox cx-5、napatech/intel的fpga卡),且offload方案大都应用于sriov场景下。其实在OVS-dpdk应用场景下,也可以利用一些网卡的 flow director功能实现OVS功能的部分卸载(支持的网卡如intel x710/xl710/xxv710/x722),如图2所示,dpdk的rte_flow lib则为这些功能的实现提供了一组通用的api,可以支持OVS将部分网卡支持的flow pattern(eth+vlan+ip+tcp/udp)以及相应的action(如queue/mark/drop/rss等)下发至网卡,这样可以在网卡收包方向“部分”卸载掉OVS 解析封包,查找表以及enqueue/drop等action的执行动作,从而提升转发性能。
图2 ovs partial offload示意图
/ 二 /
dpdk rte_flow lib简