路由器收到封包 → 查路由表 → 轉發/丟棄。**丟包發生點**通常在:**輸入佇列溢位、輸出佇列溢位、CPU 處理不過來、記憶體無法分配緩衝區**。最核心兩大根因:**記憶體碎片化** 與 **CPU 過載**。
路由器記憶體被分配/釋放後,形成大量**不連續的小塊**。總可用記憶體看似充足,但**最大連續可用塊**極小,導致大封包 (如 1500B、Jumbo Frame) 無法分配緩衝區 → **強制丟包**。
Router# show memory
Head Total(b) Used(b) Free(b) Lowest(b) Largest(b)
Processor 0x... 20971520 8388608 12582912 10485760 8388608
I/O 0x... 4194304 1048576 3145728 2097152 2097152
| Free | Largest | Largest/Free | 碎片嚴重度 | 風險 |
|---|---|---|---|---|
| 20 MB | 15 MB | 75% | 輕微 | 正常運行無影響 |
| 20 MB | 8 MB | 40% | 中等 | 大封包偶發丟包,需關注 |
| 20 MB | 0.8 MB | 4% | **嚴重** | **頻繁丟包、介面間歇性失效、BGP/OSPF 鄰居震盪** |
| 進程名 | 典型原因 | 對策 |
|---|---|---|
| IP Input / IP Background | 大量封包需 CPU 處理 (ACL/NAT/Qos/隧道/選項) | 啟用硬體轉發 (CEF/Fast Switching)、優化 ACL 順序、關閉不必要服務 |
| ARP / ARP Input | ARP 風暴/掃描/環路 | 啟用 DAI、Port Security、Storm Control、檢查環路 |
| BGP / OSPF / ISIS | 路由震盪、全表重算、鄰居抖動 | Route Dampening、BFD 快速檢測、優化區域劃分、摘要路由 |
| SNMP Engine | 監控系統採集頻率過高/MIB 遍歷 | 降低採集頻率、限制 MIB 視圖、使用 Telemetry 替代 |
| HTTP/HTTPS/SSH/TELNET | 暴力破解/掃描/大量並發管理連線 | ACL 限制管理平面存取、啟用 SSH Key、Fail2ban、Control Plane Policing |
| SRB Background | 橋接風暴 (SRB = Source Route Bridging) | 關閉無用橋接功能、啟用生成樹 |
# Cisco 範例:關閉 HTTP Server (若為嫌疑)
no ip http server
# 或關閉 SNMP
no snmp-server
# 驗證丟包是否改善 → 是 → 根因確認 → 修復配置/升級固件 → 重啟服務
發現丟包
│
├─ show memory → Largest/Free < 0.3? → 是 → 記憶體碎片化 → 重啟/優化/擴容/升級
│
└─ 否 → show processes cpu → 5Min CPU > 70%? → 是 → CPU 過載 → 定位高佔用進程 → 針對性優化/關閉/升級
│
└─ 否 → 檢查介面計數器 (CRC/Input Error/Output Error/Overrun/Underrun)
→ 物理層故障 (光模塊/纖維/網線/埠速率雙工不匹配)
│
└─ 檢查 ACL/QoS/策略路由/NAT 配置錯誤導致黑洞/迴路
│
└─ 檢查對端設備/鏈路/運營商端
**記住**:路由器再貴、交換技術再先進 (過程/快速/自治/矽交換),**沒有封包輸入,一切歸零**。守住記憶體與 CPU,就是守住網絡生命線。