2.3 多层交换原理
CCNP SWITCH 300-115认证考试指南
许多Catalyst交换机还能够基于数据包中所携带的OSI 3-4层信息来转发数据帧。这种转发行为被称为多层交换(MLS)。从本质上而言,此时2层交换同样会被执行,因为高层信息通常被封装在2层以太网的帧结构中1。
2.3.1 多层交换的类型
Catalyst交换机支持两代不同类型的MLS(多层交换):路由缓存(第一代MLS)和基于拓扑(第二代MLS)。本节涵盖了两代不同类型的多层交换的相关主题,尽管基于Cisco IOS软件的交换平台,如Catalyst 2960、3750、4500和6500系列,只支持第二代基于拓扑的MLS,但是你依然需要掌握这两种类型的MLS,以及它们之间的差别。
路由缓存——第一代MLS要求交换机拥有两个重要的组件:路由处理器(RP)和交换引擎(SE)。RP必须对数据流2的第一个数据包进行处理,并作出转发决策。SE遵循第一个数据包的转发决策,并执行转发行为,然后在自己的MLS缓存中建立一个类似于“快捷方式”的条目。当SE转发后续属于相同数据流的数据包时,它便可以根据已经建立在缓存中的条目,直接对数据包进行转发。
这种类型的MLS也被称为NetFlow LAN交换、基于流或按需交换以及一次路由,多次交换。RP必须对新数据流的第一个数据包进行检查,然后才能为SE建立快捷转发的条目。尽管基于Cisco IOS软件的Catalyst交换机并不使用这种方法来转发数据包,但是交换机仍然可以利用这项技术生成与数据流相关的信息和统计内容(例如Cisco的NetFlow特性)。
关键
基于拓扑——第二代MLS由专用硬件提供支持,同样具备明显区分的RP和SE功能。RP使用3层路由信息来构建和预生成一个描述所有已知网络拓扑的数据库。该数据库被编译为某种硬件形式,拥有高效的查询效率。SE借助拓扑数据库,可以实现数据包的高速转发。数据库使用最长掩码匹配的原则查找正确的3层目的地。当路由拓扑发生变更后,以硬件形式存在的数据库可以被动态地更新,并且在更新过程中不会对性能产生影响。
这种类型的MLS被称为Cisco快速转发(CEF)。如上所述,在交换机上所运行的路由进程会把最新的路由表数据库下载到硬件形式的转发信息库(FIB)区域中,从而提供高速的数据转发。第11章将对CEF进行更为详细的讨论。
提示:
尽管多层交换的RP和SE功能相互作用,但是它们却能够各自独立地工作,就好像位于不同的“层面”一样。交换机的控制层面(control plane)包含RP以及所有用于控制或管理交换机的进程,而数据层面(data plane)则存在于SE中,负责数据的转发。
2.3.2 追踪数据包
3层数据包在穿越多层交换机时所遵循的路径与2层交换类似。当然,不同之处在于交换机必须增加一些用于决策3层转发的方法。除此以外,3层数据包在转发时还可能遇到一些让人意想不到的情况。图2-4描绘了一台典型的多层交换机和转发数据包时必须执行的决策过程。与2层交换一样,数据包在到达交换端口后会被转至正确的入站队列。
当一个数据包在经过入站队列的调度并脱离队列之后,交换机需要检查数据包的2层和3层目的地址。对于多层交换而言,数据包发往哪里的决策是基于两个地址表(CAM和FIB),而怎样发送数据包的决策仍然基于访问控制列表。
交换机的专用硬件能够同时作出所有多层交换的决策,在这些过程中需要用到如下功能表:
2层转发表——使用目的MAC地址作为索引与CAM表进行比对。如果一个数据包需要从一个子网发送给另一个子网,那么此时帧结构中的目的MAC地址应当是子网网关(即交换机3层接口或SVI接口)的MAC地址。对于这种情况,CAM表的作用仅仅指示了数据帧需要提交给3层进行处理3。
3层转发表——与CAM表类似,交换机使用目的IP地址作为索引来比对FIB表,并找到最长匹配的条目(包括地址与掩码),然后得到下一跳的3层地址。FIB表还包含了下一跳路由器的2层MAC地址以及相应的出站交换端口(包括VLAN ID),因此交换机无需再执行后续的信息查找。
安全ACL——入站和出站的访问控制列表被编译为TCAM条目,因此交换机只需要查找TCAM表即可作出是否转发数据包的决策。
QoS ACL——交换机能够通过查找QoS TCAM表来执行数据包分类、限速和标记的策略。
与2层交换一样,数据包最后必须被交付给正确的出站接口和出站队列。
在执行多层交换的过程中,数据帧的一些字段必须被修改或重写,这与路由器进行路由转发时是一样的。例如,入站数据帧的目的MAC地址字段最初包含的内容是多层交换机3层入站接口的MAC地址。然后,交换机执行FIB表查找,确定了该数据包的下一跳IP地址和MAC地址。
数据帧原始的目的MAC地址(多层交换机的3层接口)必须改写为下一跳的2层地址。在数据帧被转发出去之前,数据帧的2层源地址也必须改写为多层交换机出站接口的MAC地址。和所有路由器一样,数据包IP包头中的生存时间(TTL)字段也必须减去1。
由于数据包的3层信息(TTL)发生了变化,因此IP包头的校验和应当被重新计算。同样地,数据包的2层和3层内容都发生了变化,那么2层校验和也应当被重新计算。换句话说,在以太网数据帧从出站队列发送出去之前,该数据帧相当于执行了重写操作。不过无需担心的是,所有这些重写操作都是通过专用硬件高效完成的。
2.3.3 多层交换
为了使用上文所介绍的并行决策过程(即转发到哪里、是否转发和怎样转发的决策是同时完成的)对数据包进行转发,数据包必须具备MLS的条件,并且无需执行其他的决策。例如,CEF能够直接转发大部分主机之间的IP和IPv6数据包,只要数据包的源和目的地址(包括MAC和IP)是已知的,并且无需对其他的IP参数进行操作。
某些数据包无法被CEF直接转发,需要执行进一步的处理。这些处理行为是在转发决策的执行过程中通过一种快速检查完成的。如果一个数据包匹配下面的条件,那么它会被打上等待进一步处理的标记,然后被“踢给”(punted)交换机的CPU来执行进程交换:
ARP请求和回复;
路由器需要对IP数据包进行回应(TTL超时、最大传输单元[MTU]溢出、需要执行分片等);
使用单播来中继转发IP广播(如DHCP请求数据包在配置了ip helper-address命令的接口所执行的操作);
路由协议更新;
Cisco发现协议(CDP)的数据包;
数据包需要执行加密;
数据包触发了网络地址转换(NAT);
非IP数据包(IPX、AppleTalk等)。
如你所料,那些被“踢给”CPU执行进程交换的数据包的转发效率会远远低于直接由硬件转发的数据包。因为额外的处理过程将延迟更多的时间并消耗CPU资源(CEF转发不会消耗路由器或交换机的CPU资源)。虽然最为理想的情况是所有的数据包都执行CEF硬件转发,但是这似乎并不可能实现。
1译者注:请读者注意本书在描述一个数据单元时的用词:数据帧,表示此时关注的是它所携带的2层信息;数据包,表示此时关注的是它所携带的3层信息;数据段,表示关注它所携带的4层信息。事实上,回顾CCNA中已经学习过的知识,常见的IP数据包需要按照OSI模型从高到低的层面顺序进行封装。也就是说,这些数据包携带了数据净荷、UDP或TCP端口信息、IP地址信息以及2层帧结构。
2译者注:简单地来说,一个数据流是指具有相同特点的一系列数据包,你可以选择不同的关注条件来定义一个数据流。例如,去往同一个IP地址的数据包是一个数据流;来自于同一个IP地址的数据包也是一个数据流;甚至于所有拥有IP优先级5的数据包也可以是一个数据流。
3译者注:一台主机在生成一个数据包时,它会首先检查数据包的目的IP地址是否与自己处于同一子网。如果是,那么主机会发送询问该目的IP地址对应MAC的ARP请求,然后封装请求得到的MAC地址作为数据帧的目的MAC;如果不是,那么主机此时发送的ARP请求询问的不再是目的IP所对应的MAC地址,而是网关的MAC地址。因此,网关的MAC地址将被封装作为数据帧的目的MAC地址。