1. 确认时延来自哪些方面?
有几种可能:
2. 如何确认时延来自虚拟机
这里指的是发包给虚拟机,虚拟机回复比较慢。表现一般是偶尔跳一个高时延的包:
最简单的方法是抓包,如下,vm1 ping vm2,在图中 vlink1 和 vlink2 两个点分别抓包:
观察目的端(也就是 vlink2 点)的抓包情况,如果 request 包和 reply 包的时间相隔比较长,正好匹配 ping 的高时延,那就是虚拟机本身处理时延高导致的抖动。
如果不想抓包,那就问题虚拟机同时 ping 几台虚拟机和网关,看抖动的时间点是否一致,不一致也能说明时延发生在虚拟机内部;
这个可以确认的原因是数据面(dataplane)是同一个,要影响都会同时受影响,但这个点作为证据可能说服力不够,最有说服力还是抓包!
3. 如何确认时延来自数据面?
如果 ping 的时延是持续很高的,基本可以确认是 dp 有性能瓶颈了;
680 及之后的版本可以后台看下 dpdebug 4 来确认各个转发核的使用率是不是很高,很高意味着 dp 有性能瓶颈;
之前的版本没有这个命令,可以看下 vxlan 口有没有和管理口复用,如果复用了可以看下黑盒里面管理网的 ping 监控,如果看到时延有抖动,也能确认是 dp 有性能瓶颈;
如果没有复用,这种比较难确认,但也有一些方法可以间接确认,比如:
4. 如何确认时延来自物理网络?
这个涉及到跨主机通信,没有很好的办法,只能在两台主机上同时抓包,然后用上述虚拟机时延的判断方法来判断问题发生在哪里。
虚拟机时延问题,根因可能是虚拟机内部跑的应用比较耗资源,如 oracle 等数据库应用;也可能是超融合平台超配严重,vCPU 被抢占导致;
数据面时延问题,根因就是数据面性能不足了,可能流量大、session 新建高等;
物理网络时延问题,根因来自外部,非 HCI 问题,一般不关注;
虚拟机时延问题
数据面时延问题