网络设备硬核技术内幕 路由器篇 21 可重构的路由器

2022-07-27 13:29:44 浏览数 (1)

在前面20篇专题中,我们看到了,路由器可以通过这些方法实现:

  1. 家用路由器,一般使用Broadcom或MTK的SoC方案实现,如Broadcom 的BCM7218X,一颗芯片就可以实现集成了Wi-Fi6和IPTV功能的家用路由器盒子。
  2. 企业级别,1Gbps-200Gbps性能区间的路由器,可以使用Marvell (Cavium),Broadcom(RMI)的MIPS或ARM多核处理器实现。未来也可以利用x86 DPDK实现。
  3. 企业高端与运营商级别,200G-20T性能区间的路由器,目前一般使用NP实现。

我们发现,性能越高的路由器,使用的转发芯片灵活性越低。以NP为例,NP的报文处理流水线是有限制的。在实践中,出现过这样的案例:

互联网企业需要将城域线路分光出来的流量送到后端进行分析,由于单台分析设备的性能有限,需要按流(业务流的TCP五元组)进行负载均衡。

如下图所示:

其中,右边的数字指的是数据包各个头部字段开始的偏移量。

实际上,用户期望的是,根据内层IP/TCP将数据包分流到多个分析器上。但由于内层IP/TCP被封装在了70多字节以后,而一般的NP/ASIC内置的分析器只能提取报文头部64字节进行解析,因此难以实现这样的功能。对于多核处理器,虽然内部也有硬件解析加速器,同样地,对于这种深层次封装的隧道,处理起来也有困难。

这时候,我们就需要一种可编程的硬件加速单元实现这一功能。工程师们将眼光投向了一类可重构器件——FPGA。

FPGA是"Field Programmable Gate Array" (现场可编程门阵列)的缩写。这个绕口的中文名称实际上可以拆解为几部分:

可编程——它的处理逻辑是可以修改的,不像ASIC那样是相对固化的;

门阵列——它内部的最小编程分配单元是门电路和触发器,因此可以编程的程度很高,可以重构各种处理逻辑;

现场——FPGA内置SRAM存放编译后的代码,可以通过软件在运行时升级,甚至不重启就完成升级;

由于这些特点,FPGA经常用于网络中数据包处理的加速,最典型地就是用于路由器或防火墙的加速。

对于前面提到的城域网镜像流量分析的场景,就是FPGA的用武之地。工程师只需要对FPGA进行编程,让它从78字节处开始提取内层IP/UDP(真实业务地址/端口)的五元组,计算hash后,发送到对应的分析器,就可以完成NP和多核路由器有困难的任务了。

由于FPGA的可重构特性,它实现的可重构路由器更加开放,功能更加强大,也弥补了多核处理器在业务叠加时性能下降的弱点。

大家知道最经典的可重构FPGA路由器是哪款吗?

明天在揭晓答案时,也为大家讲一个路由器故事…

0 人点赞