По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Работая в экосистеме DevOps, скоро понимаешь, насколько важно иметь инструменты DevOps для уменьшения ручной работы. Для каждого этапа DevOps есть несколько наборов инструментов с различными функциональными возможностями. Kubernetes является одним из обязательных, если вы работаете в домене DevOps и запускаете свои приложения внутри контейнеров. Для большей функциональности Kubernetes можно использовать сотни различных инструментов. Говоря об инструментах имеется ввиду утилиты для упрощения управления, улучшения безопасности, различные панели и средства мониторинга Kubernetes кластеров. 1. Helm Helm - это менеджер пакетов для Kubernetes, который позволяет легко управлять приложениями и службами, которые используются во многих различных сценариях, облегчая их развертывание в типичном кластере Kubernetes. Используя Helm, вы можете найти, поделиться и использовать программное обеспечение, которое построено для Kubernetes. Он использует диаграммы, называемые Helm Charts, для определения, установки и обновления сложных приложений Kubernetes. Функции Helm: Отображает состояние всех Kubernetes приложений с помощью диаграмм Использует настраиваемые крючки, чтобы легко проводить обновления. Диаграммы можно использовать на общедоступных или частных серверах. Простой откат к предыдущему состоянию с помощью одной команды Повышение производительности разработчиков и эксплуатационной готовности 2. Flagger Flagger - это оператор прогрессивной доставки для Kubernetes. Он автоматизирует продвижение канареечного развертывания с помощью Istio, App Mesh, Nginx, Linkerd, Contour, Gloo, Skipper для маршрутизации трафика и Prometheus для анализа канарей. При канареечном развертывании выпуски развертываются для небольшой группы пользователей, тестируются, если работает нормально, то выпуски развертываются для всех. Он использует сетку служб, которая выполняется в кластере, для управления трафиком между развертыванием. Для переноса трафика в канарейку он измеряет такие показатели производительности, как средняя продолжительность запросов, частота успешных запросов HTTP, работоспособность модуля и т.д. Flagger может выполнять автоматизированный анализ приложений, продвижение и откат для нескольких стратегий развертывания, таких как Canary, A/B-тестирование, Blue/Green-развертывание. 3. Kubewatch Kubewatch это наблюдатель с открытым исходным кодом для Kubernetes, который отправляет уведомление через Slack. Он написан на языке Go и разработан Bitnami Labs. Он используется для мониторинга ресурсов Kubernetes и уведомляет, есть ли какие-либо изменения. Установить Kubewatch можно через kubectl или с помощью диаграмм helm. В нем легко разобраться и имеет очень простой в использовании интерфейс. Кроме Slack, он также поддерживает HipChat, Mattermost, Flock, webhook и SMTP. В зависимости от того, какой Kubernetes кластер вы хотите отслеживать, вы можете установить значение true или false для этих ресурсов в файле ConfigMap. После установки конфигурации kubewatch и запуска модуля вы начнете получать уведомления о событии Kubernetes, как показано ниже. 4. Gitkube Gitkube - это инструмент, который использует git push для создания и развертывания докер образов на Kubernetes. Имеет три компонента - Remote, gitkube-контроллер, gitkubed. Remote состоит из пользовательских ресурсов, управляемых gitkube-контроллером. gitkube-controller отправляет изменения в gitkubed, который затем строит образ докера и развертывает его. Особенности Gitkube: Простота установки, подключения и развертывания Обеспечивает управление доступом на основе ролей для обеспечения безопасности Проверки подлинности с помощью открытого ключа Поддерживается пространство имен для множественной аренды Никаких дополнительных зависимостей, кроме kubectl и git 5. kube-state-metrics kube-state-metrics - сервис, который генерирует метрики объекта состояния, прослушивая сервер API Kubernetes. Он используется для проверки работоспособности различных объектов, таких как узлы, модули, пространства имен и развертывания. Он предоставляет необработанные, немодифицированные данные из API Kubernetes. Ниже приведена информация, предоставленная kube-state-metrics: Задания Cron и статус задания Состояние модулей (готовность, выполнение и т.д.) Запросы на ресурсы и их диапазон Пропускная способность узла и его состояние Спецификация наборов реплик 6. Kamus Kamus - это инструмент GitOps с открытым исходным кодом, который используется для шифрования и дешифрования секретных ключей для приложений Kubernetes. Зашифрованные ключи, которые делает Kamus, могут быть расшифрованы только приложениями, работающими в кластере Kubernetes. Для шифрования ключей используется AES, Google Cloud KMS, Azure KeyVault. Начать работу с Kamus можно с помощью helm. Kamus поставляется с двумя утилитами - Kamus CLI и Kamus init container. Kamus CLI используется для интеграции с шифрованным API, а контейнер Kamus init - для интеграции с расшифровкой API. По умолчанию, пароли в Kubernetes закодированы в base64 и не зашифрованы. Поэтому, из соображений безопасности, нельзя держать такие ключи на. Любой, кто имеет доступ к репозиторию, сможет использовать эти секреты. Следовательно, необходимо правильное решение для шифрования/дешифрования, как, например, Kamus. Он также предоставляет модель угроз, которая учитывает угрозы и делает секреты безопасными. 7. Untrak Untrak - инструмент с открытым исходным кодом, используемый в Kubernetes для поиска неотслеживаемых ресурсов и сбора мусора. Он помогает находить и удалять файлы из кластера, которые не отслеживаются. После ввода манифестов в конвейер CI/CD с использованием шаблона kubectl apply или helm Kubernetes не знает, когда объект будет удален из репозитория. После удаления объектов они не отслеживаются в процессе доставки и по-прежнему находятся в кластере Kubernetes. Он выполняет команду внутренне, используя простой конфигурационный файл untrak.yaml, чтобы найти ресурсы, которые больше не являются частью управления исходным кодом. 8. Weave Scope Weave Scope предназначена для визуализации, мониторинга и устранения неполадок Docker и Kubernetes. Он отображает всю структуру контейнерного приложения сверху вниз, и полную инфраструктуру, с помощью которой вы можете легко выявить любые проблемы и диагностировать их. Выполнение приложений микросервисной архитектуры в контейнерах докеров не так просто. Компоненты здесь очень динамичны и трудно поддаются мониторингу. С помощью Weave Scope можно легко устранять утечки памяти и контролировать потребление ЦП, визуализировать узкие места сети. Функции Weave Scope: Помогает отслеживать контейнеры докеров в режиме реального времени Простая навигация между процессами, выполняемыми в контейнерах Показывает хост или службу использования ЦП и памяти Перезапуск, остановка или приостановка контейнеров с помощью интерфейса командной строки, не выходя из окна браузера Weave Scope. Поддержка пользовательских подключаемых модулей для получения более подробной информации о контейнерах, процессах и хостах 9. Kubernetes Dashboard Kubernetes Dashboard - веб-интерфейс, предоставляемый компанией Kubernetes. Он используется для развертывания, устранения неполадок и управления контейнерным приложением в кластере Kubernetes. Он предоставляет всю информацию о кластере, такую как сведения о узлах, пространствах имен, ролях, рабочих нагрузках и т.д. Можно использовать helm для развертывания панели управления Kubernetes или воспользоваться простой командой kubectl: kubectl apply - https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml 10. Kops Kops, который расшифровывается как Kubernetes Operations - это проект с открытым исходным кодом, используемый для создания готовых к запуску в производственной среде кластеров Kubernetes. Kops, в первую очередь, можно использовать для развертывания кластеров Kubernetes на AWS и GCE. Небольшой кластер Kubernetes легко создать и обслуживать, но при масштабировании кластера добавляется множество конфигураций, и становится трудно управлять им. Kops - это инструмент, который помогает решать подобные задачи. Он использует подход, основанный на настройке, при котором кластер всегда находится в актуальном состоянии и в безопасености. Kops также имеет множество сетевых бэкэндов, и выбор одного из них, в зависимости от варианта использования, упрощает настройку различных типов кластеров. 11. cAdvisor cAdvisor - это инструмент с открытым исходным кодом для мониторинга контейнера. Он используется для чтения характеристик производительности и использования ресурсов контейнеров, работающих в кластере. Он работает на уровне узла и может автоматически обнаруживать все контейнеры, работающие на определенном узле, и собирать статистику использования памяти, файловой системы, ЦП и сети. Он предоставляет веб-интерфейс, который отображает динамические данные всех контейнеров в кластере. Для начала работы с cAdvisor необходимо запустить его docker образ google/cadvisor, а затем получить к нему доступ по адресу http://localhost:8080 в веб-браузере. 12. Kubespray Kubespray - это бесплатный инструмент, который был создан путём объединения playbooks Ansible и Kubernetes. Используется для управления жизненным циклом кластера Kubernetes. С помощью Kubespray можно быстро развернуть кластер и настроить все параметры реализации кластера, такие как режимы развертывания, сетевые плагины, конфигурация DNS, версии компонентов, методы создания сертификатов и т.д. Для начала работы кластера достаточно запустить один единственный ansible-playbook. Вы можете легко масштабировать или обновлять кластер Kubernetes. 13. K9s K9s - это терминальный инструмент с открытым исходным кодом, и его утилита панели мониторинга может делать все, что делает веб-интерфейс Kubernetes. Он используется для навигации, наблюдения и управления приложением, развернутым в кластере Kubernetes. K9s функции: Отслеживание кластера в реальном времени Настройка отображения для каждого ресурса Глубокий анализ проблем с ресурсами кластера Поддерживает управление доступом на основе ролей Встроенные эталонные тесты для проверки производительности ресурсов 14. Kubetail Kubetail - это простой сценарий bash, который используется для агрегирования журналов из нескольких модулей в одном потоке. Последняя версия Kubetail также имеет функции выделения и фильтрации. Эта функция позволяет выделять нужные части логов отдельным цветом. Используя homebrew, можно установить Kubetail с помощью одной команды. Чтобы упростить работу Kubetail можно добавить значения, как KUBETAIL_NAMESPACE, KUBETAIL_TAIL, KUBETAIL_SKIP_COLORS и т.д. в переменные среды. 15. PowerfulSeal PowerfulSeal - мощный инструмент хаос-инжиниринга с открытым исходным кодом, написанный на языке python для кластеров Kubernetes. Хаос-инжиниринг используется для того, чтобы проверить отказоустойчивость системы, ее способность справляться с проблемными ситуациями в производственной среде. Он вводит в кластер Kubernetes ошибки, чтобы выявить проблемы в нем как можно раньше. Создателей PowerfulSeal вдохновил Netflix Chaos Monkey и она используется для повышения устойчивости Kubernete. Используя Seal, инженеры сознательно пытаются нарушить работу кластера, чтобы проверить, как система реагирует. Seal работает в трех режимах - автономный, интерактивный, и режим меток. В автономном режиме он выполняет сценарии, считывая предоставленный файл политики. В интерактивном режиме он рассказывает о компонентах кластера, которые вручную пытаются разорвать. В режиме меток целевые объекты в кластере, такие как модули, уничтожаются с помощью меток. 16. Popeye Popeye - это утилита для очистки кластеров Kubernetes. Он сканирует весь кластер и сообщает о проблемах, связанных с конфигурациями и ресурсами. Это помогает применять лучшие практики в кластере Kubernetes, чтобы избежать распространенных проблем. Эта утилита доступна для Windows, Linux и macOS. В настоящее время он работает только с узлами, модулями, пространствами имен, службами. С помощью Popeye можно легко идентифицировать мертвые и неиспользуемые ресурсы, несоответствия портов, правила RBAC, использование метрик и многое другое.
img
В сегодняшней статье рассмотрим сценарий с настройкой отказоустойчивости на маршрутизаторе Cisco с использованием двух интернет провайдеров. При случае аварии у вашего интернет оператора отказоустойчивость с использованием двух провайдеров является очень хорошей идеей, более того – иногда без этого не обойтись. Однако, в таком сценарии часто необходимо использовать протокол маршрутизации BGP, который довольно нелегок в настройке и предъявляет высокие требования к оборудованию. В большинстве случаев, вам необходимы две выделенных IPv4 подсети – но учтите, что покупка IPv4 блока является довольно дорогостоящей затеей. Однако, есть альтернативное и более бюджетное решение – если вам не нужна целая подсеть от провайдера, у вас может быть основной и запасной WAN каналы и использовать NAT для обоих линков с автоматическим фэйловером. Данный сценарий будет работать только для сетей, у которых есть исходящий трафик. Описание сценария и настройка В примере ниже мы продемонстрируем стандартную топологию – данное решение задачи будет работать во многих сценариях. Вы все еще можете использовать BGP соединение для каждого провайдера, который анонсирует дефолтный маршрут, однако, как правило, провайдеры делают это за отдельную плату. В данной топологии мы будем использовать два плавающих статических маршрутах. На топологии ниже у нас есть два WAN соединения (ISP1 – основной линк и ISP2 – запасной линк). Нам просто необходимо предоставить доступ в интернет для нашей внутренней подсети. Все настройки в данной статье были выполнены на маршрутизаторе Cisco 891-K9 с двумя WAN портами и IOS версии c880data-universalk9-mz.153-3.M2.bin Настройка маршрутизатора Сначала настраиваем интерфейсы: interface GigabitEthernet0 description Internet_ISP1_Main ip address 10.10.10.10 255.255.255.0 no ip proxy-arp ip nat outside //включаем NAT на первом интерфейсе interface FastEthernet8 description Internet_ISP2_Back-up ip address 100.100.100.100 255.255.255.0 no ip proxy-arp ip nat outside //включаем NAT на втором интерфейсе interface Vlan1 description Local_Area_Network ip address 192.168.1.1 255.255.255.0 ip nat inside //весь сгенерированный трафик будет NATирован Затем настраиваем ACL (лист контроля доступа) в соответствии с нашей внутренней подсетью: ip access-list extended NAT_LAN permit ip 192.168.1.0 0.0.0.255 any Переходим к настройке маршрутных карт, которые будут выбирать какой трафик НАТировать на каждом интерфейсе: route-map NAT_ISP1_Main permit 10 match ip address NAT_LAN //совпадение для настроенного прежде ACL с внутренней подсетью match interface GigabitEthernet0 //совпадение для первого WAN интерфейса ! route-map NAT_ISP2_Back-up permit 10 match ip address NAT_LAN //совпадение для настроенного прежде ACL с внутренней подсетью network match interface FastEthernet8 //совпадение для второго WAN интерфейса Настраиваем отслеживание и SLA для замены канала в случае аварии: ip sla 1 icmp-echo 8.8.8.8 source-interface GigabitEthernet0 //пингуем DNS Гугла используя первый интерфейс frequency 30 //пинги отправляются раз в 30 секунд ip sla schedule 1 life forever start-time now //SLA респондер включен track 1 ip sla 1 //“объект” для отслеживания создан с помощью IPSLA1 Добавляем маршруты по умолчанию: ip route 0.0.0.0 0.0.0.0 10.10.10.1 track 1 ip route 0.0.0.0 0.0.0.0 100.100.100.1 30 Пока объект track 1 «поднят», первый маршрут будет указан в таблице маршрутизации. Если данный объект «упадет», то маршрут будет заменен на второй маршрут по умолчанию с метрикой 30. Как заключительный шаг – включаем NAT: ip nat inside source route-map NAT_ISP1_Main interface GigabitEthernet0 overload ip nat inside source route-map NAT_ISP2_Back-up interface FastEthernet8 overload
img
В предыдущих лекциях обсуждалось правило кратчайшего пути и два алгоритма (или, возможно, системы) для поиска путей без петель через сеть. Существует широкий спектр таких систем—их слишком много, чтобы охватить их в отведенное время для изучения, - но для сетевых администраторв важно быть знакомыми хотя бы с некоторыми из этих систем. В этих лекциях сначала рассматривается алгоритм поиска кратчайшего пути Дейкстры, вектор пути и два различных алгоритма непересекающихся путей: Suurballe и Maximally Redundant Trees (MRTs). Наконец, в этих лекциях будет рассмотрена еще одна проблема, которую должны решить управляющие плоскости: обеспечение двусторонней связи через сеть. Алгоритм Дейкстры Shortest Path First. Алгоритм Дейкстры Shortest Path First (SPF), возможно, является наиболее широко известной и понятной системой для обнаружения Loop-Free путей в сети. Он используется двумя широко распространенными протоколами маршрутизации и во многих других повседневных системах, таких как программное обеспечение, предназначенное для поиска кратчайшего пути через дорожную сеть или для обнаружения соединений и паттернов соединений в социальных сетях. Алгоритм Дейкстры в псевдокоде использует две структуры данных. Первый - это предварительный список или TENT; этот список содержит набор узлов, рассматриваемых для включения в дерево кратчайшего пути (Shortest Path Tree). Второй - PATH; этот список содержит набор узлов (а следовательно, и каналы), которые находятся в дереве кратчайшего пути. 01 move "me" to the TENT 02 while TENT is not empty { 03 sort TENT 04 selected == first node on TENT 05 if selected is in PATH { 06 *do nothing* 07 } 08 else { 09 add selected to PATH 10 for each node connected to selected in TOPO 11 v = find node in TENT 12 if (!v) 13 move node to TENT 14 else if node.cost < v.cost 15 replace v with node on TENT 16 else 17 remove node from TOPO 18 } 19 } Как всегда, алгоритм менее сложен, чем кажется на первый взгляд; ключом является сортировка двух списков и порядок, в котором узлы обрабатываются вне списка TENT. Вот несколько примечаний к псевдокоду перед рассмотрением примера: Процесс начинается с копии базы данных топологии, называемой здесь TOPO; это будет яснее в примере, но это просто структура, содержащая исходные узлы, целевые узлы и стоимость связи между ними. TENT - это список узлов, которые можно условно считать кратчайшим путем к любому конкретному узлу. PATH - это дерево кратчайшего пути (SPT), структура, содержащая loop-free путь к каждому узлу и следующий переход от «меня» к этому узлу. Первым важным моментом в этом алгоритме является сохранение только узлов, уже каким-то образом связанных с узлом в списке PATH в TENT; это означает, что кратчайший путь в TENT - это следующий кратчайший путь в сети. Второй важный момент в этом алгоритме - это сравнение между любыми существующими узлами TENT, которые подключаются к одному и тому же узлу; это, в сочетании с сортировкой TENT и отделением TENT от PATH, выполняет правило кратчайшего пути. Имея в виду эти моменты, рисунки с 1 по 9 используются для иллюстрации работы алгоритма SPF Дейкстры. На каждой из следующих иллюстраций вместе с сопроводительным описанием показан один шаг алгоритма SPF в этой сети, начиная с рисунка 2. В точке, показанной на рисунке 2, A был перемещен из TOPO в TENT, а затем в PATH. Стоимость исходного узла всегда равна 0; эта линия включена для начала расчета SPF. Это представляет строки с 01 по 09 в псевдокоде, показанном ранее. На рисунке 3 показан второй этап расчета SPF. На рисунке 3 каждый узел, подключенный к A, был перемещен из TOPO в TENT; это строки с 10 по 17 в псевдокоде, показанном ранее. Когда этот шаг начался, в TENT была только A, поэтому в TENT нет существующих узлов, которые могли бы вызвать какие-либо сравнения метрик. Теперь TENT отсортирован, и выполнение продолжается со строки 03 в псевдокоде. Рисунок 4 демонстрирует это. На рисунке 4 один из двух путей с кратчайшей стоимостью - к B и F, каждый со стоимостью 1 - был выбран и перемещен в PATH (строки 05–09 в псевдокоде, показанном ранее). Когда B перемещается из TENT в PATH, любые узлы с началом B в TOPO перемещаются в TENT (строки 10-17 в псевдокоде). Обратите внимание, что C еще не был в TENT, прежде чем он был задействован посредством перехода B к PATH, поэтому сравнение показателей не выполняется. Стоимость для C - это сумма стоимости его предшественника в PATH (который равен B со стоимостью 1) и связи между двумя узлами; следовательно, C добавляется к TENT со стоимостью 2. TENT сортируется (строка 3 псевдокода), поэтому процесс готов к повторному запуску. На рисунке 5 показан следующий шаг в этом процессе. На рисунке 5 был выбран кратчайший путь к TENT, и F переместился от TENT к PATH. Между F и E существует связь (показанная на предыдущих иллюстрациях как [E, F]), но путь через F к E имеет ту же стоимость, что и путь [A, E], поэтому эта линия не добавляется в TENT. Скорее он остается неактивным, поскольку не рассматривается для включения в SPT, и удаляется из TOPO. На рисунке 6 показан следующий шаг в процессе, который переместит один из путей метрики 2 в PATH. Примечание. Большинство реальных реализаций поддерживают перенос нескольких путей с одинаковой стоимостью из TENT в PATH, поэтому они могут пересылать трафик по всем каналам с одинаковой метрикой. Это называется многолучевым распространением с равной стоимостью или ECMP. Для этого есть несколько различных способов, но они в этих лекциях не рассматриваются. На рисунке 6 путь к C через B со стоимостью 2 был перемещен в PATH, а путь к D через [A, B, C, D] перемещен в TENT. Однако при перемещении этого пути к TENT строка 11 в псевдокоде находит существующий путь к D в TENT, путь [A, D], со стоимостью 5. Метрика нового пути, 3, ниже чем метрика существующего пути, 5, поэтому путь [A, D] удаляется из TENT, когда добавляется путь [A, B, C, D] (строка 15 в псевдокоде). На рисунке 7 показан следующий шаг, на котором линия оставшейся стоимости 2 перемещается из TENT в PATH. На рисунке 7 путь к E стоимостью 2 был перемещен из TENT в PATH. G был перемещен в TENT стоимостью 4 (сумма [A, E] и [E, G]). Другой сосед E, F, исследуется, но он уже находится в PATH, поэтому не рассматривается для включения в TENT. На рисунке 8 показан следующий шаг, который перемещает D в PATH. На рисунке 8 D общей стоимостью 3 перемещен из TENT в PATH. Это учитывает соседа D, G, последнюю запись в TOPO, для TENT. Однако уже существует путь к G с общей стоимостью 4 через [A, E, G], поэтому строка 14 в псевдокоде завершается ошибкой, и путь [D, G] удаляется из TOPO. Это последний SPT. Основная трудность в понимании алгоритма Дейкстры заключается в том, что правило кратчайшего пути не выполняется в одном месте (или на одном маршрутизаторе), как это происходит с Bellman-Ford или Diffusing Update Algorithm (DUAL). Кратчайший путь (по-видимому) проверяется только при перемещении узлов из TOPO в TENT - но на самом деле сортировка самого TENT выполняет другую часть правила кратчайшего пути, и проверка по PATH для существующих узлов составляет еще один шаг в процесс, делающий процесс трехступенчатым: Если путь к узлу длиннее, чем любой из TENT, то путь к TENT является более коротким путем по всей сети. Путь, который поднялся к вершине TENT через сортировку, является самым коротким к этому узлу в сети. Если путь перемещается к PATH от вершины TENT, это кратчайший путь к этому узлу в сети, и любые другие записи в TOPO к этому узлу следует отбросить. При наличии базового алгоритма полезно рассмотреть некоторые оптимизации и расчет Loop-Free Alternates (LFAs) и remote Loop-Free Alternates (rLFAs). Частичный и инкрементный SPF Нет особой причины, по которой весь SPT должен перестраиваться каждый раз, когда происходит изменение топологии сети или информации о доступности. Рассмотрим рисунок 9 для объяснения. Предположим, G теряет связь с 2001: db8: 3e8: 100 :: / 64. Устройству A не требуется пересчитывать свой путь к любому из узлов сети. Доступный пункт назначения - это просто лист дерева, даже если это набор хостов, подключенных к одному проводу (например, Ethernet). Нет причин пересчитывать весь SPT, когда один лист (или любой набор листьев) отключается от сети. В этом случае только лист (IP-адрес Интернет-протокола или доступный пункт назначения) должен быть удален из сети (или, скорее, пункт назначения может быть удален из базы данных без каких-либо изменений в сети). Это частичный пересчет SPT. Предположим, что канал [C, E] не работает. Что делает А в этом случае? Опять же, топология C, B и D не изменилась, поэтому у A нет причин пересчитывать все дерево. В этом случае A может удалить все дерево за пределами E. Чтобы вычислить только измененную часть графа, выполните следующие действия: Удалите отказавший узел и все узлы, которые нужно достичь через точку E. Пересчитайте дерево только от предшественника C (в данном случае A), чтобы определить, есть ли альтернативные пути для достижения узлов, ранее доступных через E до того, как канал [C, E] не доступен. Это называется инкрементным SPF. Расчет LFA и rLFA. Bellman-Ford не вычисляет ни соседей ниже по потоку, ни LFA, и, похоже, не располагает необходимой для этого информацией. DUAL по умолчанию вычисляет нисходящих соседей и использует их во время конвергенции. А как насчет протоколов на основе Дейкстры (и, соответственно, аналогичных алгоритмов SPF)? На рисунке 10 показан простой механизм, который эти протоколы могут использовать для поиска LFA и соседних узлов ниже по потоку. Определение нисходящего соседа - это такое, при котором стоимость достижения соседом пункта назначения меньше, чем локальная стоимость достижения пункта назначения. С точки зрения А: A знает местную стоимость проезда к месту назначения на основе SPT, созданного с помощью SPF Дейкстры. A знает стоимость B и C, чтобы добраться до места назначения, вычитая стоимость каналов [A, B] и [A, C] из рассчитанной на местном уровне стоимости. Следовательно, A может сравнивать локальную стоимость со стоимостью от каждого соседа, чтобы определить, находится ли какой-либо сосед в нисходящем направлении по отношению к любому конкретному месту назначения. Определение LFA: Если затраты соседа для «меня» плюс затраты соседа на достижение пункта назначения ниже, чем местные затраты, соседом является LFA. Вернее, учитывая: NC - это стоимость соседа до пункта назначения. BC - это стоимость соседа для меня. LC - местная стоимость до места назначения. Если NC + BC меньше LC, то соседом является LFA. В этом случае A знает стоимость каналов [B, A] и [C, A] с точки зрения соседа (она будет содержаться в таблице топологии, хотя не используется при вычислении SPT с использованием алгоритма Дейкстры). Таким образом, LFA и нисходящие соседи требуют очень небольшой дополнительной работы для расчета, но как насчет удаленных LFA? Модель P/Q Space обеспечивает простейший способ для алгоритмов на основе Дейкстры вычисления соседних узлов и LFA. Рисунок 11 используется для иллюстрации изнутри P/Q Space. Определение пространства P - это набор узлов, доступных с одного конца защищенного соединения, а определение пространства Q - это набор узлов, достижимых без пересечения защищенного канала. Это должно предложить довольно простой способ вычисления этих двух пространств с помощью Дейкстры: Рассчитайте SPT с точки зрения устройства, подключенного к одному концу линии связи; удалить линию связи без пересчета SPT. Остальные узлы доступны с этого конца линии. На рисунке 11 E может: Вычислите пространство Q, удалив линию [E, D] из копии локального SPT и всех узлов, для достижения которых E использует D. Вычислите пространство P, вычислив SPT с точки зрения D (используя D в качестве корня дерева), удалив линию [D, E], а затем все узлы, для достижения которых D использует E. Найдите ближайший узел, достижимый как из E, так и из D, с удаленной линией [E, D]. SPF Дейкстры - это универсальный, широко используемый алгоритм для вычисления Shortest Path Trees через сеть.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59