Cisco快速转发技术及其使用
王振武
---- Cisco快速转发(Cisco Express Forwarding,CEF)是一种高级的第三层IP交换技术。可以在网络的任何地方使用CEF,特别是在企业骨干网的交换方面。此外,CEF可以优化像Internet这样带有大规模的、动态数据流的网络的性能和伸缩性。在网络核心中,骨干路由器上的CEF提供了高性能和伸缩性,用来对付网络规模的不断加大和稳定增长的数据流量。CEF是一种分散式交换机制,它随着接口卡数量和安装在路由器中带宽的变化而线性地变化。
一、CEF的优势
---- CEF可以通过大规模的动态通讯方式优化网络的性能和伸缩性,它的优点如下。
---- 1.改善路由器效率
---- 和常规的快速交换路由相比较,CEF可以使用较少的内存容量来实现数据包的转发,这样,就可以节省更多处理器的资源,使得处理器能够专用于第三层的服务,比如提高服务质量(QoS)和加密功能等。
---- 2.良好的伸缩性
---- 当启用分散式CEF模式时,CEF的每个线路卡上维护着一个与转发信息库 (Forwarding Information Base,FIB)和邻接表相同的拷贝,它能独自提供完全的交换能力。
---- 3.提高网络性能
---- 在大规模的动态网络中,CEF能提供了更好的交换的一致性和稳定性。在动态网络中,因为路由的改变会导致快速交换高速缓存条目频繁地失效,这些变化可能的结果就是要通过路由表对数据进行过程交换,而不是通过路由高速缓存进行快速交换。因为FIB查阅表中包含所有路由表中已知的路由,这样就不用维护路由高速缓存了,也不用采用快速交换和过程交换相互转换这种转发方案了。CEF能够比典型的高速缓存技术更有效地交换数据流。
---- 尽管CEF是一种高级IP交换技术,支持很多通讯媒体,但它并不是支持所有的通讯方式,目前CEF支持ATM/AAL5snap、ATM/AAL5mux、ATM/AAL5nlpid、帧中继、以太网、FDDI、PPP、HDLC和隧道(tunnel)等。
二、CEF操作使用的部件
---- 为了实现CEF的交换功能,CEF将常规路由器中存储在路由高速缓存中的信息转而存储到几种为CEF专门设计的数据结构中。为了有效地进行数据包转发,这种数据结构要保证能进行优化的查询。CEF的2种主要部件如下。
---- 1.转发信息库
---- CEF利用转发信息库(FIB)来进行基于IP目的地前缀的交换决策。FIB从概念上讲类似于路由表或信息库,它维护着一个IP路由表中包含的转发信息的镜像。当网络中路由或拓扑结构发生了变化时,IP路由表就被更新,而这些变化也将反映在FIB中。FIB基于IP路由表中的信息,维护着下一网络段的地址信息。
---- 因为在FIB条目和路由表条目之间有一一对应的关系,所以FIB中包含了所有已知的路由,这样就不用维护路由高速缓存了,而先前的交换路径(比如快速交换和最优交换)都要维护路由高速缓存。
---- 2.邻接表(Adjacency Table)
---- 如果网络中的网络节点只通过单独一个网络段就可以穿越链路层而彼此到达对方,那么它们是邻接的。除了FIB外,CEF还利用邻接表来提供第二层的寻址信息。邻接表为所有FIB条目维护第二层的下一网段地址。当路由器发现存在邻接时就增加在邻接表中,每次生成一个邻接条目,CEF会为那个邻接节点预先计算一个链路层头标信息,并把这个头标信息存储在邻接表中。当决定路由时,它就会指向下一网络段以及相应的邻接条目,随后即在对数据包进行CEF交换时用它来进行封装。
三、CEF操作模式
---- CEF的操作模式有2种,即集中CEF模式和分散CEF模式。可以通过其中的任意一种来启用CEF,同一时刻用户只能使用其一种模式,但并不是所有的Cisco路由器都支持这2种模式,必须查阅所使用的产品资料,以确定它是否支持集中CEF模式或分散CEF模式,比如在Cisco 7200系列路由器上就不支持分散式CEF模式。
---- 1.集中CEF模式
---- 当启用集中CEF模式时,CEF的FIB和邻接表驻留在路由处理器中,路由处理器来执行快速转发,见图1。对于CEF交换来说,当线路卡不可用时,或者需要使用的功能与分散CEF交换不兼容时,就可以使用CEF模式。
![点击在新窗口查看原始图片](http://www.pcworld.com.cn/2002/back_issues/2205/pics/020532_01_02.jpg)
---- 2.分散CEF模式
---- 当启用分散式CEF(dCEF)时,线路卡(例如VIP线路卡或者GSR线路卡)维护着一个与FIB和邻接表相同的拷贝。线路卡在端口适配器之间执行快速转发,这样,在进行交换操作时就无须RSP的参与了。dCEF使用一个“内部过程通信”(Inter Process Communication,IPC)机制,在路由处理器和线路卡上,保证FIB和邻接表的同步,如图2所示。
![点击在新窗口查看原始图片](http://www.pcworld.com.cn/2002/back_issues/2205/pics/020532_01_03.jpg)
四、CEF的应用
---- CEF在Cisco路由器中改善了路由器的性能,优化了路由交换,但它的使用却并不复杂,用户只需要配置启用或禁止CEF/dCEF即可实现Cisco快速转发。当然,为了更好地使用CEF,需要对它做进一步的配置,如负载均衡功能等。其他常见的CEF命令见附表。
![点击在新窗口查看原始图片](http://www.pcworld.com.cn/2002/back_issues/2205/pics/020532_01_04.jpg)
---- 1.启用或禁止CEF
---- 如果用户的Cisco路由器中有接口处理器支持CEF时,就可以启用CEF。为了启用或禁止CEF,在全局配置模式下,利用下面的命令进行。
---- (1) 启用标准的CEF模式
---- 命令如下:
---- ip cef
---- (2) 禁止标准的CEF模式
---- 命令如下:
---- no ip cef
---- 2.启用或禁止dCEF
---- 当用户想让其线路卡执行快速转发时,则启用dCEF,这样,路由处理器就可以处理路由协议。为了启用或禁止dCEF操作,在全局配置模式下,利用下面的命令进行。
---- (1) 启用dCEF模式
---- 命令如下:
---- ip cef distributed
---- (2) 禁止dCEF模式
---- 命令如下:
---- no ip cef distributed
---- 当用户按全局模式启用CEF或dCEF时,所有支持CEF的接口都被默认地启用了。
---- 3.在特定的接口上启用或禁止CEF/ dCEF
---- 有时候,在某个接口配置了一项功能,而CEF或dCEF并不支持该功能。这时用户就可能需要在这个特定的接口上禁止CEF或dCEF。例如,策略路由和CEF就不能一起使用。用户可能想让一个接口支持策略路由,而让其他的接口支持CEF。在这种情况下,可以按全局模式启用CEF,而在那个打算配置策略路由的接口上禁用CEF。这样,除了那一个接口外,在其他所有接口上都启用快速转发。为了在某个接口上禁止CEF或dCEF,可以在接口配置模式下,使用下面的命令实现:
---- no ip route-cache cef
---- 当禁用了CEF或dCEF后,Cisco IOS自动使用下一个最快的交换路径来交换数据包。对于dCEF而言,下一个最快的交换路径是在路由处理器上的CEF。如果用户在某个接口上禁用了CEF或dCEF操作,尔后又想重新启用它,那么在接口配置模式下,可以使用下面的命令实现:
---- ip route_cache cef
---- 在Cisco 12000系列路由器上,dCEF被默认启用。没有用来启用dCEF的命令。而且,配置文件中并没有列出在路由器上启用了dCEF,也不要在Cisco 12000系列路由器接口上禁用dCEF。
---- 4.为CEF配置负载均衡功能
---- 负载均衡要依据源头数据包和目的地数据包信息的组合来进行。为了把数据传送到一个目的地,Cisco可以把数据分配到多条路径中,从而优化资源的使用。用户可以以目的地为单位,也可以以数据包为单位,来配置负载均衡。负载均衡决策机制要在数据出发的接口上做出,它分为以下2种方式。
---- (1) 按目的地配置负载均衡
---- 配置按目的地进行负载均衡功能后,路由器将使用多条路径来均衡负载,对于某一源头/目的地主机,数据包转发采用同一路径,即使有多个路径可用,也将这样处理,对于到达不同目的地的数据包则可以采用不同的路径。当启用CEF时,按目的地配置负载均衡的功能默认被启用。大多数情况下,都采用这种负载均衡方法。按目的地配置负载均衡时,要依赖于数据流的统计分布信息,所以随着源头/目的地对个数的增加,负载的平分会变得更为有效。你可以采用按目的地负载均衡的办法,来保证针对某个给定的源头/目的地主机对的数据包依一定的次序到达。
---- 由于启用CEF后,也就默认启用了按目的地进行负载均衡功能,为了利用按目的地进行负载均衡的功能,用户就不需要再执行任何其他操作了。
---- 为了禁止按目的地进行负载均衡的功能,在接口配置模式下,利用下面的命令进行:
---- no ip load-sharing per-destination
---- (2) 按数据包配置负载均衡
---- 通过按数据包进行负载均衡,使得路由器可以在路径上连续发送数据包,而不用考虑具体的主机或用户情况。这种负载均衡机制采用轮转的办法确定每个数据包采用哪条路径到达目的地。这种机制可以保证在多个连接上进行负载均衡,有助于保证任何单个源头/目的地对的路径都不会变得负担过重。如果有大量的、通过并行链路的数据是针对某单个源头/目的地主机对,那么如果按目的地进行负载均衡,将会使那个链路负担过重,而其他链路上的数据流却很少。启用按数据包进行负载均衡,用户就可以利用不同的路径到达同一个繁忙的目的地。
---- 利用按数据包进行负载均衡使得路径的使用情况变得合理。但是这种机制的直接后果就是对于一对给定的源头/目的地主机对的数据包可能会采用不同的路径到达,使得在目的地一端要对数据包重新排序,正是因为这个原因,这种类型的负载均衡对有些类型的数据流可能就不适应了。比如通过IP进行语音传送,由于这种类型的传送要求数据包按照顺序依次到达目的地。
---- 为了启用按数据包进行负载均衡功能,在接口配置模式下,利用下面的命令进行:
---- ip load-sharing(per-packet)
---- 当然,针对某个特定目的地启用按数据包进行负载均衡,则在所有可以向该目的地转发数据包的接口上,都必须启用按数据包进行负载均衡的功能。
---- 5.为CEF配置网络记账功能
---- 用户可能需要收集统计信息,以便更好地理解和使用网络中的CEF模式的功能。例如可能想收集这样的信息: 交换到某个目的地的数据包的个数和字节数,或者通过某个目的地交换的数据包的个数。为了给CEF收集网络记账信息,可以在全局配置模式中,利用下面的命令进行。
---- (1) 开始收集被快速转发到某个目的地的数据包个数和字节数
---- 命令如下:
---- ip cef accounting per-prefix
---- (2) 开始收集通过某个目的地被快速转发的数据包的个数
---- 命令如下:
---- ip cef accounting non-recursive
---- 当用户为CEF启用网络记账功能后,就在相应的路由处理器中收集记账信息。当用户为dCEF启用网络记账功能时,就在线路卡上收集信息。
---- 用户可以查看被收集的记账信息。为此在EXEC模式下,使用下面的命令进行:
---- show ip cef
---- 记账信息中详细描述了路由器转发数据包的情况,可以由此了解路由器的负载情况,从而决定如何优化路由器的配置,最大限度地发挥路由器的性能。