chore(ux): подтвердить настоящий IPv6 IPFIX и восстановление стенда
This commit is contained in:
1 parent
11813179a7
commit
d569932b2a
10 files changed
+1147
-12
No files matched your search
@@ -1,6 +1,6 @@
|
||||
# UX/UI: протокол внешней приёмки 12.5
|
||||
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.144 — исправлен dual-stack IPFIX при zero IPv4 placeholders; реальный UDP→worker→SQL passed:6 IPv6 rows,25200B/42 packets raw/minute,7200B/12 Internet facts.21 local scripts exit0 с честными skips;984 outputs matched. Backend ux-ipfix144/frontend ux-traffic141. Далее145 — native RouterOS IPv6 exporter и populated API/UI, если конфигурация стенда позволяет.12.5 открыт.
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.145 — native CHR IPv6 ULA→IPFIX→production worker/SQL/API→frontend Sessions подтверждён; Ping5/5×2, PC/mobile DOM/API/no-overflow passed. Initial cleanup GET401 сохранён, recovery удалил2 exact-owned objects;12 collections×2/configs restored, own DB/container/ports/tunnel удалены. Backend ux-ipfix144/frontend ux-traffic141. Далее146 — понятные ICMPv6/IPv6 endpoint labels;12.5 открыт.
|
||||
|
||||
IPsec78: реальный PSK responder established, mode-config198.18.78.10 и online=true подтверждены API; точные собственные объекты удалены. Сертификатный/DN online, late failure и history restore остаются открытыми. [Отчёт](ux-ui/acceptance/ipsec-mode-config-2026-10-09.json), [журнал](ux-ui-progress.md).
|
||||
|
||||
@@ -696,7 +696,7 @@ flowchart LR
|
||||
|
||||
## 12.5.77 — основной блок IPsec (2026-10-09)
|
||||
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.144 — исправлен dual-stack IPFIX при zero IPv4 placeholders; реальный UDP→worker→SQL passed:6 IPv6 rows,25200B/42 packets raw/minute,7200B/12 Internet facts.21 local scripts exit0 с честными skips;984 outputs matched. Backend ux-ipfix144/frontend ux-traffic141. Далее145 — native RouterOS IPv6 exporter и populated API/UI, если конфигурация стенда позволяет.12.5 открыт.
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.145 — native CHR IPv6 ULA→IPFIX→production worker/SQL/API→frontend Sessions подтверждён; Ping5/5×2, PC/mobile DOM/API/no-overflow passed. Initial cleanup GET401 сохранён, recovery удалил2 exact-owned objects;12 collections×2/configs restored, own DB/container/ports/tunnel удалены. Backend ux-ipfix144/frontend ux-traffic141. Далее146 — понятные ICMPv6/IPv6 endpoint labels;12.5 открыт.
|
||||
|
||||
Подробный объём, протоколы, схема и ограничения: [12.5.77 в журнале](ux-ui-progress.md).
|
||||
|
||||
@@ -1553,3 +1553,17 @@ Unknown0/0 policy основана на наблюдённом live ответе
|
||||
Backend ux-ipfix144 развёрнут, health healthy; frontend ux-traffic141 сохранён. Live traffic1440/320 passed без initial srv1/400, page errors/overflow. Rollback env/image оставлены. [Все попытки и границы](ux-ui/acceptance/ipv6-ipfix-worker-sql-2026-10-11.json), [browser smoke](ux-ui/acceptance/traffic-ipfix-smoke-2026-10-11.json).
|
||||
|
||||
Это real UDP/worker/SQL path с синтетическим exporter через IPv4 loopback transport, не native RouterOS IPv6 export/outer transport и не maximum throughput. CHR configuration/passwords не менялись. Следующий145 — проверить возможность native RouterOS IPv6 exporter и populated API/UI на собственных objects/DB.12.5 открыт.
|
||||
|
||||
## 12.5.145 — настоящий RouterOS IPv6 IPFIX и заполненный интерфейс (2026-10-11)
|
||||
|
||||
Оба CHR доступны с прежними credentials, RouterOS7.24.5. Исходно Traffic Flow disabled/targets empty. Созданы собственные GRE-пара с allow-fast-path=false и fd00:145:1::1/2/64, advertise=no. CHR1 временно экспортирует IPFIX только своего GRE, с short timeouts/one owned target. Native Ping прошёл5/5 в обе стороны; CPU/input-output path и IPv6 support сверены с [официальным Traffic Flow manual](https://manual.mikrotik.com/docs/diagnostics-monitoring-and-troubleshooting/traffic-flow/), версия manual7.26, фактическая проверка7.24.5.
|
||||
|
||||
На Debian запущен отдельный application/production collector worker в own temporary PostgreSQL DB. Скопирована конфигурация только CHR1 без публикации credentials; worker слушает UDP48145, HTTP API доступен только через localhost18145/SSH. Native RouterOS sender, не synthetic fixture, передал IPv6 IPFIX records: production API содержит реальные ULA source/destination и positive bytes/packets. Deployed frontend ux-traffic141 проверен через явный relay реальных ответов отдельного backend: Sessions DOM содержит IPv6, PC1440/mobile320 API200/pageerror0/no document overflow. Screenshots сохраняют frame/current scroll position, не все строки одновременно. Initial UI attempts искали адрес на Applications summary и ошибочно выбирали button вместо actual tab; исправлено только обращение к существующей вкладке.
|
||||
|
||||
Тест не использовал main DB для seeded fixtures; обычный background polling главного приложения оставался активным, поэтому абсолютное отсутствие background writes не заявляется. IPsec/WireGuard keys, пароли, исходные public/default/metadata routes не менялись. Native objects/GRE/IPv6 inputs принадлежат одному unique tag.
|
||||
|
||||
Автоматическая очистка восстановила Traffic Flow и удалила objects CHR1, но GET собственного GRE по ID на CHR2 вернул401. Child drain прошёл, own DB удалена. Read-only resource и полный каталог обоих CHR снова доступны с теми же credentials; причина одиночного GET401 не установлена, пароль не менялся. Recovery по свежему полному каталогу проверил exact comment/name/local-remote/address и отсутствие IDs в baseline; удалены только два оставшихся objects CHR2 обычным DELETE. Все12 collection projections×2 и Traffic Flow/IPFIX fields/IPv6 settings совпали с исходными. Initial failure и recovery сохранены, не заменены гладким success.
|
||||
|
||||
Own container удалён после проверки exact container ID; UDP48145/HTTP18145 и отдельный SSH tunnel закрыты, основной стенд backend ux-ipfix144/frontend ux-traffic141 healthy. Начальный неверный host port81245 был отвергнут до запуска/изменений, исправлен18145. [Native/API/cleanup receipt](ux-ui/acceptance/native-ipv6-ipfix-2026-10-11.json), [UI receipt](ux-ui/acceptance/native-ipv6-ipfix-ui-2026-10-11.json), [PC screenshot](ux-ui/screens/native-ipv6-ipfix145-1440-2026-10-11.png), [mobile screenshot](ux-ui/screens/native-ipv6-ipfix145-320-2026-10-11.png).
|
||||
|
||||
Доказан IPv6 ULA inner/native IPFIX поверх IPv4 GRE/export transport, не public IPv6 WAN/outer или throughput/произвольные clients. На live UI ICMPv6 подписан numeric58, IPv6 endpoints с портом требуют однозначного bracket format; следующий146 — улучшить эти подписи, сохранив ReUI/Frame/base-nova.12.5 открыт.
|
||||
+3
-3
@@ -1,12 +1,12 @@
|
||||
# План реализации UX/UI по пятичасовым окнам
|
||||
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.144 — исправлен dual-stack IPFIX при zero IPv4 placeholders; реальный UDP→worker→SQL passed:6 IPv6 rows,25200B/42 packets raw/minute,7200B/12 Internet facts.21 local scripts exit0 с честными skips;984 outputs matched. Backend ux-ipfix144/frontend ux-traffic141. Далее145 — native RouterOS IPv6 exporter и populated API/UI, если конфигурация стенда позволяет.12.5 открыт.
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.145 — native CHR IPv6 ULA→IPFIX→production worker/SQL/API→frontend Sessions подтверждён; Ping5/5×2, PC/mobile DOM/API/no-overflow passed. Initial cleanup GET401 сохранён, recovery удалил2 exact-owned objects;12 collections×2/configs restored, own DB/container/ports/tunnel удалены. Backend ux-ipfix144/frontend ux-traffic141. Далее146 — понятные ICMPv6/IPv6 endpoint labels;12.5 открыт.
|
||||
|
||||
Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-10. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат.
|
||||
|
||||
## Актуальная точка продолжения — 2026-10-10
|
||||
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.144 — исправлен dual-stack IPFIX при zero IPv4 placeholders; реальный UDP→worker→SQL passed:6 IPv6 rows,25200B/42 packets raw/minute,7200B/12 Internet facts.21 local scripts exit0 с честными skips;984 outputs matched. Backend ux-ipfix144/frontend ux-traffic141. Далее145 — native RouterOS IPv6 exporter и populated API/UI, если конфигурация стенда позволяет.12.5 открыт.
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.145 — native CHR IPv6 ULA→IPFIX→production worker/SQL/API→frontend Sessions подтверждён; Ping5/5×2, PC/mobile DOM/API/no-overflow passed. Initial cleanup GET401 сохранён, recovery удалил2 exact-owned objects;12 collections×2/configs restored, own DB/container/ports/tunnel удалены. Backend ux-ipfix144/frontend ux-traffic141. Далее146 — понятные ICMPv6/IPv6 endpoint labels;12.5 открыт.
|
||||
|
||||
Этапы0–11 завершены в локальных границах журнала. История выполненных внешних блоков и доказательства сохранены в [журнале](ux-ui-stage-12.md) и [протоколе](ux-ui-external-acceptance.md). Реальная Telegram доставка, Portal SSO, multi-instance и оставшиеся профильные сетевые ограничения открыты.
|
||||
|
||||
@@ -371,6 +371,6 @@ flowchart LR
|
||||
|
||||
## 12.5.77 — основной блок IPsec (2026-10-09)
|
||||
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.144 — исправлен dual-stack IPFIX при zero IPv4 placeholders; реальный UDP→worker→SQL passed:6 IPv6 rows,25200B/42 packets raw/minute,7200B/12 Internet facts.21 local scripts exit0 с честными skips;984 outputs matched. Backend ux-ipfix144/frontend ux-traffic141. Далее145 — native RouterOS IPv6 exporter и populated API/UI, если конфигурация стенда позволяет.12.5 открыт.
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.145 — native CHR IPv6 ULA→IPFIX→production worker/SQL/API→frontend Sessions подтверждён; Ping5/5×2, PC/mobile DOM/API/no-overflow passed. Initial cleanup GET401 сохранён, recovery удалил2 exact-owned objects;12 collections×2/configs restored, own DB/container/ports/tunnel удалены. Backend ux-ipfix144/frontend ux-traffic141. Далее146 — понятные ICMPv6/IPv6 endpoint labels;12.5 открыт.
|
||||
|
||||
Подробный объём, протоколы, схема и ограничения: [12.5.77 в журнале](ux-ui-progress.md).
|
||||
+16
-2
@@ -1,6 +1,6 @@
|
||||
# UX/UI: журнал реализации
|
||||
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.144 — исправлен dual-stack IPFIX при zero IPv4 placeholders; реальный UDP→worker→SQL passed:6 IPv6 rows,25200B/42 packets raw/minute,7200B/12 Internet facts.21 local scripts exit0 с честными skips;984 outputs matched. Backend ux-ipfix144/frontend ux-traffic141. Далее145 — native RouterOS IPv6 exporter и populated API/UI, если конфигурация стенда позволяет.12.5 открыт.
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.145 — native CHR IPv6 ULA→IPFIX→production worker/SQL/API→frontend Sessions подтверждён; Ping5/5×2, PC/mobile DOM/API/no-overflow passed. Initial cleanup GET401 сохранён, recovery удалил2 exact-owned objects;12 collections×2/configs restored, own DB/container/ports/tunnel удалены. Backend ux-ipfix144/frontend ux-traffic141. Далее146 — понятные ICMPv6/IPv6 endpoint labels;12.5 открыт.
|
||||
|
||||
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
|
||||
|
||||
@@ -36,7 +36,21 @@
|
||||
| 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–144 и ограничения ниже. Runtime backend ux-ipfix144/frontend ux-traffic141. |
|
||||
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–145 и ограничения ниже. Runtime backend ux-ipfix144/frontend ux-traffic141. |
|
||||
|
||||
## 12.5.145 — настоящий RouterOS IPv6 IPFIX и заполненный интерфейс (2026-10-11)
|
||||
|
||||
Оба CHR доступны с прежними credentials, RouterOS7.24.5. Исходно Traffic Flow disabled/targets empty. Созданы собственные GRE-пара с allow-fast-path=false и fd00:145:1::1/2/64, advertise=no. CHR1 временно экспортирует IPFIX только своего GRE, с short timeouts/one owned target. Native Ping прошёл5/5 в обе стороны; CPU/input-output path и IPv6 support сверены с [официальным Traffic Flow manual](https://manual.mikrotik.com/docs/diagnostics-monitoring-and-troubleshooting/traffic-flow/), версия manual7.26, фактическая проверка7.24.5.
|
||||
|
||||
На Debian запущен отдельный application/production collector worker в own temporary PostgreSQL DB. Скопирована конфигурация только CHR1 без публикации credentials; worker слушает UDP48145, HTTP API доступен только через localhost18145/SSH. Native RouterOS sender, не synthetic fixture, передал IPv6 IPFIX records: production API содержит реальные ULA source/destination и positive bytes/packets. Deployed frontend ux-traffic141 проверен через явный relay реальных ответов отдельного backend: Sessions DOM содержит IPv6, PC1440/mobile320 API200/pageerror0/no document overflow. Screenshots сохраняют frame/current scroll position, не все строки одновременно. Initial UI attempts искали адрес на Applications summary и ошибочно выбирали button вместо actual tab; исправлено только обращение к существующей вкладке.
|
||||
|
||||
Тест не использовал main DB для seeded fixtures; обычный background polling главного приложения оставался активным, поэтому абсолютное отсутствие background writes не заявляется. IPsec/WireGuard keys, пароли, исходные public/default/metadata routes не менялись. Native objects/GRE/IPv6 inputs принадлежат одному unique tag.
|
||||
|
||||
Автоматическая очистка восстановила Traffic Flow и удалила objects CHR1, но GET собственного GRE по ID на CHR2 вернул401. Child drain прошёл, own DB удалена. Read-only resource и полный каталог обоих CHR снова доступны с теми же credentials; причина одиночного GET401 не установлена, пароль не менялся. Recovery по свежему полному каталогу проверил exact comment/name/local-remote/address и отсутствие IDs в baseline; удалены только два оставшихся objects CHR2 обычным DELETE. Все12 collection projections×2 и Traffic Flow/IPFIX fields/IPv6 settings совпали с исходными. Initial failure и recovery сохранены, не заменены гладким success.
|
||||
|
||||
Own container удалён после проверки exact container ID; UDP48145/HTTP18145 и отдельный SSH tunnel закрыты, основной стенд backend ux-ipfix144/frontend ux-traffic141 healthy. Начальный неверный host port81245 был отвергнут до запуска/изменений, исправлен18145. [Native/API/cleanup receipt](ux-ui/acceptance/native-ipv6-ipfix-2026-10-11.json), [UI receipt](ux-ui/acceptance/native-ipv6-ipfix-ui-2026-10-11.json), [PC screenshot](ux-ui/screens/native-ipv6-ipfix145-1440-2026-10-11.png), [mobile screenshot](ux-ui/screens/native-ipv6-ipfix145-320-2026-10-11.png).
|
||||
|
||||
Доказан IPv6 ULA inner/native IPFIX поверх IPv4 GRE/export transport, не public IPv6 WAN/outer или throughput/произвольные clients. На live UI ICMPv6 подписан numeric58, IPv6 endpoints с портом требуют однозначного bracket format; следующий146 — улучшить эти подписи, сохранив ReUI/Frame/base-nova.12.5 открыт.
|
||||
|
||||
## 12.5.144 — IPv6 IPFIX через UDP, production worker и PostgreSQL (2026-10-11)
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Оставшаяся внешняя приёмка — 2026-10-11
|
||||
|
||||
Это актуальная матрица после 12.5.144. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии.
|
||||
Это актуальная матрица после 12.5.145. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии.
|
||||
|
||||
Стенд: Debian13/Compose, PostgreSQL18.6, два CHR RouterOS7.24.5. Backend `ux-ipfix144`, frontend `ux-traffic141`; production lab использует AUTH_REQUIRED=false. Подписанные JWT/RBAC проверялись в изолированных процессах. Все собственные объекты112 удалены, исходные13 коллекций×2 (включая logging/certificates/files/routes) проверены; пароли не менялись.
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
| BGP | Established83, exact /32 exchange/API/UI/administrative withdrawal92, BFD primary GRE loss/alternate/recovery93 | Hold timer/TCP loss безBFD принят104; packet loss в переходе, разные внешние peers/WAN policy, IPv6/scale. Два логических пути используют тот же public WAN; physical redundancy не принята |
|
||||
| Recursive routes | Production PUT/change/own history restore88, disabled guards, partial/unknown/applied outcomes, live формы/контекст | Автоматический rollback/retry, durable receipts и несколько экземпляров отсутствуют; PUT не является idempotent noop. Полная произвольная legacy catalog миграция не принята |
|
||||
| Diagnostics/terminal | Allowlist/native reads, Ping/trace/route/MTU/DNS, actual avg-rtt, disabled guards, JWT/live PC/mobile89; real default memory tail/log limits/API/UI133 | DNS использует backend resolver; MTU — ограниченная оценка, не гарантированный максимум. Stop ожидания не доказывает остановку RouterOS команды; arbitrary CLI и physical disconnect не приняты |
|
||||
| Portal/интеграции | Локальные и isolated JWT guards; UI/API error states в границах журналов | Настоящий Portal issuer/login/отзыв прав; RIPE SDK two-IP/no-fetch passed140, полный flow pipeline/local licensed MaxMind/S3/container/certificate jobs и Gitea delivery требуют отдельных тестовых endpoints/аккаунтов. Не отправлять сообщения и не публиковать релиз без соответствующего поручения |
|
||||
| Общая приёмка | Локальная12.3.83; UI1244/context221/compiled984 parity139; профильные build/E2E/live проверки последующих блоков | Traffic initial live mock-id gate passed141; IPv6 special ranges/cache passed142; unknown RIPE coordinates passed143; IPv6 synthetic UDP/worker/SQL passed144; native exporter/API/UI145; последующие изменения проверять отдельно; scoped axe не означает полную WCAG сертификацию |
|
||||
| Portal/интеграции | Локальные и isolated JWT guards; UI/API error states в границах журналов | Настоящий Portal issuer/login/отзыв прав; RIPE SDK two-IP/no-fetch passed140, native IPv6 ULA flow pipeline passed145 (IPv4 transport), public IPv6 WAN/local licensed MaxMind/S3/container/certificate jobs и Gitea delivery требуют отдельных тестовых endpoints/аккаунтов. Не отправлять сообщения и не публиковать релиз без соответствующего поручения |
|
||||
| Общая приёмка | Локальная12.3.83; UI1244/context221/compiled984 parity139; профильные build/E2E/live проверки последующих блоков | Traffic initial live mock-id gate passed141; IPv6 special ranges/cache passed142; unknown RIPE coordinates passed143; IPv6 synthetic UDP/worker/SQL passed144; native CHR ULA/IPFIX/API/UI passed145; ICMPv6/IPv6 endpoint labels146; последующие изменения проверять отдельно; scoped axe не означает полную WCAG сертификацию |
|
||||
|
||||
Доказательства и точные ограничения: [полная история этапа12](ux-ui-stage-12.md), [внешний протокол](ux-ui-external-acceptance.md), [BGP93](ux-ui/acceptance/bgp-failover-2026-10-10.json), [паспорт стенда](ux-ui-test-server.md). Невыполненные пункты не являются все блокерами данного лабораторного сценария: для выпуска необходимо явно определить требуемые конфигурации и принять их либо согласовать ограничение.
|
||||
|
||||
@@ -468,3 +468,17 @@ Unknown0/0 policy основана на наблюдённом live ответе
|
||||
Backend ux-ipfix144 развёрнут, health healthy; frontend ux-traffic141 сохранён. Live traffic1440/320 passed без initial srv1/400, page errors/overflow. Rollback env/image оставлены. [Все попытки и границы](ux-ui/acceptance/ipv6-ipfix-worker-sql-2026-10-11.json), [browser smoke](ux-ui/acceptance/traffic-ipfix-smoke-2026-10-11.json).
|
||||
|
||||
Это real UDP/worker/SQL path с синтетическим exporter через IPv4 loopback transport, не native RouterOS IPv6 export/outer transport и не maximum throughput. CHR configuration/passwords не менялись. Следующий145 — проверить возможность native RouterOS IPv6 exporter и populated API/UI на собственных objects/DB.12.5 открыт.
|
||||
|
||||
## 12.5.145 — настоящий RouterOS IPv6 IPFIX и заполненный интерфейс (2026-10-11)
|
||||
|
||||
Оба CHR доступны с прежними credentials, RouterOS7.24.5. Исходно Traffic Flow disabled/targets empty. Созданы собственные GRE-пара с allow-fast-path=false и fd00:145:1::1/2/64, advertise=no. CHR1 временно экспортирует IPFIX только своего GRE, с short timeouts/one owned target. Native Ping прошёл5/5 в обе стороны; CPU/input-output path и IPv6 support сверены с [официальным Traffic Flow manual](https://manual.mikrotik.com/docs/diagnostics-monitoring-and-troubleshooting/traffic-flow/), версия manual7.26, фактическая проверка7.24.5.
|
||||
|
||||
На Debian запущен отдельный application/production collector worker в own temporary PostgreSQL DB. Скопирована конфигурация только CHR1 без публикации credentials; worker слушает UDP48145, HTTP API доступен только через localhost18145/SSH. Native RouterOS sender, не synthetic fixture, передал IPv6 IPFIX records: production API содержит реальные ULA source/destination и positive bytes/packets. Deployed frontend ux-traffic141 проверен через явный relay реальных ответов отдельного backend: Sessions DOM содержит IPv6, PC1440/mobile320 API200/pageerror0/no document overflow. Screenshots сохраняют frame/current scroll position, не все строки одновременно. Initial UI attempts искали адрес на Applications summary и ошибочно выбирали button вместо actual tab; исправлено только обращение к существующей вкладке.
|
||||
|
||||
Тест не использовал main DB для seeded fixtures; обычный background polling главного приложения оставался активным, поэтому абсолютное отсутствие background writes не заявляется. IPsec/WireGuard keys, пароли, исходные public/default/metadata routes не менялись. Native objects/GRE/IPv6 inputs принадлежат одному unique tag.
|
||||
|
||||
Автоматическая очистка восстановила Traffic Flow и удалила objects CHR1, но GET собственного GRE по ID на CHR2 вернул401. Child drain прошёл, own DB удалена. Read-only resource и полный каталог обоих CHR снова доступны с теми же credentials; причина одиночного GET401 не установлена, пароль не менялся. Recovery по свежему полному каталогу проверил exact comment/name/local-remote/address и отсутствие IDs в baseline; удалены только два оставшихся objects CHR2 обычным DELETE. Все12 collection projections×2 и Traffic Flow/IPFIX fields/IPv6 settings совпали с исходными. Initial failure и recovery сохранены, не заменены гладким success.
|
||||
|
||||
Own container удалён после проверки exact container ID; UDP48145/HTTP18145 и отдельный SSH tunnel закрыты, основной стенд backend ux-ipfix144/frontend ux-traffic141 healthy. Начальный неверный host port81245 был отвергнут до запуска/изменений, исправлен18145. [Native/API/cleanup receipt](ux-ui/acceptance/native-ipv6-ipfix-2026-10-11.json), [UI receipt](ux-ui/acceptance/native-ipv6-ipfix-ui-2026-10-11.json), [PC screenshot](ux-ui/screens/native-ipv6-ipfix145-1440-2026-10-11.png), [mobile screenshot](ux-ui/screens/native-ipv6-ipfix145-320-2026-10-11.png).
|
||||
|
||||
Доказан IPv6 ULA inner/native IPFIX поверх IPv4 GRE/export transport, не public IPv6 WAN/outer или throughput/произвольные clients. На live UI ICMPv6 подписан numeric58, IPv6 endpoints с портом требуют однозначного bracket format; следующий146 — улучшить эти подписи, сохранив ReUI/Frame/base-nova.12.5 открыт.
|
||||
+15
-1
@@ -1,6 +1,6 @@
|
||||
# Этап 12: итоговая приёмка UX/UI
|
||||
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.144 — исправлен dual-stack IPFIX при zero IPv4 placeholders; реальный UDP→worker→SQL passed:6 IPv6 rows,25200B/42 packets raw/minute,7200B/12 Internet facts.21 local scripts exit0 с честными skips;984 outputs matched. Backend ux-ipfix144/frontend ux-traffic141. Далее145 — native RouterOS IPv6 exporter и populated API/UI, если конфигурация стенда позволяет.12.5 открыт.
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.145 — native CHR IPv6 ULA→IPFIX→production worker/SQL/API→frontend Sessions подтверждён; Ping5/5×2, PC/mobile DOM/API/no-overflow passed. Initial cleanup GET401 сохранён, recovery удалил2 exact-owned objects;12 collections×2/configs restored, own DB/container/ports/tunnel удалены. Backend ux-ipfix144/frontend ux-traffic141. Далее146 — понятные ICMPv6/IPv6 endpoint labels;12.5 открыт.
|
||||
|
||||
План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push.
|
||||
|
||||
@@ -2858,3 +2858,17 @@ Unknown0/0 policy основана на наблюдённом live ответе
|
||||
Backend ux-ipfix144 развёрнут, health healthy; frontend ux-traffic141 сохранён. Live traffic1440/320 passed без initial srv1/400, page errors/overflow. Rollback env/image оставлены. [Все попытки и границы](ux-ui/acceptance/ipv6-ipfix-worker-sql-2026-10-11.json), [browser smoke](ux-ui/acceptance/traffic-ipfix-smoke-2026-10-11.json).
|
||||
|
||||
Это real UDP/worker/SQL path с синтетическим exporter через IPv4 loopback transport, не native RouterOS IPv6 export/outer transport и не maximum throughput. CHR configuration/passwords не менялись. Следующий145 — проверить возможность native RouterOS IPv6 exporter и populated API/UI на собственных objects/DB.12.5 открыт.
|
||||
|
||||
## 12.5.145 — настоящий RouterOS IPv6 IPFIX и заполненный интерфейс (2026-10-11)
|
||||
|
||||
Оба CHR доступны с прежними credentials, RouterOS7.24.5. Исходно Traffic Flow disabled/targets empty. Созданы собственные GRE-пара с allow-fast-path=false и fd00:145:1::1/2/64, advertise=no. CHR1 временно экспортирует IPFIX только своего GRE, с short timeouts/one owned target. Native Ping прошёл5/5 в обе стороны; CPU/input-output path и IPv6 support сверены с [официальным Traffic Flow manual](https://manual.mikrotik.com/docs/diagnostics-monitoring-and-troubleshooting/traffic-flow/), версия manual7.26, фактическая проверка7.24.5.
|
||||
|
||||
На Debian запущен отдельный application/production collector worker в own temporary PostgreSQL DB. Скопирована конфигурация только CHR1 без публикации credentials; worker слушает UDP48145, HTTP API доступен только через localhost18145/SSH. Native RouterOS sender, не synthetic fixture, передал IPv6 IPFIX records: production API содержит реальные ULA source/destination и positive bytes/packets. Deployed frontend ux-traffic141 проверен через явный relay реальных ответов отдельного backend: Sessions DOM содержит IPv6, PC1440/mobile320 API200/pageerror0/no document overflow. Screenshots сохраняют frame/current scroll position, не все строки одновременно. Initial UI attempts искали адрес на Applications summary и ошибочно выбирали button вместо actual tab; исправлено только обращение к существующей вкладке.
|
||||
|
||||
Тест не использовал main DB для seeded fixtures; обычный background polling главного приложения оставался активным, поэтому абсолютное отсутствие background writes не заявляется. IPsec/WireGuard keys, пароли, исходные public/default/metadata routes не менялись. Native objects/GRE/IPv6 inputs принадлежат одному unique tag.
|
||||
|
||||
Автоматическая очистка восстановила Traffic Flow и удалила objects CHR1, но GET собственного GRE по ID на CHR2 вернул401. Child drain прошёл, own DB удалена. Read-only resource и полный каталог обоих CHR снова доступны с теми же credentials; причина одиночного GET401 не установлена, пароль не менялся. Recovery по свежему полному каталогу проверил exact comment/name/local-remote/address и отсутствие IDs в baseline; удалены только два оставшихся objects CHR2 обычным DELETE. Все12 collection projections×2 и Traffic Flow/IPFIX fields/IPv6 settings совпали с исходными. Initial failure и recovery сохранены, не заменены гладким success.
|
||||
|
||||
Own container удалён после проверки exact container ID; UDP48145/HTTP18145 и отдельный SSH tunnel закрыты, основной стенд backend ux-ipfix144/frontend ux-traffic141 healthy. Начальный неверный host port81245 был отвергнут до запуска/изменений, исправлен18145. [Native/API/cleanup receipt](ux-ui/acceptance/native-ipv6-ipfix-2026-10-11.json), [UI receipt](ux-ui/acceptance/native-ipv6-ipfix-ui-2026-10-11.json), [PC screenshot](ux-ui/screens/native-ipv6-ipfix145-1440-2026-10-11.png), [mobile screenshot](ux-ui/screens/native-ipv6-ipfix145-320-2026-10-11.png).
|
||||
|
||||
Доказан IPv6 ULA inner/native IPFIX поверх IPv4 GRE/export transport, не public IPv6 WAN/outer или throughput/произвольные clients. На live UI ICMPv6 подписан numeric58, IPv6 endpoints с портом требуют однозначного bracket format; следующий146 — улучшить эти подписи, сохранив ReUI/Frame/base-nova.12.5 открыт.
|
||||
@@ -1,6 +1,6 @@
|
||||
# Тестовый сервер UX/UI — 2026-10-10
|
||||
|
||||
Сервер161.104.46.222: завершён12.5.144 — исправлен dual-stack IPFIX при zero IPv4 placeholders; реальный UDP→worker→SQL passed:6 IPv6 rows,25200B/42 packets raw/minute,7200B/12 Internet facts.21 local scripts exit0 с честными skips;984 outputs matched. Backend ux-ipfix144/frontend ux-traffic141. Далее145 — native RouterOS IPv6 exporter и populated API/UI, если конфигурация стенда позволяет.12.5 открыт.
|
||||
Сервер161.104.46.222: завершён12.5.145 — native CHR IPv6 ULA→IPFIX→production worker/SQL/API→frontend Sessions подтверждён; Ping5/5×2, PC/mobile DOM/API/no-overflow passed. Initial cleanup GET401 сохранён, recovery удалил2 exact-owned objects;12 collections×2/configs restored, own DB/container/ports/tunnel удалены. Backend ux-ipfix144/frontend ux-traffic141. Далее146 — понятные ICMPv6/IPv6 endpoint labels;12.5 открыт.
|
||||
|
||||
| Параметр | Проверенное состояние |
|
||||
| --- | --- |
|
||||
@@ -1284,3 +1284,17 @@ Unknown0/0 policy основана на наблюдённом live ответе
|
||||
Backend ux-ipfix144 развёрнут, health healthy; frontend ux-traffic141 сохранён. Live traffic1440/320 passed без initial srv1/400, page errors/overflow. Rollback env/image оставлены. [Все попытки и границы](ux-ui/acceptance/ipv6-ipfix-worker-sql-2026-10-11.json), [browser smoke](ux-ui/acceptance/traffic-ipfix-smoke-2026-10-11.json).
|
||||
|
||||
Это real UDP/worker/SQL path с синтетическим exporter через IPv4 loopback transport, не native RouterOS IPv6 export/outer transport и не maximum throughput. CHR configuration/passwords не менялись. Следующий145 — проверить возможность native RouterOS IPv6 exporter и populated API/UI на собственных objects/DB.12.5 открыт.
|
||||
|
||||
## 12.5.145 — настоящий RouterOS IPv6 IPFIX и заполненный интерфейс (2026-10-11)
|
||||
|
||||
Оба CHR доступны с прежними credentials, RouterOS7.24.5. Исходно Traffic Flow disabled/targets empty. Созданы собственные GRE-пара с allow-fast-path=false и fd00:145:1::1/2/64, advertise=no. CHR1 временно экспортирует IPFIX только своего GRE, с short timeouts/one owned target. Native Ping прошёл5/5 в обе стороны; CPU/input-output path и IPv6 support сверены с [официальным Traffic Flow manual](https://manual.mikrotik.com/docs/diagnostics-monitoring-and-troubleshooting/traffic-flow/), версия manual7.26, фактическая проверка7.24.5.
|
||||
|
||||
На Debian запущен отдельный application/production collector worker в own temporary PostgreSQL DB. Скопирована конфигурация только CHR1 без публикации credentials; worker слушает UDP48145, HTTP API доступен только через localhost18145/SSH. Native RouterOS sender, не synthetic fixture, передал IPv6 IPFIX records: production API содержит реальные ULA source/destination и positive bytes/packets. Deployed frontend ux-traffic141 проверен через явный relay реальных ответов отдельного backend: Sessions DOM содержит IPv6, PC1440/mobile320 API200/pageerror0/no document overflow. Screenshots сохраняют frame/current scroll position, не все строки одновременно. Initial UI attempts искали адрес на Applications summary и ошибочно выбирали button вместо actual tab; исправлено только обращение к существующей вкладке.
|
||||
|
||||
Тест не использовал main DB для seeded fixtures; обычный background polling главного приложения оставался активным, поэтому абсолютное отсутствие background writes не заявляется. IPsec/WireGuard keys, пароли, исходные public/default/metadata routes не менялись. Native objects/GRE/IPv6 inputs принадлежат одному unique tag.
|
||||
|
||||
Автоматическая очистка восстановила Traffic Flow и удалила objects CHR1, но GET собственного GRE по ID на CHR2 вернул401. Child drain прошёл, own DB удалена. Read-only resource и полный каталог обоих CHR снова доступны с теми же credentials; причина одиночного GET401 не установлена, пароль не менялся. Recovery по свежему полному каталогу проверил exact comment/name/local-remote/address и отсутствие IDs в baseline; удалены только два оставшихся objects CHR2 обычным DELETE. Все12 collection projections×2 и Traffic Flow/IPFIX fields/IPv6 settings совпали с исходными. Initial failure и recovery сохранены, не заменены гладким success.
|
||||
|
||||
Own container удалён после проверки exact container ID; UDP48145/HTTP18145 и отдельный SSH tunnel закрыты, основной стенд backend ux-ipfix144/frontend ux-traffic141 healthy. Начальный неверный host port81245 был отвергнут до запуска/изменений, исправлен18145. [Native/API/cleanup receipt](ux-ui/acceptance/native-ipv6-ipfix-2026-10-11.json), [UI receipt](ux-ui/acceptance/native-ipv6-ipfix-ui-2026-10-11.json), [PC screenshot](ux-ui/screens/native-ipv6-ipfix145-1440-2026-10-11.png), [mobile screenshot](ux-ui/screens/native-ipv6-ipfix145-320-2026-10-11.png).
|
||||
|
||||
Доказан IPv6 ULA inner/native IPFIX поверх IPv4 GRE/export transport, не public IPv6 WAN/outer или throughput/произвольные clients. На live UI ICMPv6 подписан numeric58, IPv6 endpoints с портом требуют однозначного bracket format; следующий146 — улучшить эти подписи, сохранив ReUI/Frame/base-nova.12.5 открыт.
|
||||
@@ -0,0 +1,910 @@
|
||||
{
|
||||
"date": "2026-10-11",
|
||||
"block": "12.5.145",
|
||||
"runtime": {
|
||||
"backend": "ux-ipfix144",
|
||||
"frontend": "ux-traffic141",
|
||||
"backendHealthy": true
|
||||
},
|
||||
"native": {
|
||||
"date": "2026-10-11",
|
||||
"block": "12.5.145",
|
||||
"name": "mm-flow145-1791712666652",
|
||||
"runtime": {
|
||||
"backend": "ux-ipfix144",
|
||||
"frontend": "ux-traffic141"
|
||||
},
|
||||
"devices": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"host": "194.226.121.150",
|
||||
"version": "7.24.5 (stable)",
|
||||
"reachable": true
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"host": "104.165.244.7",
|
||||
"version": "7.24.5 (stable)",
|
||||
"reachable": true
|
||||
}
|
||||
],
|
||||
"pings": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"sent": 5,
|
||||
"received": 5,
|
||||
"rows": [
|
||||
{
|
||||
"avg-rtt": "54ms548us",
|
||||
"host": "fd00:145:1::2",
|
||||
"max-rtt": "54ms548us",
|
||||
"min-rtt": "54ms548us",
|
||||
"packet-loss": "0",
|
||||
"received": "1",
|
||||
"sent": "1",
|
||||
"seq": "0",
|
||||
"size": "128",
|
||||
"status": "echo reply",
|
||||
"time": "54ms548us",
|
||||
"ttl": "64"
|
||||
},
|
||||
{
|
||||
"avg-rtt": "54ms427us",
|
||||
"host": "fd00:145:1::2",
|
||||
"max-rtt": "54ms548us",
|
||||
"min-rtt": "54ms307us",
|
||||
"packet-loss": "0",
|
||||
"received": "2",
|
||||
"sent": "2",
|
||||
"seq": "1",
|
||||
"size": "128",
|
||||
"status": "echo reply",
|
||||
"time": "54ms307us",
|
||||
"ttl": "64"
|
||||
},
|
||||
{
|
||||
"avg-rtt": "54ms515us",
|
||||
"host": "fd00:145:1::2",
|
||||
"max-rtt": "54ms692us",
|
||||
"min-rtt": "54ms307us",
|
||||
"packet-loss": "0",
|
||||
"received": "3",
|
||||
"sent": "3",
|
||||
"seq": "2",
|
||||
"size": "128",
|
||||
"status": "echo reply",
|
||||
"time": "54ms692us",
|
||||
"ttl": "64"
|
||||
},
|
||||
{
|
||||
"avg-rtt": "54ms492us",
|
||||
"host": "fd00:145:1::2",
|
||||
"max-rtt": "54ms692us",
|
||||
"min-rtt": "54ms307us",
|
||||
"packet-loss": "0",
|
||||
"received": "4",
|
||||
"sent": "4",
|
||||
"seq": "3",
|
||||
"size": "128",
|
||||
"status": "echo reply",
|
||||
"time": "54ms423us",
|
||||
"ttl": "64"
|
||||
},
|
||||
{
|
||||
"avg-rtt": "54ms440us",
|
||||
"host": "fd00:145:1::2",
|
||||
"max-rtt": "54ms692us",
|
||||
"min-rtt": "54ms231us",
|
||||
"packet-loss": "0",
|
||||
"received": "5",
|
||||
"sent": "5",
|
||||
"seq": "4",
|
||||
"size": "128",
|
||||
"status": "echo reply",
|
||||
"time": "54ms231us",
|
||||
"ttl": "64"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"sent": 5,
|
||||
"received": 5,
|
||||
"rows": [
|
||||
{
|
||||
"avg-rtt": "53ms466us",
|
||||
"host": "fd00:145:1::1",
|
||||
"max-rtt": "53ms466us",
|
||||
"min-rtt": "53ms466us",
|
||||
"packet-loss": "0",
|
||||
"received": "1",
|
||||
"sent": "1",
|
||||
"seq": "0",
|
||||
"size": "128",
|
||||
"status": "echo reply",
|
||||
"time": "53ms466us",
|
||||
"ttl": "64"
|
||||
},
|
||||
{
|
||||
"avg-rtt": "53ms480us",
|
||||
"host": "fd00:145:1::1",
|
||||
"max-rtt": "53ms494us",
|
||||
"min-rtt": "53ms466us",
|
||||
"packet-loss": "0",
|
||||
"received": "2",
|
||||
"sent": "2",
|
||||
"seq": "1",
|
||||
"size": "128",
|
||||
"status": "echo reply",
|
||||
"time": "53ms494us",
|
||||
"ttl": "64"
|
||||
},
|
||||
{
|
||||
"avg-rtt": "53ms498us",
|
||||
"host": "fd00:145:1::1",
|
||||
"max-rtt": "53ms534us",
|
||||
"min-rtt": "53ms466us",
|
||||
"packet-loss": "0",
|
||||
"received": "3",
|
||||
"sent": "3",
|
||||
"seq": "2",
|
||||
"size": "128",
|
||||
"status": "echo reply",
|
||||
"time": "53ms534us",
|
||||
"ttl": "64"
|
||||
},
|
||||
{
|
||||
"avg-rtt": "53ms469us",
|
||||
"host": "fd00:145:1::1",
|
||||
"max-rtt": "53ms534us",
|
||||
"min-rtt": "53ms383us",
|
||||
"packet-loss": "0",
|
||||
"received": "4",
|
||||
"sent": "4",
|
||||
"seq": "3",
|
||||
"size": "128",
|
||||
"status": "echo reply",
|
||||
"time": "53ms383us",
|
||||
"ttl": "64"
|
||||
},
|
||||
{
|
||||
"avg-rtt": "53ms467us",
|
||||
"host": "fd00:145:1::1",
|
||||
"max-rtt": "53ms534us",
|
||||
"min-rtt": "53ms383us",
|
||||
"packet-loss": "0",
|
||||
"received": "5",
|
||||
"sent": "5",
|
||||
"seq": "4",
|
||||
"size": "128",
|
||||
"status": "echo reply",
|
||||
"time": "53ms460us",
|
||||
"ttl": "64"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"cleanup": [],
|
||||
"limits": [
|
||||
"Own GRE IPv6 ULA over IPv4 outer; native IPFIX over IPv4 WAN UDP; not IPv6 outer/WAN or throughput acceptance",
|
||||
"Dedicated database/application process, main database not seeded with fixture rows; ordinary background polling remains active; preview UI uses explicit real API relay to isolated backend"
|
||||
],
|
||||
"controlledTrafficFlow": {
|
||||
"active-flow-timeout": "10s",
|
||||
"cache-entries": "256k",
|
||||
"enabled": "true",
|
||||
"inactive-flow-timeout": "3s",
|
||||
"interfaces": "mm-flow145-1791712666652-g",
|
||||
"packet-sampling": "false",
|
||||
"sampling-interval": "0",
|
||||
"sampling-space": "0"
|
||||
},
|
||||
"apiTalkers": {
|
||||
"exportersOnline": 1,
|
||||
"bytesPerMin": 844.8,
|
||||
"uniqueSrc": 4,
|
||||
"uniqueDst": 4,
|
||||
"topProto": "58",
|
||||
"talkers": [
|
||||
{
|
||||
"serverId": "1",
|
||||
"serverName": "CHR · native145",
|
||||
"src": "194.226.121.150",
|
||||
"dst": "104.165.244.7",
|
||||
"proto": 47,
|
||||
"protoName": "GRE",
|
||||
"srcPort": 0,
|
||||
"dstPort": 0,
|
||||
"bytes": 1616,
|
||||
"packets": 12,
|
||||
"bps": 43.093333333333334,
|
||||
"inIface": "#144",
|
||||
"inIfaceIndex": "144",
|
||||
"application": "GRE"
|
||||
},
|
||||
{
|
||||
"serverId": "1",
|
||||
"serverName": "CHR · native145",
|
||||
"src": "fd00:145:1::2",
|
||||
"dst": "fd00:145:1::1",
|
||||
"proto": 58,
|
||||
"protoName": "58",
|
||||
"srcPort": 0,
|
||||
"dstPort": 0,
|
||||
"bytes": 1280,
|
||||
"packets": 10,
|
||||
"bps": 34.13333333333333,
|
||||
"inIface": "#144",
|
||||
"inIfaceIndex": "144",
|
||||
"application": "58/—"
|
||||
},
|
||||
{
|
||||
"serverId": "1",
|
||||
"serverName": "CHR · native145",
|
||||
"src": "fd00:145:1::1",
|
||||
"dst": "fd00:145:1::2",
|
||||
"proto": 58,
|
||||
"protoName": "58",
|
||||
"srcPort": 0,
|
||||
"dstPort": 0,
|
||||
"bytes": 1280,
|
||||
"packets": 10,
|
||||
"bps": 34.13333333333333,
|
||||
"inIface": "—",
|
||||
"inIfaceIndex": "0",
|
||||
"application": "58/—"
|
||||
},
|
||||
{
|
||||
"serverId": "1",
|
||||
"serverName": "CHR · native145",
|
||||
"src": "fe80::2:68a5:f407",
|
||||
"dst": "ff02::2",
|
||||
"proto": 58,
|
||||
"protoName": "58",
|
||||
"srcPort": 0,
|
||||
"dstPort": 0,
|
||||
"bytes": 48,
|
||||
"packets": 1,
|
||||
"bps": 1.28,
|
||||
"inIface": "—",
|
||||
"inIfaceIndex": "0",
|
||||
"application": "58/—"
|
||||
}
|
||||
],
|
||||
"lastExporterIp": "194.226.121.150",
|
||||
"lastError": null,
|
||||
"packetsReceived": 6,
|
||||
"lastDatagramAt": "2026-10-11T09:58:07.508Z",
|
||||
"listenerBound": true,
|
||||
"listenerAddress": "0.0.0.0:48145"
|
||||
},
|
||||
"apiAnalytics": {
|
||||
"bpsNow": 112.64,
|
||||
"bytes": 4224,
|
||||
"packets": 33,
|
||||
"conversations": 4,
|
||||
"conversationsRaw": 4,
|
||||
"uniqueSrc": 4,
|
||||
"uniqueDst": 4,
|
||||
"topProto": "58",
|
||||
"topCategory": "Прочее",
|
||||
"rxSeries": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0.000192,
|
||||
0,
|
||||
0.01024,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"txSeries": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"applications": [
|
||||
{
|
||||
"id": "58/—",
|
||||
"label": "58/—",
|
||||
"bytes": 2608,
|
||||
"packets": 21,
|
||||
"bps": 69.54666666666667,
|
||||
"percent": 61.74242424242424
|
||||
},
|
||||
{
|
||||
"id": "GRE",
|
||||
"label": "GRE",
|
||||
"bytes": 1616,
|
||||
"packets": 12,
|
||||
"bps": 43.093333333333334,
|
||||
"percent": 38.25757575757576
|
||||
}
|
||||
],
|
||||
"protocols": [
|
||||
{
|
||||
"id": "58",
|
||||
"label": "58",
|
||||
"bytes": 2608,
|
||||
"packets": 21,
|
||||
"bps": 69.54666666666667,
|
||||
"percent": 61.74242424242424
|
||||
},
|
||||
{
|
||||
"id": "GRE",
|
||||
"label": "GRE",
|
||||
"bytes": 1616,
|
||||
"packets": 12,
|
||||
"bps": 43.093333333333334,
|
||||
"percent": 38.25757575757576
|
||||
}
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"id": "194.226.121.150",
|
||||
"label": "194.226.121.150",
|
||||
"bytes": 1616,
|
||||
"packets": 12,
|
||||
"bps": 43.093333333333334,
|
||||
"percent": 38.25757575757576
|
||||
},
|
||||
{
|
||||
"id": "fd00:145:1::2",
|
||||
"label": "fd00:145:1::2",
|
||||
"bytes": 1280,
|
||||
"packets": 10,
|
||||
"bps": 34.13333333333333,
|
||||
"percent": 30.303030303030305
|
||||
},
|
||||
{
|
||||
"id": "fd00:145:1::1",
|
||||
"label": "fd00:145:1::1",
|
||||
"bytes": 1280,
|
||||
"packets": 10,
|
||||
"bps": 34.13333333333333,
|
||||
"percent": 30.303030303030305
|
||||
},
|
||||
{
|
||||
"id": "fe80::2:68a5:f407",
|
||||
"label": "fe80::2:68a5:f407",
|
||||
"bytes": 48,
|
||||
"packets": 1,
|
||||
"bps": 1.28,
|
||||
"percent": 1.1363636363636365
|
||||
}
|
||||
],
|
||||
"destinations": [
|
||||
{
|
||||
"id": "104.165.244.7",
|
||||
"label": "104.165.244.7",
|
||||
"bytes": 1616,
|
||||
"packets": 12,
|
||||
"bps": 43.093333333333334,
|
||||
"percent": 38.25757575757576
|
||||
},
|
||||
{
|
||||
"id": "fd00:145:1::1",
|
||||
"label": "fd00:145:1::1",
|
||||
"bytes": 1280,
|
||||
"packets": 10,
|
||||
"bps": 34.13333333333333,
|
||||
"percent": 30.303030303030305
|
||||
},
|
||||
{
|
||||
"id": "fd00:145:1::2",
|
||||
"label": "fd00:145:1::2",
|
||||
"bytes": 1280,
|
||||
"packets": 10,
|
||||
"bps": 34.13333333333333,
|
||||
"percent": 30.303030303030305
|
||||
},
|
||||
{
|
||||
"id": "ff02::2",
|
||||
"label": "ff02::2",
|
||||
"bytes": 48,
|
||||
"packets": 1,
|
||||
"bps": 1.28,
|
||||
"percent": 1.1363636363636365
|
||||
}
|
||||
],
|
||||
"interfaces": [
|
||||
{
|
||||
"id": "#144",
|
||||
"label": "#144",
|
||||
"bytes": 2896,
|
||||
"packets": 22,
|
||||
"bps": 77.22666666666667,
|
||||
"percent": 68.56060606060606
|
||||
},
|
||||
{
|
||||
"id": "—",
|
||||
"label": "—",
|
||||
"bytes": 1328,
|
||||
"packets": 11,
|
||||
"bps": 35.413333333333334,
|
||||
"percent": 31.439393939393938
|
||||
}
|
||||
],
|
||||
"asns": [],
|
||||
"countries": [],
|
||||
"categories": [
|
||||
{
|
||||
"id": "Прочее",
|
||||
"label": "Прочее",
|
||||
"bytes": 2608,
|
||||
"packets": 21,
|
||||
"bps": 69.54666666666667,
|
||||
"percent": 61.74242424242424
|
||||
},
|
||||
{
|
||||
"id": "Туннель",
|
||||
"label": "Туннель",
|
||||
"bytes": 1616,
|
||||
"packets": 12,
|
||||
"bps": 43.093333333333334,
|
||||
"percent": 38.25757575757576
|
||||
}
|
||||
],
|
||||
"services": [
|
||||
{
|
||||
"id": "Прочее",
|
||||
"label": "Прочее",
|
||||
"bytes": 4224,
|
||||
"packets": 33,
|
||||
"bps": 112.64,
|
||||
"percent": 100
|
||||
}
|
||||
],
|
||||
"mapEdges": [],
|
||||
"conversationsList": [
|
||||
{
|
||||
"serverId": "1",
|
||||
"serverName": "CHR · native145",
|
||||
"src": "194.226.121.150",
|
||||
"dst": "104.165.244.7",
|
||||
"proto": 47,
|
||||
"protoName": "GRE",
|
||||
"srcPort": 0,
|
||||
"dstPort": 0,
|
||||
"bytes": 1616,
|
||||
"packets": 12,
|
||||
"bps": 2260.13986013986,
|
||||
"inIface": "#144",
|
||||
"inIfaceIndex": "144",
|
||||
"outIface": "#2",
|
||||
"nextHop": "194.226.121.1",
|
||||
"application": "GRE",
|
||||
"category": "Туннель",
|
||||
"service": "Прочее",
|
||||
"internetPeer": "104.165.244.7",
|
||||
"direction": "transit",
|
||||
"plane": "overlay"
|
||||
},
|
||||
{
|
||||
"serverId": "1",
|
||||
"serverName": "CHR · native145",
|
||||
"src": "fd00:145:1::2",
|
||||
"dst": "fd00:145:1::1",
|
||||
"proto": 58,
|
||||
"protoName": "58",
|
||||
"srcPort": 0,
|
||||
"dstPort": 0,
|
||||
"bytes": 1280,
|
||||
"packets": 10,
|
||||
"bps": 2509.8039215686276,
|
||||
"inIface": "#144",
|
||||
"inIfaceIndex": "144",
|
||||
"nextHop": "::1:8000:0:0:0",
|
||||
"application": "58/—",
|
||||
"category": "Прочее",
|
||||
"service": "Прочее",
|
||||
"clientIp": "fd00:145:1::2",
|
||||
"internetPeer": "fd00:145:1::1",
|
||||
"direction": "from_client",
|
||||
"plane": "payload"
|
||||
},
|
||||
{
|
||||
"serverId": "1",
|
||||
"serverName": "CHR · native145",
|
||||
"src": "fd00:145:1::1",
|
||||
"dst": "fd00:145:1::2",
|
||||
"proto": 58,
|
||||
"protoName": "58",
|
||||
"srcPort": 0,
|
||||
"dstPort": 0,
|
||||
"bytes": 1280,
|
||||
"packets": 10,
|
||||
"bps": 2479.418886198547,
|
||||
"inIface": "—",
|
||||
"inIfaceIndex": "0",
|
||||
"outIface": "#144",
|
||||
"nextHop": "::4000:0:0:0",
|
||||
"application": "58/—",
|
||||
"category": "Прочее",
|
||||
"service": "Прочее",
|
||||
"clientIp": "fd00:145:1::1",
|
||||
"internetPeer": "fd00:145:1::2",
|
||||
"direction": "from_client",
|
||||
"plane": "payload"
|
||||
},
|
||||
{
|
||||
"serverId": "1",
|
||||
"serverName": "CHR · native145",
|
||||
"src": "fe80::2:68a5:f407",
|
||||
"dst": "ff02::2",
|
||||
"proto": 58,
|
||||
"protoName": "58",
|
||||
"srcPort": 0,
|
||||
"dstPort": 0,
|
||||
"bytes": 48,
|
||||
"packets": 1,
|
||||
"bps": 1.28,
|
||||
"inIface": "—",
|
||||
"inIfaceIndex": "0",
|
||||
"outIface": "#144",
|
||||
"nextHop": "::800:0:0:0",
|
||||
"application": "58/—",
|
||||
"category": "Прочее",
|
||||
"service": "Прочее",
|
||||
"clientIp": "fe80::2:68a5:f407",
|
||||
"internetPeer": "ff02::2",
|
||||
"direction": "from_client",
|
||||
"plane": "payload"
|
||||
}
|
||||
],
|
||||
"paths": [
|
||||
{
|
||||
"id": "unknown|1||104.165.244.7|#144",
|
||||
"clientId": "unknown",
|
||||
"clientName": "Неизвестный клиент",
|
||||
"ifaces": "#144",
|
||||
"serverId": "1",
|
||||
"serverName": "CHR · native145",
|
||||
"inIface": "#144",
|
||||
"outIface": "#2",
|
||||
"enId": "",
|
||||
"enName": "",
|
||||
"dst": "104.165.244.7",
|
||||
"service": "Прочее",
|
||||
"category": "Туннель",
|
||||
"plane": "overlay",
|
||||
"bytes": 1616,
|
||||
"packets": 12,
|
||||
"bps": 43.093333333333334
|
||||
},
|
||||
{
|
||||
"id": "unknown|1||fd00:145:1::1|#144",
|
||||
"clientId": "unknown",
|
||||
"clientName": "Неизвестный клиент",
|
||||
"ifaces": "#144",
|
||||
"serverId": "1",
|
||||
"serverName": "CHR · native145",
|
||||
"inIface": "#144",
|
||||
"outIface": "",
|
||||
"enId": "",
|
||||
"enName": "",
|
||||
"dst": "fd00:145:1::1",
|
||||
"service": "Прочее",
|
||||
"category": "Прочее",
|
||||
"plane": "payload",
|
||||
"bytes": 1280,
|
||||
"packets": 10,
|
||||
"bps": 34.13333333333333
|
||||
},
|
||||
{
|
||||
"id": "unknown|1||fd00:145:1::2|—",
|
||||
"clientId": "unknown",
|
||||
"clientName": "Неизвестный клиент",
|
||||
"ifaces": "—",
|
||||
"serverId": "1",
|
||||
"serverName": "CHR · native145",
|
||||
"inIface": "—",
|
||||
"outIface": "#144",
|
||||
"enId": "",
|
||||
"enName": "",
|
||||
"dst": "fd00:145:1::2",
|
||||
"service": "Прочее",
|
||||
"category": "Прочее",
|
||||
"plane": "payload",
|
||||
"bytes": 1280,
|
||||
"packets": 10,
|
||||
"bps": 34.13333333333333
|
||||
},
|
||||
{
|
||||
"id": "unknown|1||ff02::2|—",
|
||||
"clientId": "unknown",
|
||||
"clientName": "Неизвестный клиент",
|
||||
"ifaces": "—",
|
||||
"serverId": "1",
|
||||
"serverName": "CHR · native145",
|
||||
"inIface": "—",
|
||||
"outIface": "#144",
|
||||
"enId": "",
|
||||
"enName": "",
|
||||
"dst": "ff02::2",
|
||||
"service": "Прочее",
|
||||
"category": "Прочее",
|
||||
"plane": "payload",
|
||||
"bytes": 48,
|
||||
"packets": 1,
|
||||
"bps": 1.28
|
||||
}
|
||||
],
|
||||
"ifaces": [
|
||||
{
|
||||
"name": "#144",
|
||||
"index": "144",
|
||||
"bps": 77.22666666666667
|
||||
},
|
||||
{
|
||||
"name": "—",
|
||||
"index": "0",
|
||||
"bps": 35.413333333333334
|
||||
}
|
||||
],
|
||||
"live": true,
|
||||
"dedupApplied": false,
|
||||
"degraded": false,
|
||||
"bytesPayload": 2608,
|
||||
"bytesOverlay": 1616,
|
||||
"bytesMesh": 0,
|
||||
"bytesWire": 0,
|
||||
"bpsOverlay": 43.093333333333334,
|
||||
"bpsWire": 0,
|
||||
"excludeMeshApplied": false,
|
||||
"excludeOverlayApplied": false
|
||||
},
|
||||
"nativeDataReceived": true,
|
||||
"browserCheckpoint": true,
|
||||
"cleanupError": "RouterOS API error 401 on /interface/gre/*71: {\"error\":401,\"message\":\"Unauthorized\"}",
|
||||
"childDrained": true,
|
||||
"childExit": 0,
|
||||
"databaseRemoved": true,
|
||||
"childDiagnostic": "Private child stderr retained separately; no credential-bearing error text published"
|
||||
},
|
||||
"postFailureReadOnlyInspect": {
|
||||
"date": "2026-10-11",
|
||||
"name": "mm-flow145-1791712666652",
|
||||
"readOnly": true,
|
||||
"devices": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"host": "194.226.121.150",
|
||||
"gre": [],
|
||||
"addresses": [],
|
||||
"systemReadSucceeded": true
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"host": "104.165.244.7",
|
||||
"gre": [
|
||||
{
|
||||
".id": "*71",
|
||||
"actual-mtu": "1400",
|
||||
"allow-fast-path": "false",
|
||||
"clamp-tcp-mss": "true",
|
||||
"comment": "mm-flow145-1791712666652",
|
||||
"disabled": "false",
|
||||
"dont-fragment": "no",
|
||||
"dscp": "inherit",
|
||||
"keepalive": "10s,10",
|
||||
"local-address": "104.165.244.7",
|
||||
"mtu": "1400",
|
||||
"name": "mm-flow145-1791712666652-g",
|
||||
"remote-address": "194.226.121.150",
|
||||
"running": "false"
|
||||
}
|
||||
],
|
||||
"addresses": [
|
||||
{
|
||||
".id": "*73",
|
||||
"actual-interface": "mm-flow145-1791712666652-g",
|
||||
"address": "fd00:145:1::2/64",
|
||||
"advertise": "false",
|
||||
"auto-link-local": "true",
|
||||
"comment": "mm-flow145-1791712666652",
|
||||
"deprecated": "false",
|
||||
"disabled": "false",
|
||||
"dynamic": "false",
|
||||
"eui-64": "false",
|
||||
"from-pool": "",
|
||||
"global": "true",
|
||||
"interface": "mm-flow145-1791712666652-g",
|
||||
"invalid": "false",
|
||||
"no-dad": "false",
|
||||
"slave": "false",
|
||||
"vrf": "main"
|
||||
}
|
||||
],
|
||||
"systemReadSucceeded": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"recoveryCleanup": {
|
||||
"date": "2026-10-11",
|
||||
"name": "mm-flow145-1791712666652",
|
||||
"actions": [
|
||||
{
|
||||
"serverId": 2,
|
||||
"path": "/ipv6/address",
|
||||
"id": "*73",
|
||||
"method": "DELETE",
|
||||
"removed": true
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"path": "/interface/gre",
|
||||
"id": "*71",
|
||||
"method": "DELETE",
|
||||
"removed": true
|
||||
}
|
||||
],
|
||||
"cleanup": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"/interface/gre": true,
|
||||
"/ipv6/address": true,
|
||||
"/ipv6/route": true,
|
||||
"/ipv6/nd": true,
|
||||
"/ipv6/firewall/filter": true,
|
||||
"/ipv6/firewall/raw": true,
|
||||
"/ip/address": true,
|
||||
"/ip/route": true,
|
||||
"/ip/firewall/filter": true,
|
||||
"/ip/firewall/nat": true,
|
||||
"/ip/firewall/mangle": true,
|
||||
"/ip/traffic-flow/target": true,
|
||||
"trafficFlowRestored": true,
|
||||
"ipfixFieldsUnchanged": true,
|
||||
"ipv6SettingsUnchanged": true
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"/interface/gre": true,
|
||||
"/ipv6/address": true,
|
||||
"/ipv6/route": true,
|
||||
"/ipv6/nd": true,
|
||||
"/ipv6/firewall/filter": true,
|
||||
"/ipv6/firewall/raw": true,
|
||||
"/ip/address": true,
|
||||
"/ip/route": true,
|
||||
"/ip/firewall/filter": true,
|
||||
"/ip/firewall/nat": true,
|
||||
"/ip/firewall/mangle": true,
|
||||
"/ip/traffic-flow/target": true,
|
||||
"trafficFlowRestored": true,
|
||||
"ipfixFieldsUnchanged": true,
|
||||
"ipv6SettingsUnchanged": true
|
||||
}
|
||||
],
|
||||
"success": true
|
||||
},
|
||||
"infrastructureCleanup": {
|
||||
"ownedContainerId": "ce12762cb132ced5dba28b28443eb0327d135dcd8e751e719b562b4ef606d73f",
|
||||
"removedAfterIdentityCheck": true,
|
||||
"udp48145Closed": true,
|
||||
"isolatedHttp18145Closed": true,
|
||||
"ssh18145TunnelClosed": true
|
||||
},
|
||||
"bounds": [
|
||||
"Two native CHR RouterOS7.24.5; own GRE ULA addresses and allow-fast-path=false; native IPFIX from CHR1 through IPv4 WAN to real production listener",
|
||||
"Traffic Flow was initially disabled with no targets; enabled only on own GRE, short timers, one own target; restored exact original settings",
|
||||
"Owned isolated DB cloned only CHR1 configuration for a separate application/worker; credentials never published; ordinary main-app background polling stayed active, so no claim of zero background DB writes",
|
||||
"Ping5/5 both directions, actual native IPv6 fields and positive bytes/packets observed through production API and frontend Sessions DOM; no synthetic IPFIX sender for this block",
|
||||
"UI relay used real isolated HTTP backend responses, not mocked JSON; screenshots show current frame/scroll position, not every row; initial wrong tab/role selectors retained in UI protocol",
|
||||
"Initial invalid host port81245 was rejected before container launch/native changes, corrected18145",
|
||||
"Automatic cleanup on CHR2 hit one401 reading own GRE by id; credentials still permitted system/full-catalog reads. Two exact-owned remaining objects deleted by DELETE after fresh catalog ownership checks; all12 static collection projections per device and three config groups restored",
|
||||
"Cause of the isolated GET-by-id401 not determined; do not infer password rotation or full permission failure",
|
||||
"Own DB removed and child drain acknowledged; temporary receiver/API/container/tunnel closed; public/metadata/default routes and original settings preserved by baseline checks",
|
||||
"IPv6 inner over IPv4 GRE outer/export transport; no public IPv6 WAN, arbitrary client OS, maximum throughput or all configurations acceptance"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,155 @@
|
||||
{
|
||||
"date": "2026-10-11",
|
||||
"block": "12.5.145",
|
||||
"runtime": {
|
||||
"backend": "ux-ipfix144",
|
||||
"frontend": "ux-traffic141"
|
||||
},
|
||||
"transport": "Deployed frontend assets; explicit real HTTP API relay through SSH to owned isolated backend18145; no mocked JSON",
|
||||
"cases": [
|
||||
{
|
||||
"width": 1440,
|
||||
"api": [
|
||||
{
|
||||
"path": "/api/auth/config",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/traffic/servers",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/traffic/bound-interfaces",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/traffic/users",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/servers",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/filters/gre-tunnels",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/traffic/flow/clients",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/traffic/flows",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/evobgp/settings",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/sidebar-counts",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/traffic/flow/exporters",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/sidebar-counts",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/traffic/flow/analytics",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/traffic/flow/live",
|
||||
"status": 200
|
||||
}
|
||||
],
|
||||
"pageErrors": [],
|
||||
"noOverflow": true,
|
||||
"screenshot": "docs/ux-ui/screens/native-ipv6-ipfix145-1440-2026-10-11.png",
|
||||
"nativeIpv6RenderedInSessions": true
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"api": [
|
||||
{
|
||||
"path": "/api/auth/config",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/traffic/servers",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/traffic/users",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/traffic/bound-interfaces",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/filters/gre-tunnels",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/sidebar-counts",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/servers",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/sidebar-counts",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/evobgp/settings",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/traffic/flows",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/traffic/flow/exporters",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/traffic/flow/clients",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/traffic/flow/analytics",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/traffic/flow/live",
|
||||
"status": 200
|
||||
}
|
||||
],
|
||||
"pageErrors": [],
|
||||
"noOverflow": true,
|
||||
"screenshot": "docs/ux-ui/screens/native-ipv6-ipfix145-320-2026-10-11.png",
|
||||
"nativeIpv6RenderedInSessions": true
|
||||
}
|
||||
],
|
||||
"bounds": [
|
||||
"Own native GRE ULA flows displayed; not public IPv6 WAN connectivity, IPv6 outer or real Internet application traffic",
|
||||
"IPv6 text presence asserted in Sessions DOM; screenshots capture the current scroll position, not every data-grid row"
|
||||
],
|
||||
"initialAttempts": [
|
||||
{
|
||||
"passed": false,
|
||||
"reason": "Address search attempted on default applications summary, before selecting Sessions tab"
|
||||
},
|
||||
{
|
||||
"passed": false,
|
||||
"reason": "Sessions selector incorrectly used button instead of actual tab role"
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 140 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 57 KiB |
Reference in new issue
Block a user