Где именно установлена ​​метка времени?

Мне нужно знать, в какой точной точке установлена ​​временная метка для получения или отправки кадров на сетевой карте. Я уже много искал, но не могу найти ничего, что действительно помогло мне. Для случая отправки это может быть, например:

  • когда первый бит покинул сетевой кабель
  • когда последний бит покинул сетевой кабель
  • когда данные кадра были записаны в буфер

Я использую сетевую карту Intel 82541PI.

1 ответ

Решение

Недавно я провел некоторое исследование этого вопроса, но, например, авторы драйверов Linux могут добавить больше деталей или исправить меня, если я ошибаюсь. Краткое резюме: Когда берется временная метка, это зависит от устройства.

Например, на плате Intel I210 при использовании одношаговой метки времени PTP (т. Е. Еще не распространенного режима PTP, в котором указывается смещение для полезной нагрузки UDP, где метка времени PTP отправителя записывается с помощью NIC hw), тогда метка времени hw принимается правильно перед отправкой кадра из MAC в PHY. При скорости 1 Гбит это займет около 178 нс до тех пор, пока PHY не подключит преамбулу Ethernet к первому биту. Посмотрите в таблице данных NIC для вашей NIC для получения дополнительной информации, или проверьте исходный код драйвера Linux. Для I210 таблица данных доступна для публичного скачивания под названием "Таблица данных Intel® Ethernet Controller I210". Также обратите внимание, что пока не ясно, поддерживает ли драйвер Linux I210 (igb) одностадийную временную отметку. "Классический" способ сделать это - отправить пакет, получить метку времени hw в очереди ошибок сокета, а затем отправить метку времени hw в последующем пакете, это называется двухэтапной меткой времени hw tx и поддерживается многими другими сетевыми картами. Отметим также, что драйвер компенсирует задержку MAC-to-PHY в 178 нс.

Другие вопросы по тегам