Cisco 快速转发机制
A.CEF概述
CEF采用一个4级每级256条通道结构的转发表来指明转发条目的位置,转发表有nexthop等信息,涵盖了整个IPv4的地址范围,并有指针指向另一个邻接表。转发条目(MAC地址之类)都存储在一个单独的邻接表上。这两个表包括了所有的转发信息,而这些转发信息是根据路由表和ARP来构造的。
CEF简化了查询的步骤,提高了单位时间的工作效率。从整体上来看,CEF在软件形式上实现了路由和交换功能的分离。路由信息和转发信息是分离的,数据包的转发只根据转发信息而不用参照路由信息,可以充分利用专用硬件的功能来达到线速转发,而不受路由变化或者其他因素的干扰,保证了转发的高速高效。
B.CEF转发(提供3张表)
1>FIB(转发信息表):从路由选择表中拷贝过来的转发信息,包括路由选择表中用于转发路由分组所必须的最少信息。
2>Adjacency(邻接表):维护一个邻接节点以及他们相关的2层MAC重写或吓一跳信息数据库
3>NetFlow Table:用于统计网络数据等
这3张表放在三层转发引擎中,比如某个模块或端口,因此,通常都很稳定。
CEF转发机制
普通IP包到达交换机,通过三层转发,直接由硬件的三层转发引擎查找转发信息表,进行转发。三层数据包通过与FIB表格的匹配,进行最长匹配,得到邻居信息,改写原有二层数据帧(下一跳MAC地址)并转发。 查找得到邻居信息,在邻接表中找到下一条,根据下一条进行转发。如果目的IP地址的MAC不在邻居表内,则交换机将使用ARP进行解析,以得到目的地址的MAC地址。
CEF的转发信息表和邻接表:
利用软件创建转发信息表和邻接表 (FIB最多支持6个到达同一目的的邻居条目)
图示转发过程:
C.CEF负载均衡
提供两种负载均衡:
①基于目的地的负载均衡(使用多条路径来均衡负载,默认被启用)
②基于数据包的负载均衡(需要先禁用①,可以在路径上连续发送数据包,而不用考虑具体的主机或用户情况)
命令:
在接口模式下
#no ip load-sharing per-destination //禁用基于目的地的负载均衡
#ip load-sharing per-packet //启用基于数据包的负载均衡
D.查看CEF配置及诊断
查看
在特权模式下:
#show ip cef 端口 目的IP地址 detail
查看转发信息
#show adjacency 端口 detail
查看邻居信息
诊断:
#debug ip cef { drops | receive | events |prefix-ipc |tale}
丢弃包 接收包 事件
#debug ip cef { ipc | interface-ipc}
进程之间通讯的消息