NetWare раскидывает глобальную сеть
Операционная система NetWare компании Novell стала стандартной сетевой ОС для соединения клиентов и серверов по локальной сети. Она захватила более 70 процентов рынка. Это один из наиболее громких успехов в мире сетевых технологий, если учесть, что пользовательская база на данный момент достигла 40 миллионов. Сегодня NetWare выходит за пределы локальных сетей подразделений на уровень предприятия, где пользователям нужен доступ по глобальной сети к информации в удаленных узлах.
Первые коммуникационные протоколы NetWare были разработаны и оптимизированы для работы поверх локальных сетевых протоколов уровня управления доступом к среде (Media Access Control, MAC), например Arcnet, Ethernet и Token Ring, отличающихся недорогой полосой пропускания, малым временем ожидания и низким уровнем ошибок. Допущение, что эти свойства неизменны, не отвечает действительности, когда NetWare работает по каналам глобальной сети, которые могут включать относительно медленные арендуемые линии на 56 Кбит/c, сети frame relay с оплатой за каждый пакет или спутниковую связь с большим временем задержки. В последнюю версию NetWare 4.1 включен новый набор коммуникационных протоколов (некоторые из этих протоколов являются лишь усовершенствованными вариантами старых).
В предлагаемой нами статье разговор пойдет о первоначальных протоколах NetWare, неприспособленных для работы в глобальных сетях. Однако главная тема статьи - протоколы Novell, которые снимают названное ограничение, а также служба каталогов Netware Directory Services (NDS) в глобальных сетях.
ВОЗВРАТ ОТПРАВИТЕЛЮ
Исследовательский центр компании Xerox в Пало-Альто (шт. Калифорния) стал местом рождения многих замечательных технологий для настольных систем, в том числе и графического интерфейса пользователя, Ethernet, манипулятора мыши и коммуникационных протоколов для распределенных вычислений Xerox Network System (XNS). Novell взяла на вооружение протоколы XNS сетевого уровня - Internet Datagram Protocol (IDP) и Routing Information Protocol (RIP) - для использования в операционной системе NetWare и дала IDP новое имя - Internetwork Packet Exchange (IPX).
IPX - это протокол без установления соединения, используемый надежными высокоуровневыми протоколами для доставки пакетов. Пакеты IPX используют 12-байтную адресную схему, в которой 4 байта отводится под адрес сети, 6 байт под адрес узла и 2 байта под адрес гнезда для идентификаций процесса в узле сети.
Адресная схема IPX обладает преимуществами в локальных сетях. Так как и Ethernet и Token Ring используют 6-байтные адреса фиксированной длины, IPX-адрес может быть непосредственно скопирован из MAC-адреса на сетевой плате узла. Но поскольку в сетях TCP/IP имеет переменную длину, для каждого узла локальной сети должен быть определен уникальный IP-адрес узла.
Адресация IPX наталкивается на серьезные ограничения при использовании в крупных объединенных сетях. До недавнего времени у Novell не было центрального органа с полномочиями по присвоению сетевых номеров - каждый администратор локальной сети действовал в таких случаях самостоятельно. При объединении локальных сетей подразделений или различных организаций приходилось переназначать сетевые адреса для обеспечения их уникальности. Мир TCP/IP имеет такой полномочный орган - информационный центр сети Network Information Center, - который обеспечивает уникальность зарегистрированных IP-адресов сети.
Novell недавно исправила этот недостаток, организовав Novell Network Registry для присвоения организациям имен и выделения IPX-адресов сети. Данная служба позволяет безконфликтно объединять сети IPX.
В ПОИСКАХ СОЕДИНЕНИЯ
Коммуникационная модель NetWare состоит из клиента, посылающего запрос серверу, который, в свою очередь, обрабатывает запрос и посылает ответ. Например, клиент может послать файловому серверу запрос на чтение, по которому сервер читает запрошенные данные с диска и возвращает их клиенту. Протокол NetWare Core Protocol (NCP) осуществляет управление соединением и кодирование запроса об услуге при таком обмене запросами и ответами. Используя IPX для доставки пакетов, NCP имеет собственные алгоритмы нахождения и исправления ошибок на уровне пакета, поскольку IPX не дает никаких гарантий доставки пакета.
У каждого NCP-пакета, передаваемого клиентом серверу, есть порядковый номер и номер соединения; первый идентифицирует запрос, а второй - клиента. Номер "1" присваивается первому запросу, который клиент передает серверу после установления соединения. До отправки следующего запроса клиент должен дожидаться ответа с порядковым номером "1".
При получении запроса сервер формирует пакет с ответом, присваивает ему порядковый номер и возвращает клиенту. Не получая ответ в течение определенного времени, клиент считает пакет утерянным и повторяет запрос. Если ответ не удалось получить после повторения запроса заданное число раз, связь с сервером считается утерянной. Этот процесс - проверка порядкового номера полученного пакета и повторная передача утерянного пакета - обеспечивает надежность передачи данных между сервером и клиентом. Другим ориентированным на соединение протоколом Novell, который также обеспечивает надежную доставку, является Sequenced Packet Exchange (SPX). Данный протокол запросов-ответов используется для поддержки запросов, не относящихся к ведому файловой системы, как принт-серверы, удаленная печать и удаленная консоль.
NCP имеет два ограничения, в определенных обстоятельствах приводящих к заметному снижению пропускной способности каналов глобальной сети. Во-первых, каждый клиент может передать серверу только один запрос за раз (для передачи другого запроса клиент должен дождаться ответа на предыдущий). Во-вторых, если по пути пакет проходит через маршрутизатор, то максимальный объем пакета данных составляет 512 Кбайт. Это означает, что несколько запросов и ответов должны быть посланы для выполнения типичных операций, таких как чтение и запись больших файлов, на файловом сервере.
Для снятия этих ограничений Novell приняла протокол пакетного режима и протокол Large Internetwork Packet Exchange (LIPX). Оба протокола доступны в виде элементов расширения для ранних версий NetWare, PBURST NLM, оболочки BNETX и LIPX NLM. Эти расширения автоматически активируются на рабочих станциях из FIO.VLM запросчиком DOS для NetWare 3.12 и 4.x и включены в операционную систему.
ПРОРЫВ ПАКЕТНОГО РЕЖИМА
Протокол пакетного режима позволяет клиенту передавать один запрос на чтение и в ответ получать до 64 Кбайт данных в нескольких пакетах. Клиент может также передать до 64 Кбайт в одном запросе на чтение из нескольких пакетов.
LIPX позволяет клиенту согласовать максимальный размер пакета для маршрутизатора, и этот размер может быть больше, чем предельные для IPX 512 Кбайт. В комбинации с LIPX протокол пакетного режима дает заметное повышение эффективности глобального канала. Рисунок 1.
Чтобы прочитать блок данных в 4 Кбайта без пакетного режима и протокола Large Interwork Packet Exchange (LIPX), клиент запрашивает 512 байт от сервера и ждет ответа. Он может выдать следующий запрос только после получения ответа. В этом случае требуется 12 пакетов.
Предположим, что клиент хочет прочитать блок данных размером в 4 Кбайта. Без пакетного режима и LIPX он должен выдать запрос серверу на 512 байт и ждать ответа. Получив ответ, клиент выдает другой запрос на 512 байт и снова ждет ответа. В этом случае потребуется отправить и получить 12 пакетов (см. Рис. 1). Рисунок 2.
Чтобы прочитать блок данных в 4 Кбайта в пакетном режиме при использовании протокола Large Interwork Packet Exchange (LIPX), клиенту потребуется всего 5 пакетов по тому же самому каналу глобальной сети.
С пакетным режимом и LIPX тот же самый блок может быть прочитан посредством передачи только 5 пакетов по тому же самому глобальному каналу (см. Рис. 2).
Протоколу пакетного режима необходима более изощренная схема контроля ошибок и управления потоком, нежели простой протокол запросов ответов в базовом протоколе NCP. Клиент должен иметь возможность обнаруживать несвоевременные и пропущенные пакеты и предупреждать переполнение быстрым сервером ограниченных по емкости пакетных буферов.
При установлении соединения в пакетном режиме клиент согласует максимальное число пакетов, которые сервер может отправить за одну посылку. Этот параметр зависит от максимально допустимого для канала размера пакета и объема памяти пакетных буферов на клиенте. Если сервер или клиент не поддерживают пакетный режим, то используется непакетный режим NCP.
Время задержки между пакетами на обработку трафика от быстрого сервера задается клиентом; клиент контролирует нагрузку и качество линии посредством подсчета испорченных и утерянных пакетов. При изменении нагрузки и качества линии максимальное число посылаемых без подтверждения пакетов и время задержки между пакетами согласуются заново.
В случае протоколов со стандартным управлением потоком при обнаружении потери пакета запрашивается повторная передача потерянного пакета вместе со всеми последующими. Это создает дополнительный и совершенно ненужный трафик. В пакетном режиме клиент запрашивает повторную передачу только потерянного пакета, и, таким образом, полоса пропускания глобальной сети используется значительно более эффективно. Рисунок 3.
На диаграмме результаты копирования файла размером 1 Мбайт с сервера NetWare в Далласе на рабочую станцию в Филадельфии по каналу 56 Кбит/с. При использовании пакетного режима файл доставлялся на 30 процентов быстрее, чем без него.
С целью проверить теоретические достоинства пакетного режима мы решили скопировать файл с файлового сервера NetWare в Далласе на рабочую станцию в Филадельфии по каналу на 56 Кбит/c. Результаты приводятся на Рис. 3. При разблокированном пакетном режиме копирование файла заняло в среднем 1 минуту 44 секунды. Это на 30 процентов быстрее, чем без пакетного режима, где результат составил 2 минуты 30 секунд.
РЕШЕНИЕ RIP-SAP
Чтобы клиент мог успешно передать пакеты по объединенной сети NetWare, он должен знать адрес локального маршрутизатора на пути к конечному получателю. В свою очередь, данный маршрутизатор должен знать адрес следующего маршрутизатора и т.д. В сетях NetWare 3.x эти два вида информации распространяются маршрутным протоколом RIP.
Когда клиент хочет установить связь с сервером и не знает как это сделать, он транслирует пакет с запросом по протоколу RIP по локальной сети. Маршрутизатор с кратчайшим путем к серверу возвращает свой адрес. Клиент помещает адрес узла маршрутизатора в MAC-заголовок IPX-пакета и передает этот пакет.
Маршрутизатор должен теперь направить пакет по наилучшему пути. Каждый маршрутизатор поддерживает таблицу маршрутов с информацией о том, как достичь любой локальной сети в объединенной сети. Эта информация состоит из номера сети в системе, числа маршрутизаторов на пути (или числа транзитных узлов), расчетного времени на достижение нужной сети и адреса узла следующего маршрутизатора на пути.
Маршрутизаторы периодически обмениваются таблицами маршрутов. В RIP такая информация обычно транслируется каждые 60 секунд по сетям, с которыми они соединены напрямую, а также при каждом изменении состояния (например, когда маршрутизатор включается или отключается).
Когда маршрутизатор получает широковещательный пакет RIP, он обновляет внутреннюю таблицу маршрутов и транслирует новый пакет по локальным сетям, соединененным с ним (за исключением сети, из которой пришел пакет). Таким образом, информация о маршрутах постоянно обновляется во всей объединенной сети NetWare.
Сети NetWare 3.x используют Service Advertising Protocol (SAP) для динамического добавления и удаления серверов, в том числе файловых серверов, принт-серверов и шлюзовых серверов. При включении сервер использует SAP для объявления об услугах, а при отключении - для объявления о недоступности услуг.
Информация SAP хранится на маршрутизаторах и файловых серверах NetWare и распространяется тем же самым методом, что и пакеты RIP. Информационная таблица SAP транслируется по локальной сети каждые 60 секунд, а также при изменении статуса сервера. При получении нового широковещательного пакета SAP агент SAP проверяет информацию от сервера. Если она претерпела какие-то изменения, то он немедленно ретранслирует измененную таблицу в локальные сети, с которыми соединен (за исключением сети, из которой была получена информация SAP).
В сетях NetWare на базе RIP каждый маршрутизатор транслирует с интервалом в 60 секунд пакеты с таблицей марштрутов в локальные сети, с которыми соединен. Серверы также периодически транслируют целиком базу данных об услугах. Медленный глобальный канал, соединяющий две сети с несколькими серверами, может быстро насытиться широковещательным трафиком RIP и SAP, так что на долю данных придется весьма незначительная полоса пропускания.
Большие объединенные сети NetWare 3.x также страдают от огромных накладных расходов на передачу пакетов RIP и SAP. Например, объединенная сеть самой Novell имеет сегменты, в которых маршрутизаторы должны отслеживать информацию о 1600 услугах и 2400 маршрутах. Novell столкнулась с тем, что низкоскоростные глобальные каналы оказались переполнены широковещательными пакетами RIP и SAP.
ПЕРЕСМОТР ПРОТОКОЛА
Novell разработала новый маршрутный протокол NetWare Link Services Protocol, позволяющий на порядок сократить накладные расходы. NLCP - это протокол состояния канала, согласно которому каждый маршрутизатор поддерживает полную карту маршрутизаторов и каналов во всей объединенной сети или часть карты (называемой маршрутной областью) в очень крупной объединенной сети.
Обновления информации о маршрутах или о таких изменениях, как включение или отключение маршрутизатора, производятся только раз в два часа. Обновления, используемые для проверки или переопределения собственных карт маршрутизаторов или каналов, посылаются всем маршрутизаторам в маршрутной области.
Примером протоколов состояния канала могут служить также Open Shortest Path First (OSPF) в сетях TCP/IP и Intermediate System-to-Intermediate System (IS-IS) в сетях OSI. Протоколы этого типа имеют некоторые преимущества над своими двойниками, использующими векторы направления RIP, когда маршрутизаторы хранят информацию только о следующем транзитном узле на пути к конкретной сети в объединенной сети. Примерами протоколов вектора направления являются Interior Gateway Router Protocol (IGRP) в сетях TCP/IP и Routing Table Maintenance Protocol (RTMP) в сетях AppleTalk
Помимо сокращения накладных расходов на передачу информации о маршрутах, NLCP имеет ряд других преимуществ. При изменении маршрута NLCP сможет выбрать маршрут лучше, чем RIP, поскольку хранит адрес всех маршрутизаторов на пути (RIP хранит адрес только следующего маршрутизатора).
В RIP информация о маршрутах передается лишь соседним маршрутизаторам, которые перед тем как передать информацию соседям проверяют и изменяют свои таблицы. При таком положении дел информация об изменениях в маршрутах доходит до маршрутизаторов в объединенной сети со значительной задержкой. В NLCP при изменении в маршрутах информация рассылается одновременно всем маршрутизаторам в маршрутной области. Поэтому в NLCP реакция на необходимость перенаправить трафик в случае включения или выключения маршрутизатора быстрее, чем в RIP. Помимо всего прочего, RIP поддерживает путь максимум через 15 маршрутизаторов, в то время как NLCP - через 127 маршрутизаторов.
NLCP использует сжатие заголовка IPX, чтобы уменьшить размер пакета с таблицей маршрутов, освобождая тем самым дополнительную полосу пропускания для данных. Этот протокол может, кроме того, распределять трафик по двум путям от маршрутизатора для максимально эффективного использования доступной полосы пропускания. При передаче пакетов с таблицами маршрутов NLCP может использовать групповую адресацию, в этом случае пакеты читаются для обработки только маршрутизаторами из адресной группы. При принятом же в RIP широковещании для обработки заголовка пакет должны прочитать все узлы сети.
В NetWare 4.x информация об услугах хранится в каталоге NDS, что исключает необходимость в периодической трансляции пакетов SAP. Таким образом, комбинация NLCP и NDS гораздо более эффективна для глобальных каналов, чем дуэт RIP-SAP. В NDS, однако, SAP по-прежнему используется для объявления о наличии серверов NDS и временных серверов, но частота трафика SAP в этом случае несравнимо меньше.
NLCP создавался для того, чтобы упростить миграцию от сетей, использующих RIP. Стек протоколов IPX в NetWare 4.1 включает поддержку как RIP-SAP, так и NLCP. RIP, SAP и NLCP могут быть по выбору блокированы или разблокированы в любом сетевом интерфейсе на сервере или маршрутизаторе, так что в одном сегменте может использоваться NLCP, а в другом - RIP. Если даже маршрутным протоколом интерфейса является NLCP, то широковещательные пакеты RIP и SAP от сетевых устройств все равно обрабатываются. В одной и той же сети могут быть использованы как маршрутизаторы NLCP, так и маршрутизаторы SAP, поскольку NLCP обрабатывает и рассылает маршрутную информацию и RIP, и SAP. Предположим, что локальная сеть имеет маршрутизаторы RIP и медленный канал глобальной сети в другую локальную сеть. Маршрутизаторы на каждом конце канала глобальной сети могут быть модернизированы для поддержки NLCP, и, таким образом, трафик по каналу уменьшается без модернизации остальных маршрутизаторов.
Сегодня NLCP поддерживает только одну маршрутную область. В будущих версиях предполагается поддержка нескольких маршрутных областей, а также их совокупностей (доменов) с целью реализации крупных глобальных объединенных сетей IPX.
NDS ПО ТУ СТОРОНУ ГОРИЗОНТА
Чтобы обеспечить отказоустойчивость и приемлемую производительность в глобальных сетях NetWare 4.x, служба каталогов NDS должна быть спланирована очень тщательно. Если потерян каталог, это означает невозможность доступа к ресурсам сети, поэтому на серверах сети должно хранится несколько копий (или дубликатов) каталога. Крупная база данных о каталоге может быть разделена на несколько частей (разделов). Мелкие части легче дублировать, чем базу данных целиком.
Информация в разделах каталога используется для проверки права пользователя на доступ к ресурсам при каждом вхождении пользователя в сеть. Проектировщик NDS определяет разделы каталога, к которым пользователю потребуется частый доступ. Дубликаты этих разделов должны храниться на локальных серверах, чтобы при входе в сеть пользователю не приходилось использовать канал глобальной сети.
При большом числе дубликатов накладные расходы на согласование базы данных NDS возрастают. Novell рекомендует иметь как минимум три и как максимум десять дубликатов каждого раздела.