chore(test): подтвердить резервный путь BGP на стенде
This commit is contained in:
1 parent
40f730b5be
commit
e23038d409
5 files changed
+1418
-3
No files matched your search
@@ -870,3 +870,24 @@ Production image не содержит dev-only jose: первый fixture impor
|
||||
**Контроль/фиксация.** На каждой фазе exact ID/name/comment/chain/list/address/interface preflight; свои connections→instances→filter rules→address list/IP/bridge/GRE удалены. Исходные IDs8 коллекций×2 совпали, default/public/195.195.195.195/32 сохранены, оба CHR доступны, пароли не менялись. Product/source/dependencies не менялись, build/миграций/широких регрессий нет. Runtime backend diagnostics89/PG healthy, frontend ospf91; временных контейнеров не осталось. Один локальный commit без push.
|
||||
|
||||
Квота95% использовано после блока. Следующий93 — отдельный BGP loss/alternate-path сценарий и сведение остаточных внешних ограничений; начать со свежего лимита. Не приняты multi-peer/WAN policy failover, IPv6/scale/maximum throughput/Portal SSO/physical disconnect/durable retry и ранее перечисленные внешние границы IPsec. Этап12.5 целиком не закрыт.
|
||||
|
||||
## 12.5.93 — BGP/BFD: потеря основного GRE и резервный путь (2026-10-10)
|
||||
|
||||
Два собственных eBGP пути между CHR: primary GRE поверх public WAN и alternate GRE поверх собственного WireGuard. Различные GRE outer endpoints исключают неоднозначность демультиплексирования. Link198.18.94.0/30 и95.0/30, WG96.0/30/UDP59993, loopbacks198.18.194.1/32↔2/32, AS65094/65095. Каждая input/output chain принимает только соответствующий exact /32; output.network содержит один собственный адрес, default-originate=never/network-blackhole=no. Local preference200/100 задаёт основной и резервный путь; BGP use-bfd=yes, BFD200ms×3.
|
||||
|
||||
| Проверка | Результат |
|
||||
| --- | --- |
|
||||
| Начальное состояние | 4 Established, 4 BFD Up, по2 BGP route одного собственного /32; active через primary |
|
||||
| Потеря пути | Отключён только собственный primary GRE наCHR1; BFD primary неUp, BGP primary неEstablished, active через alternate на обоих CHR |
|
||||
| Production API | Alternate Established/prefixesRx1×2; после возврата4 Established/prefixesRx1 |
|
||||
| Связность | Финальный Ping3/3 в обе стороны в primary/alternate/recovered-primary |
|
||||
| Возврат | Primary восстановлен и снова выбран по local preference |
|
||||
| Очистка | Собственные exact IDs/атрибуты удалены; исходные11 коллекций×2 совпали |
|
||||
|
||||
[Native/API/cleanup отчёт](ux-ui/acceptance/bgp-failover-2026-10-10.json). Первый initial Ping наCHR2 дал2/3, следующий3/3; отказавшая попытка сохранена, бесшовность не заявлена. В остальных пяти steady-state направлениях3/3 с первой попытки. Непрерывный Ping во время отказа не запускался, чтобы длинный native REST RPC не искажал control observations. ACK отключения30,6ms; первый завершённый snapshot BFD неUp/primary неEstablished/alternate active —641,8ms от начала PATCH. Это верхняя граница наблюдения с задержкой REST, не точное событие/гарантия600ms/SLA. При деградации API оставляет primary state=Unknown, когда RouterOS не сообщает конкретное состояние; Idle не выдуман.
|
||||
|
||||
Сценарий прошёл с первой попытки, без browser повторения уже принятого92 UI; product/source/build/миграции не менялись. Runtime backend diagnostics89/frontend ospf91, backend/PG healthy, только3 compose containers, compose config passed. Default/public/metadata/195.195.195.195/32 и credentials сохранены, оба CHR доступны. Нативные private keys не записывались; проверка заданных sensitive JSON keys прошла. Свои connection→instance→filters/address-list/BFD→IP/bridge/GRE→WG peers/interface удалены, после обоих устройств дождались route convergence.
|
||||
|
||||
Правила подтверждены [MikroTik BFD](https://manual.mikrotik.com/docs/user-guides/routing-and-networking-protocols/unicast/bfd/), [BGP selection](https://manual.mikrotik.com/docs/user-guides/routing-and-networking-protocols/unicast/bgp/understanding-bgp/) и [Routing Filters](https://help.mikrotik.com/docs/spaces/ROS/pages/74678285/Route%2BSelection%2Band%2BFilters). Один public WAN у каждого CHR: это failover двух логических путей, не независимых физических каналов. Hold-timer безBFD, потеря пакетов в переходе, IPv6, scale, WAN policy, sustained BFD-only gate и ранее перечисленные внешние ограничения остаются открытыми.
|
||||
|
||||
Следующий94 — свести актуальную матрицу внешних ограничений и согласовать текущие указатели документов. Пятичасовая квота4% использовано после native блока; этап12.5 открыт. Один локальный коммит без push.
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
# План реализации UX/UI по пятичасовым окнам
|
||||
|
||||
Актуальное продолжение 2026-10-09: 12.5.92 принял eBGP exchange одного собственного /32 на каждом CHR через свой GRE, Ping3/3×2, административный withdrawal/re-advertisement, API prefixesRx1 и4 live UI cases. Baseline8 коллекций×2 восстановлен. Runtime backend ux-diagnostics89/frontend ux-ospf91. Следующий12.5.93 — профильный BGP loss/alternate-path сценарий и окончательная матрица внешних ограничений; не начинать его без свежей квоты. Квота97% использовано при заключительном контроле окна; новые native блоки не начинать. Этап12.5 открыт.
|
||||
Актуальное продолжение 2026-10-10: 12.5.93 принял BGP/BFD primary GRE loss → alternate GRE over WG → recovered primary, private exact /32/local-pref200/100, production API и steady Ping3/3×2 в трёх состояниях. Baseline11 коллекций×2 восстановлен; runtime backend ux-diagnostics89/frontend ux-ospf91. Следующий12.5.94 — актуальная матрица внешних ограничений и согласование указателей документов. Квота4% использовано после native блока. Этап12.5 открыт.
|
||||
|
||||
Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-09. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат.
|
||||
|
||||
|
||||
+23
-2
@@ -1,6 +1,6 @@
|
||||
# UX/UI: журнал реализации
|
||||
|
||||
Актуальное продолжение 2026-10-09: 12.5.92 принял eBGP exchange одного собственного /32 на каждом CHR через свой GRE, Ping3/3×2, административный withdrawal/re-advertisement, API prefixesRx1 и4 live UI cases. Baseline8 коллекций×2 восстановлен. Runtime backend ux-diagnostics89/frontend ux-ospf91. Следующий12.5.93 — профильный BGP loss/alternate-path сценарий и окончательная матрица внешних ограничений; не начинать его без свежей квоты. Квота97% использовано при заключительном контроле окна; новые native блоки не начинать. Этап12.5 открыт.
|
||||
Актуальное продолжение 2026-10-10: 12.5.93 принял BGP/BFD primary GRE loss → alternate GRE over WG → recovered primary, private exact /32/local-pref200/100, production API и steady Ping3/3×2 в трёх состояниях. Baseline11 коллекций×2 восстановлен; runtime backend ux-diagnostics89/frontend ux-ospf91. Следующий12.5.94 — актуальная матрица внешних ограничений и согласование указателей документов. Квота4% использовано после native блока. Этап12.5 открыт.
|
||||
|
||||
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
|
||||
|
||||
@@ -36,7 +36,28 @@
|
||||
| 10 | Маршрутизация, диагностика, карта и терминал | Завершён в границах локальной приёмки 2026-10-01; блоки 10.1–10.71, внешние ограничения в 10.71 |
|
||||
| 11А | Пользователи, контейнеры, сертификаты и резервные копии | Завершён в границах локальной приёмки 2026-10-01; 11А.1–11А.33, внешние ограничения в 11А.33 |
|
||||
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 |
|
||||
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–92 и ограничения ниже. Runtime backend ux-diagnostics89/frontend ux-ospf91. |
|
||||
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–93 и ограничения ниже. Runtime backend ux-diagnostics89/frontend ux-ospf91. |
|
||||
|
||||
## 12.5.93 — BGP/BFD: потеря основного GRE и резервный путь (2026-10-10)
|
||||
|
||||
Два собственных eBGP пути между CHR: primary GRE поверх public WAN и alternate GRE поверх собственного WireGuard. Различные GRE outer endpoints исключают неоднозначность демультиплексирования. Link198.18.94.0/30 и95.0/30, WG96.0/30/UDP59993, loopbacks198.18.194.1/32↔2/32, AS65094/65095. Каждая input/output chain принимает только соответствующий exact /32; output.network содержит один собственный адрес, default-originate=never/network-blackhole=no. Local preference200/100 задаёт основной и резервный путь; BGP use-bfd=yes, BFD200ms×3.
|
||||
|
||||
| Проверка | Результат |
|
||||
| --- | --- |
|
||||
| Начальное состояние | 4 Established, 4 BFD Up, по2 BGP route одного собственного /32; active через primary |
|
||||
| Потеря пути | Отключён только собственный primary GRE наCHR1; BFD primary неUp, BGP primary неEstablished, active через alternate на обоих CHR |
|
||||
| Production API | Alternate Established/prefixesRx1×2; после возврата4 Established/prefixesRx1 |
|
||||
| Связность | Финальный Ping3/3 в обе стороны в primary/alternate/recovered-primary |
|
||||
| Возврат | Primary восстановлен и снова выбран по local preference |
|
||||
| Очистка | Собственные exact IDs/атрибуты удалены; исходные11 коллекций×2 совпали |
|
||||
|
||||
[Native/API/cleanup отчёт](ux-ui/acceptance/bgp-failover-2026-10-10.json). Первый initial Ping наCHR2 дал2/3, следующий3/3; отказавшая попытка сохранена, бесшовность не заявлена. В остальных пяти steady-state направлениях3/3 с первой попытки. Непрерывный Ping во время отказа не запускался, чтобы длинный native REST RPC не искажал control observations. ACK отключения30,6ms; первый завершённый snapshot BFD неUp/primary неEstablished/alternate active —641,8ms от начала PATCH. Это верхняя граница наблюдения с задержкой REST, не точное событие/гарантия600ms/SLA. При деградации API оставляет primary state=Unknown, когда RouterOS не сообщает конкретное состояние; Idle не выдуман.
|
||||
|
||||
Сценарий прошёл с первой попытки, без browser повторения уже принятого92 UI; product/source/build/миграции не менялись. Runtime backend diagnostics89/frontend ospf91, backend/PG healthy, только3 compose containers, compose config passed. Default/public/metadata/195.195.195.195/32 и credentials сохранены, оба CHR доступны. Нативные private keys не записывались; проверка заданных sensitive JSON keys прошла. Свои connection→instance→filters/address-list/BFD→IP/bridge/GRE→WG peers/interface удалены, после обоих устройств дождались route convergence.
|
||||
|
||||
Правила подтверждены [MikroTik BFD](https://manual.mikrotik.com/docs/user-guides/routing-and-networking-protocols/unicast/bfd/), [BGP selection](https://manual.mikrotik.com/docs/user-guides/routing-and-networking-protocols/unicast/bgp/understanding-bgp/) и [Routing Filters](https://help.mikrotik.com/docs/spaces/ROS/pages/74678285/Route%2BSelection%2Band%2BFilters). Один public WAN у каждого CHR: это failover двух логических путей, не независимых физических каналов. Hold-timer безBFD, потеря пакетов в переходе, IPv6, scale, WAN policy, sustained BFD-only gate и ранее перечисленные внешние ограничения остаются открытыми.
|
||||
|
||||
Следующий94 — свести актуальную матрицу внешних ограничений и согласовать текущие указатели документов. Пятичасовая квота4% использовано после native блока; этап12.5 открыт. Один локальный коммит без push.
|
||||
|
||||
## Заключительный контроль окна (2026-10-09)
|
||||
|
||||
|
||||
@@ -2179,3 +2179,24 @@ Production image не содержит dev-only jose: первый fixture impor
|
||||
**Контроль/фиксация.** На каждой фазе exact ID/name/comment/chain/list/address/interface preflight; свои connections→instances→filter rules→address list/IP/bridge/GRE удалены. Исходные IDs8 коллекций×2 совпали, default/public/195.195.195.195/32 сохранены, оба CHR доступны, пароли не менялись. Product/source/dependencies не менялись, build/миграций/широких регрессий нет. Runtime backend diagnostics89/PG healthy, frontend ospf91; временных контейнеров не осталось. Один локальный commit без push.
|
||||
|
||||
Квота95% использовано после блока. Следующий93 — отдельный BGP loss/alternate-path сценарий и сведение остаточных внешних ограничений; начать со свежего лимита. Не приняты multi-peer/WAN policy failover, IPv6/scale/maximum throughput/Portal SSO/physical disconnect/durable retry и ранее перечисленные внешние границы IPsec. Этап12.5 целиком не закрыт.
|
||||
|
||||
## 12.5.93 — BGP/BFD: потеря основного GRE и резервный путь (2026-10-10)
|
||||
|
||||
Два собственных eBGP пути между CHR: primary GRE поверх public WAN и alternate GRE поверх собственного WireGuard. Различные GRE outer endpoints исключают неоднозначность демультиплексирования. Link198.18.94.0/30 и95.0/30, WG96.0/30/UDP59993, loopbacks198.18.194.1/32↔2/32, AS65094/65095. Каждая input/output chain принимает только соответствующий exact /32; output.network содержит один собственный адрес, default-originate=never/network-blackhole=no. Local preference200/100 задаёт основной и резервный путь; BGP use-bfd=yes, BFD200ms×3.
|
||||
|
||||
| Проверка | Результат |
|
||||
| --- | --- |
|
||||
| Начальное состояние | 4 Established, 4 BFD Up, по2 BGP route одного собственного /32; active через primary |
|
||||
| Потеря пути | Отключён только собственный primary GRE наCHR1; BFD primary неUp, BGP primary неEstablished, active через alternate на обоих CHR |
|
||||
| Production API | Alternate Established/prefixesRx1×2; после возврата4 Established/prefixesRx1 |
|
||||
| Связность | Финальный Ping3/3 в обе стороны в primary/alternate/recovered-primary |
|
||||
| Возврат | Primary восстановлен и снова выбран по local preference |
|
||||
| Очистка | Собственные exact IDs/атрибуты удалены; исходные11 коллекций×2 совпали |
|
||||
|
||||
[Native/API/cleanup отчёт](ux-ui/acceptance/bgp-failover-2026-10-10.json). Первый initial Ping наCHR2 дал2/3, следующий3/3; отказавшая попытка сохранена, бесшовность не заявлена. В остальных пяти steady-state направлениях3/3 с первой попытки. Непрерывный Ping во время отказа не запускался, чтобы длинный native REST RPC не искажал control observations. ACK отключения30,6ms; первый завершённый snapshot BFD неUp/primary неEstablished/alternate active —641,8ms от начала PATCH. Это верхняя граница наблюдения с задержкой REST, не точное событие/гарантия600ms/SLA. При деградации API оставляет primary state=Unknown, когда RouterOS не сообщает конкретное состояние; Idle не выдуман.
|
||||
|
||||
Сценарий прошёл с первой попытки, без browser повторения уже принятого92 UI; product/source/build/миграции не менялись. Runtime backend diagnostics89/frontend ospf91, backend/PG healthy, только3 compose containers, compose config passed. Default/public/metadata/195.195.195.195/32 и credentials сохранены, оба CHR доступны. Нативные private keys не записывались; проверка заданных sensitive JSON keys прошла. Свои connection→instance→filters/address-list/BFD→IP/bridge/GRE→WG peers/interface удалены, после обоих устройств дождались route convergence.
|
||||
|
||||
Правила подтверждены [MikroTik BFD](https://manual.mikrotik.com/docs/user-guides/routing-and-networking-protocols/unicast/bfd/), [BGP selection](https://manual.mikrotik.com/docs/user-guides/routing-and-networking-protocols/unicast/bgp/understanding-bgp/) и [Routing Filters](https://help.mikrotik.com/docs/spaces/ROS/pages/74678285/Route%2BSelection%2Band%2BFilters). Один public WAN у каждого CHR: это failover двух логических путей, не независимых физических каналов. Hold-timer безBFD, потеря пакетов в переходе, IPv6, scale, WAN policy, sustained BFD-only gate и ранее перечисленные внешние ограничения остаются открытыми.
|
||||
|
||||
Следующий94 — свести актуальную матрицу внешних ограничений и согласовать текущие указатели документов. Пятичасовая квота4% использовано после native блока; этап12.5 открыт. Один локальный коммит без push.
|
||||
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user