Switching is the process of mapping layer 2 to layer 3 addresses and forwarding to a destination interface.
Switching mode 有很多种,每种模式都有其特别的针对性,理解它们的不同对于我们合理的应用有着非常重要的意义。另外还有些QOS和Security技术需要特定的Switching mode.具体分析如下:
1、Process Switching(进程交换)
这是一种最基本的交换模式,在这种模式下,一条数据流(flow)中的第一个包(packet)将被复制到系统缓存区(system buffer)。其目的地址将会拿到路由表中去查询比对,路由器的处理器(CPU or Processer)同时将进行CRC校验,检查包是否正确。然后数据包的二层MAC地址将会被重写,替换为下一跳接口的MAC地址。
这样的过程将会继续,对这条数据流(flow)中的第2个、第3个数据包……相同的操作,包括查询路由表、重写MAC地址,CRC校验等。
这种方式无疑是延迟最大的,因为它要利用system buffer以及processor去处理每个收到的包。
但是我们仍然有机会使用这种交换方式,比如在进行基于每个包的负载分担时,或是debug ip packet时。
启用进程交换:
2、Fash Switching(快速交换)
快速交换要优于process switching,它采用了route cache(路由缓存)来存储关于某条数据流(flow)的特定信息,包括诸如目的MAC地址,目的接口等内容。这时我们只需要对一条数据流(flow)中的第一个包做process switching,并把信息存入cache,所有后续数据包,可以不必再中断system processor去执行查询等操作,直接从cache中提取目的接口,目的MAC地址等,这样大大加速了包转发速度。
fast switching在某些资料上可能被称为route-cache switching正是这个原因。
思科1600、1700、2500、2600系列路由器的ethernet、fast ethernet、serial接口默认采用的就是fast switching.
启用快速交换:
我们可以用ip route-cache命令,在接口上启用fast switching
show ip cache来检查fast switching的相关信息。
3、Optimum and Distributed Switching(最优或者分布式交换)
这两种交换模式,从原理上来讲都与fast switching极为相似,其区别在于optimum switching当第一股流的第一个数据包被处理后,同一股流的所有后续数据包的路径信息就存储在最优交换缓存(optimumed switching cache)中,它的速度要较平常cache要快。
distributed switching mode需要使用Versatile Interface Card这种硬件卡,又称VIP card.它会自已保存一份route cache,这样在查询时就不必要等待使用共享的系统缓存了(shared system buffer),无论相对于fast switching还是optimum switching来讲,都是比较快的。
这两种模式一般只在思科高端设备上有所应用,比如7200系列路由器。或者12000系列路由器。
启用最优或者分布式交换:
4、Netflow switching
这种模式是最值得参考的,它完全基于其它switching mode,重点在于对流经的数据包进行计费、监控、网管。但不得不提的是,这种模式因为也要存储相关信息,经过统计,大致65536条数据流(flow)会耗费4MB的system buffer.
启用Netflow switching:
在每一个接口上启用:ip route-cache flow
show ip cache flow
5、Cisco Express Forwarding(思科快速转发)
思科CEF是最有效地交换三层数据的方法,CEF交换比快速或者最优交换更先进,因为CEF交换对CPU消耗不大
CE采用了基于硬件的平台,数据,但它不仅仅是将数据都存入system buffer,而是将整个路由表、拓扑表,以及所有的下一跳地址、MAC地址全部进行“预存”,只要路由表、拓扑表中存在的条目,无论是否有数据请求发往其目的地址,都会提前预读取,预设置缓存。这样,当有新的数据请求发送时,就不需要CPU去查询目的接口,目的MAC地址等等信息,而是直接从缓存中读取,从而使转发速度得以大大提高。
启用CEF:
监控CEF:show ip cef
查看详细的CEF信息:show ip cef detail
CEF的负载均衡:
CEF可以在多条路径间负载均衡流量来交换数据包
1.基于目的:具有相同的源和目的的数据在每个方向上将使用相同的路径,可以确保数据包总是使用相同的路径,数据包总是按照他们发送的顺序到达目的,是启用CEF的默认负载均衡方式.
配置:接口下ip load-sharing per-destination
2.基于数据包:适用于需要流量在多条路径上负载均衡,基于数据包的负载均衡在不均衡的流量需要在多条路径上进行负载均衡时是非常重要的,基于每一个数据包的负载均衡方式并不能确保每一个数据包遵循相同的路径,数据包将无序到达.
配置:接口下
no ip load-sharing per-destination
ip load-sharing per-packet