昨天给大家展示了ASR 9K的线卡架构,既然NP芯片是路由线卡的核心,而PP(Packet Processor)又是NP芯片的核心。那么,拆解NP的PP单元就是拆解NP的关键。
虽然CISCO讳莫如深地隐藏了很多细节,但我们还是可以通过各种公开途径得到其NP的内部实现。以最新的LightSpeed(单芯片400G)为例,它的对外接口有第三代PCIe标准的控制通道,通往前面板的400G Serdes,通往后面板的400G Fabric,以及DRAM和TCAM接口。
内部布局大致如下图:
内部逻辑结构如下:
其中,Process Array就是所谓的PP,它由672个并行的包处理器构成。
我们最初在交换机专题中介绍过的,1G以太网接口上,每秒钟最多会收到1488095个数据包,如果NP需要处理400G的线速以太网数据包转发,那么它每秒钟应当处理595238095个数据包,平均到672个包处理器,就是每秒885770个。每个包处理器需要在1128ns内处理完毕一个数据包。
由于芯片面积的限制,每个包处理器有着高度流水,高度精简的结构。
Pipeline可以类比为CPU中的ALU,它可以执行微码指令,对数据包提取特定字段,并进行查表、替换等操作。L0D指的是0级数据缓存。是现金符号,英文中cash与cache谐音。后面的L1D,L2D等与此类似。
实际上,每个core有4个pipeline,在整个NP中有2688个pipeline。
PP的Pipeline,会完成以下动作:
- 提取报文中特定字段;
- 根据该字段的值,在TCAM存储的对应表项中查询;
- 根据查询结果,对特定字段做修改,或增加/剥离头部;
以我们非常熟悉的VXLAN Bridging转发为例:
1. 提取IP头部,比对TCAM,发现是指向VXLAN VSI接口,进入VXLAN处理流程;
2. 提取UDP目的端口号,发现是4789,继续VXLAN处理流程;
3. 提取VXLAN VNI,在TCAM中查询VXLAN AC接口表项,得到对应的VLAN,并剥离50字节VXLAN头部;
4. 将VLAN TAG加入新的二层头并发送;
每16个包处理器核心构成一个集群(Cluster),共用一个TLU、L1D$。在TLU中可以接收TCAM查询请求,转化为TCAM查询指令,并接收TCAM查询结果。
整个NP中,共有42个这样的Cluster,它们公用L2 Cache并通过内部Interconnect单元互通:
当然,Interconnect还可以连接NP核心以外的其他组件,如外部DRAM控制器、片上缓存、硬件加速器等。
硬件加速器是帮助每个包处理核心在1ms时间里处理完毕一个数据包的业务转发、隧道封装等业务的关键。
它可以实现这些功能:
- 基于前缀的查找,在IPv6的128位前缀查找中很有用。
- 计数器与速率监测;
- TCAM加速引擎,可以对表项进行Hash运算,配合TCAM进一步提升表项读写效率;
- 数据包重排序引擎,对于一条流在多个包处理器上进行处理的情况,可以进行重排序,避免数据包处理不同步造成的乱序现象。
让我们看一张NP芯片的实物图:
右边的Logic是NP的逻辑处理部分,左边的大个头封装是片上缓存。
在Broadcom Jericho2的设计中,也采用了这样的设计。
对线卡NP的拆解就告一段落了,明天我们来分析数据包转发平面的处理流程。
今天的一个问题:
多个包处理流水线同时处理数据包,有可能造成数据包乱序,数据包乱序的后果是什么?
昨天遗留问题答案:
NP中的Crossbar,在交换芯片中是否存在?它与Gearbox PHY芯片能否相互替代?
NP中,Serdes和MAC核之间的Crossbar,在Broadcom StrataXGS核StrataDNX芯片中都存在,可以让交换芯片把多个低速率Serdes连接到一个工作在高速率的MAC核。但crossbar无法代替Gearbox芯片,将多个低速率Serdes转换为高速率Serdes发送。