Netfilter-Add support for hardware offloads

终于,该来的陆续都来了。

例行浏览lwn,发现了个好玩的:
netfilter: add hardware offload infrastructure: https://lwn.net/Articles/793080/

玩Netfilter已经好多年了,这么多年Netfilter因为性能问题一直被诟病,但是说实话,直到现在我都不觉得Netfilter的性能低是个问题:

  • iptables规则太多时影响性能那是iptables本身的问题。
  • nf_conntrack性能低那是nf_conntrack本身的问题。
  • Netfilter只是一系列的HOOK点。

相反,Netfilter给我们带来了很多有意义以及有意思的东西。


如今Netfilter上那些被人诟病的罪魁祸首们都可以被offload到hardware了:

  • nf_conntrack可以存储在SmartNIC的Ram中,其处理逻辑也可以offload到SmartNIC的Nfp中。
  • nftables规则可以存储在SmartNIC的Ram中,其处理逻辑也可以offload到SmartNIC的Nfp中。
  • iptables…

Netfilter作为userspace配置程序和hardware直接的代理接口继续存在。

甩个ppt,自己看吧:
netfilter hw offloads: http://workshop.netfilter.org/2017/wiki/images/d/d6/Nft-hw-offload.pdf

下面的patch给了Netfilter hw offload的核心支撑:
netfilter: nf_tables: add hardware offload support
net: sched: use flow block API
drivers: net: use flow block API
net: sched: remove tcf block API

下面的patchset是当前的一些SmartNIC,比如Mellanox,Netronome的一些offload实现:
net: flow_offload: add flow_block_cb_setup_simple()
net: flow_offload: add flow_block_cb_alloc() and flow_block_cb_free()
net: flow_offload: add list handling functions
net: flow_offload: add flow_block_cb_{priv, incref, decref}()
net: flow_offload: add flow_block_cb_is_busy() and use it
net: flow_offload: rename tc_cls_flower_offload to flow_cls_offload


OpenVSwitch,switchdev,XDP,ebpf,Netfilter offload…这些就像寒武纪大爆发一样纷至沓来,Why?

公有云巨头让计算资源越来越集中,这种集中反过来要求网络资源越来越发散,网络资源调度的话语权逐步从传统网络设备厂商集中到了云计算巨头手里,网络设备厂商被从数据机房里驱逐了出来。

上帝的归上帝,恺撒的归恺撒。网络厂商负责传输,云厂商负责其它的。

Linux为云厂商提供了平台。在这个开放的平台上展开的军备竞赛异常激烈,为了收益/成本最大化同时更加具备快速迭代的能力,财力雄厚的云厂商大力发展自研硬件,各种白牌设备层出不穷,这种现状反过来让Linux对hardware offload提供支撑,而这种支撑最终要求一个统一的操作接口,都是谁能担此任呢?

OpenVSwitch,switchdev,XDP,ebpf,Netfilter offload…

不管经理认不认同,Netfilter从此获得了升华!


浙江温州皮鞋湿,下雨进水不会胖。

你可能感兴趣的:(Netfilter-Add support for hardware offloads)