BanyanVINES
Компания Banyan Virtual Network System (VINES) реализовала систему распределенной сети, базирующуюся на семействе патентованных
Протоколов, разработанных на основе протоколов Xerox Network Systems (XNS) компании XEROX. Среда распределенной системы обеспечивает прозрачный для пользователя обмен информации между клиентами (компьютерами пользователя) и служебными устройствами (компьютерами специального назначения, которые обеспечивают такие, как файловое и принтерное обслуживание). Наряду с NetWare компании Novell, LAN Server компании IBM и LAN Manager компании Microsoft, VINES является одной из самых популярных сред распределенной системы для сетей, базирующихся на микрокомпьютерах.
Два низших уровня комплекта протоколов VINES реализованы с помощью различных общеизвестных механизмов доступа к носителю, включая Управление информационным каналом уровня
(HDLC), X.25, Ethernet и Token Ring.
Для выполнения функций Уровня 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 бита) и битов) части. Се
Тевой номер можно описать как номер какого-нибудь служебного устройства, так как он получается непосредственно из ключа (key) служебного устройства (аппаратного модуля, который обозначает уникальный номер и программные опции для данного служебного устройства). Под сетевая часть адреса VINES лучше всего описывается как номер хоста, так как он используется для обозначения хоста в сетях VINES.
Сетевой номер обозначает логическую сеть VINES, которая представлена в виде двухуровневого дерева, корень которого находится в узле обслуживания (service node). Узлы обслуживания, которыми обычно являются служебные устройства, обеспечивают услуги разрешения адреса и услуги маршрутизации клиентам (client), которые являются листьями этого дерева. Узел обслуживания назначает адреса VIP клиентам.
Когда какой-нибудь клиент включает питание, он направляет широковещательный запрос служебным устройствам. Все служебные устройства, которые получают этот запрос, посылают ответ. Клиент выбирает первый ответ и запрашивает у данного служебного устройства адрес подсети (хоста). Служебное устройство отвечает адресом, состоящим из его собственного сетевого адреса (полученного из его ключа), объединенного с адресом подсети (хоста), который он выбрал сам. Адреса подсети клиента обычно назначаются последовательно, начиная с 8001Н, Адреса подсети служебного устройства всегда 1.
Динамичное назначение адреса не является уникальным явлением в индустрии сетей (AppleTalkтакже использует этот процесс); однако этот процесс определенно не является таким обычным процессом, как статическое назначение адреса. Так как адреса выбираются исключительно каким-нибудь одним конкретным служебным устройством (чей адрес является уникальным вследствие уникальности аппаратного ключа), вероятность дублирования адреса (что является потенциально опасной проблемой для сети Internet Protocol (IP) и других сетей) очень мала.
В схеме сети VINES все служебные устройства с несколькими интерфейсами в основном являются роутерами. Клиенты всегда выбирают свое собственное служебное устройство в качестве роутера для первой пересылки, даже если другое служебное устройство, подключенное к этому же кабелю, обеспечивает лучший маршрут к конечному пункту назначения. Клиенты могут узнать о других роутерах, получая переадресованные сообщения от своего служебного устройства. Так как клиенты полагаются на свои служебные устройства при первой пересылке маршрутизации, служебные устройства VINES поддерживают маршрутные таблицы, которые помогают им находить отдаленные узлы.
Маршрутные таблицы VINES состоят из пар «хост/затраты», где хост соответствует сетевому узлу, до которого можно дойти, а затраты — временной задержке в миллисекундах, необходимой для достижения этого узла. RTP помогает служебным устройствам VINES находить соседних клиентов, служебные устройства и роутеры.
Все клиенты периодически объявляют как о своих адресах сетевого уровня, так и о адресах MAC-уровня с помощью пакета, эквивалентного пакету «hello» (приветственное сообщение). Пакеты «hello» означают, что данный клиент все еще работает и сеть готова. Сами служебные устройства периодически отправляют в другие служебные устройства маршрутные корректировки. Маршрутные корректировки извещают другие роутеры об изменениях адресов узлов и топологии сети.
Когда какое-нибудь служебное устройство принимает пакет,
Оно проверяет его, чтобы узнать, для чего он предназначается — для другого служебного устройства или для широкого вещания. В случае, если пунктом назначения является данное служебное устройство, то это служебное устройство соответствующим образом обрабатывает этот запрос. В случае, если пунктом назначения является другое служебное устройство, то данное служебное устройство либо непосредственно продвигает этот пакет (если это служебное устройство является его соседом), либо направляет его в служебное устройство/роутер, которые являются следующими в очереди. В случае, если данный пакет является широковещательным, то данное служебное устройство проверяет его, чтобы узнать, пришел ли этот пакет с маршрута с наименьшими затратами. В случае, если это не так, то пакет отвергается. В случае, если же это так, то пакет продвигается на всех интерфейсах, за исключением того, на котором этот пакет был принят. Такой метод помогает уменьшить число широковещательных возмущений, которые являются обычной проблемой в других сетевых окружениях.
Пакет VIP начинается с поля контрольной суммы (checksum), используемой для обнаружения искажений в пакете.
За полем контрольной суммы идет поле длины пакета (packet length), которое обозначает длину всего пакета
Следующим полем является поле управления транспортировкой (transport control), которое состоит из нескольких подполей. В случае, если пакет является широковещательным, то предусматривается два под - поля: подполе класса (class) (с 1 по 3 биты) и подполе числа пересылок (hopcount) (с 4 по 7 биты). В случае, если пакет не является широковещательным пакетом, то предусматривается 4 подполя: подполе ошибки (error), подполе показателя (metric), подполе переадресации (redirect), и подполе числа пересылок (hop count). Подполе класса определяет тип узла, который должен принимать широковещательное сообщение. С этой целью узлы разделяются на несколько различных категорий, зависящих от типа узла и типа канала, к которому принадлежит узел. Определяя тип узлов, которые должны принимать широковещательные сообщения, подполе класса уменьшает вероятность в работе, вызываемых широковещательными сообщениями. Подполе числа пересылок представляет собой число пересылок (число пересеченных роутеров), через которые прошел пакет. Подполе ошибок определяет, надо ли протоколу ICP отправлять пакет уведомления об исключительной ситуации в источник пакета, если пакет окажется немаршрутизируемым. Подполе показателя устанавливается в 1 транспортным объектом, когда ему необходимо узнать затраты маршрутизации при перемещения пакетов между каким-нибудь узлом обслуживания и одним из соседей. Подполе переадресации определяет, должен ли роутер генерировать сигнал переадресации (при соответствующих
Далее идет поле типа протокола (protocol type), указывающее на протокол сетевого или транспортного уровня, для которого предназначен пакет показателя или пакет уведомления об исключении.
За полем типа протокола следуют адресные поля VIP. За полями номера сети назначения (destination network number) и номера подсети назначения (destination subnetwork number) идут поля номера сети источника (source 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 либо как услуги разрешения адреса (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 реализуют следующий алгоритм. Сначала данный клиент отправляет широкой рассылкой пакеты запро, сов-заявок. Затем каждая услуга, которая является соседом данного клиента, отвечает пакетом ответа об услуге. Далее данный клиент выдает пакет запроса о присваивании адреса в первую услугу, которая ответила на его пакет запроса-заявки. Услуга отвечает пакетом ответа о присваивании адреса, содержащем присвоенный адрес объединенной сети.
Протокол управления объединенной сетью (ЮР)
Определяет пакеты уведомления об исключительных ситуациях (exception notification) и уведомления о показателе (metric notification). Пакеты уведомления об исключительных ситуациях обеспечивают информацию об исключительных ситуациях сетевого уровня; пакеты уведомления о показателе содержат информацию о последней передаче, которая была использована для достижения узла клиента.
Уведомления об исключительной ситуации отправляются в том случае, когда какой-нибудь пакет VIP не может быть соответствующим образом маршрутизирован, и устанавливается подполе ошибки в поле управления транспортировкой заголовка VIP. Эти пакеты также содержат поле, идентифицирующее конкретную исключительную ситуацию по коду ошибки, соответствующему этой ситуации.
Объекты ICP в узлах обслуживания генерируют сообщения уведомления о показателе в том случае, когда устанавливается подполе показателя в поле управления транспортировкой заголовка VIP, и адрес пункта назначения в пакете узла обслуживания определяет одного из соседей этого узла обслуживания.
VINES обеспечивает три услуги транспортного уровня:
Unreliable datagram service
Услуги ненадежных дейтаграмм. Отправляет пакеты, которые маршрутизируются на основе принципа «наименьших затрат» (best-effort basis), но не подтверждаются сообщением о приеме в пункте назначения.
Reliable datagram service
Услуги надежных дейтаграмм. Услуга виртуальной цепи, которая обеспечивает надежную упорядоченную доставку сообщений между узлами сети с подтверждением о приеме. Надежное сообщение может быть передано с максимальным числом пакетов, равным 4.
Data stream service
Услуга потока данных. Поддерживает контролируемый поток данных между двумя процессами. Услуга потока данных является услугой виртуальной цепи с подтверждением о приеме, которая обеспечивает передачу сообщений неограниченных размеров.
Являясь распределенной сетью, VINES использует модель вызова процедуры обращений к отдаленной сети (remote procedure call — RPC) для связи между клиентами и служебными устройствами. RCP является основой сред распределенных услуг. Протокол NetRPC (Уровни 5 и 6)
Обеспечивает язык программирования высшего уровня, который позволяет осуществлять доступ к отдаленным услугам способом, прозрачным как для пользователя, так и для прикладной программы.
На Уровне 7 VINES обеспечивает протоколы файловых услуг и услуг принтера, а также протокол услуг «StreetTalk name/directory». Street - Talk, один из протоколов с торговым знаком компании VINES, обеспечивает службу постоянных имен в глобальном масштабе для всей объединенной сети.
VINES также обеспечивает среду разработки интегрированных применений при наличии нескольких операционных систем, включая DOS и UNIX. Такая среда разработки позволяет третьей участвующей стороне осуществлять разработку как клиентов, так и услуг, действующих в среде VINES.