网络是数据中心里的交通枢纽,连接着所有运行应用业务的设备。没有网络,也就没有数据中心,没有互联网的今天,网络在数据中心里发挥着非常关键的作用,所以网络技术一直是热点,在不断发展进化着,其中就包含可编程技术。
可编程技术在各行各业中都有广泛应用,同样在网络世界里也很普遍。这种技术在芯片上实现各硬件单元都不是固定的,可由用户在使用中选择,即通过计算机指令来选择不同的通道和不同的电路功能,称为编程控制,这给使用者提供了极大的灵活性。比如:处理器、FPGA、CPLD、DSP,这四种都是可编程芯片。其中处理器是个大类,包含各种位数的单片机、电脑的CPU、以及ARM的一系列手机用芯片,还有复合芯片,比如一些是单片机+无线功能的芯片,如带单片机内核中的蓝牙芯片。一些可简单编程芯片,比如时钟芯片,你可以设置它到特定时间点时某个管脚电平高低,或者是数字温度芯片输出温度格式以华氏度输出,这些芯片在网络设备中应用很广,网络设备的CPU处理器可以实现各种复杂的网络协议处理,FPGA可以将转发表项扩展到很大,满足高规格的网络环境使用,网络设备通过这些可编程芯片,实现了很多特殊网络流量的转发。
网络设备的硬件内部一般由CPU、内存、Flash、转发芯片、FPGA、EEPROM等芯片组成,这些大部分都是可编程芯片,可有没有人注意到其实转发芯片绝大部分都不是可编程芯片,无论是路由器中采用的NP,还是交换机中采用的Switch Chip,都不是可编程芯片。这些芯片的硬件转发逻辑已经设计好,无法通过调整软件参数去更改,软件设置的只是让这些功能模块可以运转起来,但绝不可以调整它们的处理顺序,而且软件设置的范围都是提前预定好的。比如我们需要在交换机上实现入方向上的报文过滤,这样就需要在转发芯片入方向下发一些ACL过滤规则。在一些商用转发芯片上,这些ACL过滤规则固定下发在转发模块之后,如果进入芯片的是三层转发流量,此时下发的ACL过滤规则匹配的就是三层转发之后的报文,此时报文MAC已经发生了替换,下发的ACL规则只能匹配转发之后的报文特征,这就是不能可编程实现的局限性。一个报文进入转发芯片,从入端口检查,到查找转发表项,再到出口,这中间要经过几十个功能模块的处理,有修改报文优先级的,有修改报文VLAN TAG的,有做队列调度的,有做路由策略的等等,这些功能模块都是按照固定顺序来对报文处理的,灵活性比较差,常常会遇到不少实现上的限制,若能实现网络芯片可编程将可以很好解决这些问题。
当然,网络芯片和其它芯片不同,芯片要承担大量的数据流量转发,这些数据远远大于CPU、内存以及Flash这些器件的数据,这就要求芯片硬件处理逻辑要尽可能地简单,否则转发效率都成问题,延迟是网络设备一个重要的考核指标,这使得网络芯片要尽可能做到简单。使用者只要做选择就可以,将参数输入芯片,芯片就可以按照制定的数据来转发,所以多年以来,转发芯片都是不能编程的,网络发展也好好的。随着云计算、大数据和虚拟化技术的出现,这给网络带来的冲击是最大的,网络固定的转发模式无法适应这些年新技术的应用,在这些新技术面前,网络部分显得相形见绌,是到了该要改变的时刻了。
三年前,一家专做SDN芯片的公司成立,叫Barefoot Networks,Barefoot Networks从事开源可编程网络芯片的设计和研究,Barefoot Networks的芯片Tofino是一种可编程芯片,可实现高达6.5 Tbps处理速度,用户或网络供应商可以利用P4编程语言来定制白盒解决方案或固定配置产品,这样用户可以在数周内部署新协议,而不需要新版本的芯片来支持,具有极大的灵活性。现在很多网络需求,听到最多的就是芯片限制实现不了,只能换更高级的芯片设备,有了可编程芯片的设备就不同了,可以根据客户需求,通过软件对网络设备进行重新设计都可以实现,不用再去更换硬件,刷新软件就可以解决。今年6月,Broadcom也发布了可编程网络商用芯片Trident 3系列,虽然处理速度只有Tofino的一半3.2Tbps,但Broadcom控制了整个网络芯片市场的90%左右,其垄断地位决定了Trident 3芯片一定会得到很多使用者的追捧,网络设备进入了可编程时代。现在的网络设备,快和手机行业一样了,使用三年基本就不能再满足业务发展需要了,使用五年基本成古董了,这给数据中心带来了很大成本压力,数据中心要不断增加设备采购,同时淘汰更多的老旧设备,说是老旧也不过就两三年。如果网络设备具有可编程性,就可以通过重新编程来满足未来需求,同时继续大力降低网络设备使用的成本和功耗。
由此可见,网络芯片进入了可编程时代,这就增强网络部分的灵活性,更加适应未来业务发展需要。这种可编程能力与软件定义SDN还有些区别,可编程能力指的是通过基于脚本的编程灵活实现各种网络协议功能,SDN则是通过控制器向网络设备下发转发流表,实现流量转发,流表实现只是网络设备功能的一部分,网络设备还有ACL过滤、路由策略、修改报文内容、队列调度等丰富的网络功能,这些通过SDN都无法实现,通过可编程技术则可以很好实现。未来,若是某项网络功能满足不了,又说是芯片限制,就要考虑下这个说法的真实性了,芯片的可编程能力极大地扩展了网络处理的灵活性,可适应各种复杂网络场景的应用,即便有限制也会很少。