Virtual Network----ping 127.0.0.1迴環地址時延大於10ms問題處理記錄

Virtual Network----ping 127.0.0.1迴環地址時延大於10ms問題處理記錄

問題現象

物理服務器ping 127.0.0.1 迴環地址 時延大於10ms,對比正常機器時延 0.01ms -----0.05ms

問題排查

1、初步檢查機器負載 和 網卡軟終端情況,未發現異常,sar 檢查網卡流量,流量未超過瓶頸;

檢查機器內核版本,也未發現有相關存在影響的內核配置;

2、排查發現iptables 規則疑似看到又大量重複規則:

查看機器iptables 規則,nat 表和 filter 表 內有近3W條iptables 規則;

iptables -t nat -L | wc -l


檢查相關對應規則,存在大量重複規則:

MASQUERADE  all  --  anywhere             anywhere             mark match 0x4000/0x4000 /* kubernetes service traffic requiring SNAT */ random-fully     
DROP       all  --  anywhere             anywhere             mark match 0x8000/0x8000 /* kubernetes firewall for dropping marked packets */

ping 127.0.0.1 的時候會過 iptables 的,INPUT 和 OUTPUT 都會過,判斷時延變高是收到iptables 規則過多導致,並其中有很多重複規則;

由於大量的重複規則,請求流量會進行iptables 表規則 和 對應chain 規則匹配,重複規則都不會匹配到相關流量,導致請求流量會全量遍歷iptables規則,導致請求時延增大;

解決方案

檢查相關iptables 發現是 K8S 中 kube-proxy 會下發導致的,查看相關k8s 資源,確認是iptables 1.8 版本和k8s 存在不兼容的現象;
升級 iptables 版本後,問題解決;
規避方案可以iptables -F 清除重複規則,不過需要謹慎操作,避免影響實際流量轉發;

相關知識

Linux ping 127.0.0.1 迴環地址的時候,也是會經過iptables 規則的,可以添加相關規則驗證。如下圖:

# 添加選擇相關鏈 添加規則
iptables -t nat -A INPUT  -p icmp -s 127.0.0.1 -j ACCEPT
iptables -t nat -A PREROUTING  -p icmp -s 127.0.0.1 -j ACCEPT
iptables -t nat -A OUTPUT  -p icmp -s 127.0.0.1 -j ACCEPT
# 可查看相關流量統計
iptables -t nat -vnL

訪問127.0.0.1 或其他目的端的請求時,都會進行iptables 的規則的匹配,匹配到規則後,進行執行,由於重複添加的規則無法匹配到相關請求流量場景,請求流量會遍歷所有的iptables 規則,故而導致時延增大;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章