了解多层交换中的CEF FIB CAM TCAM

来源:http://blog.51cto.com/redant/314151

多层交换是指交换机使用硬件来交换和路由数据包,通过硬件来支持4-7层的交换。交换机执行硬件交换,第3层引擎(路由处理器)须将有关路由选择、交换、访问列表和QoS的信息下载到硬件中,以对数据包进行处理。

      MLS使用ASIC(Application-Specific Integration Circuit,应用专用集成电路)执行2层的重写操作。2层重写包括重写源与目标MAC地址以及写入重新计算后的CRC(Cyclic Redundancy Check,循环冗余校验)。传统的MLS是基于NetFlow的交换。3层交换引擎(路由处理器)和2层交换ASIC芯片协同工作,建立3层条目。
3层条目包括3种形式:
1.源IP地址(S)
2.源和目标IP地址(S/D)
3.包含4层协议信息的完整流信息(FFI)
例:
工作站A向B发送数据包,首先将包发送给默认网关即RSM(route switch modual),MLS-SE交换机根据数据包所包含的目标IP为B的IP而目标MAC为MLS-RP模块的MAC地址这一特性识别出该包为一个MLS候选包。交换机由此创建流候选条目,接收包,重写2层MAC地址和CRC,转发数据包。交换机将RSM转发的数据包视为enabler数据包。在看到候选数据包和enabler包后,交换机耕硬件中创建一个MLS条目,以便后续包的的转发。
基于CEF的MLS
CEF的MLS是基于控制平面信息和数据平面信息进行多层交换。
控制平面是指第3层引擎(路由处理器),数据平面指交换机用来进行硬件交换的硬件组伯(ASIC,Catalyst6500的Supervisor Engine和PFC模块)。
CEF是基于拓扑的转发模型,预先将路由信息加入Forwarding Information Base中,动态更新邻接表中的第2层重写信息,因此可以快速查找路由选择信息(IP邻接关系,下一跳IP地址,MAC地址)。
CEF的两个组件:
FIB:基于目标IP前缀的交换决策,类似于路由器的路由表,FIB表为路由表中转发信息的镜像。
邻接关系表:如果在两个节点间,数据链路层只有一跳,则称为彼子相邻。用来存储第2层编址信息,维护所有FIB条目的第2层址。3层的交换引擎和硬件交换组件都维护一个邻接关系表。
控制平面(3层信息)用软件建立FIB表和邻接关系表,然后将这些信息下载到数据平面。
Catalyst6500系列交换机中,MSFC子卡负责控制平面的操作,Supervisor Engine和PFC模块负责数据平面的操作。
 
交换机上第3层交换方式包括集中式和分布式交换:
集中式交换是在一个专用的ASIC上做出转发决策,此ASIC芯片为3层交换中所有接口的枢纽。此时由Supervisor Engine或第3层引擎做出路由选择、ACL、QoS和转发决策。使用集中式交换时,交换机性能取决于中央交换引擎和交换矩阵/总线体系结构。
 
分布式交换是使用3层交换机的接口或线路模块独立地做出转发决策。中央交换引擎将负责第3层转发、路由选择表和重写表与本地表(位于分布式交换的模块上)进行同步。分布式交换机将CEF FIB和邻接表的副本放在线路模块或接口中,由此各线路卡独立的做出转发决策,数据帧通过交换矩阵直接在端口间传输,而不借助中央交换引擎。(*使用分布式交换,系统性能为所有转发引擎之和)
Catalyst6500交换机使用集成交换矩阵(中央分布式交换引擎)和DFC线路模块的Supervisor Engine720(分布式交换线路模块)。
 
地址解析协议抑制:可以使得第3层引擎避免过多的ARP处理或基于ARP的DoS攻击。
过程:
1.收到数据包
2.使用glean邻接关系表,查看表中有没有相关目标IP的2层重写信息
3.如果有交换信息,则直接交换数据包。如果没有,则发送ARP请求获取重写信息
4.转发前几个数据包给3层引擎,载入抑制邻接关系表
5.在ARP响应前丢弃所有后续数据包。
6.接到ARP请求回复,清除抑制邻居关系表。添加邻接关系条目。
7.如果2秒内没有ARP回复,清除抑制邻接关系表,允许更多的数据包转发给3层引擎来重新发起ARPP请求。
 
交换表的体系结构:多层交换机使用高速内存表来建立路由选择表(CEF FIB和邻接关系表),桥接表,QoS表和ACL。
多层交换用专门的内存体系结构:CAM(Content addressable Memory)和TCAM(Ternary Content Addressable Memory)。CAM提供两种结果0和1,TCAM提供三种结果0、1和无关紧要。CAM表可以构建准确查找的表(MAC地址表),TCAM用于构建最长匹配表(根据IP前缀的IP路由选择表)。
CAM表用于存储2层交换表,交换机以2进制方式精确查找CAM表,如果没有就采用默认的Flood行为。步骤:1.将用于查找的关键字传递给哈希算法,哈希算法在CAM中查找匹配的关键字。2.哈希算法返回一个与关键字匹配的指针。3.交换机根据指针找到结果,从而避免了顺序搜索整个表。
CAM表包括:目标VLAN、目标MAC地址和目标端口等信息。交换机在CAM表中不仅查找精确匹配的条目,还查找与掩码值相匹配的IP地址条目。
TCAM表是一种为快速查找而设计的表,用于最长匹配。通过使用TCAM,就用ACL不会影响交换机的性能。TCAM中每个条目由:value(模式值)+Mask(掩码值)+result(结果)组成。这种条目被称VMR条目。
Value(模式值)指的是要匹配的模式,如:IP地址、协议端口、DSCP值
Mask(掩码值 )用于决定前缀
Result(结果值)指的是与模式和掩码匹配时的结果(TCAM中存储IP路由选择表,则结果为返回一个指向硬件邻接关系表中的一个条目的指针,该条目包含下一跳MAC重写信息)或根据ACL匹配时所采取的permit或deny措施(TCAM中存储ACL)。
 
TCAM定义了三种匹配方式:
1.精确匹配区域:存储第3层条目的区域,如IP邻接关系条目(包含IP地址下一跳信息“MAC地址”),第2层交换表和UDP扩散表。
2.最长匹配区域:包含多个3层地址条目组,按掩码长度降序排列。相同组内所有条目具有相同的掩码值和关键字长度。条目组可以通过从邻接组中借用地址条目的方法,动态的改变条目组的大小。重新启动系统后,重新配置的协议区域大小才会生效。
3.首次匹配区域:找到匹配后立即停止查找的区域,如ACL条目。
常见的TCAM协议区域:
精确匹配区域:in-adjacency(IP邻接关系)32 bit,12-switching(第2层交换)64 bit,udp-flooding(UDP扩散)64 bit。
最长匹配区域:ip-prefix(IP前缀)32 bit,ip-mcast(IP多播)64 bit
首次匹配区域:access-list(访问列表)128 bit
 
基于CEF的MLS的交换机默认情况下启用CEF,启用基于CEF的MLS和基于目标的负载均衡。
 
查看第3层引擎的CEF表:show ip cef [detail]
查看第3层引擎的邻接表:show adjacency
CEF将用ARP获得的MAC地址来填充邻接关系表,邻接关系表包含邻接节点的MAC地址重写信息和目标接口。CEF表中所有IP路由选择条目都对应于一个下一跳地址。当交换机收到目标IP非自身,目标MAC为交换机自身时,将在CEF表中查找目标IP所对应的转发MAC地址,然后从接口中传出。
单条CEF条目可能指向多个邻接关系条目。FIB表将维护该子网的前缀。子网前缀指向一个glean邻接关系条目。
如果接口配置了NAT或收到的数据包中包含IP报头选项,则需要对数据包进行特殊处理。邻接关系处理的特殊情况有:
1.Punt(转出)邻接关系条目:需要3层引擎进行处理或硬件交换不支持的特性
2.drop邻接关系条目:用于丢弃入站数据包
3.Null邻接关系条目:用于丢弃前往Null0接口的数据包,Null0接口用于过滤开自特定源的IP数据包
 
不能被硬件交换方式所支持的常见帧类型:
1.包含IP报头选项的数据包
2.源自/去往隧道接口的数据包
3.使用的以太网封装类型(非APRA)的数据包
4.需要分段的数据包
原文地址:https://www.cnblogs.com/mull/p/8575448.html