L3 交换机与路由器上的 CEF 操作

网络工程 思科 路由 纳特 切换模式 头孢
2021-07-06 14:24:26

我知道 L3 交换机使用 CEF 来实现更快的数据包转发。但是,CEF 不适用于需要进行 NAT 的数据包。这是否意味着边缘路由器和边缘 L3 交换机不使用 CEF?CEF 的用处是否仅限于局域网?

3个回答

CEF 是思科对其 FIB 的称呼。当在 L3 交换机中执行“sh ip cef”时,这些信息实际上根本没有用于推送数据包,这只是用于填充硬件 ASIC 的软件

CEF 只是思科用来描述他们优化数据存储/检索代码的术语,它不是具有特定功能的特定技术。

在大多数硬件平台中,您不能在没有 CEF 的情况下简单地运行该框,因为需要 CEF 数据结构来编译硬件特定信息。
MPLS 等一些功能也依赖于 CEF 数据结构,因此没有它就无法工作。

LAN (L2) 交换不是通过 CEF 抽象出来的,因此它根本不依赖于 CEF。

我推荐本书以获得有关 CEF 的最新信息(它是在 12.2S 左右的主要 CEF 重写之后编写的)

如果您约束 IP Trie FIB 的 CEF 定义,那么显然不能用于 NAPT,因为您无法预先确定 natted 的内容和位置。但正如所解释的,CEF 不是特定的技术,它是一个更广泛的概念,因此 CEF 是否是 NAT 功能是有争议的,我会错误地认为它是 CEF 功能:

bu.ip.fi#sh cef features global  | b Local
  Global Local features not attached to a specific interface:
     NAT
bu.ip.fi#

如果没有 CEF,我永远不会运行任何东西,这可能只是由于遗留原因,甚至存在禁用它的选择。考虑瞻博网络,他们没有用于描述相同概念的特定术语,因为他们不需要将其与某些替代方法区分开来,因为不存在这种劣等替代方法。

这是否意味着边缘路由器和边缘 L3 交换机不使用 CEF?CEF 的用处是否仅限于局域网?

CEF 很有用,因为它允许路由器在第 3 层转发操作期间快速重写第 2 层信息。WAN 路由器必须像 LAN 交换机一样重写第 2 层报头信息... CEF 对两种类型的路由器都非常有用。

在高层 CEF 执行两个功能:

  • 包含路由表的影子副本,它将路由前缀映射到下一跳
  • 包含对第 2 层邻接表的引用,该表提供有关通过第一个项目符号中提到的出口下一跳重写 IP 数据包所需的第 2 层标头的缓存信息。

例子:

考虑这个路由器,它在 Serial1/0 上有一个 WAN HDLC 链接,并且通过 FastEthernet0/0 有一个 LAN 连接......

R1#show adjacency internal
Protocol Interface                 Address
IP       Serial1/0                 point2point(5)
                                   0 packets, 0 bytes
                                   0F000800             <--------- HDLC Header rewrite info
                                   CEF   expires: 00:02:17
                                         refresh: 00:00:17
                                   Epoch: 0
                                   Fast adjacency disabled
                                   IP redirect enabled
                                   IP mtu 1500 (0x0)
                                   Fixup disabled
                                   Adjacency pointer 0x6663D3E0, refCount 5
                                   Connection Id 0x000000
                                   Bucket 6

假设一个去往 192.0.2.1 的 IPv4 数据包从 LAN 上的 FastEthernet0/0 进入路由器,并且必须退出 WAN 上的 Serial1/0(它退出 Serial1/0 的事实可以在 CEF 表中找到......和 ​​CEF表引用邻接表)。

当路由器从 FastEthernet0/0 接收 IPv4 数据包时,路由器必须剥离以太网标头并在HDLC 标头前加上,这是0F000800因为它是 IPv4 目的地(0x0800是否作为 HDLC“类型”值表示下一个标头是IPv4)。

如果 CEF 没有缓存 Serial1/0 的(平凡的)头重写信息,它必须在进程切换级别手动查找信息(这很慢)。只要Serial1/0上的封装不变,这些邻接表的值就不会变;因此,Cisco IOS 在邻接表中缓存邻接重写信息。

当您查看帧中继或 ATM PVC 时,会涉及更多的重写信息。

这篇关于 CCO 的文档(文档 ID:17812)可能比我通过重新整理大量 CCO 内容更好地解释了事情

NAT当然可以使用CEF。这是来自思科自己的指南:http : //www.cisco.com/en/US/tech/tk648/tk361/technologies_q_and_a_item09186a00800e523b.shtml

Q. What kind of routing performance can be expected when using Cisco IOS NAT?

    A. Cisco IOS NAT supports Cisco Express Forwarding switching, fast switching, and process switching. For 12.4T release and later, fast-switching path is no longer supported. For Cat6k platform, the switching order is Netflow (HW switching path), CEF, process path.

    Performance depends on several factors:

        The type of application and its type of traffic

        Whether IP addresses are embedded

        Exchange and inspection of multiple messages

        Source port required

        The number of translations

        Other applications running at the time

        The type of hardware and processor

运行 IOS-XR 的更大平台,FIB 被分配到线卡,也支持运营商级 NAT,因此它的用处不仅限于 LAN。

还有很多 Cisco 的 L3 交换机根本不做 NAT