前言 懒癌患者来更新第二篇。在 上一篇 的 Agent 基本功能实现了以后,就要开始考虑实现 MTR 功能,要做 MTR 就不得不先实现 traceroute 功能。虽然 traceroute 原理很简单,但是如果要考虑 高效实现 会有不小的挑战。 细节 关于 traceroute 和 MTR 的原理细节,相信读者都已经了解,本文将直接从实现上遇到的具体问题开始聊。 具体来讲,我们会遇到几个问题,发什么包?怎么读到回包?回包读得效率太低怎么办? 发什么包做为探针? 在 Windows 上…
前言 懒癌患者来更新第二篇。在 上一篇 的 Agent 基本功能实现了以后,就要开始考虑实现 MTR 功能,要做 MTR 就不得不先实现 traceroute 功能。虽然 traceroute 原理很简单,但是如果要考虑 高效实现 会有不小的挑战。 细节 关于 traceroute 和 MTR 的原理细节,相信读者都已经了解,本文将直接从实现上遇到的具体问题开始聊。 具体来讲,我们会遇到几个问题,发什么包?怎么读到回包?回包读得效率太低怎么办? 发什么包做为探针? 在 Windows 上…
现象 交换机与服务器直连建立 eBGP 邻居。 服务器重启 BGP 程序,要花 30s-120s 的时间才能重新到Established 状态。 抓包所见: 服务器程序发出 BGP notification 报文到交换机,随后双方四次挥手。 7s后服务端发起 TCP 连接,双方三次握手完成。 随后服务器发出 open 报文,交换机随即发出 TCP RST 将连接重置。 2s后交换机发起 TCP 连接,双方三次握手完成。 随后交换机发出 open 报文,服务器随即发出 TCP RST 将连接重置。 11s后,服务器发…