А. Робачевский - Операционная система UNIX (1114671), страница 92
Текст из файла (страница 92)
Для корректного и эффективного использования сете!вых ресурсов необходим механизм контроля доступа к физической средепередачи, который и обеспечивается протоколами уровня MAC.Первым по известности в ряду этих протоколов стоит CSMA/CD (CarrierSense Multiple Access with Collision Detection). При этом методе доступасетевые устройства конкурируют между собой за право передачи по прин!ципу "кто успел — тот и съел". Основной принцип заключается в том, чтосетевое устройство может начать передачу данных, только если сеть сво!бодна. Однако при этом возникают ситуации, называемые коллизиями,когда два сетевых устройства начинают передавать данные одновременно.Естественно в этом случае данные не могут быть использованы, и на вре!мя коллизии сеть становится недоступной. Время коллизии может бытьсокращено, если передающее устройство продолжает "слушать" сеть.
Мож!но сформулировать следующие правила работы CSMA/CD:1. Если сеть свободна, сетевое устройство может начать передачу, в про!тивном случае, устройство продолжает "слушать" сеть.2. Если в процессе передачи устройством обнаружена коллизия, устрой!ство должно передать короткий неформатированный сигнал, чтобы га!рантировать, что остальными устройствами коллизия также обнаруже!на, после чего немедленно прекратить передачу.После передачи неформатированного сигнала устройство ожидает слу!чайный промежуток времени, после чего начинает передачу, если сетьсвободна.Передача данных в CSMA/CD осуществляется в виде пакетов, или кадров,для которых существуют два основных формата в соответствии со специ!www.books-shop.comсети в UNIX System V491Ethernet 2.0 и стандартом IEEE 802.3.
Последний был разрабо!тан на основе спецификации Ethernet, однако форматы кадров несколькоразличаются, как это показано на рис. 6.36 и 6.37.Рис. 6.36. Формат кадра EthernetРис. 6.37. Формат кадра IEEE 802.3Существенным различием между двумя форматами является то, что поле"тип пакета" (Ethertype) кадра Ethernet используется для обозначения раз!мера кадра в случае IEEE 802.3.
В кадре Ethernet это поле идентифицируетсетевой протокол, использующий данный кадр. К счастью, значения иден!тификаторов протоколов превышают 1500 — максимальный размер данныхкадра, поэтому драйвер может легко определить используемый формат.Другой, также часто используемый метод доступа, используемый в кольце!вых топологиях сетей, заключается в передаче между сетевыми устройст!вами, подключенными к кольцу, маркера — небольшого пакета, играю!щего роль эстафетной палочки (например, в сетях Token Ring).
Пока ниодно из устройств не передает данные, маркер, циркулирующий в кольце,имеет флаг "свободный". При необходимости передачи устройство дожида!ется свободного маркера, изменяет его флаг на "занятый" и передает пакетданных сразу же за маркером. Поскольку теперь в сети отсутствует сво!бодный маркер, все остальные устройства должны воздержаться от переда!чи. При этом устройство, которому адресованы данные, при получениископирует их в свой буфер.
Занятый маркер совершает круг и возвращает!ся к передавшему пакет устройству. Последнее извлекает из сети маркер ипакет данных, изменяет флаг маркера на "свободный" и вновь передает егов кольцо. Таким образом, ситуация возвращается к исходной.Технология FDDI, также использует метод передачи маркера, правда, не!сколько отличающийся от только что описанного. Основное отличие за!ключается в том, что устройство сразу же после передачи пакета помещаетwww.books-shop.com492Глава 6.сети в операционной системе UNIXсвободный маркер. Если какое!либо устройство желает передать данные,оно может воспользоваться этим маркером, также поместив новый сво!бодный маркер вслед за переданным пакетом.
Таким образом, в кольцеможет одновременно существовать несколько пакетов, что повышает эф!фективность использование пропускной способности сети.Формат кадров в сетях Token Ring определяется двумя стандартами — IEEE802.5 иОднако за исключением октета контроля доступа эти форматыне отличаются друг от друга.
Формат кадра IEEE 802.5 приведен на рис. 6.38.Рис. 6.38. Формат кадра IEEE 802.5Протокол LLCПротокол LLC обеспечивает большую часть услуг уровня канала данных.Этот протокол был разработан на основе другого протокола уровня каналаданных — HDLC, однако обладает меньшей функциональностью по срав!нению со своим родителем.Формат кадра LLC представлен на рис. 6.39. Основными полями заголовкакадра являются DSAP икоторые определяют адреса точек доступа (SAP)соответственно отправителя и получателя данных. Кадр LLC также может со!держать дополнительный заголовок SNAP (Sub!Network Access Point), такженазываемый адресом логической точки доступа (Logical SAP, LSAP).Рис. 6.39. Формат кадра LLCwww.books-shop.comсети в UNIX System V493Инкапсуляция IPПри работе в локальной сети на базе технологии CSMA/CD возможны дваварианта инкапсуляции датаграмм IP в кадры уровней LLC и MAC.Первый заключается в использовании кадров Ethernet 2.O.
В этом случаеполе данныхоктетов) полностью принадлежитa SAPадресуется полем "тип пакета", которое содержит значение параметраEthertype — индекса протокола верхнего уровня. В случае IP это значе!ние равно 0x0800. Значения Ethertype для других протоколов приведеныв табл.ТаблицаЗначение Ethertype для некоторых протоколов0x08000x08060x6003Поле Length IEEE802.3Internet IP (Ipv4)DEC DECNET Phase IV RouteNovell IPXВторой вариант предполагает использование формата IEEE 802.3. В этомслучаеинкапсулируется в кадра адресация SAP осу!ществляется в заголовке SNAP с помощью идентификатора Ethertype.При этом поля DSAP и SSAP не используются, и их значения устанавлива!ются равными ОхАА.
Заметим, что в этом случае максимальный размер IP!составляет 1492 октета.При передаче данных TCP/IP в сетях Token Ring используется форматкадра IEEE 802.5, инкапсулирующий кадр LLC с заголовком SNAP, какописано выше.Внутренняя архитектураКак уже говорилось, драйвер,нала данных, состоит из двухнезависимой. Соответственноных, необходимые для работына на рис. 6.40.реализующий поставщика услуг уровня ка!частей: аппаратно зависимой и аппаратнодрайвер хранит отдельные структуры дан!этих частей. Архитектура драйвера приведе!Для каждого обслуживаемого драйвером сетевого адаптера создается от!дельная структура данныхig_t, описывающая характеристикиадаптера и содержащая необходимую для управления адаптером информа!цию, а также статистику, являющуюся частью(ManagementInformation Base). Эта структура используется аппаратно независимой изависимой частями совместно, в том числе и для передачи определеннойинформации между ними.www.books-shop.com494Глава 6.сети в операционной системе UNIXРис.
6.40. Архитектура драйвера DLPIВ частности, эта структура содержит следующие поля:ma j orСтарший номер устройства, связанного с данным сетевым адаптеромАдрес начала областиАдрес конца областиАдрес начала базовой памятиАдрес конца базовой памятиwww.books-shop.comсети в UNIX System V495Уровень прерыванияМаксимальное число точек доступа (SAP)Флаги состояния адаптераСписок статистических данныхПолеможет включать следующие флаги:BOARD DISABLEDTX BUSYTX QUEUEDУстанавливается драйвером после успешной инициализацииадаптераУстанавливается драйвером при неудачной инициализацииадаптера. Этот флаг также может быть установлен, если драй%вер определит нарушения в функционировании адаптераУказывает на отсутствие ресурсов, например отсутствие необ%ходимых буферов для передачи кадраУказывает на наличие кадров, ожидающих передачиДля каждого подключенного пользователя услуг, или, другими словами,для каждой активной SAP драйвер создает структуру данныхописывающую тип и характеристики точки доступа.
Приведем описаниенекоторых полей этой структуры:stateread_qwrite_qbdnext_sapspduСостояние SAP. Возможные состояния определены интерфейсомDLPI. Исходное состояние точки доступаУникальный адрес (идентификатор) SAPФлаги, определяющие дополнительные характеристики SAPУказатель на очередь чтения потока, связанного с SAPУказатель на очередь записи потока, связанного с SAPТип используемого протокола доступа и формат используемогокадра. Возможные значения включают:DL_CMACDIEEE 802.3Ethernet 2.0IEEE 802.4IEEE 802.5DL_HDLCISO HDLCРежим передачи данных. В локальных сетях обычно использует%ся режим без установления связи без подтверждения DL CLDLSТип поставщика услуг:илиУказатель на структуруig_t, связанную с сетевымадаптеромУказатель на следующую точку доступа в списке активных SAPМаксимальный размер данных, которые могут быть переданы вкадреМинимальный размер данных, которые могут быть переданы вкадреwww.books-shop.com496Глава 6.сети всистеме UNIXДополнительные характеристики SAP хранятся в поле flags, которое мо!жет включать следующие флаги:Указывает, что через SAP передаются только кадры формата IEEE 802.3Указывает, что через SAP передаются кадры формата LLC SNAPPROMISCUOUS Указывает, что SAP работает в режиме отсутствия фильтрации кад!ров (promiscuous mode), при котором SAP получает копии всех кад%ров независимо от адреса точки доступа, которой они предназнача%ются.
Данный режим применяется, например, при создании прило%жений мониторинга уровня канала данныхPRIVILEGEDУказывает, что управление точкой доступа требует привилегий су%перпользователяКроме того, драйвер хранит и обновляет статистическую информацию осетевом интерфейсе, представляющую собой набор счетчиков, связанных сработой адаптера, и ассоциированных с ним точек доступа.
Пользовательможет получить интересующую его статистику с помощью соответствую!щей команды ioctl(2). Приведем в качестве примера описание некоторыхиз этих счетчиков:ifOutOctetsifOutErrorsОбщее число октетов, полученных адаптеромОбщее число октетов, переданных адаптеромЧисло переданных однонаправленных (unicast) пакетовЧисло переданных групповых (multicast) и широковещатель%ных (broadcast) пакетовЧисло полученных, но отброшенных правильных пакетовЧисло полученных однонаправленных (unicast) пакетовЧисло полученных групповых (multicast) и широковещатель%ных (broadcast) пакетовЧисло пакетов, полученных с ошибкойЧисло полученных пакетов, которые были отброшены из%занеправильной SAP адресатаЧисло пакетов, находящихся в очереди на передачуЧисло пакетов, переданных с ошибкойЧисло коллизийАппаратно независимая часть драйвера обрабатывает все запросы, посту!пающие от пользователя услуг уровня канала данных.
Для этого в драйвереопределены следующие функции (часть из них являются стандартнымиточками входа STREAMS):Точка входа ххорепЭта функция инициализирует SAP, свя%занную с данным потоком. Функция проверяет наличие флагаи в случае его отсутствия возвращает ошибку.Точка входаЭта функция сбрасывает текущее со%SAP и устанавливает его равнымwww.books-shop.comсети в UNIX System V497(продолжение)DLwputТочка входа xxputдля очереди записи. Эта функция интер%претирует примитивы DLPI и вызывает соответствующие процеду%ры драйвера. В случае, если примитив содержит команду уровняканала данных, например, запрос на передачувызы%вается функциякоторая производит формированиекадра и вызов функции передачи кадра аппаратно зависимойчасти драйвера.
В случае, когда примитив содержит командуioctl(2), вызывается функцияТочка входадля очереди чтения. Функцияпомещает каждый кадр, полученный от аппаратно зависимой частидрайвера, в очередь чтения потока, ассоциированного с адресуемойSAP.