Категорії
Misc, staff, other

Путь сетевого пакета

Высокоуровневый путь, по которому проходит пакет от прибытия до приёмного буфера сокета выглядит так:

  1. Драйвер загружается и инициализируется.
  2. Пакет прибывает из сети в сетевую карту.
  3. Пакет копируется (посредством DMA) в кольцевой буфер памяти ядра.
  4. Генерируется аппаратное прерывание, чтобы система узнала о появлении пакета в памяти.
  5. Драйвер вызывает NAPI, чтобы начать цикл опроса (poll loop), если он ещё не начат.
  6. На каждом CPU системы работают процессы ksoftirqd. Они регистрируются во время загрузки. Эти процессы вытаскивают пакеты из кольцевого буфера с помощью вызова NAPI-функции poll, зарегистрированной драйвером устройства во время инициализации.
  7. Очищаются (unmapped) те области памяти в кольцевом буфере, в которые были записаны сетевые данные.
  8. Данные, отправленные напрямую в память (DMA), передаются для дальнейшей обработки на сетевой уровень в виде ‘skb’.
  9. Если включено управление пакетами, или если в сетевой карте есть несколько очередей приёма, то фреймы входящих сетевых данных распределяются по нескольким CPU системы.
  10. Фреймы сетевых данных передаются из очереди на уровни протоколов.
  11. Уровни протоколов обрабатывают данные.
  12. Данные добавляются в буферы приёма, прикреплённые к сокетам уровнями протоколов.

Взято с ресурса habrahabr.ru

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff