Nick McKeown是斯坦福大学教授,以太网学术界的大牛级人物,其学生遍布矽谷各大网络设备/芯片公司并担任高级管理等核心职位。假如小明在矽谷找工作,他最有力的自我介绍将会是:“我叫小明,斯坦福博士,师从Nick McKeown”。2013年,Nick创立Barefoot Networks,它是一家软件定义网络(SDN)芯片公司,先后获得高盛、谷歌,阿里巴巴以及腾讯的投资。Barefoot先后研发了两代可编程网络芯片,命名为Tofino(TF),在业界以高集成度,大带宽,可编程性强而著称。2019年,Barefoot被Intel收购,并继续在其数据中心事业部(IPU与Switch)发扬光大。Barefoot对业界的最大贡献是对数据包进行处理的编程语言P4,以及基于MAU架构的可编程网络处理器。
对数据包进行处理的编程语言P4,回应了Nick发展SDN的初心,它可以帮助网络用户摆脱被芯片硬件厂商各种协议的制约。SDN解决方案实现了网络控制平面与转发平面的分离,增强了控制平面的集中可编程能力。但是,最初的SDN解决方案只是对用户开放了控制平面能力,而转发转发平面依旧依赖于传统网络设备商,跟硬件紧密绑定且功能封闭,很难提供给第三方进行二次开发:不同厂商都有自己的不同的实现方式,新协议的支持方面很难达到同步一致,导致设备兼容性问题一直困扰著众多网络运营商。P4的产生,为用户赋予了这种能力,解放了硬件设备的数据转发平面, 让网络中的数据包的解析和转发等流程可以通过编程控制,使得网络中所有的设备真正地可编程化,并且完全对用户开放。而支持P4所对应的硬件设计,就是本文要阐述的MAU架构。
传统以太网交换芯片的转发平面多采用专用的硬件电路,可以称为“Fixed Pipeline”,其结构大致如下图:
图1:传统Fixed Pipeline交换芯片架构
如图1所示,依据以太网的协议以及功能,每个部分都使用专有的硬件逻辑来实现。它的有点是专款专用,逻辑开销小,功耗低。但它的不足也是很明显,就如上节内容所介绍:不同厂商都有自己的不同的实现方式,新协议的支持方面很难达到同步一致,导致设备兼容性问题一直困扰著众多网络运营商。而且,由于新的网络协议不停地被开发出来,而Fixed Pipeline架构无法做到向后兼容,使得芯片的使用周期不可预计,从而为交换芯片厂商以及运营厂商双双带来风险。
Barefoot发明的基于MAU的可编程网络芯片完美地解决了这个问题:不再使用功能固定的L2/L3/L4/Forwarding/ACL硬化逻辑,而是采用可编程的硬件设计,使得芯片具体如何优势:
下图是基于MAU架构的可编程交换芯片:
图2:基于MAU的可编程交换芯片架构
上图中,Adaptor之前的部分都是协议无关的,也就是其信号、变量都是由软件/用户自定义的,从而实现协议硬件无关性以及功能可重构性。
在传统网络芯片中,除了Fixed交换芯片,还有一种基于CPU core的完全可编程芯片,比如大家常用的家庭路由器,运营商所使用的路由器等。既然这种交换机是完全可编程的,其灵活性一定是最好的,那么为和MAU架构还是开创了一个时代呢?其中原因当然是成本引力:相比于Fixed Pipeline架构,基于CPU core的硬件成本达到了~100倍/pps (pps:packet per second,既包吞吐率)。也就是说,对于相同的矽片面积的话(不包括LookUp Table),Fixed Pipeline交换芯片的跑分,将会是基于Cpu的约100倍。
下图是MAU的基本架构。需要声明的是,MAU是一种架构思路,对于其具体实现,每家芯片厂商都可能有细节的不同。但有一件事是确定的:所有基于MAU的交换芯片都可以支持P4编程。
图3:MAU的结构和原理示意
上图中,PHV是非常重要的总线以及概念,它由可编程Parser第一步生成,并且被每一级MAU回写/编辑,最后被Adaptor使用并生成最终转发平面所需要的指令。PHV也是一组非常宽的总线,Barefoot的FT芯片大约使用1.5Kb,而且在实际使用中,屡屡不够用。一如所有的芯片,总线都是非常宝贵的资源,因为其硬件成本比较高昂(具体原因,工作5+年的工程师都应该有体会)。PHV之所以被称为是Vector,是因为它可以被分成很多小的变量,这些变量的功能都是由软件决定的,其硬件无关性也由来于此。
上图中,ALU/Logic/Table都可以看做是计算和逻辑处理单元,每个芯片厂商都会有细微差别,不过像基本运算+,-,>,<,shift,mask,or,and等等都会支持。
这里有一个非常重要的问题:在一个可编程处理器上,多少个MAU是够用的?Barefoot给出的答案是12,而且依据目前TF的实际使用场景来看,这是个合适的数字。
除去实现细节的细微不同,MAU在使用上可以有两种方式:RTC (run to complete)和Pipeline。对于MAU的设计来说,两种使用方法对其特点以及硬件逻辑成本都有很大影响。下面是它们的具体对比:
图4:Pipeline与RTC MAU应用
RTC形式的MAU结构其实就是用PPS换可编程性的一种做法。如上图,假设时钟频率都是1G,那么Pipeline MAU的包处理能力是1B PPS(1 Billion Packet Per Second)。然后,如果使用RTC MAU,假设每个包需要转10圈,那它的包处理能力是100M PPS。
从2012年收购事件和Google案例开始,引爆了整个行业对SDN的关注度,随后在白盒交换机、网络操作系统、数据中心网络虚拟化和SD-WAN四个领域产生成熟的细分市场,大量的初创公司涌现出来。2016年则是国内SDN公司获得认可的一年。跟随着SDN的风口,P4的市场需求度也在大幅上升,国内一线大厂甚至声称,如果初创公司网络芯片没有打开P4的大门,那么它们就会关上大门。
目前的市场上,更够支持P4的芯片大致可以分为三种:基于CPU,FPGA或者基于MAU。
如上文所述,就跑分(pps处理能力)来说的话,如果说Fixed Pipeline是100分,那么MAU会是大约50分,而主流ARM等CPU core大约是1分。这仅仅是从硬件成本分析,如果综合考虑到向后兼容带来的系统性效应,MAU的性价比绝对是最高的。事实上,对于像初创公司等不具备市场地位的芯片玩家来说,MAU其实是不二选择。
数年前,新华三半导体收购了以色列的NP芯片玩家EasyChip,这家公司是最具有代表性的基于CPU的网络芯片供应商。新华三在收购EasyChip后,把MIPS更换为某EDA/IP供应商的CPU core,从而研制了智擎系列NP。因为现在NP芯片要求大带宽高PPS,而且它的功能可以用MAU来实现,仅从芯片研发的角度来看,这是一次失败的收购。
基于CPU的网络芯片还会长期存在,比如说低带宽的DPU。但高带宽的运营商市场NP芯片,企业网市场交换芯片,以及数据中心交换芯片,MAU已经是主流并且趋势不会改变(具有市场垄断地位的博通除外,最受欢迎的Tomhark芯片是Fixed Pipeline架构)。
DPU市场比较特殊,目前有ASIC方案,FPGA方案以及NP方案并存,诸侯混战,是一片崭新的天下。Intel IPU使用RTC形式的MAU架构,是ASIC方案的代表之作,有兴趣的读者可以自行网上搜索。由于DPU的带宽需求并不高(仅从目前来看),NP方案的网络处理看起来也是其不错的选项之一:业务完全软件可编程适用于DPU市场的不确定性,成本适中,开发周期快(SoC搭积木)。但是,由于其成本对带宽/PPS太过敏感,如果DPU市场在未来也会走向大带宽,那么当前的NP方案一定会被淘汰出局,其本质原因将会在本系列的第三篇讲到。
回顧2023年10月24日對25日預測:上攻壓力 2968-2974-2990回踩支撐 2955-2944-292925日大盤總體節奏還是反彈反抽五日線的技...