思科第三代QFP芯片转发架构及运维技巧

前面谈了一下华三的某个网络处理器,正好最近思科发布了完整的第三代QFP产品线的产品,ASR 1000系列的ESP-100X和ESP-200X以及Catalyst Edge 8500系列(不包括8500L).那么就来详细的讲讲这几个平台.

大概15年前, 思科开始了Quantum Flow Processor(QFP)系列芯片的研发,它是思科网络处理器的其中一个分支,主要目的是针对企业网越来越复杂的软件特性和越来越大的性能需求而构建的. 另一个分支是用于CRS系列的SPP、QFA、NxPower等芯片,主打运营商市场高吞吐的Stateless转发。

QFP设计理念:平衡

很多厂家的系统平台都是基本转发能力可能接近1Tbps,加一个feature掉20%,再加一个掉20%,多个叠加以后性能就不满足需求了。很多客户也被这样的平台搞怕了,于是标书上不顾自己的业务需求,上来就是要1Tbps的路由器但是真部署的时候广域网带宽只有10Gbps.

同样我们在研发ISR 2900、3900系列路由器时,基本转发的最高性能可以到9Gbps,但是我们从来不会在市场上宣称这是一个万兆路由器,而更多的是考虑到多业务叠加的场景,官方建议的部署场景为15Mbps的广域网线路。

这种多个功能叠加后性能急剧下降,或者广域网像糖葫芦串那样串一堆设备的问题需要专用处理器来解决,因此QFP的整体设计理念并不在意单个软件功能的性能,而是平衡多种软件功能(NAT/FW/QoS/DPI/IPsec..)同时调用的性能。其实这样的场景在SASE云部署中更加明显,利用X86多核部署相对于QFP性价比会差很多倍。这个留到后面有空讲SASE的时候详细说。

通常我们会将这个处理器的平台部署在多个位置,从接入到核心,从企业到运营商,如下图所示:

思科第三代QFP芯片转发架构及运维技巧

而使用的软件功能会让支持它的人发疯,别问我为啥懂这么多,都是被这万能的盒子逼出来的…关键是这玩意支持这么多功能性能还非常棒,妥妥的瑞士军刀,似乎玩了它才会知道P4的可编程就是一个笑话了..

思科第三代QFP芯片转发架构及运维技巧

QFP发展历史

第一代QFP

第一代QFP在2005年开始设计,是一个40核的并行处理器,它是两块芯片构成的一套,报文处理芯片叫Popeye,包含40个核心160线程并针对网络处理对内存访问做了优化,同时还内置了大量的硬件加速器件,而流量管理芯片叫Spanich提供大量的转发队列。

第一代QFP伴随着ASR1000在2008年正式发售,主要是满足用户40Gbps以内的广域网需求。后期也裁剪了芯片推出了ASR1001等2.5Gbps低端平台。

第二代QFP

第二代QFP伴随着工艺进步将流量管理芯片报文处理芯片整合在一起,并且将处理器内核提升到了64核256线程. 这一代芯片可以通过两块并行的方式提供100Gbps的吞吐能力(ESP100/ASR1002-HX),也可以四块并行提供200Gbps的处理能力(ESP200),但是第二代QFP处理器还是使用外置的加解密引擎和以太网控制器

第三代QFP

第三代QFP进一步把核心数提升到了224核896线程, 当然某友商肯定一开口就要比核心数了,事实上这些友商芯片的竞争对手是和QFP同源的LightSpeed Plus芯片(3584个线程,用于运营商业务)。核心数相对于其它平台较少的原因在于大量的企业网软件功能需要大量的Cache,而那些数千核的处理通常因为Cache不够根本就无法支持复杂的软件特性。第三代QFP的亮点是内建了加解密引擎,内建了以太网控制器,支持MACSec,同样也支持双路互联(ESP200-X),未来也有4路互联的某平台会发布..

ASR1000架构

介绍转发流程之前,我们先来看一下ASR1000的硬件架构,以模块化的ASR1006-X机箱为例:

整个系统分为路由处理模块(RP)、转发引擎(ESP)、线卡模块(SIP/MIP/EtherentLC)、接口卡(SPA/EPA).转发架构采用集中式转发,即所有的线卡仅将报文转发至ESP,待ESP处理完后转发给出方向的线卡。

转发引擎带宽标定

国内很多企业总喜欢在标书文件上面做一些处理,例如接口最大带宽、双向带宽、交换带宽等名词。思科QFP处理器则一贯保持最朴实的数据,例如ESP100X标识的就是能够处理的穿越转发引擎的流量为100G(100G进、100G出),同理ESP200X标识200G进、200G出。虽然L2-SubSystem支持240Gbps的Serdes但是没必要去把用不到的数据给客户。而这个数据通常不是简单的包转发处理能力,而是包含了NAT、FW、DPI、QoS、ACL等多种软件功能同时打开时的处理能力。

QFP转发架构

入方向线卡

思科线卡架构分为三种、SIP卡用于接第一代和GSR、7600、CRS共享的SPA接口卡,速率通常在10Gbps以下,支持丰富的广域网线路类型(ATM/POS/E1/E3…),伴随着MSTP的逐渐普及,又推出了2x10GE+20x1GE或者6x10GE的以太网线卡ELC,后期伴随着每槽位100G的带宽需求又推出了MIP100线卡和对应的2x40GE/1x100GE/10x10GE/18x1GE的以太网接口卡EPA. 转发流程大同小异,我们以SIP卡为例。

  1. 入方向的包优先级分类
    • 分类可以基于802.1p, IPv4 TOS, IPv6 TC, MPLS EXP
    • 可以配置基于端口或者基于VLAN
  2. 入方向包括一个128MB的缓存,基于每个接口各分配了一个高低优先级队列
  3. 入方向调度器
    • 默认:所有端口采用加权公平队列
    • 超额带宽所有接口共享
    • 超额带宽权重分配可以基于接口调整
  4. SPA汇聚ASIC从入栈缓冲队列中选择报文并通过使用Interconn ASIC转换为ESI总线将报文传送给ESP
  5. ESP通过控制信令可以实现回压操作(BackPressure), 当ESP繁忙过载时,可以使用这样的方式使得SIP卡上对低优先级队列丢包而保证高优先级队列.

最常用的SIP40结构如下:

MIP100结构如下,注意到了么,Ezchip的NP5c只能做一个线卡处理器做点最简单的转发优先级控制的事情,可见QFP处理器的复杂程度了吧。

入方向可以通过如下命令查看分类器和buffer使用情况

ASR1000

ESP处理

所有有的软件转发功能都在ESP上完成,转发流程如下 

  1. 每个报文都将通过和线卡互联的总线送到GPM中保存
  2. 转发的软件进程在PPE上运行,并且可以通过访问、操作GPM来处理报文
  3. DST(Distributor)为一个报文调度器,它将报文调度到空闲的PPE上处理

注意:很多调度器采用五元组调度到某一个核心上处理会导致大象流性能很差的问题,但是QFP这里采用完全无状态但完全保序的调度算法将报文调度到空闲的核上处理。通常大象流来自于数据中心互联的场景中,很多安全设备基于流的调度(FlowBasedDistribution,FBD)会极大的影响两端主机的通信性能,而QFP则没有这样的顾虑,这也是很多客户在连接公有云专线(ExpressRoute)时也喜欢使用ASR1000的最大原因,它能够保证单个大象流多达54Mpps的处理能力。4.每个PPE线程按照一个名叫FIA(Feature Invocation Array)的顺序处理报文,这个FIA类似于一个DAG,常见的FIA如下:

注: 传统的网络处理器使用固定的流水线结构, 使得在多种业务叠加时, 不同的业务都要经过一个冗长的报文处理流水线, 极大地影响了报文处理延迟和整机吞吐量。当需要增加新的业务时, 通常需要很长时间来修改整个流水线。QuantumFlow处理器引入了Feature Invocation Array的处理机制, 为不同的业务类型提供灵活的流水线结构, 节省了计算资源的消耗,同时降低了整机的报文延迟。这种灵活的流水线结构,使得多种业务可以快速叠加在原有的网络架构下。

5.[可选]如果报文需要加解密处理,PPE会发送指令让加解密协处理器从GPM读取报文,然后进行相应的加解密操作后写回到GPM,在第一代和第二代都需要通过SPI总线传送到专用的加解密芯片处理,而第三代QFP直接在芯片内部就处理了

  1. PPE将报文调度到外部的包缓冲DRAM,并放入特定的队列中,通常QFP会内置数十万个队列帮助客户配置灵活的策略,而这些集中式的队列在MSTP Hub时相对于传统的基于端口的队列非常有效。您可以将大量的队列放置在一个物理接口上(数千个子接口或者数千个IPSec隧道都可以使用这些队列).

  2. 有一个硬件的调度器会从包缓冲内抽取报文,然后基于优先级和MQC配置进行调度.调度器有一个很牛逼的功能叫三参数调度器,相对于最大最小值添加了一个新的参数,可以实现对空余带宽的灵活调度(BW Remaining Ratio/Pct).

  3. 最后报文通过调度器离开ESP送往出方向的线卡.

整个QFP的内部架构图如下:

出方向线卡

  1. 互联ASIC通过总线收到来自ESP的数据包
  2. SPA汇聚ASIC接收到数据包以后将其放入出栈缓存
  3. 出栈缓存为8MB也分为64个队列,并可以设置为高低优先级队列
  4. SPA汇聚ASIC从合适的队列中选择报文并传送给SPA总线(优先选择High Queue)
  5. SPA卡可以通过SPI总线FIFO状态对流量进行回压操作
  6. SPA卡将报文传送到网络接口, 完成转发

运维技巧

整个转发流程如下,丢包查看的方式可以按照如下命令执行

  1. show interface
Router

  1. show plim on subslot
Router

  1. show plim on slot
Router

  1. 查看SIP卡到ESP的Serdes
Router

5.查看ESP接收方向的Serdes

Router

6.查看QFP的IPM


Router

查看QFP处理时的报文情况

Router

查看OPM

Router

抓包分析

QFP内置抓包工具可以通过这个功能将报文捕获后导出成pcap格式

HQ-InternetGW

Packet-Trace

还有一个更有用的功能是Packet-Trace,思科的TAC和研发非常喜欢用的工具.例如我要从某个接口捕获某个网段的报文处理情况,可以通过如下方式打开debug

HQ-InternetGW

检查debug配置,当然这里面还可以加一些和某个软件特性相关的debug

Router

查看捕获的报文

Router

停止debug并查看

Router

思科第三代QFP芯片转发架构及运维技巧》来自互联网,仅为收藏学习,如侵权请联系删除。本文URL:http://www.bookhoes.com/3988.html