网络是数据中心里的交通枢纽,连接着所有运行应用业务的设备。没有网络,也就没有数据中心,没有互联网的今天,网络在数据中心里发挥着非常关键的作用,所以网络技术一直是热点,在不断发展进化着,其中就包含可编程技术。可编程技术在各行各业中都有广泛应用,同样在网络世界里也很普遍。这种技术在芯片上实现各硬件单元都不是固定的,可由用户在使用中选择,即通过计算机指令来选择不同的通道和不同的电路功能,称为编程控制,这给使用者提供了极大的灵活性。比如:处理器、FPGA、CPLD、DSP,这四种都是可编程芯片。
其中处理器是个大类,包含各种位数的单片机、电脑的CPU、以及ARM的一系列手机用芯片,还有复合芯片,比如一些是单片机+无线功能的芯片,如带单片机内核中的蓝牙芯片。一些可简单编程芯片,比如时钟芯片,你可以设置它到特定时间点时某个管脚电平高低,或者是数字温度芯片输出温度格式以华氏度输出,这些芯片在网络设备中应用很广,网络设备的CPU处理器可以实现各种复杂的网络协议处理,FPGA可以将转发表项扩展到很大,满足高规格的网络环境使用,网络设备通过这些可编程芯片,实现了很多特殊网络流量的转发。
网络设备的硬件内部一般由CPU、内存、Flash、转发芯片、FPGA、EEPROM等芯片组成,这些大部分都是可编程芯片,可有没有人注意到其实转发芯片绝大部分都不是可编程芯片,无论是路由器中采用的NP,还是交换机中采用的Switch Chip,都不是可编程芯片。这些芯片的硬件转发逻辑已经设计好,无法通过调整软件参数去更改,软件设置的只是让这些功能模块可以运转起来,但绝不可以调整它们的处理顺序,而且软件设置的范围都是提前预定好的。比如我们需要在交换机上实现入方向上的报文过滤,这样就需要在转发芯片入方向下发一些ACL过滤规则。
在一些商用转发芯片上,这些ACL过滤规则固定下发在转发模块之后,如果进入芯片的是三层转发流量,此时下发的ACL过滤规则匹配的就是三层转发之后的报文,此时报文MAC已经发生了替换,下发的ACL规则只能匹配转发之后的报文特征,这就是不能可编程实现的局限性。一个报文进入转发芯片,从入端口检查,到查找转发表项,再到出口,这中间要经过几十个功能模块的处理,有修改报文优先级的,有修改报文VLAN TAG的,有做队列调度的,有做路由策略的等等,这些功能模块都是按照固定顺序来对报文处理的,灵活性比较差,常常会遇到不少实现上的限制,若能实现网络芯片可编程将可以很好解决这些问题。
当然,网络芯片和其它芯片不同,芯片要承担大量的数据流量转发,这些数据远远大于CPU、内存以及Flash这些器件的数据,这就要求芯片硬件处理逻辑要尽可能地简单,否则转发效率都成问题,延迟是网络设备一个重要的考核指标,这使得网络芯片要尽可能做到简单。使用者只要做选择就可以,将参数输入芯片,芯片就可以按照制定的数据来转发,所以多年以来,转发芯片都是不能编程的,网络发展也好好的。随着 云计算 、大数据和虚拟化技术的出现,这给网络带来的冲击是最大的,网络固定的转发模式无法适应这些年新技术的应用,在这些新技术面前,网络部分显得相形见绌,是到了该要改变的时刻了。