Компания Banyan Virtual Network System (VINES) реализовала систему распределенной сети, базирующуюся на семействе патентованных протоколов, разработанных на основе протоколов Xerox Network Systems (XNS) компании XEROX (смотри главу 22 "XNS"). Среда распределенной системы обеспечивает прозрачный для пользователя обмен информации между клиентами (компьютерами пользователя) и служебными устройствами (компьютерами специального назначения, которые обеспечивают услуги, такие, как файловое и принтерное обслуживание). Наряду с NetWare компании Novell, LAN Server компании IBM и LAN Manager компании Microsoft, VINES является одной из самых популярных сред распределенной системы для сетей, базирующихся на микрокомпьютерах.
Комплект протоколов VINES представлен на Рис. 21-1.
Два низших уровня комплекта протоколов VINES реализованы с помощью различных общеизвестных механизмов доступа к носителю, включая Управление информационным каналом высшего уровня (HDLC) (смотри Главу 12 "SDLC и его производные"), Х.25 (смотри Главу 13 "Х.25"), Ethernet (смотри Главу 5 "Ethernet/IEEE 802.3") и Тоken Ring (смотри Главу 6 "Token Ring/IEEE 802.5").
Для выполнения функций Уровня 3 (в том числе маршрутизации в об'единенной сети) VINES использует Протокол межсетевого обмена VINES (VINES Internetwork Protocol - VIP). VINES также обеспечивает собственный Протокол разрешения адреса (ARP), собственную версию Протокола информации маршрутизации (Routing Information Protocol - RIP), которая называется Протоколом корректировки маршрутизации (Routing Update Protocol - RTP) и Протокол управления Internet (ICP), который обеспечивает обработку исключительных состояний и специальной информации о затратах маршрутизации. Пакеты ICP, RTP и ARP формируются в заголовке VIP.
Протокол межсетевого обмена VINES (VIP)
Адреса сетевого уровня VINES являются 48-битовыми об'ектами,
подразделенными на сетевую (32 бита) и подсетевую (16 битов) части.
Сетевой номер можно описать как номер какого-нибудь служебного
устройства, т.к. он получается непосредственно из ключа (key)
служебного устройства (аппаратного модуля, который обозначает
уникальный номер и программные опции для данного служебного
устройства). Подсетевая часть адреса VINES лучше всего описывается
как номер хоста, т.к. он используется для
обозначения хоста в сетех VINES. Рис. 21-2
иллюстрирует формат адреса VINES.
Сетевой номер обозначает логическую сеть VINES, которая представлена в виде двухуровневого дерева, корень которого находится в узле обслуживания (service node). Узлы обслуживания, которыми обычно являются служебные устройства, обеспечивают услуги резрешения адреса и услуги маршрутизации клиентам (client), которые являются листьями этого дерева. Узел обслуживания назначает адреса VIP клиентам.
Когда какой-нибудь клиент включает питание, он направляет широковещательный запрос служебным устройствам. Все служебные устройства, которые получают этот запрос, посылают ответ. Клиент выбирает первый ответ и запрашивает у данного служебного устройства адрес подсети (хоста). Служебное устройство отвечает адресом, состоящим из его собственного сетевого адреса (полученного из его ключа), об'единенного с адресом подсети (хоста), который он выбрал сам. Адреса подсети клиента обычно назначаются последовательно, начиная с 8001H. Адреса подсети служебного устройства всегда 1. Процесс выбора адреса VINES показан на Рис. 21-3.
Динамичное назначение адреса не является уникальным явлением в индустрии сетей (AppleTalk также использует этот процесс); однако этот процесс определенно не является таким обычным процессом, как статическое назначение адреса. Т.к. адреса выбираются исключительно каким-нибудь одним конкретным служебным устройством (чей адрес является уникальным вследствие уникальности аппаратного ключа), вероятность дублирования адреса (что является потенциально опасной проблемой для сети Internet Protocol (IP) и других сетей) очень мала.
В схеме сети VINES все служебные устройства с несколькими интерфейсами в основном являются роутерами. Клиенты всегда выбирают свое собственное служебное устройство в качестве роутера для первой пересылки, даже если другое служебное устройство, подключенное к этому же кабелю, обеспечивает лучший маршрут к конечному пункту назначения. Клиенты могут узнать о других роутерах, получая переадресованные сообщения от своего служебного устройства. Т.К. клиенты полагаются на свои служебные устройства при первой пересылке маршрутизации, служебные устройства VINES поддерживают маршрутные таблицы, которые помогают им находить отдаленные узлы.
Маршрутные таблицы VINES состоят из пар "хост/затраты", гдe хост соответствует сетевому узлу, до которого можно дойти, а затраты - временной задержке в миллисекундах, необходимой для достижения этого узла. RTP помогает служебным устройствам VINES находить соседних клиентов, служебные устройства и роутеры.
Все клиенты периодически об'являют как о своих адресах сетевого уровня, так и о адресах МАС-уровня с помощью пакета, эквивалентого пакету "hello" (приветственное сообщение). Пакеты "hello" означают, что данный клиент все еще работает и сеть готова. Сами служебные устройства периодически отправляют в другие служебные устройства маршрутные корректировки. Маршрутные корректировки извещают другие роутеры об изменениях адресов узлов и топологии сети.
Когда какое-нибудь служебное устройство VINES принимает пакет, оно проверяет его, чтобы узнать, для чего он предназначается - для другого служебного устройства или для широкого вещания. Если пунктом назначения является данное служебное устройство, то это служебное устройство соответствующим образом обрабатывает этот запрос. Если пунктом назначения является другое служебное устройство, то данное служебное устройство либо непосредственно продвигает этот пакет (если это служебное устройство является его соседом), либо направляет его в служебное устройство/роутер, которые являются следующими в очереди. Если данный пакет является широковещательным, то данное служебное устройство проверяет его, чтобы узнать, пришел ли этот пакет с маршрута с наименьшими затратами. Если это не так, то пакет отвергается. Если же это так, то пакет продвигается на всех интерфейсах, за исключением того, на котором этот пакет был принят. Такой метод помогает уменьшить число широковещательных возмущений, которые являются обычной проблемой в других сетевых окружениях. Aлгоритм маршрутизации VINES представлен на Рис. 21-4.
Формат пакета VIP представлен на Рис. 21-5.
Пакет VIP начинается с поля контрольной суммы (checksum), используемой для обнаружения искажений в пакете.
За полем контрольной суммы идет поле длины пакета (packet length), которое обозначает длину всего пакета VIP.
Следующим полем является поле управления транспортировкой (transport control), которое состоит из нескольких подполей. Если пакет является широковещательным, то предусматривается два подполя: подполе класса (class) (с 1 по 3 биты) и подполе числа пересылок (hop-count) (с 4 по 7 биты). Если пакет не является широковещательным пакетом, то предусматривается 4 подполя: подполе ошибки (error), подполе показателя (metric), подполе переадресации (redirect), и подполе числа пересылок (hop count). Подполе класса определяет тип узла, который должен принимать широковещательное сообщение. С этой целью узлы разделяются на несколько различных категорий, зависящих от типа узла и типа канала, к которому принадлежит узел. Определяя тип узлов, которые должны принимать широковещательные сообщения, подполе класса уменьшает вероятность срывов в работе, вызываемых широковещательными сообщениями. Подполе числа пересылок представляет собой число пересылок (число пересеченных роутеров), через которые прошел пакет. Подполе ошибок определяет, надо ли протоколу ICP отправлять пакет уведомления об исключительной ситуации в источник пакета, если пакет окажется немаршрутизируемым. Подполе показателя устанавливается в 1 транспортным об'ектом, когда ему необходимо узнать затраты маршрутизации при перемещения пакетов между каким-нибудь узлом обслуживания и одним из соседей. Подполе переадресации определяет, должен ли роутер генерировать сигнал переадресации (при соответствующих обстоятельствах).
Далее идет поле типа протокола (protocol type), указывающее на протокол сетевого или транспортного уровня, для которого предназначен пакет показателя или пакет уведомления об исключении.
За полем типа протокола следуют адресные поля VIP. За полями номера сети назначения (destination network number) и номера подсети назначения (destination subnetwork number) идут поля номера сети источника (sourсe network number) и номера подсети источника (source subnetwork number).
Протокол корректировки маршрутизации (RTR)
RTR распределяет информацию о топологии сети. Пакеты корректировки
маршрутизации периодически пересылаются широкой рассылкой как клиентом,
так и узлами обслуживания. Эти пакеты информируют соседей о
существовании какого-нибудь узла, а также указывают, является ли этот
узел клиентом или узлом обслуживания. В каждый пакет корректировки
маршрутизации узла обслуживания также включается перечень всех
известных сетей и коэффициенты затрат, связанные с достижением этих
сетей.
Поддерживаются две маршрутные таблицы: таблица всех известных сетей и таблица соседей. Для узлов обслуживания таблица всех известных сетей содержит запись данных о каждой известной сети, за исключением собственной сети узла обслуживания. Каждая запись содержит номер сети, показатель маршрутизации и указатель на запись данных следующей пересылки на пути к данной сети в таблице соседей. Таблица соседей содержит запись данных каждого узла обслуживания соседа и узла клиента. Записи включают в себя номер сети, номер подсети, протокол доступа к носителю (например, Ethernent), который использовался для достижения этого узла, адрес локальной сети (если средой, соединяющей с соседом, является локальная сеть) и показатель соседа.
RTR определяет 4 типа пакетов:
Пакеты RTR имеют 4-байтовый заголовок, состоящий из однобайтового поля типа операций (operation type), однобайтового поля типа узла (node type), однобайтового поля типа контроллера (controller type) и однобайтового поля типа машины (machine type). Поле типа операций указывает на тип пакета. Поле типа узла указывает, пришел пакет из узла обслуживания или из необслуживающего узла. Поле типа контроллера указывает, содержит ли контроллер узла, передающего пакет RTR, многобуферный контроллер. Это поле используется для облегчения регулирования информационного потока между сетевыми узлами. И наконец, поле типа машины указывает, является ли процессор отправителя RTR быстодействующим или нет. Как и поле типа контроллера, поле типа машины также используется для регулирования скорости передачи.
Протокол разрешения адреса (ARP)
Об'екты протокола ARP классифицируются либо как клиенты разрешения
адреса (address resolution clients), либо как услуги разрешения адреса
(address resolution services). Клиенты разрешения адреса обычно
реализуются в узлах клиентов, в то время как услуги разрешения адреса
обычно обеспечиваются узлами обслуживания.
Пакеты ARP имеют 8-байтовый заголовок, состоящий из 2-байтового типа пакета (packet type), 4-байтового номера сети (network number) и 2-байтового номера подсети (subnet number). Имеется 4 типа пакетов: запрос-заявка (query request), который является запросом какой-либо услуги ARP; ответ об услуге (service response), который является ответом на запрос-заявку, запрос о присваивании адреса (assignment request), который отправляется какой-нибудь услуге ARP для запроса адреса об'единенной сети VINES, и ответ о присваивании адреса (assignment response), который отправляется данной услугой ARP в качестве ответа на запрос о присваивании адреса. Поля номера сети и номера подсети имеют значение только в пакете ответа о присваивании адреса.
Когда какой-нибудь клиент приступает к работе, клиенты и услуги ARP реализуют следующий алгоритм. Сначала данный клиент отправляет широкой рассылкой пакеты запросов-заявок. Затем каждая услуга, которая является соседом данного клиента, отвечает пакетом ответа об услуге. Далее данный клиент выдает пакет запроса о присваивании адреса в первую услугу, которая ответила на его пакет запроса-заявки. Услуга отвечает пакетом ответа о присваивании адреса, содержащем присвоенный адрес об'единенной сети.
Протокол управления объединеной сетью (ICP)
ICP определяет пакеты уведомления об исключительных ситуациях
(exception notification) и уведомления о показателе (metric
notification). Пакеты уведомления об исключительных ситуациях
обеспечивают информацию об исключительных ситуациях сетевого уровня;
пакеты уведомления о показателе содержат информацию о последней
передаче, которая была использована для достижения узла клиента.
Уведомления об исключительной ситуации отправляются в том случае, когда какой-нибудь пакет VIP не может быть соответствующим образом маршрутизирован, и устанавливается подполе ошибки в поле управления транспортировкой заголовка VIP. Эти пакеты также содержат поле, идентифицирующее конкретную исключительную ситуацию по коду ошибки, соответствующему этой ситуации.
Об'екты ICP в узлах обслуживания генерируют сообщения уведомления о показателе в том случае, когда устанавливается подполе показателя в поле управления транспортировкой заголовка VIP, и адрес пункта назначения в пакете узла обслуживания определяет одного из соседей этого узла обслуживания.
VINES обеспечивает три услуги транспортного уровня:
Являясь распределенной сетью, VINES использует модель вызова процедуры обращений к отдаленной сети (remote procedure call - RPC) для связи между клиентами и служебными устройствами. RCP является основой сред распределенных услуг. Протокол NetRPC (Уровни 5 и 6) обеспечивает язык программирования высшего уровня, который позволяет осуществлять доступ к отдаленным услугам способом, прозрачным как для пользователя, так и для прикладной программы.
На Уровне 7 VINES обеспечивает протоколы файловых услуг и услуг принтера, а также протокол услуг "StreetTalk name/directory". StreetTalk, один из протоколов с торговым знаком компании VINES, обеспечивает службу постоянных имен в глобальном масштабе для всей об'единенной сети.
VINES также обеспечивает среду разработки интегрированных применений при наличии нескольких операционных систем, включая DOS и UNIX. Taкая среда разработки позволяет третьей участвующей стороне осуществлять разработку как клиентов, так и услуг, действующих в среде VINES.