【问题标题】:linux packet transmission timestampslinux数据包传输时间戳
【发布时间】:2019-06-27 22:04:11
【问题描述】:

我正在使用 SOF_TIMESTAMPING_TX_SOFTWARE 来获得更准确的数据包传输时间。我正在接收在错误队列中循环返回的数据包。检索辅助计时记录没有任何问题。但我不清楚环回给我的数据包数据的格式。这不仅仅是我传输的数据包。

我看到我的数据包数据以 IP 标头为前缀。这很有意义。但是在 IP 标头之前有 6 个字节,我无法从中做出正面或反面。我认为在某个地方有一个“结构的东西”来定义它。有谁知道这 6 个字节是什么?

【问题讨论】:

  • IP 标头之前有一个以太网标头,但大于 6 个字节。你能显示这 6 个字节的十六进制转储吗?
  • 是的,它看起来像源 MAC 地址和 Ethertype 的最后 4 个字节。因此它可能是以太网帧的最后 6 个字节,因为它不是标记接口。也许这就是为什么它只有 6 个字节。如果它是一个带标签的接口,那就是标签和以太网类型。因为它只是奇怪....
  • 啊,也许吧。我找到了一个 Linux API 文档,其中描述了一个“请求 NIC 将最后 4 个字节视为以太网帧校验序列 (FCS)”的标志。所以这将使 6 个神秘字节成为 FCS 加上 Ethertype。

标签: linux networking timestamp transmission


【解决方案1】:

好的。这是我的一些糟糕的代码。这是我使用 RAW 套接字时看到的。

读取的正常 ICMPv4 数据包是 IPv4 标头、ICMPv4 标头和有效负载。 循环的ERRQUEUE ICMPv4数据包是以太网头、IPv4头、ICMPv4头、有效载荷。 普通的 ICMPv6 数据包只是 ICMPv6 标头和有效负载,没有 IPv6 标头。 Looped ERRQUEUE ICMPv6数据包是以太网头、IPv6头、ICMPv6头、payload。

一定要喜欢一致性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    相关资源
    最近更新 更多