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 规则,故而导致时延增大;

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