Устойчивость сетей к ошибкам – обнаружение ошибок и реконфигурация сетей
Обнаружение ошибок сетевой аппаратуры достаточно сложно. Для обнаружение ошибки связи может быть использован протокол "рукопожатия" (handshake) – обмена сообщениями о каждом выполненном действии (посланном и принятом сообщении). Предположим, что система A и система B установили связь. Через фиксированные интервалы времени системы должны обмениваться сообщениями типа "я в порядке" (I-am-up), указывающими, что они нормально функционируют.
Если система A не получает сообщения через фиксированный интервал, то, по-видимому, либо другая система не работает, либо данное сообщение потеряно.
Система A теперь посылает сообщение вида: "Вы в порядке?" (are-you-up?) системе B.
Если система A не получает ответа, она может повторить сообщение или попробовать альтернативный маршрут к системе B
На практике используется следующий метод обнаружения, работает ли хост с именем hostname, - команда ping:
ping hostname (или: ping A.B.C.D с указанием IP-адреса хоста)
При выполнении этой команды происходит пробный обмен сообщениями фиксированной длины с заданным хостом, трассировка отправки и получения которых выдается на консоль, после чего выдается стандартное сообщение "Host hostname alive" (хост hostname жив). Если этих сообщений нет, видимо, связь с хостом по каким-то причинам потеряна (он перезагружается, либо нарушена связь на физическом уровне, либо произошло отключение электропитания и т.д.).
Если система A не получает обязательного ответа от системы B, она заключает, что имеет место какая-либо ошибка.
Типы ошибок:
Система B не работает
Непосредственная связь между A и B не работает
Альтернативная связь между A и B не работает
Сообщение потеряно.
Однако система A не может точно определить, почему произошла ошибка.
Реконфигурация сети. Когда система A определяет, что произошла ошибка, она должна реконфигурировать систему:
Если связь между A и B отказала, эта информация должна быть доведена до любой машины в сети.
Если имеет место отказ машины, то любая другая машина должна быть также нотифицирована о том, что сервисы, обеспечиваемые отказавшей машиной, более не доступны.
Когда связь или машина становятся доступны снова, данная информация должна также быть сообщена всем машинам в сети.
На практике при перезапуске какого-либо сервера в локальной сети имеется возможность послать всем пользователям сети предупреждение о том, что через минуту произойдет перезагрузка сервера, и они должны срочно сохранить свои данные.
Проектирование сетей
При проектировании сетей должен быть учтен целый ряд требований:
Прозрачность (transparency) – распределенная система должна быть представлена пользователю как обычная централизованная система.
Устойчивость к ошибкам (fault tolerance) – распределенная система должна продолжать функционировать в случае ошибок.
Масштабируемость (scalability) – по мере увеличения числа запросов, система должна легко воспринимать добавление новых ресурсов с целью удовлетворения новых запросов.
Для предоставления сетевых вычислительных услуг используются кластеры – совокупности полуавтономных машин, с точки зрения пользователя функционирующих как одна система.
Функционирование Ethernet-сетей
Передача сетевых пакетов между машинами в сетях Ethernet, наиболее распространенных с 1970-х гг. по настоящее время, происходит следующим образом. Каждая машина имеет уникальный IP-адрес и соответствующий Ethernet- (MAC-) адрес. Для коммуникации требуются оба адреса. Для поиска IP-адресов используется Domain Name Service (DNS). Протокол Address Resolution Protocol (ARP) используется для отображения MAC-адресов в IP-адреса.
Если машины находятся в одной и той же локальной сети, то может использоваться ARP. Если машины в разных локальных сетях, то машина-отправитель посылает пакет маршрутизатору (router), который маршрутизирует данный пакет до принимающей сети.
Структура сетевого пакета в Ethernet-сети изображена на рис. 23.5.
Рис. 23.5. Структура сетевого пакета в сетях Ethernet.
Как видно из схемы, пакет начинается со стандартной последовательности байтов. Он содержит Ethernet-адреса получателя и источника, длину сообщения, само сообщение (пересылаемые данные) и контрольную сумму. Структура пакета достаточно проста и особых комментариев не требует.