在前面20篇专题中,我们看到了,路由器可以通过这些方法实现:
我们发现,性能越高的路由器,使用的转发芯片灵活性越低。以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路由器是哪款吗?
明天在揭晓答案时,也为大家讲一个路由器故事…