diff --git a/docs/ux-ui-external-acceptance.md b/docs/ux-ui-external-acceptance.md index 3dd54b08..8bbe88d1 100644 --- a/docs/ux-ui-external-acceptance.md +++ b/docs/ux-ui-external-acceptance.md @@ -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. diff --git a/docs/ux-ui-plan.md b/docs/ux-ui-plan.md index c963038c..7428e18d 100644 --- a/docs/ux-ui-plan.md +++ b/docs/ux-ui-plan.md @@ -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). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат. diff --git a/docs/ux-ui-progress.md b/docs/ux-ui-progress.md index 4d57a76e..db1c8360 100644 --- a/docs/ux-ui-progress.md +++ b/docs/ux-ui-progress.md @@ -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) diff --git a/docs/ux-ui-stage-12.md b/docs/ux-ui-stage-12.md index 244e9c49..f5563f20 100644 --- a/docs/ux-ui-stage-12.md +++ b/docs/ux-ui-stage-12.md @@ -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. diff --git a/docs/ux-ui/acceptance/bgp-failover-2026-10-10.json b/docs/ux-ui/acceptance/bgp-failover-2026-10-10.json new file mode 100644 index 00000000..10ba35ae --- /dev/null +++ b/docs/ux-ui/acceptance/bgp-failover-2026-10-10.json @@ -0,0 +1,1352 @@ +{ + "date": "2026-10-10", + "name": "mm-bgp93-1791569305177", + "samePublicUnderlay": true, + "observations": [ + { + "serverId": 1, + "phase": "primary", + "attempts": [ + { + "sent": 3, + "received": 3, + "packetLoss": "0" + } + ] + }, + { + "serverId": 2, + "phase": "primary", + "attempts": [ + { + "sent": 3, + "received": 2, + "packetLoss": "33" + }, + { + "sent": 3, + "received": 3, + "packetLoss": "0" + } + ] + }, + { + "serverId": 1, + "phase": "alternate", + "attempts": [ + { + "sent": 3, + "received": 3, + "packetLoss": "0" + } + ] + }, + { + "serverId": 2, + "phase": "alternate", + "attempts": [ + { + "sent": 3, + "received": 3, + "packetLoss": "0" + } + ] + }, + { + "serverId": 1, + "phase": "recovered-primary", + "attempts": [ + { + "sent": 3, + "received": 3, + "packetLoss": "0" + } + ] + }, + { + "serverId": 2, + "phase": "recovered-primary", + "attempts": [ + { + "sent": 3, + "received": 3, + "packetLoss": "0" + } + ] + } + ], + "cleanup": [ + { + "serverId": 1, + "/routing/bgp/connection": true, + "/routing/bgp/instance": true, + "/routing/filter/rule": true, + "/ip/firewall/address-list": true, + "/routing/bfd/configuration": true, + "/interface/wireguard/peers": true, + "/interface/wireguard": true, + "/interface/gre": true, + "/interface/bridge": true, + "/ip/address": true, + "/ip/route": true + }, + { + "serverId": 2, + "/routing/bgp/connection": true, + "/routing/bgp/instance": true, + "/routing/filter/rule": true, + "/ip/firewall/address-list": true, + "/routing/bfd/configuration": true, + "/interface/wireguard/peers": true, + "/interface/wireguard": true, + "/interface/gre": true, + "/interface/bridge": true, + "/ip/address": true, + "/ip/route": true + } + ], + "wireguardUnderlay": [ + { + "serverId": 1, + "pingReceived": 3, + "peer": [ + { + "name": "mm-bgp93-1791569305177-wg-peer", + "interface": "mm-bgp93-1791569305177-wg", + "allowed-address": "198.18.96.2/32", + "current-endpoint-address": "104.165.244.7", + "current-endpoint-port": "59993", + "last-handshake": "1s", + "rx": "660", + "tx": "848" + } + ] + }, + { + "serverId": 2, + "pingReceived": 3, + "peer": [ + { + "name": "mm-bgp93-1791569305177-wg-peer", + "interface": "mm-bgp93-1791569305177-wg", + "allowed-address": "198.18.96.1/32", + "current-endpoint-address": "194.226.121.150", + "current-endpoint-port": "59993", + "last-handshake": "2s", + "rx": "988", + "tx": "948" + } + ] + } + ], + "initial": [ + { + "sessions": [ + { + ".id": "*2800005", + "ebgp": "", + "established": "true", + "hold-time": "3m", + "input.filter": "mm-bgp93-1791569305177-p-in", + "input.procid": "20", + "instance": "mm-bgp93-1791569305177", + "keepalive-time": "1m", + "last-started": "2026-10-09 21:08:32", + "local.address": "198.18.94.1", + "local.afi": "ip", + "local.as": "65094", + "local.bytes": "68", + "local.capabilities": "mp,rr,enhe,gr,as4", + "local.cluster-id": "198.18.194.1", + "local.eor": "", + "local.id": "198.18.194.1", + "local.messages": "2", + "name": "mm-bgp93-1791569305177-p-1", + "output.filter-chain": "mm-bgp93-1791569305177-out", + "output.network": "mm-bgp93-1791569305177", + "output.procid": "20", + "prefix-count": "1", + "remote.address": "198.18.94.2", + "remote.afi": "ip", + "remote.as": "65095", + "remote.bytes": "68", + "remote.capabilities": "mp,rr,enhe,gr,as4", + "remote.eor": "", + "remote.id": "198.18.194.2", + "remote.messages": "2", + "uptime": "1s400ms", + "use-bfd": "true" + }, + { + ".id": "*2800006", + "ebgp": "", + "established": "true", + "hold-time": "3m", + "input.filter": "mm-bgp93-1791569305177-a-in", + "input.procid": "21", + "instance": "mm-bgp93-1791569305177", + "keepalive-time": "1m", + "last-started": "2026-10-09 21:08:32", + "local.address": "198.18.95.1", + "local.afi": "ip", + "local.as": "65094", + "local.bytes": "68", + "local.capabilities": "mp,rr,enhe,gr,as4", + "local.cluster-id": "198.18.194.1", + "local.eor": "", + "local.id": "198.18.194.1", + "local.messages": "2", + "name": "mm-bgp93-1791569305177-a-1", + "output.filter-chain": "mm-bgp93-1791569305177-out", + "output.network": "mm-bgp93-1791569305177", + "output.procid": "21", + "prefix-count": "1", + "remote.address": "198.18.95.2", + "remote.afi": "ip", + "remote.as": "65095", + "remote.bytes": "68", + "remote.capabilities": "mp,rr,enhe,gr,as4", + "remote.eor": "", + "remote.id": "198.18.194.2", + "remote.messages": "2", + "uptime": "1s80ms", + "use-bfd": "true" + } + ], + "routes": [ + { + ".id": "*2014E000", + "bgp": "true", + "distance": "20", + "dst-address": "198.18.194.2/32", + "dynamic": "true", + "gateway": "198.18.95.2", + "immediate-gw": "198.18.95.2%mm-bgp93-1791569305177-a", + "inactive": "false", + "routing-table": "main", + "scope": "40", + "target-scope": "10" + }, + { + ".id": "*2014F000", + "active": "true", + "bgp": "true", + "distance": "20", + "dst-address": "198.18.194.2/32", + "dynamic": "true", + "gateway": "198.18.94.2", + "immediate-gw": "198.18.94.2%mm-bgp93-1791569305177-p", + "inactive": "false", + "routing-table": "main", + "scope": "40", + "target-scope": "10" + } + ], + "bfd": [ + { + ".id": "*1", + "actual-tx-interval": "200ms", + "desired-tx-interval": "200ms", + "hold-time": "600ms", + "local-address": "198.18.94.1", + "multihop": "false", + "multiplier": "3", + "packets-rx": "2", + "packets-tx": "4", + "remote-address": "198.18.94.2%mm-bgp93-1791569305177-p", + "remote-min-rx": "200ms", + "remote-min-tx": "200ms", + "required-min-rx": "200ms", + "state": "up", + "state-changes": "1", + "up": "true", + "uptime": "1s", + "vrf": "main" + }, + { + ".id": "*2", + "actual-tx-interval": "200ms", + "desired-tx-interval": "200ms", + "hold-time": "600ms", + "local-address": "198.18.95.1", + "multihop": "false", + "multiplier": "3", + "packets-rx": "6", + "packets-tx": "3", + "remote-address": "198.18.95.2%mm-bgp93-1791569305177-a", + "remote-min-rx": "200ms", + "remote-min-tx": "200ms", + "required-min-rx": "200ms", + "state": "up", + "state-changes": "2", + "up": "true", + "uptime": "1s", + "vrf": "main" + } + ] + }, + { + "sessions": [ + { + ".id": "*2800004", + "ebgp": "", + "established": "true", + "hold-time": "3m", + "input.filter": "mm-bgp93-1791569305177-p-in", + "input.procid": "21", + "instance": "mm-bgp93-1791569305177", + "keepalive-time": "1m", + "last-started": "2026-10-09 20:08:33", + "local.address": "198.18.94.2", + "local.afi": "ip", + "local.as": "65095", + "local.bytes": "68", + "local.capabilities": "mp,rr,enhe,gr,as4", + "local.cluster-id": "198.18.194.2", + "local.eor": "", + "local.id": "198.18.194.2", + "local.messages": "2", + "name": "mm-bgp93-1791569305177-p-1", + "output.filter-chain": "mm-bgp93-1791569305177-out", + "output.network": "mm-bgp93-1791569305177", + "output.procid": "21", + "prefix-count": "1", + "remote.address": "198.18.94.1", + "remote.afi": "ip", + "remote.as": "65094", + "remote.bytes": "68", + "remote.capabilities": "mp,rr,enhe,gr,as4", + "remote.eor": "", + "remote.id": "198.18.194.1", + "remote.messages": "2", + "uptime": "1s600ms", + "use-bfd": "true" + }, + { + ".id": "*2800005", + "ebgp": "", + "established": "true", + "hold-time": "3m", + "input.filter": "mm-bgp93-1791569305177-a-in", + "input.procid": "20", + "instance": "mm-bgp93-1791569305177", + "keepalive-time": "1m", + "last-started": "2026-10-09 20:08:32", + "local.address": "198.18.95.2", + "local.afi": "ip", + "local.as": "65095", + "local.bytes": "68", + "local.capabilities": "mp,rr,enhe,gr,as4", + "local.cluster-id": "198.18.194.2", + "local.eor": "", + "local.id": "198.18.194.2", + "local.messages": "2", + "name": "mm-bgp93-1791569305177-a-1", + "output.filter-chain": "mm-bgp93-1791569305177-out", + "output.network": "mm-bgp93-1791569305177", + "output.procid": "20", + "prefix-count": "1", + "remote.address": "198.18.95.1", + "remote.afi": "ip", + "remote.as": "65094", + "remote.bytes": "68", + "remote.capabilities": "mp,rr,enhe,gr,as4", + "remote.eor": "", + "remote.id": "198.18.194.1", + "remote.messages": "2", + "uptime": "1s280ms", + "use-bfd": "true" + } + ], + "routes": [ + { + ".id": "*2014D000", + "bgp": "true", + "distance": "20", + "dst-address": "198.18.194.1/32", + "dynamic": "true", + "gateway": "198.18.95.1", + "immediate-gw": "198.18.95.1%mm-bgp93-1791569305177-a", + "inactive": "false", + "routing-table": "main", + "scope": "40", + "target-scope": "10" + }, + { + ".id": "*2014F000", + "active": "true", + "bgp": "true", + "distance": "20", + "dst-address": "198.18.194.1/32", + "dynamic": "true", + "gateway": "198.18.94.1", + "immediate-gw": "198.18.94.1%mm-bgp93-1791569305177-p", + "inactive": "false", + "routing-table": "main", + "scope": "40", + "target-scope": "10" + } + ], + "bfd": [ + { + ".id": "*1", + "actual-tx-interval": "200ms", + "desired-tx-interval": "200ms", + "hold-time": "600ms", + "local-address": "198.18.94.2", + "multihop": "false", + "multiplier": "3", + "packets-rx": "4", + "packets-tx": "4", + "remote-address": "198.18.94.1%mm-bgp93-1791569305177-p", + "remote-min-rx": "200ms", + "remote-min-tx": "200ms", + "required-min-rx": "200ms", + "state": "up", + "state-changes": "2", + "up": "true", + "uptime": "0s", + "vrf": "main" + }, + { + ".id": "*2", + "actual-tx-interval": "200ms", + "desired-tx-interval": "200ms", + "hold-time": "600ms", + "local-address": "198.18.95.2", + "multihop": "false", + "multiplier": "3", + "packets-rx": "3", + "packets-tx": "6", + "remote-address": "198.18.95.1%mm-bgp93-1791569305177-a", + "remote-min-rx": "200ms", + "remote-min-tx": "200ms", + "required-min-rx": "200ms", + "state": "up", + "state-changes": "2", + "up": "true", + "uptime": "1s", + "vrf": "main" + } + ] + } + ], + "initialCatalog": [ + { + "id": "*2800005", + "serverId": 1, + "serverName": "CHR", + "serverSite": "", + "serverCountry": "", + "name": "mm-bgp93-1791569305177-p-1", + "peerIp": "198.18.94.2", + "remoteAs": 65095, + "localAs": 65094, + "localId": "198.18.194.1", + "remoteId": "198.18.194.2", + "state": "Established", + "type": "eBGP", + "uptime": "1s400ms", + "holdTime": 180, + "keepalive": 60, + "prefixesRx": 1, + "prefixesTx": null, + "inputMessages": 2, + "outputMessages": 2, + "capabilities": [ + "MP-BGP", + "Route Refresh", + "Extended Next-Hop", + "Graceful Restart", + "4-byte-AS" + ], + "lastError": null, + "afi": "ip" + }, + { + "id": "*2800006", + "serverId": 1, + "serverName": "CHR", + "serverSite": "", + "serverCountry": "", + "name": "mm-bgp93-1791569305177-a-1", + "peerIp": "198.18.95.2", + "remoteAs": 65095, + "localAs": 65094, + "localId": "198.18.194.1", + "remoteId": "198.18.194.2", + "state": "Established", + "type": "eBGP", + "uptime": "1s80ms", + "holdTime": 180, + "keepalive": 60, + "prefixesRx": 1, + "prefixesTx": null, + "inputMessages": 2, + "outputMessages": 2, + "capabilities": [ + "MP-BGP", + "Route Refresh", + "Extended Next-Hop", + "Graceful Restart", + "4-byte-AS" + ], + "lastError": null, + "afi": "ip" + }, + { + "id": "*2800004", + "serverId": 2, + "serverName": "CHR", + "serverSite": "", + "serverCountry": "", + "name": "mm-bgp93-1791569305177-p-1", + "peerIp": "198.18.94.1", + "remoteAs": 65094, + "localAs": 65095, + "localId": "198.18.194.2", + "remoteId": "198.18.194.1", + "state": "Established", + "type": "eBGP", + "uptime": "1s600ms", + "holdTime": 180, + "keepalive": 60, + "prefixesRx": 1, + "prefixesTx": null, + "inputMessages": 2, + "outputMessages": 2, + "capabilities": [ + "MP-BGP", + "Route Refresh", + "Extended Next-Hop", + "Graceful Restart", + "4-byte-AS" + ], + "lastError": null, + "afi": "ip" + }, + { + "id": "*2800005", + "serverId": 2, + "serverName": "CHR", + "serverSite": "", + "serverCountry": "", + "name": "mm-bgp93-1791569305177-a-1", + "peerIp": "198.18.95.1", + "remoteAs": 65094, + "localAs": 65095, + "localId": "198.18.194.2", + "remoteId": "198.18.194.1", + "state": "Established", + "type": "eBGP", + "uptime": "1s280ms", + "holdTime": 180, + "keepalive": 60, + "prefixesRx": 1, + "prefixesTx": null, + "inputMessages": 2, + "outputMessages": 2, + "capabilities": [ + "MP-BGP", + "Route Refresh", + "Extended Next-Hop", + "Graceful Restart", + "4-byte-AS" + ], + "lastError": null, + "afi": "ip" + } + ], + "failover": { + "acknowledgedMs": 30.602906000000075, + "firstBfdNotUp": 641.7861159999993, + "firstPrimaryNotEstablished": 641.7861159999993, + "firstAlternatePath": 641.7861159999993, + "samples": [ + { + "beganMs": 30.60752700000012, + "endedMs": 105.82511599999998, + "bfdUp": true, + "primaryEstablished": true, + "alternateEstablished": true, + "alternatePath": false + }, + { + "beganMs": 206.38489800000025, + "endedMs": 284.9426569999996, + "bfdUp": true, + "primaryEstablished": true, + "alternateEstablished": true, + "alternatePath": false + }, + { + "beganMs": 385.36060799999905, + "endedMs": 460.8057200000003, + "bfdUp": true, + "primaryEstablished": true, + "alternateEstablished": true, + "alternatePath": false + }, + { + "beganMs": 561.177991999999, + "endedMs": 641.7861159999993, + "bfdUp": false, + "primaryEstablished": false, + "alternateEstablished": true, + "alternatePath": true + } + ], + "after": [ + { + "sessions": [ + { + ".id": "*2800005", + "ebgp": "", + "input.filter": "mm-bgp93-1791569305177-p-in", + "instance": "mm-bgp93-1791569305177", + "keepalive-time": "1m", + "last-started": "2026-10-09 21:08:32", + "last-stopped": "2026-10-09 21:08:35", + "local.address": "198.18.94.1", + "local.afi": "ip", + "local.as": "65094", + "local.capabilities": "mp,rr,enhe,gr,as4", + "local.cluster-id": "198.18.194.1", + "local.id": "198.18.194.1", + "name": "mm-bgp93-1791569305177-p-1", + "output.filter-chain": "mm-bgp93-1791569305177-out", + "output.network": "mm-bgp93-1791569305177", + "prefix-count": "0", + "remote.address": "198.18.94.2", + "remote.afi": "ip", + "remote.as": "65095", + "remote.capabilities": "mp,rr,enhe,gr,as4", + "remote.id": "198.18.194.2", + "use-bfd": "true" + }, + { + ".id": "*2800006", + "ebgp": "", + "established": "true", + "hold-time": "3m", + "input.filter": "mm-bgp93-1791569305177-a-in", + "input.procid": "21", + "instance": "mm-bgp93-1791569305177", + "keepalive-time": "1m", + "last-started": "2026-10-09 21:08:32", + "local.address": "198.18.95.1", + "local.afi": "ip", + "local.as": "65094", + "local.bytes": "68", + "local.capabilities": "mp,rr,enhe,gr,as4", + "local.cluster-id": "198.18.194.1", + "local.eor": "", + "local.id": "198.18.194.1", + "local.messages": "2", + "name": "mm-bgp93-1791569305177-a-1", + "output.filter-chain": "mm-bgp93-1791569305177-out", + "output.network": "mm-bgp93-1791569305177", + "output.procid": "21", + "prefix-count": "1", + "remote.address": "198.18.95.2", + "remote.afi": "ip", + "remote.as": "65095", + "remote.bytes": "68", + "remote.capabilities": "mp,rr,enhe,gr,as4", + "remote.eor": "", + "remote.id": "198.18.194.2", + "remote.messages": "2", + "uptime": "4s80ms", + "use-bfd": "true" + } + ], + "routes": [ + { + ".id": "*2014E000", + "active": "true", + "bgp": "true", + "distance": "20", + "dst-address": "198.18.194.2/32", + "dynamic": "true", + "gateway": "198.18.95.2", + "immediate-gw": "198.18.95.2%mm-bgp93-1791569305177-a", + "inactive": "false", + "routing-table": "main", + "scope": "40", + "target-scope": "10" + } + ], + "bfd": [ + { + ".id": "*1", + "actual-tx-interval": "200ms", + "desired-tx-interval": "200ms", + "hold-time": "600ms", + "local-address": "198.18.95.1", + "multihop": "false", + "multiplier": "3", + "packets-rx": "22", + "packets-tx": "19", + "remote-address": "198.18.95.2%mm-bgp93-1791569305177-a", + "remote-min-rx": "200ms", + "remote-min-tx": "200ms", + "required-min-rx": "200ms", + "state": "up", + "state-changes": "2", + "up": "true", + "uptime": "4s", + "vrf": "main" + } + ] + }, + { + "sessions": [ + { + ".id": "*2800004", + "ebgp": "", + "input.filter": "mm-bgp93-1791569305177-p-in", + "instance": "mm-bgp93-1791569305177", + "keepalive-time": "1m", + "last-started": "2026-10-09 20:08:33", + "last-stopped": "2026-10-09 20:08:36", + "local.address": "198.18.94.2", + "local.afi": "ip", + "local.as": "65095", + "local.capabilities": "mp,rr,enhe,gr,as4", + "local.cluster-id": "198.18.194.2", + "local.id": "198.18.194.2", + "name": "mm-bgp93-1791569305177-p-1", + "output.filter-chain": "mm-bgp93-1791569305177-out", + "output.network": "mm-bgp93-1791569305177", + "prefix-count": "0", + "remote.address": "198.18.94.1", + "remote.afi": "ip", + "remote.as": "65094", + "remote.capabilities": "mp,rr,enhe,gr,as4", + "remote.id": "198.18.194.1", + "use-bfd": "true" + }, + { + ".id": "*2800005", + "ebgp": "", + "established": "true", + "hold-time": "3m", + "input.filter": "mm-bgp93-1791569305177-a-in", + "input.procid": "20", + "instance": "mm-bgp93-1791569305177", + "keepalive-time": "1m", + "last-started": "2026-10-09 20:08:32", + "local.address": "198.18.95.2", + "local.afi": "ip", + "local.as": "65095", + "local.bytes": "68", + "local.capabilities": "mp,rr,enhe,gr,as4", + "local.cluster-id": "198.18.194.2", + "local.eor": "", + "local.id": "198.18.194.2", + "local.messages": "2", + "name": "mm-bgp93-1791569305177-a-1", + "output.filter-chain": "mm-bgp93-1791569305177-out", + "output.network": "mm-bgp93-1791569305177", + "output.procid": "20", + "prefix-count": "1", + "remote.address": "198.18.95.1", + "remote.afi": "ip", + "remote.as": "65094", + "remote.bytes": "68", + "remote.capabilities": "mp,rr,enhe,gr,as4", + "remote.eor": "", + "remote.id": "198.18.194.1", + "remote.messages": "2", + "uptime": "4s280ms", + "use-bfd": "true" + } + ], + "routes": [ + { + ".id": "*2014D000", + "active": "true", + "bgp": "true", + "distance": "20", + "dst-address": "198.18.194.1/32", + "dynamic": "true", + "gateway": "198.18.95.1", + "immediate-gw": "198.18.95.1%mm-bgp93-1791569305177-a", + "inactive": "false", + "routing-table": "main", + "scope": "40", + "target-scope": "10" + } + ], + "bfd": [ + { + ".id": "*1", + "actual-tx-interval": "200ms", + "desired-tx-interval": "200ms", + "hold-time": "600ms", + "local-address": "198.18.95.2", + "multihop": "false", + "multiplier": "3", + "packets-rx": "19", + "packets-tx": "22", + "remote-address": "198.18.95.1%mm-bgp93-1791569305177-a", + "remote-min-rx": "200ms", + "remote-min-tx": "200ms", + "required-min-rx": "200ms", + "state": "up", + "state-changes": "2", + "up": "true", + "uptime": "4s", + "vrf": "main" + } + ] + } + ] + }, + "degradedCatalog": [ + { + "id": "*2800005", + "serverId": 1, + "serverName": "CHR", + "serverSite": "", + "serverCountry": "", + "name": "mm-bgp93-1791569305177-p-1", + "peerIp": "198.18.94.2", + "remoteAs": 65095, + "localAs": 65094, + "localId": "198.18.194.1", + "remoteId": "198.18.194.2", + "state": "Unknown", + "type": "eBGP", + "uptime": null, + "holdTime": null, + "keepalive": 60, + "prefixesRx": 0, + "prefixesTx": null, + "inputMessages": null, + "outputMessages": null, + "capabilities": [ + "MP-BGP", + "Route Refresh", + "Extended Next-Hop", + "Graceful Restart", + "4-byte-AS" + ], + "lastError": null, + "afi": "ip" + }, + { + "id": "*2800006", + "serverId": 1, + "serverName": "CHR", + "serverSite": "", + "serverCountry": "", + "name": "mm-bgp93-1791569305177-a-1", + "peerIp": "198.18.95.2", + "remoteAs": 65095, + "localAs": 65094, + "localId": "198.18.194.1", + "remoteId": "198.18.194.2", + "state": "Established", + "type": "eBGP", + "uptime": "4s80ms", + "holdTime": 180, + "keepalive": 60, + "prefixesRx": 1, + "prefixesTx": null, + "inputMessages": 2, + "outputMessages": 2, + "capabilities": [ + "MP-BGP", + "Route Refresh", + "Extended Next-Hop", + "Graceful Restart", + "4-byte-AS" + ], + "lastError": null, + "afi": "ip" + }, + { + "id": "*2800004", + "serverId": 2, + "serverName": "CHR", + "serverSite": "", + "serverCountry": "", + "name": "mm-bgp93-1791569305177-p-1", + "peerIp": "198.18.94.1", + "remoteAs": 65094, + "localAs": 65095, + "localId": "198.18.194.2", + "remoteId": "198.18.194.1", + "state": "Unknown", + "type": "eBGP", + "uptime": null, + "holdTime": null, + "keepalive": 60, + "prefixesRx": 0, + "prefixesTx": null, + "inputMessages": null, + "outputMessages": null, + "capabilities": [ + "MP-BGP", + "Route Refresh", + "Extended Next-Hop", + "Graceful Restart", + "4-byte-AS" + ], + "lastError": null, + "afi": "ip" + }, + { + "id": "*2800005", + "serverId": 2, + "serverName": "CHR", + "serverSite": "", + "serverCountry": "", + "name": "mm-bgp93-1791569305177-a-1", + "peerIp": "198.18.95.1", + "remoteAs": 65094, + "localAs": 65095, + "localId": "198.18.194.2", + "remoteId": "198.18.194.1", + "state": "Established", + "type": "eBGP", + "uptime": "4s280ms", + "holdTime": 180, + "keepalive": 60, + "prefixesRx": 1, + "prefixesTx": null, + "inputMessages": 2, + "outputMessages": 2, + "capabilities": [ + "MP-BGP", + "Route Refresh", + "Extended Next-Hop", + "Graceful Restart", + "4-byte-AS" + ], + "lastError": null, + "afi": "ip" + } + ], + "recovered": [ + { + "sessions": [ + { + ".id": "*2800005", + "ebgp": "", + "established": "true", + "hold-time": "3m", + "input.filter": "mm-bgp93-1791569305177-p-in", + "input.procid": "20", + "instance": "mm-bgp93-1791569305177", + "keepalive-time": "1m", + "last-started": "2026-10-09 21:08:39", + "last-stopped": "2026-10-09 21:08:35", + "local.address": "198.18.94.1", + "local.afi": "ip", + "local.as": "65094", + "local.bytes": "68", + "local.capabilities": "mp,rr,enhe,gr,as4", + "local.cluster-id": "198.18.194.1", + "local.eor": "", + "local.id": "198.18.194.1", + "local.messages": "2", + "name": "mm-bgp93-1791569305177-p-1", + "output.filter-chain": "mm-bgp93-1791569305177-out", + "output.network": "mm-bgp93-1791569305177", + "output.procid": "20", + "prefix-count": "0", + "remote.address": "198.18.94.2", + "remote.afi": "ip", + "remote.as": "65095", + "remote.bytes": "68", + "remote.capabilities": "mp,rr,enhe,gr,as4", + "remote.eor": "", + "remote.id": "198.18.194.2", + "remote.messages": "2", + "uptime": "1s170ms", + "use-bfd": "true" + }, + { + ".id": "*2800006", + "ebgp": "", + "established": "true", + "hold-time": "3m", + "input.filter": "mm-bgp93-1791569305177-a-in", + "input.procid": "21", + "instance": "mm-bgp93-1791569305177", + "keepalive-time": "1m", + "last-started": "2026-10-09 21:08:32", + "local.address": "198.18.95.1", + "local.afi": "ip", + "local.as": "65094", + "local.bytes": "68", + "local.capabilities": "mp,rr,enhe,gr,as4", + "local.cluster-id": "198.18.194.1", + "local.eor": "", + "local.id": "198.18.194.1", + "local.messages": "2", + "name": "mm-bgp93-1791569305177-a-1", + "output.filter-chain": "mm-bgp93-1791569305177-out", + "output.network": "mm-bgp93-1791569305177", + "output.procid": "21", + "prefix-count": "1", + "remote.address": "198.18.95.2", + "remote.afi": "ip", + "remote.as": "65095", + "remote.bytes": "68", + "remote.capabilities": "mp,rr,enhe,gr,as4", + "remote.eor": "", + "remote.id": "198.18.194.2", + "remote.messages": "2", + "uptime": "8s80ms", + "use-bfd": "true" + } + ], + "routes": [ + { + ".id": "*2014E000", + "bgp": "true", + "distance": "20", + "dst-address": "198.18.194.2/32", + "dynamic": "true", + "gateway": "198.18.95.2", + "immediate-gw": "198.18.95.2%mm-bgp93-1791569305177-a", + "inactive": "false", + "routing-table": "main", + "scope": "40", + "target-scope": "10" + }, + { + ".id": "*2014F000", + "active": "true", + "bgp": "true", + "distance": "20", + "dst-address": "198.18.194.2/32", + "dynamic": "true", + "gateway": "198.18.94.2", + "immediate-gw": "198.18.94.2%mm-bgp93-1791569305177-p", + "inactive": "false", + "routing-table": "main", + "scope": "40", + "target-scope": "10" + } + ], + "bfd": [ + { + ".id": "*1", + "actual-tx-interval": "200ms", + "desired-tx-interval": "200ms", + "hold-time": "600ms", + "local-address": "198.18.94.1", + "multihop": "false", + "multiplier": "3", + "packets-rx": "3", + "packets-tx": "3", + "remote-address": "198.18.94.2%mm-bgp93-1791569305177-p", + "remote-min-rx": "200ms", + "remote-min-tx": "200ms", + "required-min-rx": "200ms", + "state": "up", + "state-changes": "2", + "up": "true", + "uptime": "0s", + "vrf": "main" + }, + { + ".id": "*2", + "actual-tx-interval": "200ms", + "desired-tx-interval": "200ms", + "hold-time": "600ms", + "local-address": "198.18.95.1", + "multihop": "false", + "multiplier": "3", + "packets-rx": "46", + "packets-tx": "44", + "remote-address": "198.18.95.2%mm-bgp93-1791569305177-a", + "remote-min-rx": "200ms", + "remote-min-tx": "200ms", + "required-min-rx": "200ms", + "state": "up", + "state-changes": "2", + "up": "true", + "uptime": "8s", + "vrf": "main" + } + ] + }, + { + "sessions": [ + { + ".id": "*2800004", + "ebgp": "", + "established": "true", + "hold-time": "3m", + "input.filter": "mm-bgp93-1791569305177-p-in", + "input.procid": "21", + "instance": "mm-bgp93-1791569305177", + "keepalive-time": "1m", + "last-started": "2026-10-09 20:08:39", + "last-stopped": "2026-10-09 20:08:36", + "local.address": "198.18.94.2", + "local.afi": "ip", + "local.as": "65095", + "local.bytes": "68", + "local.capabilities": "mp,rr,enhe,gr,as4", + "local.cluster-id": "198.18.194.2", + "local.eor": "", + "local.id": "198.18.194.2", + "local.messages": "2", + "name": "mm-bgp93-1791569305177-p-1", + "output.filter-chain": "mm-bgp93-1791569305177-out", + "output.network": "mm-bgp93-1791569305177", + "output.procid": "21", + "prefix-count": "0", + "remote.address": "198.18.94.1", + "remote.afi": "ip", + "remote.as": "65094", + "remote.bytes": "68", + "remote.capabilities": "mp,rr,enhe,gr,as4", + "remote.eor": "", + "remote.id": "198.18.194.1", + "remote.messages": "2", + "uptime": "1s320ms", + "use-bfd": "true" + }, + { + ".id": "*2800005", + "ebgp": "", + "established": "true", + "hold-time": "3m", + "input.filter": "mm-bgp93-1791569305177-a-in", + "input.procid": "20", + "instance": "mm-bgp93-1791569305177", + "keepalive-time": "1m", + "last-started": "2026-10-09 20:08:32", + "local.address": "198.18.95.2", + "local.afi": "ip", + "local.as": "65095", + "local.bytes": "68", + "local.capabilities": "mp,rr,enhe,gr,as4", + "local.cluster-id": "198.18.194.2", + "local.eor": "", + "local.id": "198.18.194.2", + "local.messages": "2", + "name": "mm-bgp93-1791569305177-a-1", + "output.filter-chain": "mm-bgp93-1791569305177-out", + "output.network": "mm-bgp93-1791569305177", + "output.procid": "20", + "prefix-count": "1", + "remote.address": "198.18.95.1", + "remote.afi": "ip", + "remote.as": "65094", + "remote.bytes": "68", + "remote.capabilities": "mp,rr,enhe,gr,as4", + "remote.eor": "", + "remote.id": "198.18.194.1", + "remote.messages": "2", + "uptime": "8s280ms", + "use-bfd": "true" + } + ], + "routes": [ + { + ".id": "*2014D000", + "bgp": "true", + "distance": "20", + "dst-address": "198.18.194.1/32", + "dynamic": "true", + "gateway": "198.18.95.1", + "immediate-gw": "198.18.95.1%mm-bgp93-1791569305177-a", + "inactive": "false", + "routing-table": "main", + "scope": "40", + "target-scope": "10" + }, + { + ".id": "*2014F000", + "active": "true", + "bgp": "true", + "distance": "20", + "dst-address": "198.18.194.1/32", + "dynamic": "true", + "gateway": "198.18.94.1", + "immediate-gw": "198.18.94.1%mm-bgp93-1791569305177-p", + "inactive": "false", + "routing-table": "main", + "scope": "40", + "target-scope": "10" + } + ], + "bfd": [ + { + ".id": "*1", + "actual-tx-interval": "200ms", + "desired-tx-interval": "200ms", + "hold-time": "600ms", + "local-address": "198.18.94.2", + "multihop": "false", + "multiplier": "3", + "packets-rx": "2", + "packets-tx": "4", + "remote-address": "198.18.94.1%mm-bgp93-1791569305177-p", + "remote-min-rx": "200ms", + "remote-min-tx": "200ms", + "required-min-rx": "200ms", + "state": "up", + "state-changes": "1", + "up": "true", + "uptime": "1s", + "vrf": "main" + }, + { + ".id": "*2", + "actual-tx-interval": "200ms", + "desired-tx-interval": "200ms", + "hold-time": "600ms", + "local-address": "198.18.95.2", + "multihop": "false", + "multiplier": "3", + "packets-rx": "44", + "packets-tx": "47", + "remote-address": "198.18.95.1%mm-bgp93-1791569305177-a", + "remote-min-rx": "200ms", + "remote-min-tx": "200ms", + "required-min-rx": "200ms", + "state": "up", + "state-changes": "2", + "up": "true", + "uptime": "8s", + "vrf": "main" + } + ] + } + ], + "recoveryCatalog": [ + { + "id": "*2800005", + "serverId": 1, + "serverName": "CHR", + "serverSite": "", + "serverCountry": "", + "name": "mm-bgp93-1791569305177-p-1", + "peerIp": "198.18.94.2", + "remoteAs": 65095, + "localAs": 65094, + "localId": "198.18.194.1", + "remoteId": "198.18.194.2", + "state": "Established", + "type": "eBGP", + "uptime": "1s170ms", + "holdTime": 180, + "keepalive": 60, + "prefixesRx": 1, + "prefixesTx": null, + "inputMessages": 2, + "outputMessages": 2, + "capabilities": [ + "MP-BGP", + "Route Refresh", + "Extended Next-Hop", + "Graceful Restart", + "4-byte-AS" + ], + "lastError": null, + "afi": "ip" + }, + { + "id": "*2800006", + "serverId": 1, + "serverName": "CHR", + "serverSite": "", + "serverCountry": "", + "name": "mm-bgp93-1791569305177-a-1", + "peerIp": "198.18.95.2", + "remoteAs": 65095, + "localAs": 65094, + "localId": "198.18.194.1", + "remoteId": "198.18.194.2", + "state": "Established", + "type": "eBGP", + "uptime": "8s80ms", + "holdTime": 180, + "keepalive": 60, + "prefixesRx": 1, + "prefixesTx": null, + "inputMessages": 2, + "outputMessages": 2, + "capabilities": [ + "MP-BGP", + "Route Refresh", + "Extended Next-Hop", + "Graceful Restart", + "4-byte-AS" + ], + "lastError": null, + "afi": "ip" + }, + { + "id": "*2800004", + "serverId": 2, + "serverName": "CHR", + "serverSite": "", + "serverCountry": "", + "name": "mm-bgp93-1791569305177-p-1", + "peerIp": "198.18.94.1", + "remoteAs": 65094, + "localAs": 65095, + "localId": "198.18.194.2", + "remoteId": "198.18.194.1", + "state": "Established", + "type": "eBGP", + "uptime": "1s320ms", + "holdTime": 180, + "keepalive": 60, + "prefixesRx": 1, + "prefixesTx": null, + "inputMessages": 2, + "outputMessages": 2, + "capabilities": [ + "MP-BGP", + "Route Refresh", + "Extended Next-Hop", + "Graceful Restart", + "4-byte-AS" + ], + "lastError": null, + "afi": "ip" + }, + { + "id": "*2800005", + "serverId": 2, + "serverName": "CHR", + "serverSite": "", + "serverCountry": "", + "name": "mm-bgp93-1791569305177-a-1", + "peerIp": "198.18.95.1", + "remoteAs": 65094, + "localAs": 65095, + "localId": "198.18.194.2", + "remoteId": "198.18.194.1", + "state": "Established", + "type": "eBGP", + "uptime": "8s280ms", + "holdTime": 180, + "keepalive": 60, + "prefixesRx": 1, + "prefixesTx": null, + "inputMessages": 2, + "outputMessages": 2, + "capabilities": [ + "MP-BGP", + "Route Refresh", + "Extended Next-Hop", + "Graceful Restart", + "4-byte-AS" + ], + "lastError": null, + "afi": "ip" + } + ] +} \ No newline at end of file