---- 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模式。

---- 2.分散CEF模式
---- 当启用分散式CEF(dCEF)时,线路卡(例如VIP线路卡或者GSR线路卡)维护着一个与FIB和邻接表相同的拷贝。线路卡在端口适配器之间执行快速转发,这样,在进行交换操作时就无须RSP的参与了。dCEF使用一个“内部过程通信”(Inter Process Communication,IPC)机制,在路由处理器和线路卡上,保证FIB和邻接表的同步,如图2所示。

四、CEF的应用
---- CEF在Cisco路由器中改善了路由器的性能,优化了路由交换,但它的使用却并不复杂,用户只需要配置启用或禁止CEF/dCEF即可实现Cisco快速转发。当然,为了更好地使用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。
---- 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
---- 记账信息中详细描述了路由器转发数据包的情况,可以由此了解路由器的负载情况,从而决定如何优化路由器的配置,最大限度地发挥路由器的性能。
---- (作者地址:安徽省淮南市洞山中路×××淮南市中心支行科技科,

 

ip cef 命令介绍及CEF技术浅析

2007-10-12 15:53

 



为了在路由处理器卡上启用CEF,利用ip cef命令,在全局配置模式下进行。为了禁用CEF,使用该命令的“no”格式。
ip cef < distributed>
no ip cef < distributed>


句法 描述
distributed (可选项)启用dCEF操作。把CEF信息分散到线路卡。线路卡执行快速转发。

默认情况


平台 默认值
装备RSP7000的Cisco 7000系列 没有启用CEF。
Cisco 7200系列 没有启用CEF。
Cisco 7500系列 启用CEF。
Cisco 12000系列GSR 启用dCEF。

命令模式
全局配置模式。
操作要点
本命令第一次出现时是在Cisco IOS 11.1CC版本中。
该命令在Cisco 12000系列GSR中不能用,这是因为这种路由器系列只在dCEF模式下使用。
CEF是高级的第3层(Layer 3 )的IP交换技术。CEF可以优化某些网络的性能和伸缩性。这些网络带有动态的、结构分散的数据通信模式,例如与基于Web的应用程序和交互式操作相关联的网络就属于这种情况。


传统路由器的基本作用是路由计算和包转发,通常基于共享存储器体系结构,采和集中式CPU,即单个CPU(或多个CPU,联结成路由器簇)控制共享总线,连接到多个接口卡上,接口卡包含简单的队列等结构,与CPU通信,通过共享总线实现数据包转发。随着Internet的快速发展和大量新的服务需求的不断出现,对网络的路由和交换性能提出了更高的要求,要同时提高包转发速率和系统的性能,必须对传统路由器与交换设备的设计体系结构进行改进,并加入一些新的设计方案以完善系统性能。CEF(Cisco Express Forwarding,Cisco特快交换)技术是思科公司推出的一种全新的路由交换方案,它具有良好的交换性能,增强的交换体系结构和极高的包转发速率。采用CEF技术的GSR1200系列千兆交换路由器,在体系结构,路由方式和接口卡性能等方面都有质的改变,特别适用于大业务量的ISP网络的核心层,同时也广泛应用于高速企业网的主干。本文将对CEF特快交换技术作一介绍和分析。



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

1.过程交换

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

2.快速交换

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

3.自治交换

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

4.分布式交换

随着VIP(Versatile 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路由表条目之间有一一对应的关系,即FIB是IP路由表中包含的路由信息的一个镜像。由于FIB包含了所有必需的路由信息,因此就不用再维护路由高速缓存了。当网络拓扑或路由发生变化时,IP路由表被更新,FIB的内容随之发生变化。

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

系统一旦发现邻接关系,就将其写到邻接表中,邻接序列随时都在生成,每次生成一个邻接条目,就会为那个邻接节点预先计算一个链路层头标信息,并把这个链路层头标信息存储在邻接表中,当决定路由时,它就指向下一网络段及相应的邻接条目。随后在对数据包进行CEF交换时,用它来进行封装。欲查看邻接表的有关信息,可以使用Cisco IOS的命令:show adjacency/show adjacency detail。当我们查看邻接表信息时,会发现有以下两种主要邻接类型:Host adjacency和Point to Point。Host adjacency类型通常的显示是一个IP地址,它表示邻接的下一跳IP地址;Point to Point类型的显示是“point 2point”,表示这是一条点对点电路。此外还有其他一些特殊类型,如Null adjacency、Glean adjacency等,此外不再赘述。

2.CEF操作模式

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

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

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

CEF在路由器上是全局激活的,但可在每个接口(或VIP的底板)上启用/禁用CEF;CEF和快速交换模式也可同时运行,但不推荐这样使用,因为会占用大量的系统维护资源。

三、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地址对之间有大量的数据流,通过并行链路传送,如果按目的地负载平衡方式,将会使某条链路负担过重,而其他链路上的数据流很少,此时采用按数据包的负载平衡是合理的。

五、小结

CEF是专门为高性能、高伸缩性的IP骨干网络设计的一种高速交换方式。从上述介绍我们不难看出,在大规模的动态IP网络中,CEF能够提供前所未有的交换的一致性和稳定性。它能够有效弥补快速交换的高速缓存条目频繁失效的缺陷,采用dCEF分布式交换可使每个线路卡进行完全的交换,提供更优越的性能;CEF比快速交换的路由高速缓存占用内存要少,并能提供负载平衡,网络记帐等功能。借助CEF特快交换技术和其它一些革命性的创新技术,Cisco的GSR路由器在全球取得了巨大的成功,在中国互联网基础设施建设中发挥着极其重要的作用。

-------------------------------------------------------------------

实质MPLS也是以CEF作为基础来完成的,

基本本的MPLS的作用是:由于MPLS对数据传输时使用标签来选择路径速度比使用最长匹配的IP路由选择快,因此MPLS可以提高数据传输速度,同时可以提高网络的吞吐量

设置基本的MPLS相当简单仅需要下面几个命令


1、在ROUTER启动CEF或ip distribute CEF

router(config)# ip cef distributed或使用IP CEF命令


2、在ROTUER启动标记分发

router(config)# tag-switching advertise-tags


3、在接口上使用MPLS(在骨干LSR间连接的接口使用这个命令)

router(config)# interface e0/1
router(config-if)# tag-switching ip

4、指定使用那种标签协议,标准的协议是LDP,TDP是CISCO私有的

Router(config)# mpls lable protocol LDP