Что такое избыточность lan
Программное обеспечение коммутаторов D-Link предоставляет набор программных сервисов, предназначенных для выполнения различных функций, обеспечивающих безопасность , отказоустойчивость сети, управление многоадресной рассылкой, качество обслуживания ( QoS ), а также развитые средства настройки и управления. Помимо этого, программное обеспечение коммутаторов взаимодействует с приложениями D-Link D-View v.6, представляющими собой прикладные программы сетевого управления. Эти управляющие программы поддерживаются всей линейкой управляемых коммутаторов D-Link.
Системное программное обеспечение располагается во Flash -памя-ти коммутатора, размер которой, в зависимости от модели, может быть до 32 Мбайт . Компания D-Link предоставляет возможность бесплатного обновления программного обеспечения коммутаторов по мере появления новых версий с обновленным функционалом.
Общие принципы сетевого дизайна
Грамотный сетевой проект основывается на многих принципах, базовыми из которых являются:
- изучение возможных точек отказа сети. Для того чтобы единичный отказ не мог изолировать какой-либо из сегментов сети, в ней может быть предусмотрена избыточность. Под избыточностью понимается резервирование жизненно важных компонентов сети и распределение нагрузки. Так, в случае отказа в сети может существовать альтернативный или резервный путь к любому ее сегменту. Распределение нагрузки используется в том случае, если к пункту назначения имеется два или более пути, которые могут использоваться в зависимости от загруженности сети. Требуемый уровень избыточности сети меняется в зависимости от ее конкретной реализации;
- определение типа трафика сети. Например, если в сети используются клиент-серверные приложения, то поток вырабатываемого ими трафика является критичным для эффективного распределения ресурсов, таких как количество клиентов, использующих определенный сервер, или количество клиентских рабочих станций в сегменте;
- анализ доступной полосы пропускания. Например, в сети не должно быть большого различия в доступной полосе пропускания между различными уровнями иерархической модели (описание иерархической модели сети находится в следующем разделе). Важно помнить, что иерархическая модель ссылается на концептуальные уровни, которые обеспечивают функциональность;
- создание сети на базе иерархической или модульной модели. Иерархия позволяет объединить через межсетевые устройства отдельные сегменты, которые будут функционировать как единая сеть. Фактическая граница между уровнями не обязательно должна проходить по физическому каналу связи — ею может быть и внутренняя магистраль определенного устройства.
Трехуровневая иерархическая модель сети
Иерархическая модель определяет подход к проектированию сетей и включает в себя три логических уровня ( рис. 1.20):
- уровень доступа (access layer);
- уровень распределения/ агрегации (distribution layer);
- уровень ядра (core layer).
Для каждого уровня определены свои функции. Три уровня не обязательно предполагают наличие трех различных устройств. Если провести аналогию с иерархической моделью OSI , то в ней отдельный протокол не всегда соответствует одному из семи уровней. Иногда протокол соответствует более чем одному уровню модели OSI , а иногда несколько протоколов реализованы в рамках одного уровня. Так и при построении иерархических сетей, на одном уровне может быть как несколько устройств, так и одно устройство, выполняющее все функции, определенные на двух соседних уровнях.
Уровень ядра находится на самом верху иерархии и отвечает за надежную и быструю передачу больших объемов данных. Трафик, передаваемый через ядро , является общим для большинства пользователей. Сами пользовательские данные обрабатываются на уровне распределения, который, при необходимости, пересылает запросы к ядру.
Для уровня ядра большое значение имеет его отказоустойчивость , поскольку сбой на этом уровне может привести к потере связности между уровнями распределения сети.
Уровень распределения, который иногда называют уровнем рабочих групп, является связующим звеном между уровнями доступа и ядра. В зависимости от способа реализации уровень распределения может выполнять следующие функции:
- обеспечение маршрутизации, качества обслуживания и безопасности сети;
- агрегирование каналов;
- переход от одной технологии к другой (например, от 100Base-TX к 1000Base-T).
Уровень доступа управляет доступом пользователей и рабочих групп к ресурсам объединенной сети. Основной задачей уровня доступа является создание точек входа/выхода пользователей в сеть . Уровень выполняет следующие функции:
Для проектирования и создания отказоустойчивой сети приходится использовать избыточную топологию коммутаторов. Однако при использовании такого дизайна могут возникнуть несколько основных проблем:
1)Широковещательный шторм. При возникновении петель и отсутствии механизма их удаления, коммутаторы начинают бесконечную лавинную широковещательную рассылку. Это приводит к отказу сети.
Предположим что компьютер PC 1 отправляет ARP -запрос (широковещательный кадр).
Этот кадр получает Switch 1 на интерфейсе fa 0/1, который затем его перенаправляет на порт fa 0/2. Таким образом Switch 2 получает этот кадр и по аналогии отправляет его через интерфейс fa 0/1 опять же на Switch 1. Образуется петля.
И т.к. копия исходного кадра также попадает на Switch 2 через fa 0/1, то получается что кадр движется по кругу в обоих направлениях.
2)Передача нескольких копий кадра. Когда адрес назначения получает один и тот же кадр (копии) несколько раз. Многие сетевые протоколы рассчитаны на получение только одной копии кадра и при получении нескольких копий начинают возникать ошибки в работе.
Таким образом Switch 2 получит копию кадра через fa 0/2 и повторит последовательность действий, которые произвел Switch 1.
3)Нестабильность таблицы MAC -адресов. Когда различные порты получают копию одного и того же кадра, возникает нестабильность содержимого MAC -таблицы ( mac address table ). Коммутатор начинает удалять из таблицы записи об одинаковых ресурсах, которые поступают с различных портов. Работа сети в этот момент может нарушаться.
Ситуация очень похожа на предыдущий случай. Только в данном случае копии пакета получает Switch 2. Когда приходит первая копия, то Switch 2 делает соответствующую запись в MAC -таблице (соответствие MAC -адреса PC 1 и порта fa 0/1).
Когда приходит вторая копия кадра, то старая запись должна быть удалена и добавлена новая (соответствие MAC -адреса PC 1 и порта fa 0/2)
Таким образом, будет происходить постоянное изменение таблицы MAC -адресов
В большинстве коммутаторов (в том числе cisco ) существуют механизмы предотвращения образования петель, такие как stp , rstp (их мы рассмотрим в следующих лекциях и лабораторных работах)
Готовностью ИТ-системы называется время, в течение которого все пользователи в сети могут согласованно обращаться ко всем без исключения имеющимся в ней приложениям и данным. ИТ-системы с высокой готовностью в состоянии реагировать на ошибки без остановки работы, из-за чего и обладают высокой степенью отказоустойчивости. Это достигается путем применения избыточных компонентов, которые при возникновении неисправности поддерживают выполнение всех функций и поэтому минимизируют время отказа. На практике различают два вида системных отказов: запланированные и незапланированные. Действия по наращиванию системы, замене неисправного, но имеющего аналог компонента, обновлению программного обеспечения намечаются заранее, а потому ведут к запланированным простоям. Стихийные бедствия, ошибки конфигурации или дефекты основной платы становятся причиной незапланированных отказов системы. В статье лишь намечаются отдельные шаги и освещаются важные детали, при помощи которых администратор сети сможет повысить время ее безаварийной работы. Первым шагом является целенаправленное организационное и техническое планирование. К тому же очень большое внимание следует уделить осмотру всей системы.
Структурированно описать высокую готовность можно с помощью несколько моделей. Одна из них — обеспечение готовности ИТ-систем за четыре этапа. На первом реализуются только элементарные функции, к примеру сохранность данных. На втором уже вводятся избыточные компоненты аппаратного обеспечения. Осуществляющие контроль активные инструменты управления постоянно выдают информацию о состоянии отдельных компонентов. Кроме того, имеющаяся точная системная документация ускоряет и упрощает администрирование и поиск ошибок. На третьем этапе применяются кластеры и системы массового хранения. Образование логических единиц позволяет частично или полностью ликвидировать одиночные точки отказа. Четвертый, и последний, этап предусматривает дублирование всего центра обработки данных.
ТЕХНИКА В ЗДАНИИ
Отказоустойчивость начинается со зданий и их инфраструктуры. Тщательное планирование инфраструктуры ИТ в соответствии с требованиями отраслевых стандартов и рекомендаций значительно повышает готовность всей системы. Наряду с техническими функциями планировщик обязан принимать во внимание аспекты пожаробезопасности и охраны здания. Проведение организационных мероприятий позволяет четко определить критерии доступа, а также ответственность за серверные и аппаратные. Кроме этого, необходимо разработать план поведения в аварийных ситуациях с описанием последовательности действий персонала, например, при пожаре.
Особую роль играет серверная комната как центральная точка ИТ-системы. Если к отказоустойчивости в ней предъявляются особенно высокие требования, то само собой напрашивается решение о полностью избыточном построении аппаратной. По возможности оба помещения должны быть разделены географически и ни в коем случае не находиться в одном здании.
Даже если серверная комната не выполнена полностью избыточной, ее следует рассматривать как отдельную охраняемую зону с конструктивными мерами предосторожности, позаботившись о наличии запираемых дверей, окон и механизмов контроля доступа.
ЭЛЕКТРОПИТАНИЕ
Аппаратная должна располагать независимыми электрическими вводами, поскольку энергоснабжение относится к наиболее чувствительным областям инфраструктуры ИТ. В зависимости от желаемой степени готовности в здании и аппаратной могут быть проложены избыточные линии питания. Если прокладка второй линии невозможна из-за отсутствия поблизости второй трансформаторной подстанции, то в этом случае следует установить агрегат аварийного питания. В случае запланированных отключений, например при монтажных работах на электростанции, практикуется аренда мобильного устройства аварийного питания.
- защита точки пользования ограничивается точечной защитой одного шкафа;
- централизованная защита предназначается прежде всего для небольших аппаратных;
- зональная защита для более крупных помещений делит всю площадь вычислительного центра на несколько областей.
Возможны также комбинации этих трех методов.
Обычно системы бесперебойного питания обладают аппаратным интерфейсом и программным обеспечением механизмов отключения и управления. При этом различают резервные системы и системы с двойным преобразованием. Первые включаются лишь при колебании или отключении тока при помощи инвертера и берут электропитание на себя. В остальное время работа оборудования поддерживается непосредственно источником питания. Система бесперебойного питания с двойным преобразованием, напротив, постоянно включена и обеспечивает «гладкое» напряжение.
Последние, необходимые для бесперебойной работы компоненты с точки зрения электропитания составляют блоки питания подключенных устройств, как, например, серверов или активного оборудования. В случае высокой степени готовности эти устройства обладают двумя блоками питания для подключения к двум независимым электрическим вводам. Соединение системы бесперебойного питания с серверами и прочими компонентами происходит через распределительные щиты питания (Power Distribution Unit, PDU) (см. Рисунок 1).
ПРОВОДКА
В отказоустойчивости сети проводка играет важную роль. При некачественной проводке высока вероятность некорректной передачи битов из-за отражения, затухания и перекрестных помех. Системы с низкой терпимостью к ошибкам могут отключиться, в то время как системы с высокой терпимостью к ошибкам продолжают функционировать, но уровень выявленных ошибок при этом существенно выше. Построение структурированной проводки должно планироваться и реализовываться на базе стандартов ISO/IEC 11801 и EN50173 и разделяться на области первичной, вторичной и третичной проводок. Первичная проводка между зданиями часто соответствует по своим функциям магистральной линии, при этом топология бывает кольцевой, звездообразной или ячеистой. Отказ работы центрального компонента (единичный отказ) в звездообразной топологии влечет за собой отключение всей первичной области. При кольцевой топологии отказоустойчивость значительно повышается, правда, в местах сопряжения и сращивания может возникать затухание или отражение. Очень высокой отказоустойчивостью обладают ячеистые сетевые структуры, поскольку позволяют создавать множество альтернативных путей.
Вторичная проводка между распределителями на разных этажах реализуется в форме «звезды» или «кольца» по принципу «точка-точка». Это делается для создания распределенной («кольцо») или вырожденной («звезда») магистрали сети. В этом случае можно посоветовать использовать волоконно-оптические линии, а также избыточно проложенные соединения при высоких требованиях к готовности системы.
Третичная проводка, выполненная в форме «звезды», соединяет узловые точки (распределители) на этажах с информационными розетками (для передачи данных).
Чем точнее и актуальнее будет документация, тем меньше вероятность допущения ошибок и быстрее обнаружится потенциальная неисправность.
СЕРВЕР
Серверный парк и непосредственно с ним соединенные компоненты, например библиотеки для резервного копирования или системы хранения данных, являются центром любой ИТ-системы. Наибольший приоритет имеют высокая готовность, избыточность, управляемость и дружественный интерфейс. Значительно уменьшить время отказов серверных компонентов помогут такие свойства хранения, как код коррекции ошибок (Error Correction Code, ECC), оперативный резервный режим памяти (Online Spare Memory Mode, OSMM), зеркальная память с «горячим» подключением (Hot Plug Mirrored Memory, HPMM), а также функциональность «горячей» замены. С помощью кода коррекции ошибок накопитель может выявлять одно- и многобитовые ошибки и исправлять некоторые из них. Сегодня система может не отключаться даже при отказе целой микросхемы. Зеркальная память с «горячим» подключением позволяет обойти все ошибки, выявленные кодом коррекции ошибок. Более того, можно извлечь платы памяти и заменить неисправные компоненты, не прекращая работу сервера. Готовность также заметно повышается, если сервер оснащен массивом RAID с «горячим» подключением, причем RAID в данном случае означает избыточный массив независимых стандартных модулей памяти с двухрядным расположением выводов (Dual In-line Memory Module, DIMM). Более того, практически все ведущие производители серверов применяют жесткие диски, платы расширения, вентиляторы и блоки питания с возможностью «горячей» замены, повышая тем самым готовность во время запланированных и незапланированных отключений. Контроллеры RAID для хранения данных на жестких дисках обеспечивают в соответствии с применяемым уровнем RAID гибко масштабируемую емкость хранения данных с высокой готовностью и устойчивостью к ошибкам.
Наряду с такими привычными для предприятия областями применения, как планирование корпоративных ресурсов (Enterprise Resource Planning, ERP) или управление взаимоотношениями с клиентами (Customer Relationship Management, CRM), кластерные решения играют очень важную роль в приложениях Web. И довольно часто без внимания остается тот факт, что используется только один брандмауэр, когда филиалы соединены с центральным компьютером через виртуальную частную сеть (Virtual Private Network, VPN). Поэтому он становится потенциальной точкой отказа всей системы. Кроме того, и другие применения, не связанные напрямую с деловыми процессами на предприятии, но играющие для него важную роль, например просмотр содержания или защита от вирусов, нуждаются в повышенной отказоустойчивости, которая может быть также реализована на основе кластерной технологии.
СИСТЕМНОЕ УПРАВЛЕНИЕ
Введение проактивного системного управления и проактивного технического обслуживания способствует значительному повышению отказоустойчивости всей инфраструктуры ИТ. Сегодняшние системы аппаратного и программного обеспечения постоянно нуждаются в обновлении, без чего невозможно не только обеспечить требуемую работоспособность и производительность, но и получить поддержку со стороны производителя. Цель проактивного управления состоит в опережающем выявлении и исправлении источников ошибок и пределов производительности. Когда соответствующая система управления контролирует определенные параметры системы через равномерные промежутки времени и постоянно вносит в нее некоторые системные обновления, например заплатки, количество непредвиденных отключений системы уменьшается, и общая готовность повышается.
В случае серверов можно постоянно наблюдать за общим статусом и нагрузкой важнейших компонентов, т. е. процессора, памяти, жестких дисков, вентиляторов и ленточных накопителей. Большую их часть несложно заменить до того, как появившаяся неисправность выведет компонент из строя. Таким образом, время незапланированных отказов уменьшается, а работы по восстановлению планируются на периоды, не являющиеся критическими для работы предприятия.
ПЛАН ДЕЙСТВИЯ В КРИТИЧЕСКОЙ СИТУАЦИИ
При отказоустойчивом построении сети администратор не должен допускать остановки вычислительного центра. Некоторые платформы содержат модели для соответствующих концепций управления. Система от компании Sun, например, разделяет функции работы ИТ-системы на десять областей управления (данные, программное обеспечение, сеть, безопасность, информационно-справочная служба и т. д.) (см. Рисунок 3). Руководитель отдела информационных технологий определяет для них процессы, выполнение которых безусловно необходимо для успешного осуществления предприятием своих функций.
Обязательной частью этой концепции является план действия в критической ситуации. Даже самые полные защитные механизмы не способны защитить от каждой технической проблемы или неосторожных действий, поэтому всегда остается вероятность частичных или полных отказов ИТ-системы. Восстановление работоспособности при определенных обстоятельствах может быть очень сложным процессом и потребовать больших затрат. Заранее продуманные действия обеспечивают, по возможности, наиболее быстрое и полное устранение неполадок. Фундаментом для концепции кризисного плана является тщательный анализ организационного устройства предприятия, его технической оснащенности и состояния ИТ-системы. На основе этих данных можно выявить все без исключения работающие в данный момент приложения, определить приемлемое время потенциального отказа и составить перечень мероприятий, которые должны проводиться во время его устранения. Очень полезное руководство для составления подобного плана представляет собой «Справочник основных приемов защиты ИТ-систем» Федерального ведомства безопасности информационной техники.
Главное преимущество на рынке устройств интернета вещей — стоимость. Поэтому приоритет отдается дешевым, но ненадежным компонентам. Ненадежные устройства ломаются, совершают ошибки, зависают и требуют обслуживания. Про ненадежность не принято говорить на конференциях, но как раз этому был посвящен доклад Станислава Елизарова (elstas) на InoThings++ — тому, как всё не работает.
Под катом обсудим методы компенсирования ненадежности оборудования, каналов связи и персонала с помощью ПО; проблемы отказоустойчивости и их решения; человеческий фактор; изоленту и носки как универсальное средство починки космических кораблей и передачу данных грузовиками.
О спикере: Станислав Елизаров занимается отделом сетевой инфраструктуры в компании «СТРИЖ», которая производит счетчики, датчики, базовые LTE-станции, а также собирает показания там, где любые другие системы связи просто не работают.
Ненадежность
Это цитата канадского философа Маршалла Маклюэна, которая точно описывает состояние техники. Отказывает всё: компьютеры зависают, смартфоны тормозят, лифты останавливаются между этажами, космические зонды сбиваются с курса, а люди ошибаются.
Первые ошибки
Тема надежности, особенно ее часть — отказоустойчивость, такая же большая, как и безопасность. Буква S в термине IoT отвечает за Security, а буква R отвечает за Reliability — надежность.
Если говорить про надежность и ошибки, то давайте вспомним Иоганна Гутенберга. Официально он первый печатник, а по версии Ильфа и Петрова — первый опечатник, потому что в своей Библии допустил много ошибок.
Технология Гутенберга прогрессировала, рынок книг рос, увеличивались объемы, а с ними и ошибки. Через 50 лет после первой отпечатанной книги, Габриэль Пьерри придумал эррату — список опечаток в конце книги. Это был хороший трюк, потому что перепечатывать большие партии неудобно и экономически невыгодно. Если читатель заметит опечатку, то просто откроет список ошибок и посмотрит на критические исправления. Лидером опечаток был Фома Аквинский и его «Сумма теологии» — 180 страниц ошибок в официальной эррате.
Современные эрраты выпускают производители железа. На картинке ниже официальная эррата самого популярного чипа CC1101, которая действует до сих пор. В списке ошибок чип иногда что-то не принимает, иногда передает что-то не то, а иногда не всегда срабатывает PLL. Это не то, чего ожидаешь от массового процессора, который выпускают уже десятилетиями.
Еще пример — микропроцессор MSP430, построенный на наборе команд. Микропроцессор примерно такой же, как PDP-11, на котором Керниган и Ритчи разрабатывали Unix. Это не эррата Фомы Аквинского, но 27 страниц ошибок производитель нам предлагает, многие из которых даже сам не знает, как решать.
Это именно то, что неочевидно в интернете вещей. Мы читаем datasheet дешёвого чипа и видим, что всё хорошо и всё работает, пока не открываем последние страницы со списком ошибок.
Человеческий фактор
С железом более-менее понятно, ошибки описаны и воспроизводимы, но самый больший источник ошибок в IoT-системах — человек.
13 января 2018 года всем жителям Гаваев на мобильные телефоны пришел alert о ракетной угрозе и о том, что нужно скрыться в бомбоубежище.
Непонятно, кто именно ошибся: оператор или человек, который проектировал интерфейс. Но если посмотреть на картинку, то ответ напрашивается сам собой. На что нажать, чтобы вызвать тестовое, а не боевое, оповещение о ракетной угрозе? Если вы не знаете ответ, то ошибетесь.
Человек — надежная система
Почему мы не видим этих ошибок и не считаем, что что-то не так? Потому что сам человек и исправляет все ошибки.
Если чувствуем, что компьютер не очень хорошо работает — мы его перезагружаем. Если видим, что мобильная связь пропала, то ищем место, где ловит. Если машина не работает, мы ее ремонтируем.
На фотографии ниже изображена человеческая смекалка, которой можно гордиться. Три человека болтались в «Аполлон-13» между Землей и Луной и смогли решить нетривиальную задачу — засунуть квадратный фильтр в круглое отверстие. Кроме квадратных фильтров, миссии не везло и в другом: взрыв кислородного баллона, нехватка воды, повреждение двигателя. Команда пыталась выжить с помощью носков, изоленты и упаковок от костюмов.
Человек, как говорили в NASA, — очень хорошая резервная система и многое исправляет. Решение проблем на космическом корабле с помощью изоленты и носков можно назвать почти надежным: оно выполнено в короткие сроки, гарантированно сработает и люди вернутся живыми, но в продакшн это пускать нельзя.
Проблема отказоустойчивости
Проблема отказоустойчивости для интернета вещей очень важна, потому что количество устройств растет. В отчете консалтинговой компании McKinsey, в 2013 году в мире работало 10 млрд. устройств IoT, а к 2020 году это число вырастет до 30 млрд.
Мы просто физически не сможем чинить все эти счетчики — просто не хватит времени. Системы, которые были рассчитаны на обслуживание людьми, не будут помогать нам, вместо этого мы будем заниматься их починкой.
В 2018 году в СМИ и научных журналах промелькнула новость, что китайцы покрыли 100 000 датчиков 2 канала общей длиной 1400 км. Всего 130 видов датчиков: воды, ветра, камеры. С точки зрения операционных расходов, система просто катастрофическая: какое количество людей нужно, чтобы протирать камеры или убирать коряги? Весь штат будет занят только чисткой и обслуживанием системы — она очень не автономна.
Поэтому я хочу поговорить немного об отказоустойчивости, об обеспечении работы системы. На простых примерах я расскажу про трюки, которые помогут в короткие сроки получить гарантированно рабочее решение, чтобы презентовать инвесторам продукт, а дальше думать, как инкрементально наращивать надежность. Эти трюки достаточно универсальные и всегда помогут. Единственное, что их не очень-то рекомендуется использовать в продакшене, потому что они такие, как тот фильтр.
Представим: настанет тот день, когда к вам придут инвесторы за отчетом о проекте, и вам требуется показать работающий продукт. С чего начать, чтобы не облажаться?
Упрощение
На картинке ниже два не связанных друг с другом прибора. Слева — игрушка, которая называется «сортер»: вставляем круглое в круглое, а квадратное в квадратное. Годовалый ребенок научится пользоваться игрушкой за 2-3 попытки, потому что с «прибором» невозможно ошибиться — треугольник в квадрат не залезет.
Эту же идею предложила компания Harris, которая выпускает военные радиостанции. На картинке справа — Harris Falcon 3, чудо инженерной мысли. Посмотрите на интерфейсы, они все различные. В состоянии боя, в условиях, когда нет времени подумать, оператор физически не сможет сделать что-то не то. В разъем от антенны не войдет кабель питания, и простым перебором радист подключит все системы, даже не включая мозг. Это простой и работающий способ, чтобы не допустить ошибок и снизить их вероятность. Вы скажете:
— А если у нас завтра презентация. Нам что, все интерфейсы перепаивать? Мы там всё сделали одинаково: 4 usb-порта, 5 ethernet-портов, мы точно ошибемся.
Не вопрос, упрощение здесь тоже работает — всё закрыть. Если у вас 4 usb-порта и один их них гарантированно работает — оставьте, а все остальные закройте. Например, изолентой — почувствуйте себя астронавтом.
Упрощение — это не только создание интерфейса, в котором невозможны ошибки, но и удаление всего лишнего. С этого начинается надежность.
Мы создали простое устройство — прототип, готовый к показу. Что дальше? Дальше подумаем об избыточности.
Избыточность
Пример избыточности — сеть «СТРИЖ». Большинство устройств в сети передаются без подтверждения: устройство излучает сигнал, и базовая станция его принимает.
Еще один способ демонстрации принципа избыточности — Watchdog Timer. Это физическое устройство, которое встраивается большинством производителей процессоров. Если Watchdog Timer не принял сигнал от компьютера спустя определенный интервал времени, то устройство перезагружает компьютер.
При использовании WT повышается не надежность, а доступность. Компьютер детектирует проблему, принимает управляющие действия и перезагружает компьютер. Это очень любит NASA и знает множество разных способов использования Watchdog Timer.
Ниже пример многоступенчатого Watchdog Timer: при наступлении определенных событий он посылает NMI — аппаратное прерывание, которое будет обязательным в работе над процессором. Когда наступает некоторое событие, Watchdog сообщает компьютеру: «Попробуй перезагрузиться сам, иначе отключим питание». Если первый таймер не сработал, то будет работать второй.
Избыточность хорошо работает в рамках операционной системы. Наша базовая станция примерно так и устроена. Она состоит из различных и независимых модулей. Автономность модулей предотвращает попадание ошибки из одного модуля в другой — создается «бассейн» с ошибками, который мы блокируем. Выше по иерархии — набор супервайзеров: скрипты, которые мониторят ситуацию по определенным параметрам. Например, что процесс есть в операционной системе, он не Зомби и не течет по памяти. Корневой элемент — планировщик, например, cron.
Иерархическая структура создает хорошие параметры по доступности системы: если модуль падает, супервайзер это видит и перезагружает, есть некоторая избыточность по модулям, некоторые модули выполняют функцию других.
Переход в другую систему отсчета
Мой самый любимый и популярный среди математиков метод. Если известно, при каких условиях работает оборудование, то в этих условиях и нужно проводить пилот. Покажу на примерах.
Пример № 1. Мы создали устройство, которое хорошо работает при комнатной температуре, а нам сообщают:
— Проект демонстрируем на Дальнем Севере. Сейчас там −40, но сделайте так, чтобы все работало.
Мы бежим в интернет и ищем решение:
— Нам нужны термостабильные кварцы и флешки, которые не откажут при −40.
Время идет, ресурсов всё меньше, а паники — больше. Мы думаем, что проект провален, но нас спасёт переход в систему отсчета, в которой работает базовая станция. Поместим устройство в ящик, в котором находятся подогреватель и термореле. Они достаточно стабильные ребята и работают практически всегда. Когда снаружи холодно — ящик подогревается, и устройство работает в нормальных условиях — мы перешли в систему отсчета, в которой знаем и используем решение.
Пример № 2. Переход в движущиеся системы отсчета. Представим, что собираем данные контейнеров с поезда. Первое стандартное решение — использовать gsm-модемы. Этот способ не подходит: для быстро перемещающихся объектов следует использовать LTE или 5G устройства, которые хорошо справляются с доплером, а это дорого. Если поезд двигается по России, то когда он прибудет на ж/д станцию, все модемы подключатся к станции и она просто упадет из-за перегрузки сети.
Решение: переход в неподвижную систему отсчета. Вспомним про относительность движения: поместим базовую станцию внутри поезда и относительно движущегося состава она неподвижна. Станция будет собирать информацию со всех датчиков и передавать дальше с помощью шлюза, спутника или LTE-модема.
Этот подход повышает надежность, помогает решать невозможные задачи и организовать delay-tolerant networking — сеть, устойчивую к разрывам. Подход почему-то не любят в России, но активно продвигает подразделение Disney Research той же корпорации. У них не интернет вещей, а интернет игрушек — Internet of Toys. В компании беспокоятся, что африканские дети не смотрят Диснеевские мультики. Проводить сети передачи данных, устанавливать вышки, тянуть оптоволокно в Африке дорого, и всё равно всё украдут, поэтому они пошли другим путём и использовали идеи Ричарда Хэмминга:
Передача на расстоянии — то же самое, что передача во времени, то есть хранение. Если вы не можете передать — сохраните информацию и перевезите её к приемнику.
В Disney так и сделали: оснастили автобусные станции и автобусы системой из самых дешевых Wi-Fi роутеров и набора жестких дисков. Автобус подъезжает к станции, быстро закачивает на диски набор фильмов Disney по Wi-Fi и едет дальше. Приезжает в одну деревню, в другую, и в каждой выгружает фильмы — африканские дети довольны. Это, так называемая Мул-Нетворкс — дешевые мулы, которые передвигаются медленно, плохо справляются с доплером, но доставляют информацию во все точки.
Подобные разработки в Disney существуют и для передачи email — письмо приедет к вам на автобусе. Очень забавная технология, но ее любит, например, компания Amazon.
У Amazon есть сервис для перевозки эксабайт данных — одного миллиона терабайт. Если у вас большой дата-центр и вы думаете перемещаться на Amazon, потому что все уже там, то в Америке они могут подогнать к вам такой грузовик и перевезти ваши данные. Если вам не важны задержки, то это хороший способ: скорость передачи данных порядка десятков или сотен Гбит/с. Кроме грузовиков, Amazon может прислать к вам сумку с жесткими дисками — snowball.
Мы поняли, что надежность важна, потому что отказывают и люди, и техника. О надежности нужно думать так же, как о безопасности. Для проведения пилотных презентаций включайте Watchdog, добавляйте избыточность и упрощайте, чтобы невозможно было ошибиться. Думайте о том, как перейти в условия, при которых система гарантированно сработает. А теперь перейдем к последнему методу, который отличается от остальных, и технари часто его игнорируют.
Красота
Выводы
Будущее интернета вещей — ненадежность: IoT нацелен на массовые рынки, а для масс-маркета решающий фактор — это цена. Значит интернет вещей будет состоять из множества дешевых и ненадежных устройств. С ростом числа устройств будет расти и число отказов. У нас просто не хватит рук, чтобы исправлять все ошибки. Поэтому единственный путь — устройства должны самостоятельно бороться с последствиями отказов. Это автономные системы, которые должны учиться чинить себя сами.
Я бы предложил вам заняться темой надежности и научиться классно показывать пилоты, используя три способа: упрощать всё, что можно, добавлять избыточность и создавать условия, при которых пилот гарантированно сработает. Не забывайте, что все мы люди и руководствуемся не логикой, а чувствами, поэтому создавайте красивые проекты.
Книг или набора статей по надежности нет. Чтобы углубиться в тему, начните со статьи о работоспособности, надежности, безопасности, а дальше изучайте опыт лаборатории реактивного движения NASA. Они создали Voyager и Curiosity и знают про надёжность всё. Вдохновляйтесь великими.
Читайте также: