交换机转发数据原理

文档目录:

一,二层交换机数据转发整体过程:

二,多层交换机数据转发整体过程:

三,交换机数据转发过程中的细节技术

1CAM表的查找方式:IVL模式和SVL模式

1), IVL模式和SVL模式介绍

2),IVL型查找和SVL型查找介绍

3),从转发流程角度看IVL型查找和SVL型查找

4),总结

2TCAM查询和CAM查询



说明:在不同厂商的不同设备上交换机的转发机制的细节是各不相同的,这里仅仅是在大方向上介绍交换机的数据转发过程。

一,二层交换机数据转发整体过程:

034625272.png

034638688.png

CAM

1,帧从交换机入接口进入交换机,交换机对每个帧进行错误检查,然后根据优先级或服务等级的不同而排好队列。

2,排在队列前端的帧出队后,交换机的不同部分的硬件同时对帧进行3种处理。其中L2层转发决定该帧从哪个端口出交换机,出站和入站安全ACL检查以及分类和执行策略这两项决定该帧发不发出。

①,L2层转发:以svlivl两种查找方式查找CAM(Content AddressableMemory,内容可寻址存储器)表,查找成功则读取该帧的出站端口。查找失败则将其从属于VLAN内的每一个接口转发出去(不是广播出去)。

②,出站和入站安全ACL检查:对照由ACL生成的TCAM(Ternary Content AddressableMemory,三重内容可寻址存储器)表来决定对该帧的处理方式。

③,分类和执行策略:对照根据QOS生成的TCAM表来决定对该帧的处理方式。

3,经过第2步处理的帧组成出战队列,依次从出站端口出交换机。

说明:

◆二层交换机的数据转发过程没有对帧做任何改写的操作。

◆常说的CAM表,MAC表(MAC地址转发表)和L2FDB表都是指同一个东西,这里统称为CAM表。



二,多层交换机数据转发整体过程:

034702518.png

CAM                     FIB

1,帧从交换机入接口进入交换机,交换机对每个帧进行错误检查,然后根据优先级或服务等级的不同而排好队列。

2,排在队列前端的帧出队后,交换机的不同部分的硬件同时对帧进行3种处理。其中L2层转发决定是否需要L3层转发或者该帧从哪个端口出交换机,L3层转发执行三层交换机的三层交换功能,出站和入站安全ACL检查以及分类和执行策略这两项决定该帧发不发出。

①L2层转发:如果帧中目的MAC地址为交换机上第3层端口的MAC地址,则该帧是需要进行3层转发的帧(这一判断过程仍属于L2层转发)。接下来该帧进行过程。如果帧中目的MAC地址不是交换机上第3层端口的MAC地址,则交换机只执行①L2层转发过程。即svlivl两种查找方式查找CAM表,查找成功则读取该帧的出站端口。查找失败则将其从属于VLAN内的每一个接口转发出去(不是广播出去)。

②L3层转发:使用目的IP地址来查找FIB表,在表中找到最匹配项(根据掩码),读取下一台IP地址,下一跳MAC地址,出站端口(以及VLAN),因此没有必要进行对CAM表的查询。然后交换机根据从FIB表中获得的信息重写该帧的下一跳MAC地址(二层改写),TTL值减1(三层改写)以及重新计算二层和三层的校验和,然后放入出站队列。

出站和入站安全ACL检查:对照由ACL生成的TCAM表来决定对该帧的处理方式。

④,分类和执行策略:对照根据QOS生成的TCAM表来决定对该帧的处理方式。

3,经过第2步处理的帧组成出战队列,依次从出站端口出交换机。

说明:

1,三层交换机的数据转发过程如果仅仅进行L2层转发,那么不会对帧做任何改写的操作。如果进行了L3层转发,那么帧将会被重写。

2,对于L3层转发过程,上面仅仅简单说明是查询FIB表,实际上L3层转发相当复杂,以后在写路由器转发数据原理中会详细说明。



三,交换机数据转发过程中的细节技术

1CAM表的查找方式:IVL模式和SVL模式

1), IVL模式和SVL模式介绍

IVLIndependent Vlan Learning ,独立VLAN学习):就是每个VLAN有一个”MAC-端口映射表,同一个MAC可以出现在多个表里面。其实这里所说的表是指逻辑上的表,实际上在交换机中还是只有一个表,如果将VID相同的记录都提取出来组成一个表,那么就一个物理上的表在逻辑上就可以认为是多个表了。

SVL(Shared VlanLearning ,共享式VLAN学习):在交换机内建一张大表,映射关系是”MAC-VLAN-端口。而且,一个MAC在表中只出现一次,只属于一个VLAN

SVLIVL是交换机内MAC表存在的两种方式(IEEE 802.1Q定义)。而SVL在绝大多数情况下都是有效的,因为一般来说很少有同一设备(相同的MAC地址)同时在链路层连接到不同Vlan。不过对于有些多网卡,采用同一个虚Mac,连接到不同Vlan的服务器,SVL就有问题了。当然,绝大多数PC上不会多于一个网卡的,也不会有太多复杂的配置,连接到SVL交换机上是不会有问题的。

IVL模式是独享式的MAC地址学习模式,各个VLAN内学习到的MAC地址为各个VLAN所有,不会共享给其他VLAN。我司多数交换机为这种MAC学习模式。SVL模式是共享式MAC地址学习模式,某一个VLAN学习到的MAC会被其他所有VLAN共享使用。

2),IVL型查找和SVL型查找介绍

IVL型查找:在MAC表中以MACVID为主键进行储存。这样,同一个MAC就可能由于VID的不同而在MAC表中存在多条记录。

①.根据MACVIDMAC表中寻找,找不到转

②.向找到的port转发packetend.

③.packet携带的vid对应的整个VLANport转发,end.

SVL型查找:在MAC表中以MAC为主键进行储存,也就是说同一个MACSVL方式下只能存在一个记录在MAC表中。

①.MAC中先根据MAC寻找相应的记录,找不到转

②.记录中的VIDpacket中携带的VID一样,得到相应的port;不一样转

③.packet转发到相应的portend.

④.packet携带的vid对应的整个VLANport转发,end.

⑤.dropend.

3),从转发流程角度看IVL型查找和SVL型查找

a、对于支持IVL的交换机,转发流程分以下几步

根据帧内TagHeaderVLAN ID查找CAM表(L2FDB表),确定查找的范围;

根据目的MAC查找出出站端口

如果在CAM表(L2FDB表)中查找不到该目的MAC,则该报文将通过广播的方式在该VLAN内所有端口转发;

同时该以太网帧的源MAC将被学习到接收到报文的端口上。

⑤CAM表(L2FDB表)中的MAC地址通过老化机制更新。

在转发的过程中,不会对帧的内容进行修改。

b、对于支持SVL的交换机,转发流程分以下几步

根据帧的目的MACCAM表(L2FDB表),查找相应的出端口。

判断出端口的VLAN ID和报文Tag Header内的VLAN ID是否匹配,匹配则转发,不匹配则丢弃;

如果在CAM表(L2FDB表)中查找不到该目的MAC,则判断出端口的VLAN ID和报文Tag Header内的VLAN ID是否匹配,不匹配直接丢弃;匹配则在该VLAN内广播;

④CAM表(L2FDB表)中MAC地址通过老化机制来更新。

在转发的过程中,不会对帧的内容进行修改。

4),总结

SVLIVL细节过于复杂,由于MAC地址和VLAN号码一般是一一对应的,我们可以简单的把两者等同起来。甚至在多VLAN局域网中便于理解我们可以直接认为交换机就是以VLAN号码来作为CAM查询特征的。


2TCAM查询和CAM查询

TCAM具有速度快、实现简单的优点,但是它也具有三个不足之处:

与一般的随机存储器RAM相比,单位比特的TCAM更为昂贵,而且存储芯片的容量相对要小一些。

由于TCAM使用的是并行匹配比较方式,所以TCAM芯片的功耗较大。查找过程所有关键字表项都进行了比较,但是实际能够匹配上的关键字只是几项,因此大部分的比较操作都被浪费了。

③TCAM需要保证前缀较长的关键字保存在前缀较短的关键字之前,这种关键字之间的顺序关系使得TCAM的关键字更新工作变得相对复杂了。例如,当加入一条新的表项时,为了能够仍然保持关键字间的顺序关系,就需要移动一些前缀长度比新表项要长的一些表项,因此TCAM的更新操作较为复杂。

注意:TCAM查询不仅仅用于二层交换,三层路由中也要用到。

与其他常用的查询方式来说明TCAM查询:

我们常用的随机存储器通过输入地址来返回该地址处所对应的数据信息。

②CAM的访问方式不同,它只需要输入关键字的内容,CAM就会将此关键字与CAM中所有的表项同时进行匹配比较,最后返回匹配表项在CAM中所对应的地址。这里同样需要遵循最长匹配原则。

为了能够使用CAM来进行最长匹配查找,我们可以为每一类可能的匹配长度要求使用一个CAM,每个CAM保存对应需要匹配长度的所有表项集合。每一个CAM(每一种匹配要求)中再进行普通CAM查询。而TCAM表的所有表项需要分成哪些类就是由TCAM要素中的掩码来决定的。

以下图详细说明TCAM机制:

034742108.png

①ACE(匹配语句)转化为TCAM表项:4ACE语言总共产生了2类匹配需求,图中的Mask1Mask2,且Mask1Mask2前。( TCAM规定在所有匹配的表项中选取地址最低的表项作为最后的结果。为了能够进行最长前缀路由的查找,我们就需要保证在TCAM的低地址存储前缀较长的关键字表项,而在地址高的区域存储前缀较短的关键字表项)且Mask1下有一个CAM表项,Mask2下有三个CAM表项。

②TCAM查询:提取帧头关键字(134bit),同时进入每一个MaskCAM查询下。在Mask1的查询中,如果134位的帧头关键字bitwise AND 134位的 Mask1(帧头关键字与掩码进行逐位AND计算)的结果等于TCAM表项 bitwise AND Mask1的结果,那么查找成功,获得对该帧的处理方式,否则查找失败。

对于含有四层端口策略的ACE,一个TCAM表项还需要根据不通LOU值来拆分成多个TCAM表项。所以在上述查询过程最后还要加上一个独立的根据LOU来查询的过程。在TCAM中,可用的LOU相当有限,所以对LOU的使用应相当谨慎,避免出现LOU溢出。当然少量的包含四层接口的ACE是可以接受的。

对该帧进行处理:TCAM查询获得的处理方式不仅仅有允许拒绝2中,TCAM式查询还支持其他比如指向QOS策略的索引值和指向下一跳路由选择表的指针等处理方式。





四,参考文献:

CCNP SWITCH 642-813 OfficialCertification Guideby David Hucaby CCIE 1624

《基于TCAM的高速路由查找》作者:清华大学计算机科学与技术系徐恪,吴建平,吴剑。