交换机设计问题:软件(在CPU上运行转发的程序)OR 硬件(CPU、网络处理器(network processor,简称NP)、ASIC、FPGA)

参考资料:

  1. CPU/GPU/TPU/NPU傻傻分不清楚
  2. 终于有人讲明白CPU/GPU/TPU/NPU...XPU都是些什么鬼了
  3. FPGA与ASIC:它们之间的区别以及使用哪一种?
  4. 交换机设计问题

1.CPU、网络处理器(network processor,简称NP)、ASIC和FPGA简介

  感悟:结构决定功能。先分析系统应该具备的功能,在设计其结构。
  ASIC(专用集成电路):是指依产品需求不同而定制化的特殊规格集成电路,由特定使用者要求和特定电子系统的需要而设计、制造。即:定制化芯片。ASIC很“专一”,只做一件事,所以就会比CPU、GPU(通用芯片)等能做很多件事的芯片在某件事上做的更好(万能工具的效率永远比不上专用工具),实现更高的处理速度和更低的能耗。但相应的,ASIC的生产成本也非常高。
  FPGA:现场可编程门阵列。它是一种集成电路,可以“现场”编程,按预期设计工作。这意味着它可以作为一个微处理器,或者一个加密单元,或者显卡,甚至可以同时使用这三个功能。顾名思义,FPGA是现场可编程的。因此,与半导体铸造厂不同,作为微处理器的FPGA可以重新编程,在现场充当显卡。在FPGA上运行的设计通常使用硬件描述语言(如VHDL和Verilog)创建。
  ASIC和FPGA的区别:
  FPGA可重构电路。FPGA可以用不同的设计进行重新配置。他们甚至有能力重新配置芯片的一部分,而芯片的其余部分仍在工作!这个特性被广泛应用于数据中心的加速计算。
  ASIC永久电路。一旦特定于应用的电路用胶带固定在硅上,它就不能改变。电路在其整个工作寿命内也将同样工作。
  ASIC的逻辑功能不能改变成其它任何东西,因为它的数字电路是由永久连接的门和硅触发器组成的。FPGA可以重新编程,在现场充当显卡、微处理器等。可以考虑使用乐高积木建造城堡与使用混凝土建造城堡。前者类似于FPGA,而后者类似于ASIC。你可以重复使用乐高积木创造一个不同的设计,但混凝土城堡是永久性的。

2.交换机的硬件处理具有速度快、成本低和功耗小等优点。

  硬件灵活性和速度的对比

名称 速度 灵活性
交换机芯片 比CPU处理速度快两个数量级 远低于CPU和NP等可编程器件
网络处理器(network processor,简称NP) 比CPU处理速度快一个数量级 可编程
CPU 可编程

  使用CPU处理:利用交换机CPU处理转发规则,可以避免硬件灵活性差的问题。由于CPU处理数据包的能力变得越来越强,商用交换机很自然地也会采用这种更强的CPU。这样,在软件处理转发速度与硬件差别变小的同时,灵活处理转发规则的能力得到提升。
  使用NP处理:由于NP专门用来处理网络的各种任务,如数据包转发、路由查找和协议分析等,因此在网络处理方面,NP比CPU具有更高效的处理能力。
  硬件处理模型:RMT、FlowAdapter

3.软件处理:在处理器(CPU、NP)上运行转发的程序

  软件处理的优点:软件方式可以最大限度地提升规则处理的灵活性,同时又能避免由于硬件自身内存较小、流表大小受限、无法有效处理突发流等问题。
  软件处理的缺点:速度低。

4.软硬件转发

  用cpu运行经过专门设计的程序,把数据包缓存于cpu的内存中,实现数据包的循径,转发的,就是软件转发。
  硬件转发往往指的是一些专门设计的asic硬件芯片。完成软件转发同样的事情,但执行效率高得多。转发率可以高出几个量级。所以软件转发往往是相对于硬件ASIC转发的泛称。

总结:
  有人想在通用的CPU上实现Match-Action,但是基于速度方面的考虑,我们采用专用的硬件实现并行转发,专用交换机的芯片比CPU快两个数量级,比NPU快一个数量级,并且这个趋势看上去是无法改变的。因此,我们思考:在流表内存受限的情况下,如何在硬件上实现Match-Action,并充分利用流水技术和并行思想(以提升速度)?(RMT)

上一篇:vue之v-on


下一篇:linux文件管理之管道与重定向