本文档提供了有关如何解决 Catalyst 6500/6000 交换机上的与地址解析协议 (ARP) 或内容可寻址内存 (CAM) 表相关的问题的信息。
本文档没有任何特定的要求。
本文档不限于特定的软件和硬件版本。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
Catalyst 交换机维护若干类型的表,这些表经过调整,适用于第 2 层交换或多层交换 (MLS),并且保存在非常快速的存储器中,以便可以并行比较帧或数据包内的许多字段。
ARP — 将 IP 地址映射到 MAC 地址,以提供第 2 层广播域内的 IP 通信。例如,主机 B 要向主机 A 发送信息,但在其 ARP 缓存中没有主机 A 的 MAC 地址。主机 B 生成一个广播消息发往广播域中的所有主机,以获取与主机 A 的 IP 地址关联的 MAC 地址。广播域中的所有主机都收到 ARP 请求,但只有主机 A 以其 MAC 地址作出响应。
CAM — 所有 Catalyst 交换机型号都使用 CAM 表进行第 2 层交换。当帧到达交换机端口时,交换机了解到源 MAC 地址并将其记录在 CAM 表中。表中记录所到达的端口和相应的 VLAN,并附带一个时间戳。如果在交换机的一个端口上了解到的 MAC 地址已移至不同的端口,则为最新到达的端口记录该 MAC 地址和时间戳。然后,删除前一个条目。如果已在表中为正确的到达端口发现了 MAC 地址,则仅更新其时间戳。
三态内容可寻址存储器(TCAM) — 在多层交换机中,访问控制列表(ACL)在传统路由中提供的所有进程都在硬件中实施。通过 TCAM,对表查找一次即可将数据包对照整个访问列表进行评估。大多数交换机都有多个 TCAM,以便可以同时评估入站和出站安全以及 Qos ACL,或将其完全与第 2 层或第 3 层转发决策并行进行。
在分布式交换中,每个分布式功能卡(DFC)负责维护各自的CAM表。这意味着每个 DFC 将了解到 MAC 地址并使其老化,具体取决于该特定条目的 CAM 老化和流量匹配。使用分布式交换的情况下,Supervisor 引擎经常会暂时收不到某个特定 MAC 地址的任何流量,因此该条目可能会到期。目前有两种机制可用于保持不同引擎之间CAM表的一致性,如DFC(在线模块中存在)和策略功能卡(PFC)(在管理引擎模块中存在):
Flood to Fabric (FF)
MAC 通告 (MN)
当 MAC 地址条目在 PFC 上老化时,show mac-address address <MAC_Address> all 命令会显示保留此 MAC 地址的 DFC 或 PFC。
为了防止 DFC 或 PFC 上的某个条目老化,即使该 MAC 地址没有流量,仍要启用 MAC 地址同步。发出以下这些命令以启用同步:
!--- This is a global configuration command and is used to enable the synchronization. Cat6K-IOS(config)#mac-address-table synchronize
!--- This is a privileged EXEC command and is used to clear dynamic MAC addresses. Cat6K-IOS#clear mac-address-table dynamic
Cisco IOS®软件版本12.2(18)SXE4及更高版本中提供了mac-address-table synchronize命令。启用它之后,您有可能仍会看到在 PFC 或 DFC 中并不存在的条目。但是,模块有办法从使用以太网带外信道 (EOBC) 的其他设备中获取它。
注意:mac-address-table synchronize命令清除路由的MAC条目。要避免这种情况,请用 mac-address-table aging-time 0 routed-mac 全局配置命令禁止清除经过路由的 MAC。
思科快速转发(CEF)是第3层IP交换技术,与其他交换技术相比,可提供卓越的性能,特别是在具有动态流量模式的网络中。CEF维护称为转发信息库(FIB)和邻接表的数据结构。FIB 表真实反映路由表中的信息,并用于做出转发决策。邻接表包含预先计算得出的下一跳设备的链路层报头。根据下一跳的接口,FIB 表中的条目映射到邻接表中的条目。如果邻接表中没有填充必要信息,则设备无法执行 CEF 交换数据包。
如果 CEF 定期丢弃数据包,并且间隔为正常操作的时间,那么这很可能是因为定期清除邻接表。这种情况是由 ARP 条目的老化造成的。在用所需的下一跳信息填充邻接表期间,不以 CEF 方式交换数据包。当默认情况下每四小时刷新一次 ARP 条目时,将 ARP 超时值配置得太小会造成 CEF 操作中断。
在接口配置模式下发出 arp timeout 命令以更改条目在 ARP 缓存中保留的时间。
有关此漏洞的详细信息,请参阅Cisco Bug ID CSCeb53542(仅限注册客户)。有关 CEF 邻接的详细信息,请参阅排除 CEF 不完全邻接的故障。
交换机从 CAM 表中过滤源 MAC 地址为 00-00-00-00-00-00(这是无效的源 MAC)的帧。以下是发生这种情况时 syslog 错误输出的示例:
%SYS-4-P2_WARN: 1/Filtering MAC address 00-00-00-00-00-00 on port 2/48 from host table
这些消息传达信息,告诉您找到了源 MAC 地址为 00-00-00-00-00-00 的帧,而交换机不会将其添加到 CAM 表中。但是,交换机将会转发来自全零 MAC 地址的流量。
解决方法是找出生成源 MAC 地址为全零的帧的终端站。一般而言,以下这些设备之一会发出这样的帧:
数据流生成器,如 Spirent SmartBits
某种类型的服务器,如进行负载均衡的 IBM WebSphere 服务器
配置有误的路由器或终端站,例如发出全零广播的设备
有故障的 NIC
LAN 交换机使用转发表(如第 2 层表和 CAM 表)按帧的 VLAN 编号和目标 MAC 地址将流量引向特定端口。当没有条目对应于帧在传入 VLAN 中的目标 MAC 地址时,向各自 VLAN 内的所有转发端口发送该(单播)帧。这样即导致了泛洪。泛洪的确切原因是交换机的第 2 层转发表中没有数据包的目标 MAC 地址。在这种情况下,将从数据包所在 VLAN 中的所有转发端口(收到该数据包的端口除外)向外泛洪该数据包。
默认的 ARP 表老化时间为 4 小时,而 CAM 对于条目只保留 5 分钟。当目标 MAC 地址因老化离开 CAM 表时,交换机向各自 VLAN 内的所有转发端口发出一个帧。CAM 老化计时器需要大于或等于 ARP 超时以防止单播泛洪。作为解决方法,可以发出以下这些命令之一,以增加故障 VLAN 的 CAM 老化计时器,从而匹配 ARP 老化时间:
对于 CatOS,发出 set cam agingtime 命令。
对于 Cisco IOS 软件,发出 mac-address-table aging-time 命令。
注意:在运行热备份路由器协议(HSRP)的任何Catalyst环境中,建议您确保CAM和ARP计时器同步。
有关交换式网络中单播数据包泛洪的可能原因和影响的信息,请参阅交换式园区网络中的单播泛洪。
在混合模式下,管理引擎运行CatOS,而多层交换功能卡(MSFC)运行Cisco IOS。CatOS 运行在第 2 层,并建立 CAM 地址表以保留 VLAN、MAC 地址和端口号信息。MSFC中的Cisco IOS在第3层运行,并构建ARP表以保存IP地址到MAC地址解析。当更改任何设备(如打印机或服务器)的IP地址时,您可能无法ping通该新IP地址。但是,可以从相同的 VLAN Ping 通新的 IP 地址。这可能是 MSFC 上的一个 ARP 问题。
下面这个解决方法可以帮助分离并解决问题:
清除 MSFC 上的 ARP 表。
MSFC2#clear arp int vlan 40
验证 ARP 超时值。默认值为 4 小时。如果 VLAN 中的 ARP 超时太长,可以将超时值设置回默认值或最佳值。
MSFC2#show int vlan 40 Vlan40 is up, line protocol is up Hardware is Cat6k RP Virtual Ethernet, address is 00d0.0050.33fc (bia 00d0.005 0.33fc) Internet address is 40.40.40.3/24 MTU 1500 bytes, BW 1000000 Kbit, DLY 10 usec, reliability 255/255, txload 1/255, rxload 1/255 Encapsulation ARPA, loopback not set Keepalive not supported ARP type: ARPA, ARP Timeout 04:00:00 Last input 00:00:00, output 00:01:44, output hang never Last clearing of "show interface" counters never Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
MSFC2#conf t Enter configuration commands, one per line. End with CNTL/Z. MSFC2(config)#int vlan 40 MSFC2(config-if)#arp timeout ? <0-2147483> Seconds MSFC2(config-if)#arp timeout 240
重新启动 MSFC。
MSFC2#write memory Building configuration... [OK] MSFC2#reload Proceed with reload? [confirm] Supervisor> (enable)
以下是遇到此问题时 syslog 错误输出的示例:
%EARL-2-EARL4LOOKUPRAMERROR:Address eac6, data 0-0-8000-0, count 8
当执行 CAM 表查找时,就会显示此消息。当访问存储器时因奇偶校验错误会发生这种情况。当发出 show cam 命令以访问 CAM 表时,通常会产生此错误。在某些情况下,当发出 show cam 命令时交换机也会重置。
%EARL-2-EARLLOOKUPRAMERROR: Address [hex], data [hex]-[hex]-[hex]-[hex], count [dec]
此错误消息表明已检测到查找 RAM 奇偶校验错误。address [hex] 字段是转发表中检测到错误的地址。data [hex]-[hex]-[hex]-[hex] 字段是产生了奇偶校验错误的 RAM 数据的 word0、word1、word2 和 word3。count [dec] 字段是奇偶校验错误的总数。
此消息不是灾难性的,并且如果它只是间断地出现几次,则可能也不会导致中断情况。如果连续不断地收到此消息,则表明交换机在向 CAM 表添加新条目时所尝试写入的 DRAM 扇区有故障。因此需要更换 DRAM 或 Supervisor 本身。
快速切换之后丢失在活动的 Supervisor 引擎上配置的静态 CAM 条目。作为此问题的一个解决方法,必须在快速切换之后重新配置 CAM 条目。
有关此漏洞的详细信息,请参阅Cisco Bug ID CSCed87627(仅注册客户)和CSCee27955(仅注册客户)。
如果TCAM已满,并且您尝试向现有ACL添加新ACL或访问控制条目(ACE),则提交或映射过程将失败。先前的任何配置仍有效。对于路由器访问控制列表(RACL),ACL在多层交换机功能卡(MSFC)上的软件中实施,并会对性能造成相应影响。
在运行混合软件的交换机上,如果所配置的虚拟局域网访问控制列表 (VACL) 或 Qos ACL ACE 超出 TCAM 的模式或掩码容量,则向控制台输出类似于此的 syslog 消息:
%ACL-5-TCAMFULL: acl engine TCAM table is full
在 Supervisor IOS 系统上,或在混合系统中的 MSFC 上,如果所配置的 RACL ACE 超出 TCAM 的容量,则向控制台输出类似于此的 syslog 消息:
%FM-4-TCAM_ENTRY: Hardware TCAM entry capacity exceeded
在 Supervisor IOS 系统上,或在混合系统中的 MSFC 上,发出 show fm summary 命令以查看哪些接口以硬件实施 ACL (ACTIVE),以及哪些接口以软件实施 ACL (INACTIVE)。
此问题的解决方法是从交换机配置中删除不使用的 ACL 或 Qos。有关详细信息,请参阅了解 Catalyst 6500 系列交换机上的 ACL。
当 Ping VLAN 接口时,向默认路由器 (MSFC) 发送源 IP 位于该 VLAN 的 ARP 请求,但路由器不响应该 ARP 请求,并且 debug ARP 显示此错误消息:
IP ARP req filtered src [ip-address] [mac-address] dst [ip-address] [mac-address] wrong cable, interface-id
对于每个 ARP 数据报,如果目标 IP 地址与本地主机地址不匹配,则丢弃 ARP 应答。如果源 IP 地址不在相同的子网内,则丢弃 ARP 请求。应由配置参数忽略此测试,以支持同一电缆上共存多个子网的罕见情况。
只有在从本地主机可访问目标协议 IP 地址(这一点由路由算法决定)并且下一跳不通过相同接口时,才会生成 ARP 应答。如果本地主机充当网关,则可能导致对不在相同子网内的目标进行 ARP 应答。这表明丢弃 ARP 请求是合理的。
通过使 Catalyst 6500 不对所有 ARP 请求都做出响应可解决此问题,因为 ARP 请求中的源 IP地址与 ARP 中的目标 IP 地址在不同的子网上。因此,MSFC/Router 得出 ARP 不在同一个第 2 层域的结论,并显示电缆类型错误。换句话说,当 ARP 源和目标不属于同一个第 2 层域时,就会生成电缆错误的调试消息。要使 ARP 在这种场景下正常工作,作为一种解决方法,必须可使用静态路由访问目标协议 IP。
MAC 地址表中对于 MAC 地址显示两个条目。
Cat6K#show mac-address-table int gi 6/11 Displaying entries from Line card 6: Legend: * - primary entry age - seconds since last seen n/a - not available vlan mac address type learn age ports ------+----------------+--------+-----+----------+-------------------------- [FE 1]: * 100 0011.857c.4d10 dynamic Yes 0 Gi6/11 [FE 2]: * 100 0011.857c.4d10 dynamic Yes 95 Gi6/11 Cat6K#show module 6 Mod Ports Card Type Model Serial No. --- ----- -------------------------------------- ------------------ ----------- 6 48 CEF720 48 port 10/100/1000mb Ethernet WS-X6748-GE-TX SADxxxxxxxx Mod MAC addresses Hw Fw Sw Status --- ---------------------------------- ------ ------------ ------------ ------- 6 001d.45fd.xx4a to 001d.45fd.xx79 2.6 12.2(14r)S5 12.2(18)SXF8 Ok Mod Sub-Module Model Serial Hw Status ---- --------------------------- ------------------ ----------- ------- ------- 6 Distributed Forwarding Card WS-F6700-DFC3B SALxxxxxxxx 4.6 Ok Mod Online Diag Status ---- ------------------- 6 Pass
DFC 环境中存在两种第 2 层转发查找引擎。在 dCEF 环境中,FE1 和 FE2 经常会在 CEF720/dCEF720 体系结构线路卡上的同一个端口上了解到相同的 MAC 地址。
Cisco 路由器要求每个虚拟 IP 地址都有一个 ARP(地址解析协议)条目。而网络负载均衡使用第 2 层多播传递数据包。在 Cisco 所实现的 RFC 中,多播仅用于 IP 多播。因此,当路由器未发现多播 IP 地址时,它不会自动创建 ARP 条目,而是必须由您手工向路由器添加此类条目。
通常,如果通过单播 IP 地址(群集的虚拟地址)解析得到多播 MAC 地址(群集虚拟 MAC 地址),则 Cisco 设备不会在 ARP 表中放置后者。 要解决此问题,需要将单播虚拟 IP 地址静态映射到多播 MAC 地址。
有关详细信息,请参阅“Catalyst 交换机对于 Microsoft 网络负载均衡的配置示例”的多播模式部分。
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
27-Oct-2009 |
初始版本 |