Чтение онлайн

на главную - закладки

Жанры

Шрифт:

При передаче данных TCP/IP в сетях Token Ring используется формат кадра IEEE 802.5, инкапсулирующий кадр LLC с заголовком SNAP, как описано выше.

Внутренняя архитектура

Как уже говорилось, драйвер, реализующий поставщика услуг уровня канала данных, состоит из двух частей: аппаратно-зависимой и аппаратно-независимой. Соответственно драйвер хранит отдельные структуры данных, необходимые для работы этих частей. Архитектура драйвера приведена на рис. 6.40.

Рис. 6.40. Архитектура драйвера DLPI

Для каждого обслуживаемого драйвером сетевого адаптера создается отдельная структура данных

DL_bdconfig_t
, описывающая характеристики адаптера и содержащая необходимую для управления адаптером информацию, а также статистику, являющуюся частью MIB (Management Information Base). Эта структура используется аппаратно-независимой и зависимой частями совместно, в том числе и для передачи определенной информации между ними.

В частности, эта структура содержит следующие поля:

major
Старший номер устройства, связанного с данным сетевым адаптером
io_start
Адрес
начала области ввода/вывода
io_end
Адрес конца области ввода/вывода
mem_start
Адрес начала базовой памяти
mem_end
Адрес конца базовой памяти
irq_level
Уровень прерывания
шах_saps
Максимальное число точек доступа (SAP)
flags
Флаги состояния адаптера
mib
Список статистических данных

Поле

flags
может включать следующие флаги:

BOARD_PRESENT
Устанавливается драйвером после успешной инициализации адаптера
BOARD_DISABLED
Устанавливается драйвером при неудачной инициализации адаптера. Этот флаг также может быть установлен, если драйвер определит нарушения в функционировании адаптера
TX_BUSY
Указывает на отсутствие ресурсов, например отсутствие необходимых буферов для передачи кадра
TX_QUEUED
Указывает на наличие кадров, ожидающих передачи

Для каждого подключенного пользователя услуг, или, другими словами, для каждой активной 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]

94

Включение этого режима требует привилегий суперпользователя и используется преимущественно в приложениях мониторинга уровня канала данных.

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

Поделиться:
Популярные книги

Огни Эйнара. Долгожданная

Макушева Магда
1. Эйнар
Любовные романы:
любовно-фантастические романы
эро литература
5.00
рейтинг книги
Огни Эйнара. Долгожданная

Real-Rpg. Еретик

Жгулёв Пётр Николаевич
2. Real-Rpg
Фантастика:
фэнтези
8.19
рейтинг книги
Real-Rpg. Еретик

Вперед в прошлое 2

Ратманов Денис
2. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 2

Как я строил магическую империю

Зубов Константин
1. Как я строил магическую империю
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Как я строил магическую империю

Возвращение Безумного Бога 5

Тесленок Кирилл Геннадьевич
5. Возвращение Безумного Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Возвращение Безумного Бога 5

Ненужная жена

Соломахина Анна
Любовные романы:
любовно-фантастические романы
5.86
рейтинг книги
Ненужная жена

Идеальный мир для Социопата 6

Сапфир Олег
6. Социопат
Фантастика:
боевая фантастика
рпг
6.38
рейтинг книги
Идеальный мир для Социопата 6

Вечный. Книга II

Рокотов Алексей
2. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга II

Мимик нового Мира 6

Северный Лис
5. Мимик!
Фантастика:
юмористическая фантастика
попаданцы
рпг
5.00
рейтинг книги
Мимик нового Мира 6

Разбуди меня

Рам Янка
7. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
остросюжетные любовные романы
5.00
рейтинг книги
Разбуди меня

Новая мама в семье драконов

Смертная Елена
2. В доме драконов
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Новая мама в семье драконов

Ты всё ещё моя

Тодорова Елена
4. Под запретом
Любовные романы:
современные любовные романы
7.00
рейтинг книги
Ты всё ещё моя

Разведчик. Заброшенный в 43-й

Корчевский Юрий Григорьевич
Героическая фантастика
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.93
рейтинг книги
Разведчик. Заброшенный в 43-й

Газлайтер. Том 9

Володин Григорий
9. История Телепата
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Газлайтер. Том 9