Cisco IOS 和 NX-OS 软件 : Cisco IOS 软件版本 12.0 主线

如何验证 Cisco 快速转发交换

2016 年 10 月 24 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 11 月 9 日) | 反馈


目录


简介

思科IOSï ¿  ½软件支持实现流量转发的几机制与最小延迟和高吞吐量的。本文档介绍如何确定您的数据包所采用的 Cisco IOS 交换或转发路径。

注意: 本文讨论进程交换,仅快速交换和思科快速转发(CEF)。

先决条件

要求

本文档的读者应掌握以下主题的相关知识:

  • Cisco IOS 软件

  • Cisco 1600、2500 和 3600 系列平台

使用的组件

本文档不限于特定的软件和硬件版本。

规则

有关文档规则的详细信息,请参阅 Cisco 技术提示规则

什么是 Cisco IOS 交换?

Cisco IOS 交换定义流经路由器的数据包。更明确的是,它能够确定数据包通过路由器的转发速度,并能够确定数据包存储在哪些物理缓冲。

在 Cisco IOS 的发展历程中,开发了多种交换方法。某些方法仅在特定平台上受支持。CEF 是最新的交换方法。如果全局启用 CEF(默认行为),则还会同时启用 ip route-cache cef 接口特定命令。此命令确保对进入此接口的数据包执行 CEF 交换。有时,如果需要在一个接口上单独禁用 CEF,则应添加 no ip route-cache cef 命令。这会对该接口单独禁用 CEF 交换。当强制禁用 CEF 时,Cisco IOS 不会自行向 running-config 添加 no ip route-cache 命令。在 Cisco IOS 12.0 的主线中,它被引入到许多平台上,特别是中低范围的平台,如 Cisco 1600、2500 及 3600 系列等。

当路由器在路由接口接收到数据包时,它首先取消第二层 (L2) 帧信息。然后将第 3 层 (L3) 数据包存储到输入/输出 (I/O) 存储器中。后续操作取决于数据包遵循的交换路径。

验证步骤

可使用以下步骤确认数据包是否遵循 CEF 交换路径:

  1. 确认是全局还是在特定接口上启用了 CEF。

    router#show ip cef
    
    %CEF not running
    1. 在全局配置模式下使用 ip cef 命令可启用(中央)CEF。

      注意: 在 Cisco 7200 系列上,即将发布的 Cisco IOS 版本采用 CEF 作为默认 Cisco IOS 交换方法。

    2. 使用 show ip cef prefix 命令,并确认是否已列出前缀。

      router#show ip cef
      
      Prefix              Next Hop            Interface 
      0.0.0.0/32          receive 
      192.168.0.0/30      attached            Serial2/0/0:1 
      192.168.0.0/32      receive
  2. 确认是否已在特定接口上启用 CEF。

    1. 使用 show cef interface x/x 命令查找“IP CEF switching enabled”或“IP distributed CEF (dCEF) switching enabled”。

      router#show cef interface fastEthernet 0/0/0 
      FastEthernet0/0/0 is up (if_number 2) 
        Internet address is 192.168.1.253/24 
        ICMP redirects are always sent 
        Per packet loadbalancing is disabled 
        Inbound  access list is not set 
        Hardware idb is FastEthernet0/0/0 
        Fast switching type 1, interface type 18 
        IP Distributed CEF switching enabled 
        Fast flags 0x0. ifindex 1(1) 
        Slot 0 Slot unit 0 VC -1 
        Hardware transmit queue ptr 0x48001A00 (0x48001A00) 
        Transmit limit accumulator 0x48001A02 (0x48001A02) 
        IP MTU 1500
    2. 使用 show ip interface 命令显示已启用的 Cisco IOS 交换方法。

      router#show ip interface fastethernet 1/0/0.1 
       FastEthernet1/0/0.1 is up, line protocol is up 
        
         IP fast switching is enabled 
         IP fast switching on the same interface is enabled 
         IP Flow switching is disabled 
         IP CEF switching is enabled 
         IP Distributed switching is enabled 
         IP Fast switching turbo vector 
         IP Normal CEF switching turbo vector 
         IP multicast fast switching is enabled 
         IP multicast distributed fast switching is disabled 
         IP route-cache flags are Fast, Distributed, No CEF
      

      在上述输出中,“No CEF”标志表明由于已在特定接口上添加了 no ip route-cache cef 命令,因此已禁用 CEF。“CEF”标志表明 CEF 正在运行。在稳定状态下,不应显示这两个标志。Cisco Bug ID CSCdr80269仅限注册用户)解决可导致显示这两个标志的极少情况。有关 Bug ID 的详细信息,请参阅 Bug 工具包仅限注册用户)。

  3. 确认流经路由器的大多数数据包是否已进行 CEF 交换。

    1. 使用 show interface x/x stat 命令,并确定路由器通过“处理器”(而不是“路由缓存”)转发的数据包数和字节数。请注意,“路由缓存”包括经过快速交换和 CEF 交换的数据包。

      router#show interface stats     
      FastEthernet0/0           
      Switching path Pkts In  Chars In Pkts Out Chars Out 
      Processor 95084 26211621 33493 3386174 
      Route cache 24581 1132797 24542 13297583 
      Distributed cache 0 0 0 0 
      Total  119665 27344418 58035 16683757
    2. 使用 show ip cache 命令确定是否存在 IP 缓存条目,该条目表明数据包遵循快速交换路径。快速交换建立在按需路由缓存的基础上,以加快通过路由器转发数据包的速度。在接口硬件上运行的驱动程序代码将控制权临时转换到快速交换代码,后者在路由缓存中搜索根据以前传输的数据包构建而来的帧和其他信息。如果路由缓存包含一个条目,快速交换代码会尝试把数据包直接发送到目标接口。

      router#show ip cache
      IP routing cache 0 entries, 0 bytes 
         0 adds, 0 invalidates, 0 refcounts
      Minimum invalidation interval 2 seconds, maximum interval 5 seconds, 
         quiet interval 3 seconds, threshold 0 requests 
      Invalidation rate 0 in last second, 0 in last 3 seconds 
      Prefix/Length       Age       Interface       Next Hop

      以下步骤说明了验证是否正在使用 CEF 转发数据包的更具体过程。

    1. 使用 ip cef 命令启用 CEF。

    2. 发出 clear ip cache 命令以清除经过快速交换的缓存条目。

    3. 启动您的数据流。

    4. 发出 show ip cache 命令。因为数据包是经过 CEF 交换的,请确认快速交换的高速缓冲中没有显示条目。

    5. 发出 show interface stats 命令,并确认入站的路由缓存的递增命中。

      注意: 路由缓存计数器包括经过快速交换和 CEF 交换的数据包。

    6. 使用 no ip route-cache cef 命令在入站接口上禁用 CEF。

    7. 发出 show interface stats 命令,并确认路由缓存的递增命中。

    8. 发出 show ip cache 命令,由于 Cisco IOS 已恢复为快速交换,请确认显示有相应条目。

    9. 在出站接口上发出 no ip route-cache 命令以禁用快速交换。对匹配的入站接口上的数据包进行进程交换。

      注意: 建议不要在高流量的网络中配置进程交换。

  4. 如果确认CEF在路由器接口启用并且确定了多数数据包不经过CEF交换的,请获取这些命令,当您问题向Cisco技术支持中心(TAC)报告时。

    注意: 发出 debug 命令之前,请参阅有关 Debug 命令的重要信息

    • show cef interface x/x - 显示 CEF 相关接口信息。

    • show ip cef前缀—显示在转发信息库(FIB)的前缀条目。

    • show adjacency interface detail - 显示通过邻接解决的递归和直接前缀。

    • show cef not-cef-switched - 显示未经过 CEF 交换的数据包。

    • debug ip cef drop - 显示已丢弃 CEF 的数据包的调试信息。

    输入接口确定数据包采用的 Cisco IOS 交换路径。在特定接口上启用或禁用交换方法时,请考虑以下经验。

    传入接口 传出接口 交换方法
    CEF 进程 CEF
    进程 CEF 法塞特
    进程 快速交换(IP 路由缓存) 快速交换
    CEF 快速交换 CEF

    换句话说,您需要在传入接口上启用 CEF,以便对数据包执行 CEF 交换。由于 CEF 对输入做出转发决策,因此请在输入接口上使用 no ip route-cache cef 命令禁用 CEF。相比之下,由于 Cisco IOS 在交换数据包之后生成快速交换的缓存条目,输入进程交换接口并通过快速交换接口输出的数据包将进行快速交换,因此,请在输出接口上使用 no ip route-cache 命令禁用快速交换。不会对以下流量类型进行 CEF 交换:

    • 在交换缓存中尚无条目的数据包

    • 要发送到路由器的数据包

    • 广播数据流

    • 带选项的 IP 数据包

    • 需要协议转换的数据包

    • 加密数据流

了解 CEF 传送

术语“punt”是 Cisco 定义来描述接口的设备驱动程序将数据包发送到下一个最快的交换级别的操作。以下列表定义了首选 Cisco IOS 交换方法的顺序(按从快到慢的顺序排列)。

  • 分布式 CEF

  • CEF

  • 快速交换

  • 过程交换

将在以下情况下进行传送:

  • 下一个较低级别未生成有效路径或有效邻接(对于 CEF)。换句话说,如果 CEF 查找进程在转发信息库中找不到有效条目,数据包被踢到下一个可用交换路径或被丢弃。

  • 最低级别不支持特定功能或第 2 层封装。如果 CEF 支持特定功能,数据包的所有权将通过 CEF“feature path”中的一套软件程序。

  • 某一功能要求特殊处理。

如果 CEF 不支持部分输出功能,则在 CEF 内安装 punt 邻接。CEF 将进入此类邻接的所有数据包传送到下一个最佳交换模式中,以便交换所有数据包。

center#show ip cef 45.0.0.0 
45.0.0.0/8, version 184, 0 packets, 0 bytes 
  via 1.1.1.1, Tunnel0, 0 dependencies 
    next hop 1.1.1.1, Tunnel0 
    valid punt adjacency

CEF Packets passed on to next switching layer 
Slot    No_adj  No_encap Unsupported  Redirect   Receive   Bad_ttl   Options
RP           0         0           0         0      5700         0         0 
2            0         0           0         0         0         0         0 
3            0         0           0         0         0         0         0 
4            0         0           0         0         0         0         0 
5            0         0           0         0         0         0         0 
8            0         0           0         0         0         0         0 
9            0         0           0         0         0         0         0 
10           0         0           0         0         0         0         0

采用不完全邻接,CEF 将整体考虑路由器(包括所有其他交换路径)是否知道如何到达邻接节点。我们踢数据包处理交换为了开始一些解析协议类似地址解析服务(ARP),导致的邻接完成的一些时间以后。在这种情况下,CEF 每两秒钟就会将一个数据包传送到下一个交换路径,以避免出现数据包泛洪。因此,在这种情况下,对 IP 地址执行 ping 操作可能会导致 50% 的失败率,并且您将看到“!.!.!.!.!”ping 模式。当 CEF 表损坏时,也会出现这种情况,正如特定 IP 地址的 show ip route 命令信息和 show ip cef 命令信息之间的区别。

注意: 在千兆交换路由器(GSR),线卡(LC)生成互联网控制消息协议(ICMP) echo replies从CEF的内部。如果未将数据包发往某个 GSR 本地地址,则不涉及任何进程。该数据包要么在硬件中直接交换,要么在 dCEF 中中断,具体取决于您使用的 LC。

无法在 GSR 上使用快速交换和进程交换。如果在入站 LC表里,目的地前缀不能解析为转发条目,则丢弃该信息包。匹配收集邻接仅的数据包被踢对千兆路由处理器(GRP)。此外,在 GSR 上,LC CPU 不会为了实现功能而将数据包传送到 GRP,LC 将发送一条“ICMP 不可达”消息(条件是未配置 no ip unreachables 命令)。在 GSR 上,踢到 GRP 的唯一数据流是指定到路由器接口的数据包,或者是源自路由器的数据包。


相关信息


Document ID: 47205