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等,此外不再赘述。

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功能概述
Cisco快速转发(CEF)是一个高级三层交换技术。CEF交换可以优化带有大规模的、动态数据流的网络(例如:Internet、具有增强的基于Web应用的网络或者交互式的业务)的性能和可扩展性。
CEF的优点:
CEF具有以下优点:
● 改善网络性能――CEF和典型的快速交换路由相比较,CEF可以使用较少的内存容量来实现数据包的转发。这样可以使得更多的处理器资源用于第三层的服务,比如服务质量(QoS)和加密功能等。
● 提高网络的可扩展性――当启用分散式CEF(dCEF)模式时,CEF的每个线路卡上维护着一个与转发信息库(FIB)和邻接表相同的拷贝,它能独自提供完全的交换能力。
● 提高网络的收缩性――在大规模的动态网络中,CEF能提供了一种具有更好的可靠性和稳定性的交换。在动态网络中,路由的改变会导致快速交换高速缓存条目频繁地失效。这些变化可能导制:数据要通过路由表进行过程交换,而不是通过路由高速缓存进行快速交换。CEF的转发信息库(FIB)中包含所有路由表中存在的路由,换句话说:FIB维护着一个IP路由表中包含的转发信息的镜像,因此CEF免去了维护路由高速缓存、采用快速交换和过程交换相互转换的过程。 CEF比典型的高速缓存技术更能有效地交换数据流。
CEF的术语表
Cisco快速转发(CEF)――CEF是一种第三层交换技术,CEF有两种模式:集中模式和分布模式,集中模式允许一个路由处理器执行快速转发。
分布式CEF(dCEF)――分布式CEF允许路由器的多个线路卡在端口适配器间分别运行快速转发。
转发数据库(FIB)――CEF的一个组件。它是路由器决定目标交换的查找表,是一个包含IP路由表中转发信息的镜像。
千兆交换路由器(GSR)――思科12000系列路由器。
线路卡――Cisco产品线中广泛应用的接口处理器的总称,例如:VIP就是7500系列路由器中的一种线路卡。
前缀――可以指出IP地址中的网络地址部分,它是IP地址和子网掩码的组合。子网掩码可以指出IP地址中有多少比特是网络比特。前缀的格式是:IP地址/子网掩码。例如:10.0.0.0/16意味着IP地址中的前面16比特被标记了,它可以过滤出网络地址和主机地址,此例中网络地址是10.0。
路由模块/处理器(route processor)――Cisco7000或者Cisco7500路由器上路由处理模块的总称。
路由模块/处理器(RP)――Cisco7000系列路由器上的路由处理模块,它包含CPU、系统软件和路由器中的大部分内存组件。
路由交换模块/处理器(RSP)――Cisco7500系列路由器中结合路由模块(RP)和交换模块(SP)功能的模块。交换模块(SP)在Cisco7000系列路由器中扮演管理所有数据总线活动的管理员的角色。
通用接口模块(VIP)――Cisco7000和7500系列路由器使用的接口卡。VIP可以提供多层交换和CiscoIOS软件的运行。最新的版本是VIP和VIP2。
模块通讯(IPC)――这是一种机制,它可以确保在使用分散CEF模式时,RSP和线路卡的转发数据库(FIB)和邻接表信息同步。
使用CEF必须满足的条件
当您在网络中使用CEF时,请先考虑以下项目:
● 加载当前完整的Internet路由信息的平台所需的最小内存(推荐):
- 集中路由模块上需要128MB
- 每个线路卡上需要64MB
● CEF不能在一个线路卡上和VIP-分布式快速交换同时运行。
● 缺省情况下,如果Cisco IOS软件在交换数据报时遇到CEF不支持的功能和封装类型,它将采用其他交换方法(如最优交换、快速交换、过程交换)。
● 当前CEF不支持以下功能:


- 策略路由
- 网络地址翻译(NAT)
- 路由交换模块上的访问控制列表
- 多点PPP封装
- SMDS
- 令牌环
- ATM
- ISL封装
适用平台:
以下平台支持CEF功能:

● Cisco7000系列路由器(需要装备RSP7000)
● Cisco7200系列
● Cisco7500系列
● Cisco12000系列
第二代接口模块(VIP2-20、VIP2-40、VIP2-50)支持CEF。
在不同的路由器平台上,硬件对CEF的支持可能会有所不同,这要由路由器中安装的路由模块和其他硬件所决定。例如在Cisco12000系列路由器上,所有的线路卡都支持CEF交换;在Cisco7500系列路由器上,要实现CEF交换,需要有RSP模块和VIP线路卡的支持。每个接口卡用自己的引擎独立地运行CEF去转发数据包,并且都独自拥有一个对FIB表的拷贝。每个接口卡独立的去交换数据包,减轻了中心路由处理模块的负担。
为了表述的一致性,本文档使用“路由模块”指代中心模块,使用线路卡指代接口模块。
如果您在使用CEF交换的过程中遇到了其它特殊硬件需求或者兼容性问题,请查询“思科产品手册”或“安装和配置手册”。
功能描述
Cisco快速转发(CEF)是一个高级三层交换技术。CEF交换可以优化带有大规模的、动态数据流的网络(例如:Internet、具有增强的基于Web的应用的网络或者交互式的业务)的性能和可扩展性。
您可以在网络中的任何地方使用CEF交换,CEF交换是为高性能的、高收缩性的骨干网而设计的一种高速交换方式。例如:图1中在流量密集的核心网络的汇集点上,Cisco12000系列千兆交换路由器使用CEF去交换数据包。
在一个典型的大业务流量的ISP环境中,Cisco12012千兆交换路由器是网络的核心,它提供和支持到Cisco7500系列或者其他支流路由器的连接。在网络核心中,骨干路由器上的CEF交换提供了高性能和可扩展性,用来对付网络规模的不断加大和稳定增长的数据流量。CEF是一种分散式交换机制,它随着接口卡数量和安装在路由器中带宽的变化而线性地变化。
CEF组件
为了实现CEF的交换功能,CEF将普通路由器中存储在路由高速缓存中的信息转而存储到几种为CEF专门设计的数据结构中。为了有效地进行数据包转发,这种数据结构要保证能进行优化的查询。CEF的2种主要组件是:

● 转发数据库(FIB)
● 邻接表
转发数据库
CEF 利用转发数据库(FIB)来进行基于IP目的地前缀的交换决策。从概念上讲,FIB类似于一个路由表或信息库,它维护着一个包含IP路由表转发信息的镜像。当网络中路由或拓扑结构发生了变化时,IP路由表就被更新,而这些变化也将反映在FIB中。基于IP路由表中的信息,FIB维护着下一跳的地址信息。
因为FIB条目和路由表条目之间有一一对应的关系,所以FIB中包含了所有已知的路由,这样就不用维护路由高速缓存了,而先前的交换方法(比如快速交换和最优交换)都要维护路由高速缓存。
邻接表(Adjacency Table)
如果网络中的网络节点只通过一跳就可以穿越链路层而彼此到达对方,那么它们是邻接的。除了FIB外,CEF还利用邻接表来提供第二层的寻址信息。邻接表为所有FIB条目维护第二层的下一网段地址。
邻接的发现
当路由器发现存在邻接时就增加在邻接表中,每次生成一个邻接条目(就像ARP协议一样),CEF会为那个邻接节点预先计算一个链路层头标信息,并把这个头标信息存储在邻接表中。当决定路由时,它就会指向下一跳以及相应的邻接条目。随后,在对数据包进行CEF交换时,用预先生成的头标信息来对数据包进行封装。
分解邻接
一个路由表中也许存在多条到达目标网络的路径,例如:当路由器被配置成允许冗余路径和允许负载平衡时。对于每一个被分解的转发路径,邻接条目会被附加一个头标信息指示出那条路径的下一跳地址。这种机制可以用来在多条路径上实现负载平衡。
需要作特殊处理的邻接类型
另外,因为邻接条目和下一跳地址相关联,所以一些特殊的邻接类型可以被用来加速交换过程。前缀被定义后,当存在以下被缓存的邻接条目存在时,前缀需要作特殊处理。
表1 需要被作特殊处理的邻接类型
邻接类型接收到这些邻接类型时如何处理
空邻接一个以Null0接口为目标地址的包会被抛弃,在访问过滤器时,这可以被用作一种有效的机制。
邻接归纳当路由器直接和几台主机相连时,FIB表中维持的是这个子网的前缀,而不是各个主机的前缀。这个子网前缀是一个邻接的归纳。当要转发某个数据包到某个具体主机时,邻接数据库使用这个被归纳的邻接。
转出邻接当遇到某些作特殊处理的功能或者CEF不支持的功能时,路由器将采用更高级别的交换方法处理数据包。
丢弃邻接数据包被丢弃。这种邻接类型仅仅在Cisco12000系列路由器上出现。
释放邻接数据包被释放,但是前缀仍然有效。
没有被分解的邻接
当链路层头标信息被附加到数据包上时,FIB需要头标指出下一跳的地址。如果FIB表中建立了一个邻接,但是并没有找到第二层的寻址信息,比如没有通过ARP发现第二层的寻址信息,这个邻接就被认为是不完整的。这个数据包就会交给路由模块处理,邻接关系由ARP来决定。
CEF所支持的媒介
当前CEF支持ATM/AAL5snap, ATM/AAL5mux, ATM/AAL5nlpid, 帧中继, 以太网, FDDI, PPP, HDLC, 和隧道。
CEF操作模式
CEF的操作模式有2种,即集中CEF模式和分散CEF模式。可以通过其中的任意一种来启用CEF,同一时刻用户只能使用其一种模式。
集中CEF模式
当启用集中CEF模式时,CEF的FIB和邻接表驻留在路由处理器中,路由处理器来执行快速转发。对于CEF交换来说,当线路卡不可用时,或者需要使用的功能与分散CEF交换不兼容时,就可以使用集中CEF模式。
分布CEF模式
当启用分布式CEF(dCEF)时,线路卡(例如VIP线路卡或者GSR线路卡)维护着一个与FIB和邻接表相同的拷贝。线路卡在端口适配器之间执行快速转发,这样,在进行交换操作时就无须RSP的参与了。
dCEF使用一个“内部过程通信”(Inter Process Communication,IPC)机制,在路由处理模块和线路卡上,保证FIB和邻接表的同步。
在Cisco12000 系列路由器中,线路卡负责执行CEF交换。在其他路由器中,或许您使用的不是同一种类型的线路卡,有可能某个接口卡不支持CEF交换。当某个不支持CEF 交换的线路卡收到数据包时,她将数据包转发给更高的交换层(比如路由处理模块)或者把数据包转发给下一跳处理。这种机制允许旧的接口模块和新的接口模块并存。
笔记
1Cisco12000系列千兆交换路由器上只运行dCEF模式。
2一个VIP卡上不允许同时运行分布式CEF交换和分布式快速交换。
3Cisco7200系列路由器不支持分布式CEF交换。
附加的新功能
在配置集中模式CEF和分布模式CEF时,您还可以配置以下功能:

● 分布式CEF支持访问控制列表
● 分布式CEF支持帧中继包
● 分布式CEF支持数据包分片
● 支持基于每一个包或者每一个目标的负载平衡
● 支持网络计费,可以收集数据包的个数和字节数
● 分布式CEF支持跨隧道的交换
配置任务
这部分描述配置CEF的必要选项和可选选项。第一个任务是必要的,其他都是可选的。

●启用和禁用CEF或者dCEF
●为CEF配置负载平衡
●为CEF配置网络计费
●为CEF配置跨隧道交换
启用和禁用CEF或者dCEF
如果用户的Cisco路由器中有接口处理器支持CEF时,就可以启用CEF。
为了启用或禁用CEF,可以在全局配置模式下利用下面的命令进行配置。
任务命令
启用标准CEF模式ip cef switch
禁用标准CEF模式no ip cef switch
当您想让线路卡执行快速转发时,则启用dCEF,这样,路由处理模块就可以处理路由协议或者负责交换从旧的接口模块(不支持CEF交换的模块)过来的数据包。
笔记
在Cisco12000系列路由器上,dCEF模式是缺省启用的。所以启用dCEF的命令(ip cef switch)在Cisco12000系列路由器上是没有意义的,在配置清单上也不会列出dCEF模式被启用。
为了启用或禁止dCEF操作,可以在全局配置模式下利用下面的命令进行配置。
任务命令
启用dCEF模式ip cef distributed switch
禁用dCEF模式 no ip cef distributed switch
当用户按全局模式启用CEF或dCEF时,所有支持CEF的接口都被默认地启用了。如果您想在某个特定的接口上关闭CEF或者dCEF,您可以按照下面的做法:
有时候,在某个接口配置了一项功能,而CEF或dCEF并不支持该功能,这时您就可能需要在这个特定的接口上禁止CEF或dCEF。例如,策略路由和CEF 就不能一起使用。您可能想让一个接口支持策略路由,而让其他的接口支持CEF。在这种情况下,可以按全局模式启用CEF,而在那个打算配置策略路由的接口上禁用CEF。这样,除了那一个接口外,在其他所有接口上都启用了快速转发。
为了在某个接口上禁用CEF或dCEF,可以在接口配置模式下,使用下面的命令实现:
任务命令
在接口上禁用CEFno ip route-cache cef
当禁用了CEF或dCEF后,Cisco IOS自动使用下一个最快的交换路径来交换数据包。对于dCEF而言,下一个最快的交换路径是在路由处理模块上使用CEF。
如果您在某个接口上禁用了CEF或dCEF操作,尔后又想重新启用它,那么在接口配置模式下,可以使用:ip route-cache cef命令实现。
笔记
在Cisco12000系列路由器上,您不可以在某个接口上禁用dCEF模式。
为CEF配置负载平衡
负载平衡要依据数据包的源和目的地信息组合来进行。为了把数据传送到一个目的地,Cisco可以把数据分配到多条路径中,从而优化资源的使用。您可以基于目的地或者基于数据包来配置负载平衡。负载平衡决策机制是在数据发出的接口上做出的,所以当您必须在出口上配置负载平衡。
配置负载平衡任务列表
这部分描述怎样去配置不同类型的负载平衡:

• 配置基于目的地的负载平衡
• 配置基于数据包的负载平衡
配置基于目的地的负载平衡
基于目的地的负载平衡允许路由器将使用多条路径来均衡负载。对于某一源/目标主机,数据包转发采用同一路径,即使有多个路径可用,也将这样处理。对于到达不同目的地的数据包则可以采用不同的路径。当启用CEF时,基于目的地的负载平衡功能缺省被启用。大多数情况下,都采用这种负载平衡方法。
因为基于目的地的负载平衡是依赖于对数据流的统计来分布信息的,所以随着“源/目的地对”个数的增加,负载平衡会变得更加有效。
您可以采用基于目的地负载平衡的办法,来确保针对某个给定的“源/目标主机对”的数据包以一定的次序到达。因为基于某个确定的“源/目标主机对”的数据包会在同一条链路上被路由。
启用基于目的地的负载平衡
由于启用CEF时,也就缺省启用了基于目的地的负载平衡功能,所以为了使用基于目的地的负载平衡功能,您不需要再执行其他附加操作。
禁用基于目的地的负载平衡
特别的,当您想启用基于数据包的负载平衡功能时,您必须先禁用基于目的地的负载平衡功能。
为了禁用基于目的地的负载平衡功能,可以在接口配置模式下,使用下面的命令进行:
任务命令
禁用基于目的地的负载平衡功能no ip load-sharing per-destination
配置基于数据包的负载平衡
使用基于数据包的负载平衡,路由器可以在路径上连续发送数据包,而不用考虑具体的主机或用户情况。这种负载平衡机制采用轮转办法来确定每个数据包采用哪条路径到达目的地。基于数据包的负载平衡可以保证在多条链路上进行负载平衡。
利用数据包进行负载平衡是一个好办法,但是对于给定的“源/目标主机对”的数据包也许会因此采用不同的路径到达目的地。这个机制会引起数据包的重新排序。所以这种类型的负载平衡方法对有些类型的数据流可能就不适应(比如通过IP进行语音传送),因为这种类型的传送要求数据包按照顺序依次到达目的地。
使用基于数据包的负载平衡有助于确保每个单个“源/目的地对”的路径都不会超载。如果有大量的、通过并行链路的针对某个“源头/目标主机对” 的数据,假如按目的地进行负载平衡,将会使那个链路超载,而其他链路上的数据流却很少。启用基于数据包的负载平衡后,数据包可以交替地利用不同的路径到达同一个繁忙的目的地。
要启用基于数据包的负载平衡功能,可以在接口配置模式下,使用下面的命令进行:

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

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

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

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

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


任务命令
启用基于数据包的负载平衡ip load-sharing per-packet
笔记
如果您想针对某个特定目的地启用基于数据包的负载平衡,必须在所有可以向该目的地转发数据包的接口上都启用基于数据包的负载平衡的功能。
为CEF配置网络记账功能
您可能需要收集统计信息,以便更好地理解和使用CEF模式的功能。例如您可能想收集这样的信息: 被交换到某个目的地的数据包的个数和字节数,或者通过某个目的地交换的数据包的个数。
您执行以下可选选项为CEF配置网络记帐功能:


●为CEF启用网络记帐功能
●查看网络记帐信息
启用CEF的网络记帐功能
要启用CEF的记帐功能,可以在全局配置模式中,使用下面的命令进行:
任务命令
启用收集被快速转发到某个目的地的数据包个数和字节数ip cef accounting per-prefix
启用收集通过某个目的地被快速转发的数据包的个数ip cef accounting non-recursive
当您在全局配置模式中为CEF启用网络记账功能后,相应的路由处理器会收集记账信息。当用户为dCEF启用网络记账功能后,线路卡上会收集记帐信息。
查看网络记帐信息
您可以查看被收集的记账信息。为此在EXEC模式下,使用下面的命令进行:
任务命令
查看收集的记帐信息show ip cef
为CEF配置跨隧道的交换
CEF支持跨隧道的交换,例如GRE隧道。当你启用CEF或者dCEF模式时,跨隧道的交换会被自动启用,所以您无需再执行任何附加操作来启用跨隧道的交换。