我在一家开发深度包检测工具的公司工作。我们的客户之一,即拥有大量 DS-Lite 连接用户的大型 ISP,正在使用我们的 DPI 引擎来收集有关其网络中 IPv4 和 IPv6 使用情况的统计数据。直到最近,他们才发现一个重大问题。过去,为了避免 IPv4 和 IPv6 之间的混淆,使用所有不同的隧道,他们决定改为统计传输层的统计信息。但是,事实证明,我们的 DPI 将 DS-Lite 隧道内的 HTTP v4 流量视为使用 TCPv6 作为传输层协议,尽管理论上它直接位于 IPv4 数据包内。这会破坏他们的统计数据,因为他们将大量 DS-Lite 封装的 IPv4 流量计算为纯 IPv6。
现在他们来找我们争辩说这是错误的,我有点感觉到他们。这一切都是从打包成 IPv4 数据包的 TCPv4 段开始的,然后我们才将它们放入 IPv6 中,然后再通过 DS-Lite 链接发送出去。他们认为 IPv6 封装对于内部的数据包应该无关紧要,这些数据包实际上是TCPv4。(我知道这很复杂,我希望你明白我的意思。)
当我在实验室中生成一些 DS-Lite PCAP 并检查它们在 Wireshark 中的外观时,大惊喜出现了。结果,Wireshark 证实了我们的引擎所说的 - IPv4 层内的数据包确实是 TCPv6。
我现在最大的问题是 - 是否有一个标准来描述这些协议版本的外观?我已阅读 DS-Lite RFC,我们的一位开发人员也已阅读,但我们无法找出答案。