之前写过一篇简单地三层交换机转发原理,本篇文章介绍二三层交换机内部交换原理,主要参考CCNP的内容。
1.二层交换原理
以太网交换机相比较集线器而言提供了如下几种形式的隔离:
- 限制冲突域范围在每个端口内。
- 主机可以工作在全双工模式。
- 带宽不再共享。相反的,每一个交换端口能够提供专用的带宽,甚至还包括从交换矩阵到另一个交换端口的整个转发过程。这里指数据帧从主机发出,到连接主机的交换端口,然后进入交换机的交换矩阵,最后到达目的端口,数据帧所能占用的带宽都是专用的。
- 错误帧不会被转发。
- 流量控制。
- 支持其他类型的智能过滤或转发。
一个数据帧穿越二层交换机一共经历如下几个步骤:
- RX交换端口。
- 入站队列。
- CAM和TCAM,注意以下是并行执行的。
3.1 入站及出站的安全ACL(TCAM)。TCAM表包含了经过编译的ACL,因此交换机可以通过查找该表,从而确定是否转发数据帧。硬件线速转发。
3.2 分类及限速的QoS ACL(TCAM)。同样也是用TCAM表。
3.3 二层转发表(CAM)。把数据帧的目的MAC作为索引进行查找。表内的内容为:MAC地址,出端口,VLAN。若无法找到,则数据帧被打上洪泛标记。 - 出站队列
- TX交换端口
接口队列通常有多个,它们能够容纳等待被发送的数据帧,并且各自拥有不同的优先级或服务等级。交换机通过QoS把重要的数据帧调度到更好优先级的队列中,以便于优先被发送。
2.多层交换原理
根据数据包的3-4层信息进行转发。
2.1多层交换的类型
思科的Catalyst
交换机支持两代不同类型的MLS(多层交换):路由缓存和基于拓扑。
- 路由缓存。第一代MLS要求交换机拥有两个重要的组件:路由处理器(RP)和交换引擎(SE)。RP必须对数据流的第一个数据包进行处理,并作出转发决策。SE根据RP的决策执行转发行为,然后在自己的MLS缓存中建立一个类似于『快捷方式』的条目用于指导后续相同流的行为。这种类型的MLS也被称为
NetFlow LAN
交换,基于流或按需交换以及一次路由,多次交换。RP必须对新数据流的第一个数据包进行检查,然后才能为SE建立快捷转发条目。 - 基于拓扑。第二代MLS由专用硬件提供支持,同样具备明显区分的RP和SE功能。RP使用三层路由信息来构建和预生成一个描述所有已知网络拓扑的DB。该DB被编译为某种硬件形式,拥有高效地查询效率。SE借助拓扑DB,可以实现高速转发。DB使用最长掩码匹配查找三层目的地。当拓扑变化后,硬件形式DB可以被动态更新,并且在更新过程中不会对性能产生影响。
这种类型的MLS被称为Cisco快速转发(CEF)。如上所述,在交换机上所运行的路由进程会把最新的路由表DB下载到硬件形式的转发信息库(FIB)中,从而提供高速转发。
2.2追踪数据包
对于多层交换机而言,数据包发往哪里的决策是基于两个地址表(CAM和FIB),而怎样发送数据包的决策仍然基于ACL。
一个数据帧穿越多层交换机一共经历如下几个步骤:
- RX交换端口。
- 入站队列。
- CAM,TCAM和FIB,注意以下也是并行执行的。
3.1 入站及出站的安全ACL(TCAM)。同样,入站和出站的ACL被编译为TCAM条目,查找TCAM中的决策。
3.2 分类及限速的QoS ACL(TCAM)。同样也是用TCAM表。
3.3 二层转发表(CAM)。同样使用目的MAC作为索引进行查找。
3.4 三层转发表(FIB)。与CAM表类型,根据目的IP进行查找。表中格式如下:IP地址,下一条IP,下一条MAC,出端口。 - 出站队列
- TX交换端口
数据包经过多层交换机,数据帧MAC会发生改写,TTL也会减1.这导致IP包头的校验和重新计算,同样2层校验和也应当被重新计算。不过无须担心,所有这些重写操作都是通过专用硬件高效完成的。
2.3多层交换
某些数据包无法被CEF直接转发,需要进一步处理。这些处理行为是在转发决策的执行过程中通过一种快速检查完成的。如果一个数据包匹配下面的条件,那么它会被打上等待进一步处理的标记,然后被交给CPU进行处理:
- ARP请求和回复。
- 路由器需要对IP数据包进行回应(TTL超时、MTU溢出、需要分片等)
- 使用单播来中继转发广播(如DHCP-relay)
- 路由协议更新
- Cisco发现协议(CDP)的数据包
- 数据包需要执行加密
- 数据包出发了网络地址转换(NAT)
- 非IP数据包(IPX、AppleTalk等)
这些被交给CPU执行进程交换的数据包的转发效率会远远低于直接由硬件转发的数据包。
3.交换表
3.1.CAM表
所有Catalyst交换机都使用CAM表来执行2层转发,学习到数据帧的源MAC被记录于CAM表,并附加老化时间戳,默认老化时间300秒。同样可以用命令配置静态CAM表条目。注意主机的迁移导致交换机从不同端口学到同一主机的MAC时候,原始MAC会被删除。
3.2.TCAM表
在传统的路由环境中,ACL能够选取,过滤或控制特定的流量。ACL由一系列访问控制条目(ACE)组成,并按照编号顺序对流量进行条件评估。ACL在对数据流量进行评估(或匹配)时候会占用一定的时间,导致数据包的转发延迟因此增加。
在多层交换中,ACL要求的所有比对过程完全由TCAM执行。这是一种基于硬件的评估方式,拥有近乎线性的比对速率。借助TCAM的出色性能,交换机仅需要执行一次表查找行为,便能够评估一个数据包与整个ACL表的条件。大部分的交换机都拥有多个TCAM表,因此入站和出站安全,QoS ACL等策略允许同时被评估。换言之,交换机能够做到并行作出2层和3层的转发决策。
Catalyst IOS软件中的TCAM中需要以下两个组件提供支持:
- 特性管理器(TM)-- 在访问ACL表创建或配置完成后,TM会把ACE编译或合并成TCAM表的条目。
- 交换数据库管理器(SDM)-- TCAM表会被划为几个支持不同功能的区域。SDM负责配置或调整TCAM子区域,为特定的交换功能提供充足的存储空间。
正常CAM表是二态精确查找(0或1),而TCAM是三态查找(0,1或X)。TCAM的条目由Value,Mask,Result三部分组成。
- Value。长度固定134比特,由源和目的地址,以及其他一些相关协议信息组成--所有内容都可以用于比对。
- Mask。同样134比特,掩码1对应Value位为完全匹配,0则为无须关心。
- Result。一系列数值,代表了在TCAM表查找完成之后需要执行的行为。例如,查找的结果可能是代表允许或者拒绝的二进制值,QoS限速的索引值,或是下一跳路由信息的指针。
如果ACE包含了端口操作符,例如gt,lt,neq,range,那么FM会在编译TCAM条目时,附加一个包含操作符和运算对象的逻辑操作单元(LOU)寄存器。注意,TCAM只支持有限数量的LOU。如果使用了逻辑比较操作符的ACE数量超过了可用的LOU数量,那么FM则会把这些ACE分解为多条只用常规匹配条件的ACE(使用eq操作符)。
参考
CCNP