在前几天的专题中,我们拆解了ASR9900的转发线卡、交换网板、NP芯片、控制平面实现。
在大型分布式系统设计中,还有一个要点是资源的分配。
对于转发平面而言,最重要的资源就是表项资源,也就是TCAM资源的分配。
让我们重温一遍ASR9900的转发流程:
数据包进入线卡之后进行流分类,确定是指向控制平面还是需要转发。
之后,是ACL和QoS分类,让NP查询TCAM,确定匹配的ACL和QoS策略。
接着,NP开始执行最关键的步骤:转发表查找,在这一步中,NP将会在TCAM中查询FIB表。
这里的FIB是广义的转发信息表项,不仅限于LPM(最长匹配)的三层路由,还会有MPLS的标签转发表和二层MAC转发表,这两种表项都属于LEM(精确匹配)。
此外,MPLS FEC(转发等价类)则既可能有基于LEM的(VLL/VPLS),也可能有基于LPM的。(MPLS L3 VPN)。
这些表项都在TCAM中存储和检索。
对于出方向,省却了FIB表的查找,但需要根据数据包头的Metadata将数据包转发到对应的端口,并查找出方向ACL/QoS策略并执行。这些也需要访问TCAM。
NP将以上的TCAM查询动作抽象为这些步骤:
- 构建查询键值。 如三层路由转发表的查询键值为前缀 Token。Token是VRF相关的一个ID; 而ACL的查询键值可以是IP前缀,也可以是UDP/TCP端口等。
- 位掩码(Bit Mask)。前面提到,TCAM的查询,可以某些bit为Not Care,如下图:
- 选择TCAM Bank。LightSpeed和Tomahawk线卡上,TCAM以BANK形式组织,每BANK可以配置为有512 Entry x 160bit的方式,也可以配置为128 Entry x 640bit的方式。多个BANK可以配置为一个BANK组(Bank Set)。 在Tomahawk线卡上,共有9个BANK组。其中5个为二层业务组,如物理接口与接口聚合组,VLAN,隧道等资源;2个为160bit组,用于IPv4 FIB和ACL;2个为640bit组,用于IPv6 FIB和IPv6 ACL。 而对于LightSpeed线卡,二层业务是不需要TCAM资源的。NP芯片内置了SRAM以及哈希引擎实现LEM(精确匹配查找),只有FIB和ACL需要消耗TCAM资源。 下表是不同TCAM的分区的用途。
实际上,无论是在路由器还是交换机上,TCAM资源都是非常宝贵的。一般用于需要高速查表的FIB表和ACL表。
由于IPv6的地址本身就需要占用128bit,所以,IPv6表项在TCAM中一般都以640bit单位分配。
对ASR9K的拆解就告一段落了。让我们小结一下心得:
- ASR9900采用多级交换架构,线卡上使用CISCO自研的NP实现转发;
- NP本身只有数据包处理和QoS管理能力。表项存储在TCAM中,VoQ交换采用FIA实现;
- 主控CPU和线卡CPU共同构建分布式控制平面,控制报文分布式处理;
- TCAM根据IPv4或MPLS/IPv6组织,有160bit/640bit两种组织方式;
明天我们将拆解另一种路由器的实现。
本期问题:
为什么LEM表也可以不需要在TCAM中存储?
上期遗留问题:
在一台ASR9906上配置了双主控,4块线卡和5块交换网板,那么,控制平面的功能由几颗CPU进行分担?
答案:6颗。双主控和4块线卡分担控制平面功能,而交换网板的CPU仅实现仲裁及各芯片状态监控。