Files
EvoBGP/docs/bundle-limits.md
DenozordecandCursor 240d83fc61 docs(docs): describe durable jobs, telemetry, and bundle limits
Зафиксированы очередь job, семантика метрик, лимиты бандла и исходящих запросов, а также чеклист продакшена для пула соединений.

Co-authored-by: Cursor <[email protected]>
2026-11-02 17:24:18 +07:00

26 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Ограничения подписанных bundles
Формат `.tar.gz`, поля manifest, порядок файлов и Ed25519-подпись не изменены. Замороженный legacy fixture и проверка структуры старого manifest остаются тестами совместимости. Новые ограничения применяются до больших выделений памяти и не требуют обновления wire-протокола speakers 2.56.2.
| Ограничение по умолчанию | Значение |
| --- | --- |
| Сжатый bundle / HTTP download / локальный файл | 128 MiB |
| Весь распакованный tar, включая headers, PAX и хвост gzip | 512 MiB |
| Один payload-файл | 256 MiB |
| `manifest.json` | 2 MiB |
| Файловые записи tar, включая manifest и signature; служебные PAX ограничены общим объёмом tar | 4096 |
| Длина относительного пути | 1024 bytes |
| Ответ latest revision | 64 KiB |
| Диагностическое тело HTTP-ошибки | 4 KiB |
| Чтение error-body перед HTTP retry | 64 KiB на попытку |
Это верхние пределы обработки недоверенного ввода, а не гарантия работы на устройстве с малым RAM. Проверка пока хранит сжатый bundle и распакованные payloads в памяти. Большие конфигурации, включая порядок миллиона IPv6 route-строк, не ограничены маленьким лимитом отдельного CDN-источника. Размерный regression test использует повторяющиеся типовые строки и не заменяет benchmark уникальных префиксов или BIRD.
В Go API `bundle.Limits` позволяет явно менять бюджеты: `BuildGzippedTarWithLimits`, `VerifyGzippedTarWithLimits`, `WriteExtractedFilesWithLimits` и `ReadCompressed`. Нулевые поля выбирают defaults; отрицательные значения отклоняются. `nodecli.SyncConfig.BundleLimits` передаёт одинаковые бюджеты в download, verify и extract. Обычные команды CLI используют defaults.
Verifier проверяет gzip checksum, включая данные после tar EOF, ограничивает внутреннее чтение tar/PAX, отвергает дубликаты путей, ссылки и другие nonregular entries, а также payloads вне подписанного manifest. Пути должны быть каноническими относительными POSIX-путями: absolute, traversal, backslash, Windows drive/stream и device names отклоняются. Извлечение использует directory confinement `os.Root` из Go 1.24 и не следует существующим symlinks; существующий hard link удаляется до exclusive-create нового файла, сохраняя внешний файл.
Sparse entries отклоняются, а суммарный логический размер файлов дополнительно ограничен 512 MiB: физический размер sparse tar не отражает объём создаваемого содержимого.
Эти проверки действуют в новых binaries, не изменяют уже установленный agent 2.56.2 и не делают переключение всего дерева конфигурации атомарным: безопасное применение BIRD и восстановление описываются отдельно.