Switch Floods 應該是單播的數據包
我在一家大公司擔任網路管理員。最近我們注意到我們的網路基礎設施存在問題。基本上,我們的網路後端位於作為主要 L3 後端交換機的 Catalyst 上,很少有 Cisco Nexus 交換機作為邊緣 L2 交換機連接到該 Catalyst。
當我們試圖嗅探我們的一台主機上的流量時,問題就出現了——然後我們(總是)看到其他主機之間的單播流量。
我會嘗試更詳細一點:假設我在主機 10.0.0.1 上,使用 mac MAC,我執行命令 -
tcpdump -i eth0 ether host not MAC and host not 10.0.0.1 and not broadcast and not multicast
我總是會看到其他主機之間的流量。
然而,我讀了一篇關於單播泛洪的 Cisco 文章——“現象”不僅發生在我們網路中的 VLAN 之間傳遞時,而且發生在同一個 VLAN 上。在同一 VLAN 中的交換機之間傳遞時是否可能發生這種情況(我們的 VLAN 跨越許多交換機)?所有交換機都通過中繼線連接到 Catalyst…
有任何想法嗎?
謝謝。
編輯:
看來我們找到了問題的根源。
基本上,每當其中一個交換機收到一個帶有它無法辨識的 MAC 地址的幀時,它就會將它泛洪到所有埠。這是正常的——事情應該這樣發展。但是,在我們目前的設置中,交換機中的 MAC 條目應該“存活”30 分鐘。如果 30 分鐘內沒有看到 MAC,它將從交換機中刪除,直到再次看到。如果一個數據包被發送到那個 MAC 並且它不在表中 - 所有埠都將被淹沒以找到目標 MAC 埠(我們希望從其中一個埠得到答案)。
我們找到了其中一個目標 MAC,並在交換機 MAC 表中查找它。當網路被淹沒時,該表不包含 MAC。我們嘗試 ARPing 與該 MAC 相關的地址 - 並且洪水停止(因為 MAC 重新出現在 MAC 表中)。
然而,幾秒鐘後,MAC 再次從 MAC 表中消失,洪水又開始了。
洪水問題似乎源於我們交換機上的 MAC 表問題。似乎他們“忘記” MAC 地址的速度比他們應該的要快(MAC 應該停留 30 分鐘)並用該 MAC 淹沒所有數據包。
一個快速的前傳——
ARP 表 - L3 設備(路由器、主機等)維護給定 IP 地址和相應 MAC 地址之間的映射。
CAM 表 - 這可能在特定交換機平台中以其他名稱而聞名,但結果是給定的 L2 交換設備維護給定硬體地址和一個或多個物理交換機埠之間的映射。
在上述情況下發生的事情稱為單播泛洪。在這種情況下,即使交換機的 CAM 表已刷新相應的條目,路由器仍具有活動的 ARP 條目。因此,當路由器接收到給定主機的數據包時,它會被簡單地轉發到交換機,而無需先發送 ARP 請求(IP : MAC 映射仍然被記憶體)。但是,交換機不再知道此 MAC 地址映射到的埠(此條目已較早老化)。如果交換機沒有給定單播 MAC 的 CAM 條目,那麼它將將該 MAC 的數據包泛洪到所有埠,直到它看到響應(即對 ARP 請求的響應)。
由於不明原因,Cisco 交換機上的 ARP 和 CAM 計時器通常完全不同。這些值略有不同,但在最現代的 Nexus 設備中仍然存在這種不匹配。最佳做法是將 ARP 和 CAM 計時器設置為相似的值 - 理想情況下,將 CAM 表設置為比 ARP 長 5 秒左右。路由器重新 ARP 比交換機必須泛洪要好。將這兩個值都設置為 ~600 秒(10 分鐘)通常並不算太糟糕,但如果在路由器上看到過多的 ARP 流量,某些環境可能需要更長的時間。