CEF

    Cisco CEFCisco Express ForwardingCisco特快交换)

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

很多阮籍和硬件的组合至此基于硬件的PDU头重写和转发,Cisco采用2种实现方式,一种是MLS多层交换技术,另一种为Cisco的快速转发(CEF)。

CEF_第1张图片

三层交换机的结构:

CEF_第2张图片

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

CEF转发提供3张表:

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

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

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

需要指出的是,CEF的转发信息不是存储在cache里的,因此也不存在过期作废火丁是刷新,只有根据路由表的变化而进行的更新,通常很稳定。而且转发信息是从路由信息经过一定处理后转发过来的,如果在转发信息里找不到某个数据包的转发信息,那么路由那里也没有。

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

它的高速表现在两方面:

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

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

支持CEF的硬件平台

Cisco首先在高端路由器平台实现CEF,伺候,Catalyst交换机也支持CEF的转发,但是还存在一些差异,但均衡提供具有一些特性:

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

2.等价路由的负载均衡

3.逆向路由转发检查(RPF

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

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

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

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

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

当在网络中使用CEF时,加载当前完整的Internet路由信息的平台所需的最小内存:集中路由模块上需要128MB,每个线路卡上需要64MBCEF不能在一个线路卡上和VIP-分布式快速交换同时运行。

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

当前CEF不支持策略路由、网络地址转换、路由交换模块上的访问控制列表、多点PPP封装、SMDS、令牌环、ATMISL封装。

以下平台支持CEF功能:

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

Cisco7200系列 

Cisco7500系列 

Cisco12000系列 

第二代接口模块(VIP2-20VIP2-40VIP2-50)支持CEF

在不同的路由器平台上,硬件对CEF的支持可能会有所不同,这要由路由器中安装的路由模块和其他硬件所决定。例如在Cisco12000系列路由器上,所有的线路卡都支持CEF交换;在Cisco7500系列路由器上,要实现CEF交换,需要有RSP模块 和VIP线路卡的支持。每个接口卡用自己的引擎独立地运行CEF去转发数据包,并且都独自拥有一个对FIB表的拷贝。每个接口卡上独立的去交换数据包,减轻了中心路由处理模块的负担。

Cisco Supervisor2结构:

底板:

主要提供交换矩阵,32Gbit/s的总线,多播复制ASIC,网络管理处理器,还有基于GBIC2个接口。此外还提供PFC2MSFC2子板的连接器

PFC2

提供一组ASIC进行所有基于硬件的转发。通常CEF就是在这个卡上实现的。它提供基于三层的转发引擎。提供各种三层表,如FIB,邻接表等。此外,PFC还包括基于硬件的访问控制列表和Qos机制的ASIC

MSFC2

MSFC2提供一个处理所有三层控制板活动的CPU。控制板式处理器有计算的硬件体系结构的一部分。MSFC2负责处理不能由PFC2硬件元素处理的功能,以及所有路由选择协议活动的处理,比如OSPFBGP的路由选择更新。MSFC2也负责形成IP路由选择表、FIB表和临近表。

在这3个组件中,监控底板和PFC2 是强制构件,而MSFC2组件是可选的(尽管它是第三层交换十分需要的),因为它包括形成CEF表的CPUMSFC2子卡上的CPU运行任何所配置的路由选择协议需要的所有实例。此外,CPU还处理不能用硬件的分组。MSFC2是基于Cisco IOS软件的路由器,并以同样方式配置。配置参数与Cisco 7200系列路由器上的一样。CEFSupervisor一起默认启用。它不能关闭。

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

与基于通信流的流缓存不同,CEF表示基于网络拓扑的。当一个分组进入交换机时,交换机的第三层转发引擎ASIC根据目的网络和最详细的网络掩码最长匹配查找。

CEF

CEF转发信息库:

CEF利用转发数据库(FIB)来进行基于IP目的地址前缀的交换决策。从概念上讲,FIB类似于一个路由表或信息库,它维护着一个包含IP路由表转发信息的镜像。当网络中路由或拓扑结构发生了变化时,IP路由表就被更新,而这些变化也将反映在FIB中。基于IP路由表中的信息,FIB维护者下一跳的地址信息。因为FIB条目和路由表条目之间有一一对应的关系,所以FIB中包含了所有已知的路哟,这样据不用维护路由高速缓存了,而先前的交换方法(比如快速交换和最优交换)都要维护路由高速缓存。

CEF FIB表由一棵4级层次的树组成。层次的每一级是基于32比特中的8位。CEF依赖最长匹配转发算法,这意味这按降序搜索整棵树直到“最长匹配”,即匹配最大比特数。FIB树分层表示,树的顶端是最不详细的地址,低端是最详细的地址。每个叶以8比特为边界,按降序排序更详细的表项。这棵树(通常被认为是一个256路的分支树)提供了一种用于快速查找的高效机制,确保查找过程中产生最少的延迟。这棵树也提供一个高扩展性的体系结构,因为它能以相比与表效率来说最小的性能开销完全统计IPv4地址。每个树叶提供了一个到临近表中相应下一跳表项的指针。

 CEF_第3张图片

 

邻接表(Adjacency Table

如果网络中的网络节点只通过一跳就可以穿越链路层而被彼此到达对方,那么它们是邻接的。除了FIB外,CEF还利用邻接表来提供第二层的寻址信息。邻接表为所有FIB条目维护第二层的下一网段地址。

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

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

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

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

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

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

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

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

CEF_第4张图片

CEF_第5张图片

 

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

CEF_第6张图片

左侧MAC-M(MAC地址)SW。右侧的MAC-MSW。 如果目的IP地址的MAC不在邻居表内,则SW将使用ARP进行解析,以得到目的地址的MAC地址。

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

 

CEF_第7张图片 

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交换的线路卡收到数据包时,它将数据包转发给更高的交换层(比如路由处理模块)或者把数据包转发给下一跳处理。这种机制允许旧的接口模块和新的接口模块并存。
1.Cisco12000系列千兆交换路由器上只运行dCEF模式。
2.一个VIP卡上不允许同时运行分布式CEF交换和分布式快速交换。
3.Cisco7200系列路由器不支持分布式CEF交换。
附加的新功能 在配置集中模式CEF和分布模式CEF时,还可以配置以下功能:
1.分布式CEF支持访问控制列表
2.分布式CEF支持帧中继包
3.分布式CEF支持数据包分片
4.支持基于每一个包或者每一个目标的负载均衡
5.支持网络计费,可以收集数据包的个数和字节数
6.分布式CEF支持跨隧道的交换
发给下一跳处理。这种机制允许旧的接口模块和新的接口模块并存。