Сетевая подсистема Windows глазами разработчика. Алексей Пахунов alexeypa@microsoft.com 1 Краткий, неполный и, в основном, неверный обзор. :-)

Презентация:



Advertisements
Похожие презентации
Системные механизмы Windows. Системные механизмы диспетчеризация ловушек, в т.ч. прерываний, DPC (deferred procedure call), APC (asynchronous procedure.
Advertisements

1 Современные системы программирования. Часть 2. Системное и прикладное программное обеспечение Малышенко Владислав Викторович.
Дисциплина: Организация, принципы построения и функционирования компьютерных сетей Лекция 4 Многоуровневые коммуникации в сетях.
Мировые информационные ресурсы Семиуровневая модель сетевого обмена OSI /ISO. Протоколы сети Интернет Тема 6.
Транспортный уровень стека протоколов TCP/IP. К передающей среде Протоколы межсетевых интерфейсов RARP Протоколы инкапсуляции в кадры Ethernet, FR, TR,
Учитель информатики Трашков О.Л.. Для оперативного обмена информацией и совместного использования общих ресурсов компьютеры объединяют в сеть. Ресурсами.
Архитектура операционной системы Microsoft Windows 2000.
Рассматриваемые темы Введение в кластеринг Кластеринг Stateless session beans Кластеринг Stateful session beans Конфигурация кластеринга 2-1.
«Методы защиты межсетевого обмена данными» Вопросы темы: 1. Удаленный доступ. Виды коммутируемых линий. 2. Основные понятия и виды виртуальных частных.
Транспортный уровень стека протоколов TCP/IP. К передающей среде Протоколы межсетевых интерфейсов RARP Протоколы инкапсуляции в кадры Ethernet, FR, TR,
Проф. В.К.Толстых, Технологии разработки Internet- приложений Администрирование IIS 5, 6 сайт, виртуальный каталог, приложение, пул, рабочий.
Smart-Soft Traffic Inspector. Основные возможности Traffic Inspector: комплексное решение для подключения сети или персонального компьютера к сети Интернет.
Криптографический шлюз К -. Основные возможности АПК Континент-К Шифрование и имитозащита данных, передаваемых по открытым каналам связи; Защита внутренних.
Пакеты передачи данных Виды сетевых протоколов. В локальной сети данные передаются от одной рабочей станции к другой блоками, которые называют пакетами.
когда компьютер еще назывался ЭВМ (электронно-вычислительная машина), он мог только вычислять. Процесс обработки информации состоял в операциях над числовыми.
Выполняла студентки группы 19D-411: Макущенко Мария.
Стеки протоколов Борисов В.А. КАСК – филиал ФГБОУ ВПО РАНХ и ГС Красноармейск 2011 г.
Работа протоколов стека TCP/IP Борисов В.А. КАСК – филиал ФГБОУ ВПО РАНХ и ГС Красноармейск 2011 г.
Разграничение доступа к информационным сетям с помощью групповых политик и IPSec.
Фильтрация пакетов. Маршрутизатор. Борисов В.А. КАСК – филиал ФГБОУ ВПО РАНХ и ГС Красноармейск 2011 г.
Транксрипт:

Сетевая подсистема Windows глазами разработчика. Алексей Пахунов 1 Краткий, неполный и, в основном, неверный обзор. :-)

Обо мне. Senior SDE в команде eXtreme Computing Group (XCG), Microsoft Research. Специализация: низкоуровневое и системное программирование; разработка драйверов и компонентов ядра Windows. 3 года в команде Windows Kernel: Wow64 и поддержка AVX. Мой блог: 2

Содержание. 1.Архитектура стека TCP/IP. 2.Путь данных вверх и вниз. 3.Настройки и аппаратное ускорение. 4.Фильтры и мониторинг трафика. 3

АРХИТЕКТУРА СТЕКА TCP/IP. 4

Архитектура стека 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

Стек драйверов в 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 Intermediate Driver Protocol Binding Filter Modules Miniport Adapter Virtual Miniport Protocol Edge

Программные интерфейсы. 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

Обработка принятых пакетов (IP). Сетевой адаптер проверяет целостность пакета и генерирует прерывание. Драйвер адаптера передает его выше по стеку. IP проверяет целостность IP заголовка, восстанавливает пакет из фрагментов, перенаправляет пакет согласно таблице маршрутизации. TCP/UDP проверяет целостность данных пакета, запрашивает повторную передачу и копирует данные в буфер приложения или драйвера: recv(connection, buffer, length, 0); 10

Передача данных (TCP). Приложение указывает на данные для передачи: send(connection, buffer, length, 0); TCP формирует заголовки пакета (или нескольких пакетов). IP формирует свои заголовки и разбивает пакеты на фрагменты, если необходимо. Драйвер адаптера ставит пакеты в очередь, настраивает DMA и запускает передачу пакетов. Сетевой адаптер генерирует прерывание по окончанию передачи. Драйвер адаптера возвращает буферы их владельцу. 11

Как пакеты хранятся в памяти? Каждый пакет описывается списком буферов (NET_BUFFER). – Буфер может располагаться в несмежных физических страницах. Между уровнями передаются указатели. – Данные пакета копируются только один раз. 12 MDL Next [3] Data NET_BUFFER Data MDL Next [1] MDL Next [2] Data

Прямой доступ в память (DMA). Сетевой адаптер поддерживает очереди буферов. – Несколько очередей для приёма и передачи. Драйвер отвечает за выделение памяти, вставляет буферы в очередь и удаляет их оттуда. Сетевой адаптер сохраняет принятые данные в подготовленные драйвером буфера. Дескрипторы указывают сетевому адаптеру как нужно «склеивать» пакеты из нескольких буферов. 13 Data Buffer Next … … Buffer Next … … Data Buffer Next … … Data Сетевой адаптер

Прерывания в Windows. Уровни прерываний (IRQL): – PASSIVE_LEVEL – обычный код; используются приоритеты потоков. – DISPATCH_LEVEL – планировщик потоков и подкачка страниц приостановлены. – DIRQLs – прерывания от менее приоритетных устройств заблокированы. Прерывание обрабатывается в два этапа: – Обработчик прерывания должен выполнить минимум работы максимально быстро. – Отложенный обработчик (DPC) выполняет оставшуюся работу. IRQL нельзя произвольно понижать. Каждое из ядер может находится на своем уровне прерываний. 14

Прерывания в NDIS. Основные прерывания: пакет принят и передан. Обработка принятых пакетов проходит на DISPATCH_LEVEL. – Любой драйвер в стеке имеет право передать обработку в рабочий поток (PASSIVE_LEVEL). Исходящие пакеты формируются на PASSIVE_LEVEL. – Любой драйвер в стеке имеет право повысить IRQL до DISPATCH_LEVEL. 15

Уведомление приложений. Все операции ввода-вывода асинхронны. – Синхронные send() и recv() эмулируются. Уведомление об окончании операции доставляется одним из стандартных способов: – APC, установка события, IO completion port, threadpool, опрос OVERLAPPED. – Драйверы, работающие через Winsock Kernel, используют IRP (I/O Request Packet). 16

НАСТРОЙКИ И АППАРАТНОЕ УСКОРЕНИЕ. 17

Аппаратное ускорение. MAC и VLAN фильтры на сетевом адаптере. Регулирование частоты прерываний (Interrupt Moderation). Выгрузка вычислений на сетевой адаптер: – Вычисление и проверка контрольных сумм (Checksum Offloading). – TCP сегментация (Large Send Offloading). – TCP Chimney Offloading. – Обработка принятых пакетов на нескольких процессорах (Receive-Side Scaling). Поддержка виртуализации. 18

Вкладка «Advanced». – Описывается в.INF файле драйвера. NDIS определяет стандартные параметры. – …но отображаемые названия параметров все равно берутся из.INF файла. 19 Настройка сетевого адаптера (1).

Настройка сетевого адаптера (2). 20 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ Class \{guid}\XXXX

Настройка TCP/IP. Доступные через реестр параметры TCP/IP описаны в TechNet и множестве других источников. HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters: – Адреса. – Размер окна TCP. – Маршрутизация. – Лимиты. –... 21

ФИЛЬТРЫ И СЛЕЖЕНИЕ ЗА ТРАФИКОМ. 22

NDIS фильтры. Делятся на следящие и модифицирующие фильтры. Перехватывают и пакеты, и управляющие OID запросы. – Иными словами – полностью контролируют нижнюю часть стека. Загружаются для всех адаптеров данного типа. – Перехватываемые функции конфигурируются для отдельно для каждого адаптера. 23

Расширение отладчика !ndiskd. Расширение !ndiskd: – Входит в состав Windows Debugging Tools. – Дружественно к неподготовленному пользователю. – Показывает детальную информацию об адаптерах, фильтрах и протоколах. Требует подключения ядерного отладчика. – Достаточно локального подключения. 24

Это проще, чем кажеться... Приостановите BitLocker. bcdedit /debug on. После перезагрузки: windbg.exe -kl. Убедитесь в корректности.sympath. !ndiskd.help. 25

Архитектура 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.

Основные элементы WFP. Shims: – Стек TCP/IP определяет несколько ключевых точек, где происходит фильтрация трафика. Filters: – Ко входящему и исходящему трафику применяется набор правил, задающий действия, применяемые к данным. Layers: – Фильтры групприрутся по уровням и подуровням. – Каждый уровень определяет свой набор полей для фильтрации. – Порядок применения фильтров однозначно определён. Callouts: – Фильтр может принять решение о глубокой инспекции пакета. 27

Архитектура 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 Запрос на обмен ключами Настройка фильтров Запрос на обмен ключами

Мониторинг WFP. Aудит: – Конфигурация WFP. – Отброшенные/пропущенные пакеты, соединения, операции с сокетами. – Обмен ключами и отброшенные пакеты в IPsec. Конфигурация WFP доступна через Win32 API. 29