CISCO CEF(Cisco Express Forwarding,Cisco特快交换) 详解

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介:

CISCO CEF(Cisco Express Forwarding,Cisco特快交换详解

参考资料: CCIE R&S路由与交换 CCIE SP 服务提供商 认证考试指南

 上海交通大学网络信息管理部Author 房 智 勇

12

三层交换的组成:结合了2层交换和3层路由功能于一身。

路由器一般只能传几千个包,使用3层交换,可以达到几百万个包传输。

三层交换机具有:

路由转发功能(路径选择、负载均衡和汇总、多种路由协议路由)和

包转发功能(NetFlow交换和CEF交换、基于硬件的包交换、3层和4层转发性能等同于2层转发性能),

以及智能的服务从而便于管理、诊断并且提高应用的可靠性(提供:网络管理、高可用性、安全、QoS和I P组播)。

CEF是新的Cisco设备使用的提供线速路由选择的技术。MLS查看流中的第一个分组,并缓存所需的信息来允许后续分组能独立于路由处理器进行交换。而CEF完全绕过路由处理器。

对于MLS结构,在物理形式上,路由和交换好像是分离了,但实际上并没有

CEF提供了以下优点:

1?  改进的性能CEF是小于快速切换路由缓存CPU密集型。更多的CPU处理能力,可专用于第3层服务,如服务质量(QoS)和加密。

2?  可扩展性CEF在每个线卡提供了充分的交换容量时,分布式CEFdCEF)模式是积极的。

3?  弹性的CEF提供了前所未有的水平在大型动态网络的一致性和稳定性的开关。

4?  虽然您可以使用CEF在任何一个网络的一部分,它是专为高性能,高弹性的第3IP骨干交换。

例如:下图显示了CEF正在运行的Cisco 12000系列千兆位交换路由器在网络的核心汇聚点(GSRS)交通水平,密度和性能是至关重要的。

image

在一个典型的高容量的互联网服务供应商的环境,在支持的网络链接到Cisco 7500系列路由器或其他接驳设备的核心汇聚设备的思科12012职系架构检讨。CEF在这些平台在网络核心提供所需的性能和可扩展性,以应对持续增长和不断增加的网络流量。CEF是一种分布式的交换机制,与安装在路由器的接口卡和带宽的线性扩展。

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

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

image

image

image

支持CEF的硬件平台 
支持媒体

CEF目前支持ATM/AAL5snapATM/AAL5muxATM/AAL5nlpid,帧中继,以太网,FDDI的中,PPPHDLC协议,隧道。

限制

Cisco 12000系列千兆位交换路由器distributedCEF模式运作。

分布式CEF交换不能在同一VIP卡为快速switchin.g分布配置

分布式CEF不支持Cisco 7200系列路由器。

clip_image001[4]        如果你启用CEF和然后创建一个访问列表,使用log关键字,访问列表相匹配的数据包,没有CEF切换。他们正在快速切换。记录禁用CEF

 

Cisco首先在高端路由器平台实现CEF此后,一些Catalyst交换机也支持CEF的转发,但是还存在一些差别,但均提供如下特性: 
1
. 基于“最
长地址匹配”查找的高速转发 
2
. 
等价路径的负载均衡 
3
. 逆向路径转发检查(RPF) 
4
. 不详路由的无效有些CEF特性仅在路由器上实现 
1
. 
关闭基于CEF的转发能力 
2
. 每个
前缀和每个前缀长度的CEF统计 
3
. 从负载
共享路径统计数据 
4
. 基于每个
分组的负载均衡

当您在网络中使用CEF时,请先考虑以下项目: 
加载当前完整的Internet路由信息的平台所需的
最小内存(推荐) 
- 集中路由模块上需要
128MB 
- 每个线路卡上需要64MB 
缺省情况下,如果Cisco IOS软件在交换数据报时遇到CEF不支持的功能和封装类型,它将采用其他交换方法(如最优交换、快速交换、过程交换) 
当前CEF不支持以下功能: 
- 策略路由 
- 网络地址翻译(NAT) 
- 路由交换模块上的访问控制列表 
- 多点PPP封装 
 SMDS 
- 令牌环
 
 ATM 
 ISL封装
 
以下平台支持CEF功能: 
Cisco7000系列路由器(需要装备RSP7000) 
Cisco7200
系列
 
Cisco7500
系列 
Cisco12000
系列 
第二代接口模块(VIP2-20VIP2-40VIP2-50)支持CEF 
在不同的路由器平台上,硬件对CEF的支持可能会有所不同,这要由路由器中安装的路由模块和其他硬件所决定。例如Cisco12000系列路由器上,所有的线路卡都支持CEF交换;Cisco7500系列路由器上,要实现CEF交换,需要有RSP模块和VIP线路卡
的支持。每个接口卡用自己的引擎独立地运行CEF去转发数据包,并且都独自拥有一个对FIB表的拷贝。每个接口卡独立的去交换数据包,减轻了中心路由处理模块的负担。 
CEF操作

在路由器初始化时,会根据路由器软件配置中的信息构建一张路由选择表(如静态路由、直连路由,以及通过路由选择协议交换动态学习到的路由)。在构建了路由选择表之后,CPU自动创建FIB和邻接表FIB 和邻近表显示了按照最佳转发方式进行的出现在路由选择表中的数据。

与基于通信流的流缓存不同,cEF表是基于网络拓扑。当一个分组进入交换机时,交换机的第3层转发引擎ASIC根据目的网络和最详细的网络掩码澎于最长匹配查找。并且不涉及除路由选择表和预先建立的FIB 表之外的任何软件。此外,一旦路由选择表中发生了变化,所有的cEF 表会立即更新。这使得这个方法是高效的,缓存不会由于路由翻动而无效。CEF 更加适应网络拓扑的变化。

CEF在软件形式上实现了路由和交换功能的分离,而并不意味着路由器物理结构上的分离,所以它也可以在一些多层交换机和低端的路由器上实施。它的高速表现在以下方面: 
1>
在查询方式上
简化了步骤,提高了速度 
2>
分离了路由和转发功能。

CEF

CEF运作的两个主要组成部分如下:

转发信息库 FIB

邻接表

1. CEF转发信息库Forwarding Information Base

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


 

    cef FIB 表由一棵4层次的树组成,如图所示。这是一个256 路的分支树,提供了一种用于快速查找的高效机制,确保查找过程中产生最少的延迟。这棵树也提供一个高扩展性的体系结构,因为它能以相比与表效率来说最小的性能开销完全统IPv4 编址。每个树叶提供了一个到邻近表中相应下一跳表项的指针。

image

image

2邻接表(Adjacency Table)

邻接表维护一个邻接节点以及他们相关的2MAC重写或下一跳信息数据库。

邻接的发现 当路由器发现存在邻接时就增加在邻接表中,每次生成一个邻接条目(就像ARP协议一样)CEF会为那个邻接节点预先计算一个链路层头标信息,并把这个头标信息存储在邻接表中。当决定路由时,它就会指向下一跳以及相应的邻接条目。随后,在对数据包进行CEF交换时,用预先生成的头标信息来对数据包进行封装。

分解邻接 一个路由表中也许存在多条到达目标网络的路径,例如:当路由器被配置成允许冗余路径和允许负载均衡时。对于每一个被分解的转发路径,邻接条目会被附加一个头标信息指示出那条路径的下一跳地址。这种机制可以用来在多条路径上实现负载均衡。

需要作特殊处理的邻接类型 另外,因为邻接条目和下一跳地址相关联,所以一些特殊的邻接类型可以被用来加速交换过程。前缀被定义后,当存在以下被缓存的邻接条目存在时,前缀需要作特殊处理。空邻接一个以Null0接口为目标地址的包会被抛弃,在访问过滤器时,这可以被用作一种有效的机制。

邻接归纳 当路由器直接和几台主机相连时,FIB表中维持的是这个子网的前缀,而不是各个主机的前缀。这个子网前缀是一个邻接的归纳。当要转发某个数据包到某个具体主机时,邻接数据库使用这个被归纳的邻接。

转出邻接 当遇到某些作特殊处理的功能或者CEF不支持的功能时,路由器将采用更高级别的交换方法处理数据包。

丢弃邻接 数据包被丢弃。这种邻接类型仅仅在Cisco12000系列路由器上出现。

释放邻接 数据包被释放,但是前缀仍然有效。

没有被分解的邻接 当链路层头标信息被附加到数据包上时,FIB需要头标指出下一跳的地址。如果FIB表中建立了一个邻接,但是并没有找到第二层的寻址信息,比如没有通过ARP发现第二层的寻址信息,这个邻接就被认为是不完整的。这个数据包就会交给路由模块处理,邻接关系由ARP来决定。

CEF转发过程

CEF的两个表:

image

3层包从TCAM开始查找;进行最长匹配,得到邻居信息,改写原有二层数据帧(下一跳MAC地址)并转发。CEF表是从路由表得来,邻居表是使用ARP解析得来的。

CEF多层交换的过程:

image

左侧MAC-M(MAC地址)SW。右侧的MAC-MSW

如果目的IP地址的MAC不在邻居表内,则SW将使用ARP进行解析,以得到目的地址的MAC地址。

ARP Throttling(ARP抑制):在未获得目的MAC地址并且进行ARP解析时,除非ARP解析完成并且在邻居表体现出来外,在解析期间,所有发往目的主机的包,将被丢弃,这就是ARP抑制。

image 
FIB最多支持6个到达同一目的的邻居条目。 
CEF模式 
CEF的操作模式有2种,即集中CEF模式分散CEF模式。 
可以通过其中的任意一种来启用CEF,同一时刻用户只能使用其一种模式。 
集中CEF模式 当启用集中CEF模式时,CEFFIB和邻接表驻留在路由处理器中,路由处理器来执行快速转发。对于CEF交换来说,当线路卡不可用时,或者需要使用的功能与分散CEF交换不兼容时,就可以使用集中CEF模式。

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

image

Cisco12000系列千兆交换路由器上只运行dCEF模式。 
2
.一个VIP卡上不允许同时运行分布式CEF交换和分布式快速交换。 
3
Cisco7200系列路由器不支持分布式CEF交换。
 
在此Cisco 12000系列路由器,线路卡进行切换。在其他的路由器,你可以混合在同一个路由器的各类卡,它可能是不是所有的卡,你使用的是支持CEF。当线路卡,不支持CEF收到一个包时,包转发给下一个更高的交换层(路由处理器)或包转发到下一跳处理线路卡。这种结构使原有的接口处理器新接口处理器的路由器存在。

注意 Cisco 12000系列千兆位交换路由器只运行dCEF模式; dCEF开关不能分布式快速开关一样VIP卡上进行配置,Cisco 7200系列路由器不支持dCEF

附加的新功能 
在配置集中模式CEF和分布模式CEF时,您还可以配置以下功能: 
1>
分布式CEF支持访问控制列表 
2>
分布式CEF支持帧中继包 
3>
分布式CEF支持数据包分片 
4>
支持基于每一个包或者每一个目标的负载均衡 
5>
支持网络计费,可以收集数据包的个数和字节数 
6>
分布式CEF支持跨隧道的交换 
CEF操作 
CEF 
如果用户的Cisco路由器中有接口处理器支持CEF时,就可以启用CEF 
为了启用或禁用CEF,可以在全局配置模式下利用下面的命令进行配置。 
启用标准CEF模式 
ip cef switch 
禁用标准CEF模式 no ip cef switch

image 
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

image 
Cisco12000系列路由器上,您不可以在某个接口上禁用dCEF模式。 
CEF负载均衡 
基于目的地的负责均衡: 
基于目的地的负载均衡允许路由器将使用多条路径来均衡负载。对于某一源/目标主机,数据包转发采用同一路径,即使有多个路径可用,也将这样处理。对于到达不同目的地的数据包则可以采用不同的路径。 
当启用CEF时,基于目的地的负载均衡功能缺省被启用。大多数情况下,都采用这种负载均衡方法。 
因为基于目的地的负载均衡是依赖于对数据流的统计来分布信息的,所以随着“源/目的地对”个数的增加,负载均衡会变得更加有效。 
基于数据包的负载均衡: 
当启用基于数据包的负载均衡功能时,必须先禁用基于目的地的负载均衡功能。为了禁用基于目的地的负载均衡功能,可以在接口配置模式下, 
no ip load-sharing per-destination 
使用基于数据包的负载均衡,路由器可以在路径上连续发送数据包,而不用考虑具体的主机或用户情况。这种负载均衡机制采用轮转办法来确定每个数据包采用哪条路径到达目的地。基于数据包的负载均衡可以保证在多条链路上进行负载均衡。 
image 
要启用基于数据包的负载均衡功能,可以在接口配置模式下 
ip load-sharing per-packet 
image 
CEF配置网络记账功能 
启用收集被快速转发到某个目的地的数据包个数和字节数 
ip cef accounting per-prefix 
启用收集通过某个目的地被快速转发的数据包的个数 
ip cef accounting non-recursive

image

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

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

show ip cef

show ip cef vlan 10 detail

show int stats |begin vlan 12

show adjasency

show cef drop

dubug ip cef

image

image

image

image

image



本文转自xjzhujunjie 51CTO博客,原文链接:http://blog.51cto.com/xjzhujunjie/803197


相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
负载均衡 网络协议 数据安全/隐私保护
|
28天前
|
JavaScript 前端开发 中间件
探索后端技术:Node.js与Express框架的完美融合
【10月更文挑战第7天】 在当今数字化时代,Web应用已成为日常生活不可或缺的一部分。本文将深入探讨后端技术的两大重要角色——Node.js和Express框架,分析它们如何通过其独特的特性和优势,为现代Web开发提供强大支持。我们将从Node.js的非阻塞I/O和事件驱动机制,到Express框架的简洁路由和中间件特性,全面解析它们的工作原理及应用场景。此外,本文还将分享一些实际开发中的小技巧,帮助你更有效地利用这些技术构建高效、可扩展的Web应用。无论你是刚入门的新手,还是经验丰富的开发者,相信这篇文章都能为你带来新的启发和思考。
|
1月前
|
开发框架 JavaScript 前端开发
使用 Node.js 和 Express 构建 Web 应用
【10月更文挑战第2天】使用 Node.js 和 Express 构建 Web 应用
|
2月前
|
Web App开发 JavaScript 前端开发
构建高效后端服务:Node.js与Express框架的实战指南
【9月更文挑战第6天】在数字化时代的潮流中,后端开发作为支撑现代Web和移动应用的核心,其重要性不言而喻。本文将深入浅出地介绍如何使用Node.js及其流行的框架Express来搭建一个高效、可扩展的后端服务。通过具体的代码示例和实践技巧,我们将探索如何利用这两个强大的工具提升开发效率和应用性能。无论你是后端开发的新手还是希望提高现有项目质量的老手,这篇文章都将为你提供有价值的见解和指导。
|
7天前
|
JavaScript 中间件 关系型数据库
构建高效的后端服务:Node.js 与 Express 的实践指南
在后端开发领域,Node.js 与 Express 的组合因其轻量级和高效性而广受欢迎。本文将深入探讨如何利用这一组合构建高性能的后端服务。我们将从 Node.js 的事件驱动和非阻塞 I/O 模型出发,解释其如何优化网络请求处理。接着,通过 Express 框架的简洁 API,展示如何快速搭建 RESTful API。文章还将涉及中间件的使用,以及如何结合 MySQL 数据库进行数据操作。最后,我们将讨论性能优化技巧,包括异步编程模式和缓存策略,以确保服务的稳定性和扩展性。
|
14天前
|
Web App开发 JavaScript 中间件
构建高效后端服务:Node.js与Express框架的完美结合
【10月更文挑战第21天】本文将引导你走进Node.js和Express框架的世界,探索它们如何共同打造一个高效、可扩展的后端服务。通过深入浅出的解释和实际代码示例,我们将一起理解这一组合的魅力所在,并学习如何利用它们来构建现代Web应用。
38 1
|
3天前
|
Web App开发 JavaScript 前端开发
探索后端开发:Node.js与Express的完美结合
【10月更文挑战第33天】本文将带领读者深入了解Node.js和Express的强强联手,通过实际案例揭示它们如何简化后端开发流程,提升应用性能。我们将一起探索这两个技术的核心概念、优势以及它们如何共同作用于现代Web开发中。准备好,让我们一起开启这场技术之旅!
11 0
|
3天前
|
Web App开发 JavaScript 前端开发
构建高效后端服务:Node.js与Express框架的实践
【10月更文挑战第33天】在数字化时代的浪潮中,后端服务的效率和可靠性成为企业竞争的关键。本文将深入探讨如何利用Node.js和Express框架构建高效且易于维护的后端服务。通过实践案例和代码示例,我们将揭示这一组合如何简化开发流程、优化性能,并提升用户体验。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用技巧。
|
4天前
|
Web App开发 JavaScript 中间件
构建高效后端服务:Node.js与Express框架的融合之道
【10月更文挑战第31天】在追求快速、灵活和高效的后端开发领域,Node.js与Express框架的结合如同咖啡遇见了奶油——完美融合。本文将带你探索这一组合如何让后端服务搭建变得既轻松又充满乐趣,同时确保你的应用能够以光速运行。
10 0
|
29天前
|
JSON JavaScript 前端开发
Node.js Express 框架
10月更文挑战第7天
27 2