wireshark-记一次IPv6 DNS问题导致应用请求延迟故障

一、现象描述

公司业务突然大面积爆发访问延迟超过10s现象。但是通过监控和应用日志,发现所有的HTTP请求响应都很快,后在服务器上直接执行Curl操作,发现延迟确实超过10s。

二、故障分析

通过观察怀疑问题可能在客户端的某个环节,故选择在客户端抓包,根据抓的数据包,发现HTTP交互其实非常快,和我们的http日志对的上
在这里插入图片描述
继续复现抓包,根据最小化请求原则,避免其他数据包干扰,服务器关闭相关服务,至访问指定域名,根据数据包分析,发现在发出请求之前,的DNS有异常。根据数据包显示
服务器同时发起了IPv4和IPv6 的DNS请求,IPv4秒回了。因为该域名无IPv6,所以无响应,这时候客户端发起了第二次的IPv6+IPv4的DNS请求,这时候dns服务器回了一个server failure。
在这里插入图片描述
至此,我们基本确定问题点在os或者程序层面,就是请求端必须要拿到真实的IPv6结果。

这就是大名鼎鼎的IPv6天窗问题的范围了。

三、解决

OS和开发均无从下手,这时候只能从DNS角度去解决这个问题,当然临时去添加IPv6不现实,
理一下DNS的请求路径
pc—>内网dns—(Foreward For)—>F5–(Foreward For)—>公网DNS

内网DNS服务器是Windows 基本没什么操作空间,只能从F5角度去处理,根据F5官网,针对IPv6请求做一个模拟假响应即可(大概这么个意思),
在F5对应的listeners(F5独有名词) 挂上响应irule

when DNS_REQUEST {
    if {[DNS::question type] equals "AAAA" }{
    DNS::header rcode NOERROR
    DNS::return
   } 
}

管理上后,延迟明显降低,客户端抓包查看
如下图:客户端只发起了一次IPv6+IPv4请求,IPv6响应有个我们插入的no error,达到我们预期。至此我们问题解决,但是为何突然爆发,这个确实很神奇了,知道的大神可以评论区留言。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值