Кратко

  • RFC 3164 ограничивает весь устаревший пакет syslog 1 024 байтами и требует, чтобы ретранслятор добавлял отсутствующую временную отметку; имя узла рекомендуется.
  • Если после добавления полей лимит превышен, ретранслятор обязан усечь пакет. RFC предупреждает, что в результате могут исчезнуть важные данные из конца исходного сообщения.

Заголовок расходует тот же бюджет

Представим устройство, которое отправляет почти полностью заполненный пакет syslog без корректной временной отметки. Перед пересылкой ретранслятор проверяет PRI. По разделу 4.3.2 RFC 3164 он обязан вставить после PRI текущее местное время; если может определить имя узла, ему следует добавить и его. Остаток принятого содержимого становится полем CONTENT сообщения.

За это дополнение приходится платить байтами. Раздел 4.1 ограничивает весь пакет, а не только текст события: PRI, HEADER и MSG делят лимит в 1 024 байта. Если время, имя и пробелы превышают его, ретранслятор обязан проверить длину и усечь пакет до 1 024 байт. RFC прямо предупреждает: важная информация в конце исходного пакета может быть потеряна.

Запись при этом может выглядеть аккуратно. Сборщик видит понятный PRI и заголовок, но последние байты события — пояснение причины, результат команды, идентификатор устройства или диагностическое значение — могли исчезнуть. Это возможные примеры, а не заявления о случившихся инцидентах. Правило ставит окончание сообщения под риск, когда дополнение поднимает длинный ввод выше общего лимита.

Нормативное правило — не статистика реализации

RFC 3164 — информационный меморандум августа 2001 года, описывающий протокол BSD syslog; он не доказывает, что каждое устройство следовало этому правилу. Раздел 4.2 допускает любое корректное сообщение syslog в UDP-содержимом для порта 514 и рекомендует отправителю заранее включать PRI, HEADER и MSG, чтобы не заставлять ретранслятор менять пакет. Раздел 6.1 требует, чтобы получатели не выходили из строя при сообщениях длиннее 1 024 байт, и описывает разные варианты поведения. Ни один раздел не измеряет частоту длинных сообщений, фактическое усечение или сохранение в сборщиках.

Лимит сообщения не равен MTU пути. Фрагментация IP, обработка UDP и усечение на уровне приложения — разные механизмы. Вставленное время — текущее местное время ретранслятора, а не обязательно время события. Имя узла — то, как его знает ретранслятор, либо IP-адрес; RFC не требует проверки этого имени по отправителю.

Позднейшие форматы проясняют уровни, но не доказывают миграцию

RFC 5424 заменил RFC 3164 более явным заголовком syslog и структурированными данными. RFC 6587 описывает кадрирование TCP и отмечает, что исторический предел 1 024 октета расширили для стандартизированного syslog. RFC 3195 считает иначе: его профиль RAW ограничивает тело события 1 024 байтами, не включая накладные расходы кадрирования BEEP. Сравнение показывает, что одно и то же число может относиться к разным уровням. Оно не доказывает, что старые отправители и ретрансляторы исчезли после публикации новых RFC.

Исторический вывод узкий: добавляя контекст, ретранслятор тратит общий конечный бюджет переносимого содержимого. Пакет может прибыть, пройти разбор и попасть в архив, но это не доказывает полноту исходного сообщения. Для проверки нужны исходные байты, вход и выход каждого ретранслятора, разбор у сборщика и последующее чтение архива.

Источники