1、背景
随着网络规模的日益增长,网络的基础设施需要不断发展的网络功能(Network Function)才能使得网络安全可靠的运行,这些网络功能例如:NAT(Network Address Translation,网络地址转换),负载均衡,流量整形,防火墙等等。
但由于网络功能由纯软件实现,这便来带了时延的开销,如下图所示。
2、要解决的问题
微软提出了基于FPGA的Smart NIC,可以节省CPU使用率并且减少PCIe总线上的流量,但这必须需要专门的团队来负责,这对于大公司没有问题,但对于其他绝大多数公司并没有这个能力。
Nick McKeown 等人提出了可编程协议无关报文处理语言 P4 以及相应的转发模型,Match-Action Pipline
3、FlowBlaze
FlowBlaze,一种拓展了类似P4或者Microsoft的GFT之类Match-Action语言的抽象,简化L2-L4一系列状态功能集,同时在基于FPGA的Smart NIC上实现。
4、关键挑战
- 1.在flow table中插入新流,由于Cuckoo hash,导致插入时间是不确定的。
- 2.状态更新时延问题
5、解决思路
- 挑战一:通过利用Stash,来弥补插入时间不确定的问题。额外来开辟一个空间处理需要插入时间过多的Flow。
- 挑战二:更新流状态中,给需要更新的流进行加锁,来解决更新流状态的时延问题,确保每条流的状态是正确的。但可能会对性能造成影响。
附录
论文地址:https://www.usenix.org/conference/nsdi19/presentation/pontarelli
github地址:https://github.com/axbryd/FlowBlaze