本文提供如何在Catalyst 6500/6000交換器上排解位址解析通訊協定(ARP)或內容可定址記憶體(CAM)表相關問題的資訊。
本文件沒有特定需求。
本文件所述內容不限於特定軟體和硬體版本。
如需文件慣例的詳細資訊,請參閱思科技術提示慣例。
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老化和與該特定條目匹配的流量。使用分散式交換時,管理引擎通常在一段時間內看不到特定MAC地址的任何流量,因此該條目可能過期。目前有兩種機制可讓不同引擎之間的CAM表保持一致,例如DFC(線上模組中存在)和Policy Feature Card(PFC)(在Supervisor模組中存在):
泛洪到交換矩陣(FF)
MAC Notification(MN)
當PFC上的MAC地址條目過期時,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清除。
Cisco Express Forwarding(CEF)是一種第3層IP交換技術,與其他交換技術相比,尤其是在具有動態流量模式的網路中,該技術可提供卓越的效能。CEF維護稱為轉發資訊庫(FIB)和鄰接表的資料結構。FIB表映象路由表中的資訊,用於做出轉發決策。鄰接表包含下一跳裝置的預計算鏈路層報頭。基於下一跳介面,FIB表中的條目被對映到鄰接表中的條目。如果鄰接表未填充所需的資訊,則裝置無法執行CEF交換機資料包。
如果CEF以規則間隔(間隔於正常操作週期)丟棄資料包,則可能是由於定期清除鄰接表。這是由ARP條目的老化引起的。在使用所需的下一跳資訊重新填充鄰接表的持續時間內,資料包不會進行CEF交換。預設情況下,ARP條目每四小時刷新一次,但配置ARP超時值非常小會對CEF操作造成中斷。
在介面配置模式下發出arp timeout命令,以更改條目保留在ARP快取中的時間。
有關此漏洞的詳細資訊,請參閱Cisco錯誤ID CSCeb53542(僅限註冊客戶)。有關CEF鄰接的詳細資訊,請參閱使用CEF對不完整鄰接進行故障排除。
交換機從CAM表中過濾源MAC地址為00-00-00-00-00-00的幀,這是無效的源MAC。以下是發生此情況時系統日誌錯誤輸出的範例:
%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伺服器
配置錯誤的路由器或終端站,例如傳輸全零廣播的裝置
網絡卡故障
LAN交換機使用轉發表(如第2層和CAM表)根據幀的VLAN編號和目標MAC地址將流量定向到特定埠。當傳入VLAN中沒有與幀的目的MAC地址對應的條目時,該(單播)幀會被傳送到相應VLAN中的所有轉發埠。這會導致泛濫。泛洪的根本原因是封包的目標MAC位址不在交換器的第2層轉送表中。在這種情況下,封包會從其VLAN中的所有轉送連線埠中泛洪,但接收它的連線埠除外。
預設ARP表老化時間為4小時,而CAM僅保留條目5分鐘。當目的MAC地址從CAM表中過期時,交換機將幀傳送到相應VLAN中的所有轉發埠。您需要大於或等於ARP超時的CAM老化計時器來防止單播泛洪。作為解決方法,您可以發出以下命令之一,以便針對您遇到問題的VLAN增加CAM老化計時器,以匹配ARP老化時間:
對於CatOS,發出set cam agingtime 命令。
對於Cisco IOS軟體,請發出mac-address-table aging-time 命令。
注意:在執行熱待命路由器協定(HSRP)的任何Catalyst環境中,建議您確保CAM和ARP計時器同步。
請參閱交換式園區網中的單點傳播泛濫,瞭解交換式網路中單點傳播封包泛濫的可能原因和影響資訊。
在混合模式下,Supervisor engine執行CatOS,而多層交換器功能卡(MSFC)執行Cisco IOS。CatOS在第2層運行,並構建CAM地址表以儲存VLAN、MAC地址和埠號資訊。MSFC中的Cisco IOS在第3層運行,並構建ARP表以將IP地址保留為MAC地址解析。當您更改任何裝置(如印表機或伺服器)的IP地址時,您可能無法ping通該新IP地址。但是您可以從同一個VLAN對新的IP位址執行Ping。這可能是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引擎上配置的靜態CAM條目在快速切換後會丟失。作為此問題的解決方法,您必須在快速切換後重新配置CAM條目。
有關此漏洞的詳細資訊,請參閱Cisco錯誤ID CSCed87627(僅限註冊客戶)和CSCee27955(僅限註冊客戶)。
如果TCAM已滿,並且您嘗試向現有的ACL中新增新的ACL或訪問控制條目(ACE),提交或對映過程將失敗。任何先前的配置仍然有效。在路由器存取控制清單(RACL)的情況下,會在多層交換器功能卡(MSFC)上的軟體中實作ACL,且會受到對應的效能下降。
在執行混合軟體的交換機上,如果配置的虛擬區域網訪問控制清單(VACL)或QoS ACL ACE超過TCAM的模式或掩碼容量,系統會將類似以下內容的系統日誌消息列印到控制檯:
%ACL-5-TCAMFULL: acl engine TCAM table is full
在Supervisor IOS系統上,或在混合系統中的MSFC上,如果您配置的RACL ACE超過了TCAM的容量,系統會將類似以下內容的系統日誌消息列印到控制檯:
%FM-4-TCAM_ENTRY: Hardware TCAM entry capacity exceeded
在Supervisor IOS系統或混合系統中的MSFC上,發出show fm summary命令,以檢視哪些介面在硬體中實施ACL(ACTIVE),哪些介面在軟體中實施ACL(INACTIVE)。
此問題的解決方法是從交換機配置中刪除未使用的ACL或QoS。如需詳細資訊,請參閱瞭解Catalyst 6500系列交換器上的ACL。
對VLAN介面執行Ping時,具有該VLAN的來源IP的ARP要求會傳送到預設路由器(MSFC),但路由器不會回應ARP要求,且偵錯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請求是合理的。
解決此問題的方法是:由於ARP請求中的源IP地址與ARP中的目標IP地址位於不同的子網中,因此Catalyst 6500不會響應所有ARP請求。因此,MSFC/路由器認為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條目,您必須手動將其新增到路由器中。
通常,如果多點傳送MAC地址(集群虛擬MAC地址)是通過單播IP地址(集群的虛擬地址)解析的,則思科裝置不會將其放在ARP表中。 為了解決此問題,您需要將單播虛擬IP地址靜態對映到組播MAC地址。
如需詳細資訊,請參閱適用於Microsoft網路負載平衡的Catalyst交換器組態範例的多點傳送模式一節。
修訂 | 發佈日期 | 意見 |
---|---|---|
1.0 |
27-Oct-2009 |
初始版本 |