CEFCisco Express Forwarding,Cisco特快交换)

一.简介

CEF(Cisco Express Forwarding,Cisco特快交换)技术是cisco推出的一种全新的路由交换方案,它具有良好的交换性能,增强的交换体系结构和极高的包转发速率。

 

二、路由器交换算法的简单回顾

 

    1.过程交换

  最初的Cisco路由器采用集中式CPU包交换,所有的包通过共享总线传到CPU,经路由表查找,CRC重算,再通过共享总线把包传到适当的线路卡上。

    2.快速交换

  到达某特定目的地址的IP包通常会引起数据包流,即假设交换过到特定目标的包之后,另一个很可能不久也会到达。通过构建最近交换目标的高速缓存,可以减少包在全路由表中查找同一目标的次数,这种一次路由,然后交换的方式称为快速交换,快速交换大大提高了路由器的包转发速率,因而成为Cisco路由器平台上缺省的交换机制。但有一点需要注意,IP路由表的改变会使得高速缓存无效,在路由状况不断变化的环境中,路由高速缓存的优势将受到很大限制。

   3.自治交换

  自治交换的特点是从CPU卸载了一些交换功能。在效果上,将路由高速缓存功能从CPU移到辅助交换处理器上,线路卡上的接收包先在交换处理器中完成本地路由高速缓存目标的查找,若查找失败时才中断CPU执行路由表查找。在此,Cisco将周期性计算路由的CPU改名为路由处理器,把辅助交换处理器改名为交换处理器。Cisco 7000系列的路由器上执行自治交换,可使吞吐量等性能进一步提高。

  4.分布式交换

  随着VIPVersatile Interface Processor,通用接口处理器)卡引入,路由器的交换体系逐渐向对等多处理器结构发展。每个VIP卡都包含RISC处理器,维护最新的由路由交换处理器产生的快速交换高速缓存的拷贝,并能独立实现路由交换的功能,高速完成两种类型的交换---本地VIP的交换和VIP之间的交换。

    5.CEF特快交换

如前所述,快速交换的高速缓存机制在Internet之类的高速动态路由选择环境(经常存在网络拓扑变化,路由改变、路由震荡等)中不能很好地伸缩,路由的改变导致高速缓存无效,而重建高速缓存(即执行过程交换的过程)在计算上开销很大;同时,随着互联网及其业务的迅猛发展,基于WEB的各种应用和交互式业务使得通信次数多而通信时间短的实时数据流大量增加,快速交换的高速缓存内容处于不断变化之中,重建高速缓存的负担加大,从而导致路由器性能的降低。CEF特快交换技术正是针对上述不足而设计提出的。

 

. CEF特快交换基本原理

1.CEF部件

  CEF是一种高级的第三层交换技术,它主要是为高性能、高伸缩性的第三层IP骨干网交换设计的。为优化包转发的路由查找机制,CEF定义了两个主要部件:转发信息库(Forwarding Information base)和邻接表(Adjacency Table)。

转发信息库(FIB)是路由器决定目标交换的查找表,FIB的条目与IP路由表条目之间有一一对应的关系,即FIBIP路由表中包含的路由信息的一个镜像。由于FIB包含了所有必需的路由信息,因此就不用再维护路由高速缓存了。当网络拓扑或路由发生变化时,IP路由表被更新,FIB的内容随之发生变化。

 

  CEF利用邻接表提供数据包的MAC层重写所需的信息。FIB中的每一项都指向邻接表里的某个下一跳中继段。若相邻节点间能通过数据链路层实现相互转发,则这些节点被列入邻接表中。

系统一旦发现邻接关系,就将其写到邻接表中,邻接序列随时都在生成,每次生成一个邻接条目,就会为那个邻接节点预先计算一个链路层头标信息,并把这个链路层头标信息存储在邻接表中,当决定路由时,它就指向下一网络段及相应的邻接条目。随后在对数据包进行CEF交换时,用它来进行封装。

 

CEF表是从路由表得来,邻居表是使用ARP解析得来的。

需要指出的是,CEF的转发信息不是存储在cache里的,因此也不存在过期作废或定时刷新,只有根据路由表的变化而进行的更改,通常很稳定。而且转发信息是从路由信息经过一定处理后转换过来的,也就是说,如果在转发信息里找不到某个数据包的转发信息,那么也不用费心到路由那里去了,因为那里肯定也没有。这个数据包的下场不是被扔掉就是转到其他转发线程中去,转发信息等于是路由信息针对于硬件转发的一个变形。

这样的结构布局保证了路由功能和交换功能的分离(软件上)。路由功能只处理三层以上信息,如路由信息处理、策略等,然后形成一个路由表,再根据这个路由表生成相应的转发信息。转发功能很明确,就是根据这些转发信息来工作,没有相关信息就拒绝。而不象MLS那样,遇到不认识的还得回头找路由问明白,那样降低了转发效率。 CEF在软件形式上实现了路由和交换功能的分离,而并不意味着路由器物理结构上的分离,所以它也可以在一些多层交换机和低端的路由器上实施。


2.CEF操作模式

CEF有两种模式:集中式和分布式。集中式允许一个路由处理模块运行特快交换,即FIB和邻接表驻留在路由处理模块中,当线路卡不可用或不具备分散CEF交换的功能时,就可使用集中CEF交换模式。

 

 

分布式(一般记作dCEF)允许路由器的多个线路卡(VIP)分别运行特快交换功能,前提是线路是VIP线路卡或GSR线路卡。中央路由处理器完成系统管理/路由选择和转发表计算等功能,并把CEF表分布到单个线路卡;每个线路卡维护着一个FIB和邻接表的相同的拷贝。线路卡在端口适配器之间执行快速转发,这样,交换操作就无需路由交换模块的参与了。DCEF采用一种内部过程通信机制来保证路由处理器和接口卡之间FIB和邻接表的同步。

 

四、基于 CEF 的负载平衡的实现

  当到达某一目的IP地址存在多条路径时,每条路径都有一个反映其代价的metric值,路由协议通过计算获得到达目的地址的具有最短metric值的路径,数据包通过该路径到达目的地址。负载平衡的目的则是要把流量分配到多条路径中,这样可优化资源的使用。CEF特快交换支持两种类型的负载平衡---按目的地配置的负载平衡和按数据包配置的负载平衡。

   1.按目的地配置负载平衡

  基本原理是:对于给定的一对源/目的IP地下,即使有多个路径可用,也可保证数据包采用同一路径;通往不同源/目的IP地址的数据流则倾向于采用不同的路径。通过采用按目的地负载平衡的方法,可以保证对某个源/目的IP地址对的数据包以一定的次序到达。当启用CEF时,按目的地配置的负载平衡被默认启用。

  2.按数据包配置负载平衡

  基本原理是:采用轮转法确定各个数据包按哪条路径到达目的地。这种负载平衡方法可使路由器在路径上连续发送数据包,即保证路径的使用状况比较好,但针对一个源/目的IP地址对的数据包可能会采用不同的路径,从而导致目的端对数据包的重新排序。这种类型的负载平衡对某些类型的数据流传送不是很合适(如VoIP数据流)。当然,若在某一源/目的IP地址对之间有大量的数据流,通过并行链路传送,如果按目的地负载平衡方式,将会使某条链路负担过重,而其他链路上的数据流很少,此时采用按数据包的负载平衡是合理的。

 

五.CET的操作


CEF
如果用户的Cisco路由器中有接口处理器支持CEF时,就可以启用CEF
为了启用或禁用CEF,可以在全局配置模式下利用下面的命令进行配置。
启用标准CEF模式 ip cef switch
禁用标准CEF模式 no ip cef switch

dCEF

当线路卡执行快速转发时,则启用dCEF,这样,路由处理模块就可以处理路由协议或者负责交换从旧的接口模块(不支持CEF交换的模块)过来的数据包。
Cisco12000系列路由器上,dCEF模式是缺省启用的。
所以启用dCEF的命令(ip cef switch)Cisco12000系列路由器上是没有意义的,在配置清单上也不会列出dCEF模式被启用。
为了启用或禁止dCEF操作,可以在全局配置模式下利用下面的命令进行配置。
启用dCEF模式 ip cef distributed switch
禁用dCEF模式 no ip cef distributed switch

有时候,在某个接口配置了一项功能,而CEFdCEF并不支持该功能,这时您就可能需要在这个特定的接口上禁止CEFdCEF。例如,策略路由和CEF就不能一起使用。您可能想让一个接口支持策略路由,而让其他的接口支持CEF。在这种情况下,可以按全局模式启用CEF,而在那个打算配置策略路由的接口上禁用CEF。这样,除了那一个接口外,在其他所有接口上都启用了快速转发。

在某个接口上禁用CEFdCEF,可以在接口配置模式: no ip route-cache cef
尔后又想重新启用CEF,在接口配置模式下,可以使用: ip route-cache cef

Cisco12000系列路由器上,您不可以在某个接口上禁用dCEF模式。