在前几天的专题中,我们拆解了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查询动作抽象为这些步骤:
实际上,无论是在路由器还是交换机上,TCAM资源都是非常宝贵的。一般用于需要高速查表的FIB表和ACL表。
由于IPv6的地址本身就需要占用128bit,所以,IPv6表项在TCAM中一般都以640bit单位分配。
对ASR9K的拆解就告一段落了。让我们小结一下心得:
明天我们将拆解另一种路由器的实现。
本期问题:
为什么LEM表也可以不需要在TCAM中存储?
上期遗留问题:
在一台ASR9906上配置了双主控,4块线卡和5块交换网板,那么,控制平面的功能由几颗CPU进行分担?
答案:6颗。双主控和4块线卡分担控制平面功能,而交换网板的CPU仅实现仲裁及各芯片状态监控。