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