Software CEF(思科的技术)如何实现前缀搜索算法?

网络工程 思科 路由 头孢菌素
2022-02-08 22:52:57

CEF(Cisco的加速包交换技术)的软件版本如何实现算法在FIB(转发信息库)中搜索前缀?

它是否使用哈希表或基于树的搜索算法,或者它使用什么?

1个回答

CEF 使用 trie:

如何为您的网络选择最佳路由器交换路径

思科快速转发

Cisco Express Forwarding,也使用 256 路数据结构来存储转发和 MAC 报头重写信息,但它不使用树。Cisco Express Forwarding 使用 trie,这意味着要搜索的实际信息不在数据结构中;相反,数据存储在一个单独的数据结构中,而 trie 只是指向它。

在此处输入图像描述

可达性信息(在 Cisco Express Forwarding 表中)和转发信息(在邻接表中)的这种分离提供了许多好处:

  • 邻接表可以与 Cisco 快速转发表分开构建,允许在不进行任何数据包交换的情况下构建两者。
  • 用于转发数据包的 MAC 报头重写不存储在缓存条目中,因此 MAC 报头重写字符串中的更改不需要缓存条目无效。
  • 您可以直接指向转发信息,而不是指向递归的下一跳,以解析递归路由。

本质上,所有的缓存老化都被消除了,缓存是根据路由表和ARP缓存中包含的信息预先构建的。无需处理交换任何数据包来构建缓存条目。邻接表中的其他条目

邻接表可以包含除 MAC 头重写字符串和出站接口信息之外的条目。可以放置在邻接表中的一些不同类型的条目包括:

  • 缓存— MAC 标头重写字符串和用于到达特定相邻主机或路由器的出站接口。
  • 接收— 发往此 IP 地址的数据包应由路由器接收。这包括广播地址和路由器本身配置的地址。
  • drop — 应丢弃发往此 IP 地址的数据包。这可以用于被访问列表拒绝的流量,或路由到 NULL 接口。
  • punt — Cisco Express Forwarding 无法切换此数据包;将其传递给下一个最佳切换方法(通常是快速切换)进行处理。
  • glean — 直接附加下一跳,但当前没有可用的 MAC 标头重写字符串。