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


21

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

Answers:


8

NAT当然可以使用CEF。这来自Cisco自己的指南,网址为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。

另外,许多思科的L3交换机根本根本不做NAT


2
从技术上讲,从入口到出口的CEF路径上都有功能的插入点(例如NAT)。如果存在此插入点,则功能启用了CEF。但是与L3查找不同,此功能可能没有可观察到的性能提升,因为CEF只是为功能提供数据,而不更改功能本身。但这主要是无关紧要的细节,重要的细节是保持启用CEF。
ytti 2013年

18

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

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

在大多数硬件平台中,如果没有CEF,就不能简单地运行该框,因为需要CEF数据结构来编译硬件特定信息。
诸如MPLS之类的某些功能也依赖于CEF数据结构,因此如果没有它就无法使用。

LAN(L2)交换没有通过CEF进行抽象,因此它完全不依赖于CEF。

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

如果限制IP Trie FIB的CEF定义,那么显然不能将其用于NAPT,因为您无法预先确定什么是natted以及在何处。但是正如所解释的那样,CEF不是特定技术,它是更广泛的概念,因此,如果CEF是否具有NAT功能,则值得商it,我会误以为它是CEF功能:

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

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


5
只是要添加此内容-CEF是交换路径,用于转发信息的信息树等,因此名称“ CEF”可能以多种方式使用,并且增加了混乱。实际上,NAT在CEF路径中受支持(其他数千种功能也受支持),但是CEF构建的表不包含某些数据(如ytti所指出的那样,纯粹通过使用它们来切换数据包),需要咨询其他条目。 (它们是由NAT代码构建和维护的)。无论如何,如果可以在CEF路径中交换数据包而又不退回到过程交换,则CEF仍支持该功能。
卢卡斯Bromirski

9

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

CEF很有用,因为它允许路由器在第3层转发操作期间快速重写第2层信息。WAN路由器必须像LAN交换机一样重写Layer2标头信息。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(在CEF表中找到了退出Serial1 / 0的事实...和CEF表引用邻接表)。

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

如果CEF尚未为Serial1 / 0缓存(平凡的)报头重写信息,则必须在进程切换级别(非常慢)手动查找该信息。只要Serial1 / 0上的封装不变,这些邻接表的值就不会改变。因此,Cisco IOS在邻接表中缓存邻接重写信息。

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

这份有关CCO的文档(文档ID:17812)通过重新散布大量CCO内容,可能比我能更好地解释事情


不会仅由CAM咨询第2层操作吗?第3层操作将咨询CEF所在的FIB,如果需要在第3层进行更深入的数据包检查(如果数据包需要经过NAT),这是否会使CEF对WAN路由器无效?
迈克尔

1
CEF专门不用于/ cache /邻接或l3查找,这是“快速切换”(完全不再受支持)。CEF是预先构建的,因此您可能需要进行邻接或l3查找的所有数据都已经在结构中,该结构最适合在给定平台设置的约束下进行搜索。
ytti 2013年

@ytti,对不起,但是CEF确实缓存了邻接信息,我认为您对缓存的填充方式感到困惑(恕我直言,您认为必须对数据包进行缓存才能缓存,但这不是真的)... CEF与其他切换方法(如fast-switching)之间的实质区别在于CEF是预先计算的。但是,CEF仍然必须缓存信息,否则必须在过程交换级别上查找信息……非常慢,这是LAN和WAN接口都需要CEF的原因。
Mike Pennington

我认为我们只是不同意“缓存”的含义,但是关键是它是预构建的,对于许多功能(例如MPLS)来说,它只是数据的结构,没有“过程切换”存储可以回退至。
ytti 2013年

@ChristianDelapena,您将硬件查找表(CAM内存)的硬件实现与填充硬件查找表(即CEF)的IOS软件过程混淆了。CEF存在,因此您可以将第3层前缀条目映射到第2层所需的协议重写信息……但是,第2层可以是许多不同的协议,例如帧中继,atm,sonet分组,hdlc,ppp或以太网。 ..所有这些协议都可以承载IPv4,但是在接收该IP数据包并将其封装以供下一个WAN路由器处理之前,它们的标题中需要填充特定的字段
Mike Pennington 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.