Я делаю UNIX-приложение, где мне нужно заказывать сообщения, для которых мне нужно отметить все исходящие пакеты. Я мог бы использовать функции, определенные в time.h, и просто добавить временную метку к пакету, но, похоже, Linux уже предоставляет параметр timestamping в API сокета. Каков, как правило, лучший способ отметки времени UDP-пакета?
Ограниченные по Linux параметры timestamping, которые вы можете установить в сокетах, не делают то, что, по вашему мнению, они делают. В двух словах, они вызывают объекты skbuff
, связанные с отметками времени. Цель состоит в том, чтобы получить точные временные метки о том, когда пакеты были фактически отправлены и когда они прибыли. Т.е. эти марки являются локальными метаданными.
Если вам нужны временные метки в фактическом протоколе связи, вы должны добавить их сами в качестве другого поля в формате пакета.
Поскольку вы говорите, что это "заказывать сообщения", если это единственная цель, может быть лучше прометить пакеты не со временем, а с добавочным порядковым номером. Увеличение порядковых номеров не только устанавливает порядок, но также помогает обнаруживать недостающие пакеты, которые не будут выполняться.