Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 13 лет назад пользователемrit2011
1 Сетевая подсистема Windows глазами разработчика. Алексей Пахунов 1 Краткий, неполный и, в основном, неверный обзор. :-)
2 Обо мне. Senior SDE в команде eXtreme Computing Group (XCG), Microsoft Research. Специализация: низкоуровневое и системное программирование; разработка драйверов и компонентов ядра Windows. 3 года в команде Windows Kernel: Wow64 и поддержка AVX. Мой блог: 2
3 Содержание. 1.Архитектура стека TCP/IP. 2.Путь данных вверх и вниз. 3.Настройки и аппаратное ускорение. 4.Фильтры и мониторинг трафика. 3
4 АРХИТЕКТУРА СТЕКА TCP/IP. 4
5 Архитектура стека TCP/IP. 5 NDIS Wrapper NDIS WAN Miniport Wrapper ISDN PPTP … ATM Ethernet Wi-Fi … Network Interface Layer Internet Layer Kernel mode User mode Applications API IP ICMP IP Forwarding/Filtering ARP TCP/UDP afd.sys Winsock Kernel netbt.sys http.sys Windows Sockets NetBIOS Support RPC Windows Networking Windows Internet API HTTP Server API
6 Стек драйверов в NDIS 6.0. Отдельный стек над каждым сетевым адаптером. – Многопортовые сетевые адаптеры могут запросить отдельный стек для каждого порта. Сетевой адаптер может привязывается к нескольким протоколам. Фильтры устанавливаются отдельно над каждым сетевым адаптером. 6 Miniport Adapter 1 Miniport Adapter 2 Filter Module 2 Filter Module 4 Filter Module 1 Filter Module 3 Protocol 1 Protocol 2
7 Промежуточные драйверы. Промежуточный драйвер объединяет два стека в один. – Верхний стек видит виртуальный сетевой адаптер. – Нижний стек привязывается к промежуточному драйверу как к протоколу. 7 Intermediate Driver Protocol Binding Filter Modules Miniport Adapter Virtual Miniport Protocol Edge
8 Программные интерфейсы. Winsock ( send/recv, WSASend/WSARecv ). Winsock Kernel ( WskSend/WskReceive ). IP Helper. RPC ( RpcXxx ). WNet ( WNetXxx ). WinInet ( InternetXxx ). WinHTTP ( WinHttpXxx ). HTTP Server API (HttpXXX). 8
9 ПУТЬ ДАННЫХ ВВЕРХ И ВНИЗ. 9
10 Обработка принятых пакетов (IP). Сетевой адаптер проверяет целостность пакета и генерирует прерывание. Драйвер адаптера передает его выше по стеку. IP проверяет целостность IP заголовка, восстанавливает пакет из фрагментов, перенаправляет пакет согласно таблице маршрутизации. TCP/UDP проверяет целостность данных пакета, запрашивает повторную передачу и копирует данные в буфер приложения или драйвера: recv(connection, buffer, length, 0); 10
11 Передача данных (TCP). Приложение указывает на данные для передачи: send(connection, buffer, length, 0); TCP формирует заголовки пакета (или нескольких пакетов). IP формирует свои заголовки и разбивает пакеты на фрагменты, если необходимо. Драйвер адаптера ставит пакеты в очередь, настраивает DMA и запускает передачу пакетов. Сетевой адаптер генерирует прерывание по окончанию передачи. Драйвер адаптера возвращает буферы их владельцу. 11
12 Как пакеты хранятся в памяти? Каждый пакет описывается списком буферов (NET_BUFFER). – Буфер может располагаться в несмежных физических страницах. Между уровнями передаются указатели. – Данные пакета копируются только один раз. 12 MDL Next [3] Data NET_BUFFER Data MDL Next [1] MDL Next [2] Data
13 Прямой доступ в память (DMA). Сетевой адаптер поддерживает очереди буферов. – Несколько очередей для приёма и передачи. Драйвер отвечает за выделение памяти, вставляет буферы в очередь и удаляет их оттуда. Сетевой адаптер сохраняет принятые данные в подготовленные драйвером буфера. Дескрипторы указывают сетевому адаптеру как нужно «склеивать» пакеты из нескольких буферов. 13 Data Buffer Next … … Buffer Next … … Data Buffer Next … … Data Сетевой адаптер
14 Прерывания в Windows. Уровни прерываний (IRQL): – PASSIVE_LEVEL – обычный код; используются приоритеты потоков. – DISPATCH_LEVEL – планировщик потоков и подкачка страниц приостановлены. – DIRQLs – прерывания от менее приоритетных устройств заблокированы. Прерывание обрабатывается в два этапа: – Обработчик прерывания должен выполнить минимум работы максимально быстро. – Отложенный обработчик (DPC) выполняет оставшуюся работу. IRQL нельзя произвольно понижать. Каждое из ядер может находится на своем уровне прерываний. 14
15 Прерывания в NDIS. Основные прерывания: пакет принят и передан. Обработка принятых пакетов проходит на DISPATCH_LEVEL. – Любой драйвер в стеке имеет право передать обработку в рабочий поток (PASSIVE_LEVEL). Исходящие пакеты формируются на PASSIVE_LEVEL. – Любой драйвер в стеке имеет право повысить IRQL до DISPATCH_LEVEL. 15
16 Уведомление приложений. Все операции ввода-вывода асинхронны. – Синхронные send() и recv() эмулируются. Уведомление об окончании операции доставляется одним из стандартных способов: – APC, установка события, IO completion port, threadpool, опрос OVERLAPPED. – Драйверы, работающие через Winsock Kernel, используют IRP (I/O Request Packet). 16
17 НАСТРОЙКИ И АППАРАТНОЕ УСКОРЕНИЕ. 17
18 Аппаратное ускорение. MAC и VLAN фильтры на сетевом адаптере. Регулирование частоты прерываний (Interrupt Moderation). Выгрузка вычислений на сетевой адаптер: – Вычисление и проверка контрольных сумм (Checksum Offloading). – TCP сегментация (Large Send Offloading). – TCP Chimney Offloading. – Обработка принятых пакетов на нескольких процессорах (Receive-Side Scaling). Поддержка виртуализации. 18
19 Вкладка «Advanced». – Описывается в.INF файле драйвера. NDIS определяет стандартные параметры. – …но отображаемые названия параметров все равно берутся из.INF файла. 19 Настройка сетевого адаптера (1).
20 Настройка сетевого адаптера (2). 20 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ Class \{guid}\XXXX
21 Настройка TCP/IP. Доступные через реестр параметры TCP/IP описаны в TechNet и множестве других источников. HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters: – Адреса. – Размер окна TCP. – Маршрутизация. – Лимиты. –... 21
22 ФИЛЬТРЫ И СЛЕЖЕНИЕ ЗА ТРАФИКОМ. 22
23 NDIS фильтры. Делятся на следящие и модифицирующие фильтры. Перехватывают и пакеты, и управляющие OID запросы. – Иными словами – полностью контролируют нижнюю часть стека. Загружаются для всех адаптеров данного типа. – Перехватываемые функции конфигурируются для отдельно для каждого адаптера. 23
24 Расширение отладчика !ndiskd. Расширение !ndiskd: – Входит в состав Windows Debugging Tools. – Дружественно к неподготовленному пользователю. – Показывает детальную информацию об адаптерах, фильтрах и протоколах. Требует подключения ядерного отладчика. – Достаточно локального подключения. 24
25 Это проще, чем кажеться... Приостановите BitLocker. bcdedit /debug on. После перезагрузки: windbg.exe -kl. Убедитесь в корректности.sympath. !ndiskd.help. 25
26 Архитектура WFP. 26 KM Filter Engine TCP/IP стек Сетевой адаптер Приложения IPv4/IPv6 shim TCP/UDP shim ALE shim Stream layer shim IP layer Transport layer ALE layer Stream layer IPSec callout NAT callout IDS callout Parental control callout Anti-virus callout WFP – Windows Filtering Platform.
27 Основные элементы WFP. Shims: – Стек TCP/IP определяет несколько ключевых точек, где происходит фильтрация трафика. Filters: – Ко входящему и исходящему трафику применяется набор правил, задающий действия, применяемые к данным. Layers: – Фильтры групприрутся по уровням и подуровням. – Каждый уровень определяет свой набор полей для фильтрации. – Порядок применения фильтров однозначно определён. Callouts: – Фильтр может принять решение о глубокой инспекции пакета. 27
28 Архитектура IPsec. 28 TCP/IP стек Приложения IP layer Шифрование IP layer Шифрование Transport layer Фильтрация пакетов Transport layer Фильтрация пакетов ALE layer Фильтрация соединений и авторизация ALE layer Фильтрация соединений и авторизация BFE IPSec layers IKE/AuthIP User mode Kernel mode Добавление SA Запрос на обмен ключами Настройка фильтров Запрос на обмен ключами
29 Мониторинг WFP. Aудит: – Конфигурация WFP. – Отброшенные/пропущенные пакеты, соединения, операции с сокетами. – Обмен ключами и отброшенные пакеты в IPsec. Конфигурация WFP доступна через Win32 API. 29
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.