Категории
Самые читаемые

Читаем без скачивания Операционная система UNIX - Андрей Робачевский

Читать онлайн Операционная система UNIX - Андрей Робачевский

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 119 120 121 122 123 124 125 126 127 ... 130
Перейти на страницу:

Для каждого подключенного пользователя услуг, или, другими словами, для каждой активной SAP драйвер создает структуру данных DL_sap_t, описывающую тип и характеристики точки доступа. Приведем описание некоторых полей этой структуры:

state Состояние SAP. Возможные состояния определены интерфейсом DLPI. Исходное состояние точки доступа DL_UNBOUND sap_addr Уникальный адрес (идентификатор) SAP flags Флаги, определяющие дополнительные характеристики SAP read_q Указатель на очередь чтения потока, связанного с SAP write_q Указатель на очередь записи потока, связанного с SAP mac_type Тип используемого протокола доступа и формат используемого кадра. Возможные значения включают: DL_CMACD IEEE 802.3 DL_ETHER Ethernet 2.0 DL_TPB IEEE 802.4 DL_TPR IEEE 802.5 DL_HDLC ISO HDLC DL_FDDI FDDI service_mode Режим передачи данных. В локальных сетях обычно используется режим без установления связи без подтверждения DL_CLDLS provider_style Тип поставщика услуг: DL_STYLE1 или DL_STYLE2 bd Указатель на структуру DL_bdconfig_t, связанную с сетевым адаптером next_sap Указатель на следующую точку доступа в списке активных SAP max_spdu Максимальный размер данных, которые могут быть переданы в кадре min_spdu Минимальный размер данных, которые могут быть переданы в кадре

Дополнительные характеристики SAP хранятся в поле flags, которое может включать следующие флаги:

RAWCSMACD Указывает, что через SAP передаются только кадры формата IEEE 802.3 SNAPCSMACD Указывает, что через SAP передаются кадры формата LLC SNAP PROMISCUOUS Указывает, что SAP работает в режиме отсутствия фильтрации кадров (promiscuous mode), при котором SAP получает копии всех кадров независимо от адреса точки доступа, которой они предназначаются. Данный режим применяется, например, при создании приложений мониторинга уровня канала данных PRIVILEGED Указывает, что управление точкой доступа требует привилегий суперпользователя

Кроме того, драйвер хранит и обновляет статистическую информацию о сетевом интерфейсе, представляющую собой набор счетчиков, связанных с работой адаптера, и ассоциированных с ним точек доступа. Пользователь может получить интересующую его статистику с помощью соответствующей команды ioctl(2). Приведем в качестве примера описание некоторых из этих счетчиков:

ifInOctets Общее число октетов, полученных адаптером ifOutOctets Общее число октетов, переданных адаптером ifOutUcastPkts Число переданных однонаправленных (unicast) пакетов ifOutNUcastPkts Число переданных групповых (multicast) и широковещательных (broadcast) пакетов ifInDiscards Число полученных, но отброшенных правильных пакетов ifInUcastPkts Число полученных однонаправленных (unicast) пакетов ifInNUcastPkts Число полученных групповых (multicast) и широковещательных (broadcast) пакетов ifInErrors Число пакетов, полученных с ошибкой ifUnknownProtos Число полученных пакетов, которые были отброшены из-за неправильной SAP адресата ifOutQlen Число пакетов, находящихся в очереди на передачу ifOutErrors Число пакетов, переданных с ошибкой etherCollisions Число коллизий

Аппаратно-независимая часть драйвера обрабатывает все запросы, поступающие от пользователя услуг уровня канала данных. Для этого в драйвере определены следующие функции (часть из них являются стандартными точками входа STREAMS):

DLopen() Точка входа xxopen(). Эта функция инициализирует SAP, связанную с данным потоком. Функция проверяет наличие флага BOARD_PRESENT и в случае его отсутствия возвращает ошибку. DLclose() Точка входа xxclose(). Эта функция сбрасывает текущее состояние SAP и устанавливает его равным DL_UNBOUND. DLwput() Точка входа xxput() для очереди записи. Эта функция интерпретирует примитивы DLPI и вызывает соответствующие процедуры драйвера. В случае, если примитив содержит команду уровня канала данных, например, запрос на передачу датаграммы, вызывается функция DLcmds(), которая производит формирование кадра и вызов функции передачи кадра аппаратно-зависимой части драйвера. В случае, когда примитив содержит команду ioctl(2), вызывается функция DLioctl(). DLrsrv() Точка входа xxservice() для очереди чтения. Функция DLrecv() помещает каждый кадр, полученный от аппаратно-зависимой части драйвера, в очередь чтения потока, ассоциированного с адресуемой SAP. В зависимости от формата кадра (протокола MAC) вызывается соответствующая процедура, извлекающая данные и помещающая их в сообщение DL_UNITDATA_IND (для услуги без предварительного установления связи и без подтверждения), которое направляется вверх по потоку пользователю услуг. Кроме того, DLrsrv() просматривает список активных SAP для возможного копирования сообщения в очереди потоков, имеющих тот же адрес точки доступа. Поскольку функция DLrecv() помещает кадр в очередь первого найденного потока с требуемым адресом SAP (см. описание функции ниже), описанное поведение DLrsrv() гарантирует, что все пользователи услуг уровня канала данных, зарегистрировавшие один и тот же адрес SAP, получат свою копию пакета данных. DLrecv() Функция обработки полученного пакета. Эта функция определяет формат пакета и помещает его в очередь потока, ассоциированную с адресуемой SAP. Обычно эта функция вызывается функцией обработки прерывания при получении очередного кадра данных от сетевого адаптера.

Примитивы DLPI

Как и в случае предоставления транспортных услуг, обмен данными между пользователем и поставщиком происходит в виде сообщений, несущих примитивы DLPI. Ниже рассмотрены некоторые из этих примитивов, относящиеся к режиму передачи без предварительного установления связи и без подтверждения. Именно такой режим обычно используется в традиционных локальных сетях.

Несмотря на то что рассматриваемая услуга не предусматривает установления связи, фактической передаче данных предшествует обмен примитивами для инициализации потока и подключения его к поставщику услуг уровня канала данных. Во-первых, пользователь должен создать точку доступа к поставщику услуг, для чего необходимо произвести операцию связывания. Во-вторых, в случае использования поставщика услуг второго типа (style 2), пользователь также должен подключиться к требуемой PPA. Наконец, пользователю может потребоваться произвести ряд действий, включающих получение информации о созданном потоке, регистрацию специфического группового адреса для потока или включение режима отсутствия фильтрации кадров, при котором пользователь сможет получать копии всех пакетов, полученных поставщиком услуг.[94]

1 ... 119 120 121 122 123 124 125 126 127 ... 130
Перейти на страницу:
На этой странице вы можете бесплатно скачать Операционная система UNIX - Андрей Робачевский торрент бесплатно.
Комментарии