快速转发CEF简介:

CEF采用一个4级每级256条通道结构的转发表来指明转发条目的位置,转发表有next hop等信息,涵盖了整个IPv4的地址范围,并有指针指向另一个邻接表。转发条目(MAC地址之类)都存储在一个单独的邻接表上。这两个表包括了所有的转发信息,而这些转发信息是根据路由表和ARP来构造的。

CEF简化了查询的步骤,提高了单位时间的工作效率。而且从整体上来看,路由信息和转发信息是分离的,数据包的转发只根据转发信息而不用参照路由信息,可以充分利用专用硬件的功能来达到线速转发,而不受路由变化或者其他因素的干扰,保证了转发的高速高效

 clip_p_w_picpath001

 

CEF转发提供3张表:

1.>;FIB:从路由选择表中拷贝过来的转发信息,包括路由选择表中用于转发路由分组所必须的最少信息。

2.>;邻接表:维护一个邻接节点以及他们相关的2层MAC重写或吓一跳信息数据库

3.>;NetFlow Table:用于统计网络数据等

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

CEF操作模式:

CEF有两种模式:集中式和分布式。

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

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

Cisco 12000系列路由器只运行dCEF模式,由线路卡执行交换功能。在其它路由器中,可以在同一个路由器中混合使用各种类型的接口卡,如果一个不支持CEF的接口卡收到数据包后,将把数据包转发到路由处理器来进行处理,或把该数据包转发到下一个网络段处理。

CEF在路由器上是全局激活的,但可在每个接口(或VIP的底板)上启用/禁用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的硬件平台:

Cisco7000系列路由器(需要装备RSP7000)
Cisco7200系列
Cisco7500系列
Cisco12000系列

Cisco首先在高端路由器平台实现CEF,此后,Catalyst交换机也支持CEF的转发,但是还存在一些差别,但均提供如下特性:

1. 基于“最长地址匹配”查找的高速转发

2. 等价路径的负载均衡

3. 逆向路径转发检查(RPF)

4. 不详路由的无效

 

有些CEF特性仅在路由器上实现 :

1. 关闭基于CEF的转发能力

2. 每个前缀和每个前缀长度的CEF统计

3. 从负载共享路径统计数据

4. 基于每个分组的负载均衡

当需要在网络中使用CEF时,必须先考虑以下项目:

加载当前完整的Internet路由信息的平台所需的最小内存(推荐):

- 集中路由模块上需要128MB

- 每个线路卡上需要64MB

CEF不能在一个线路卡上和VIP-分布式快速交换同时运行。

缺省情况下,如果Cisco IOS软件在交换数据报时遇到CEF不支持的功能和封装类型,它将采用其他交换方法(如最优交换、快速交换、过程交换)。

当前CEF不支持以下功能:

- 策略路由

- 网络地址翻译(NAT)

-路由交换模块上的访问控制列表

-多点PPP封装

- SMDS

-令牌环

- ATM

- ISL封装

 

CEF配置:

CEF:

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。

 

CEF负载均衡

基于目的地的负责均衡:

基于目的地的负载均衡允许路由器将使用多条路径来均衡负载。对于某一源/目标主机,数据包转发采用同一路径,即使有多个路径可用,也将这样处理。对于到达不同目的地的数据包则可以采用不同的路径。

当启用CEF时,基于目的地的负载均衡功能缺省被启用。大多数情况下,都采用这种负载均衡方法。

因为基于目的地的负载均衡是依赖于对数据流的统计来分布信息的,所以随着“源/目的地对”个数的增加,负载均衡会变得更加有效。

 

基于数据包的负载均衡:

当启用基于数据包的负载均衡功能时,必须先禁用基于目的地的负载均衡功能。为了禁用基于目的地的负载均衡功能,可以在接口配置模式下,

no ip load-sharing per-destination

使用基于数据包的负载均衡,路由器可以在路径上连续发送数据包,而不用考虑具体的主机或用户情况。这种负载均衡机制采用轮转办法来确定每个数据包采用哪条路径到达目的地。基于数据包的负载均衡可以保证在多条链路上进行负载均衡。

要启用基于数据包的负载均衡功能,可以在接口配置模式下,

ip load-sharing per-packet

为CEF配置网络记账功能

启用收集被快速转发到某个目的地的数据包个数和字节数

ip cef accounting per-prefix

启用收集通过某个目的地被快速转发的数据包的个数

ip cef accounting non-recursive

在全局配置模式中为CEF启用网络记账功能后,相应的路由处理器会收集记账信息。当用户为dCEF启用网络记账功能后,线路卡上会收集记帐信息。

查看show ip cef

Show ip cef fa 0/1 detail

Show adjacency fa 0/1 detail

Show interface ?

调试Debug ip cef ?

 

CEF配置跨隧道的交换 :

CEF支持跨隧道的交换,例如GRE隧道。当你启用CEF或者dCEF模式时,跨隧道的交换会被自动启用,所以您无需再执行任何附加操作来启用跨隧道的交换。

 CEF与快速交换的比较:

与快速交换相似,CEF也使用自己建立的数据结构(而不是路由表)来执行交换操作。快速交换通过生成并查找路由高速缓存交换数据包,该路由高速缓存交换数据包,该路收高速缓存的条目(包括目的IP地址,输出接口,MAC地址头信息等)是在第一个数据包到来时,对整个路由表执行最长匹配查找算法获得下一跳IP地址,然后查找ARP缓存获得第二层的MAC地址信息,并写入路由高速缓存,之后的数据包则根据已经生成的高速缓存的条目直接重写MAC头信息完成交换操作。

CEF通过FIB和邻接表对数据包进行交换,但FIB和邻接表是在数据包到来以前,由CPU根据路由表生成并定时更新的,因此到达路由器的第一个数据包也无须执行查找路由表的过程,直接由FIB和邻接表获得新的MAC头信和卢,就可进行交换了,对于拥有大容量路由表的路由器来说,这种预先建立交换查找条目的方式能够有效地提高交换性能。

基于CEF的负载平衡的实现:

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

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

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

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

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

 

分离,而并不意味着路由器物理结构上的分离,所以它也可以在一些多层交换机和低端的路由器上实施。

它的高速表现在以下两个方面:

1.>;在查询方式上简化了步骤,提高了速度;

2.>;在分离了路由和转发功能。