什么是Cisco快速转发(CEF)之CEF极化

1、概述

思科快速转发是打算的可升级的交换专有形式解决问题关联与需求高速缓冲存储。使用CEF交换,在路由缓存常规存储的信息在几个数据结构被分离。CEF代码能维护这些数据结构在千兆路由处理器(GRP),并且在从属处理器例如在12000路由器的线卡。为高效的信息包转发提供优化查找的数据结构包括:

  • 转发信息库(FIB)表- CEF使用FIB做出IP目的地基于前缀的交换决定。FIB是概念上和路由表或信息库类似。它维护在IP路由表包含的转发信息的镜像。当在网络中更改路由或拓扑结构时,IP路由表更新,且这些变化反映在FIB上。FIB 基于 IP 路由表中的信息维护着下一跳地址信息。由于FIB条目和路由表条目之间存在一对一相关性,因此FIB包含所有已知路由,并且无需交换路径(如快速交换和最优交换)相关的路由缓存维护。
  • 邻接表-,如果他们能互相到达与在链路层间的一跳在网络的节点认为相邻。除FIB之外, CEF使用邻接表加在前面Layer2寻址信息。邻接表维护着所有 FIB 条目的第 2 层下一跳地址。

CEF可以在两个模式之一中启用:

  • 中央CEF模式-当CEF模式启用时, CEF FIB和邻接表在路由处理器驻留,并且路由处理器执行Express Forwarding。您能使用CEF模式,当线卡为CEF交换时不是可用的,或者,当您需要以分布式CEF交换时使用不兼容的功能。
  • 分布式CEF (dCEF)模式-当dCEF启用时,线卡维护FIB和邻接表的相同的复制。线卡在交换操作可独自执行Express Forwarding,免除主处理器-千兆路由处理器(GRP) -介入。这是在Cisco 12000系列路由器的唯一的交换方法联机。
  • dCEF使用进程间通信(IPC)机制保证FIB同步和邻接表在路由处理器和线卡。

2、背景信息

CEF转换根据由路由协议填充,例如增强的内部网关路由选择协议(EIGRP)和开放最短路径优先(OSPF)的路由表的数据包。CEF执行负载平衡,一旦路由表(RIB)计算。在层次化网络设计,可以有许多第3层(L3)相等代价冗余路径。考虑从接入层的通信流在分配和核心间和到数据中心里的此拓扑。

img

假设,为了到达从路由器1 (R1) [Top Left]的网络10.1.1.1,有两个等价路径(L1, L2)。两个连接使用的决策由哈希算法做。默认情况下,来源IP (SIP)和目的地IP (DIP)使用作为参数在哈希算法。这是说明哈希算法如何工作:

当只有两个路径时,交换机/路由器执行排除或(在最低位(一个位,当两条链路之一需要选择时, 3-4条链路的两个位的XOR)操作,等等) SIP和DIP。同样SIP和DIP的XOR操作总是导致数据包使用同一条链路。数据包然后通过在分布层上,同一哈希算法与同一哈希输入一起使用,并且选择所有流的单条链路,留给另一条链路被未充分利用。此进程呼叫CEF极化(导致使用所有流的单个相等代价多重通道的使用同一散列算法和同样哈希输入了(ECMP)链路)。

此示例较详细地说明此进程:

img

1、流量发出从10.240.18.1和被注定对10.240.20.1进入网络在路由器A并且经过CEF交换的。由于有两个等价路径对10.240.20.0/24网络,在数据包的源地址和目的地址通过散列算法,并且结果是用于的一个特定路径到达目的地。在这种情况下,数据包开始的路径往路由器C。从那里,数据包去路由器F和他们的最终目的地。

2、流量发出从10.240.18.2和被注定对10.240.20.1进入网络在路由器A并且经过CEF交换的。由于有两个等价路径对10.240.20.0/24网络,在数据包的源地址和目的地址通过散列算法,并且CEF选择路径。在这种情况下,数据包开始的路径往路由器B。

3、流量发出从10.240.18.3和被注定对10.240.20.1进入网络在路由器A并且也经过CEF交换的。由于有两个等价路径对10.240.20.0/24网络,在数据包的源地址和目的地址通过散列算法,并且CEF选择路径。在这种情况下,数据包开始的路径往路由器B。

4、数据包从10.240.18.2来源,并且10.240.18.3两个到达在路由器B,再有到达两个的等价路径10.240.20.1。它通过散列算法再运行这些套源及目的地对,导致同样结果在路由器A的散列算法导致。这意味着数据包两数据流通过一个路径-在这种情况下,链路往路由器E。往路由器D的链路不收到流量。

5、在从10.240.18.2和10.240.18.3发出的流量在路由器E后接收,沿路径交换路由器的F,然后其最终目的地的。

3、如何避免CEF极化

交替在默认(SIP和DIP)和全双工(SIP + DIP + Layer4端口)散列输入配置之间在网络的每块层。
Catalyst 6500为哈希算法提供一些选择:

  • 默认-以不同等的重要性使用源和目的地IP地址,给对每条链路为了防止极化。
  • 简单-以相等的重要性使用源和目的地IP地址,给对每条链路。
  • 全使用源和目的地IP地址和Layer4端口号,与不同等的权重。
  • 全双工简单-以相等的重要性使用源和目的地IP地址和Layer4端口号,给对每条链路。
6500(config)# mls ip cef load-sharing ?
full    load balancing algorithm to include L4 ports
simple  load balancing algorithm recommended for a single-stage CEF router

6500(config)# mls ip cef load-sharing full ?
simple  load balancing algorithm recommended for a single-stage CEF router
<cr>

目前,命令不存在检查负载均衡算法在使用中。方法是在使用中发现的最佳方法是检查当前配置通过show running-config命令。如果目前没有以 mls ip cef load-sharing 开头的配置,则正在使用的是默认的源和目标不等权重算法。

注意:1) Catalyst 6500每个小包不支持负载均衡。2)全双工选项在哈希不包括通用ID。如果它使用在一多层拓扑的每块层,极化是可能的。以此命令使用简单选项为了达到更加好负载均衡和使用少量硬件邻接是可行的。

交替在ECMP链路之间均等和奇数在网络的每块层。
CEF负载平衡不依赖于怎样协议路由在路由表里插入。所以, OSPF路由显示行为和EIGRP一样。在有几路由器连续执行负载均衡的分级网络中,他们全都使用同样算法负载共享。

# 默认情况下散列算法负载平衡此方式
1: 1
2: 7-8
3: 1-1-1
4: 1-1-1-2
5: 1-1-1-1-1
6: 1-2-2-2-2-2
7: 1-1-1-1-1-1-1
8: 1-1-1-2-2-2-2-2

编号,在冒号代表等价路径前数量。编号,在冒号代表每个路径转发流量的比例后。这意味着那:

  • 对于两等价路径,负载均衡46.666%-53.333%,没有50%-50%。
  • 对于三等价路径,负载均衡33.33%-33.33%-33.33% (正如所料)。
  • 对于四等价路径,负载均衡20%-20%-20%-40%和没有25%-25%-25%-25%。

这说明,当有ECMP链路时偶数,流量没有负载平衡、一种方式禁用CEF极化是反极化重要性,在版本12.2(17d)SXB2介绍。为了启用反极化重要性,请输入此命令:

6500(config)# mls ip cef load-sharing full simple

请使用此命令是否有两等价路径,并且需要均等地使用两个。简单的关键字的新增内容在Cisco IOS CEF邻接允许硬件使用相邻关系数量和一样。没有简单关键字,硬件安装另外的邻接条目为了避免平台极化。Cisco IOS介绍呼叫帮助避免CEF极化的唯一的ID的概念/通用ID。此算法,呼叫通用算法(在当前Cisco IOS版本的默认),添加32位路由器特定的值到散列函数(呼叫通用ID -这是一个随机地生成的值在能可以手工被控制)的交换机时启动。这植入在每个路由器的散列函数有唯一的ID的,保证同样源/目的地对哈希到在另外路由器的一个不同的值沿路径。此进程提供一更加好整个网络的负载均衡并且避免极化问题。此唯一的ID概念不为等价路径偶数工作由于硬件限制,但是为等价路径奇数理想工作。为了克服此问题, Cisco IOS添加一条链路到硬件邻接表,当有等价路径偶数为了做系统相信时有等价链路奇数。

为了配置通用ID的一个定制的值,请使用:

6500(config)# ip cef load-sharing algorithm universal <id>