SlideShare a Scribd company logo
Сетевая подсистема Windows глазами разработчика. Алексей Пахунов alexeypa@microsoft.com 1 Краткий, неполный и, в основном, неверный обзор. :-)
Обо мне. Senior SDE в команде eXtreme Computing Group (XCG), Microsoft Research. Специализация: низкоуровневое и системное программирование; разработка драйверов и компонентов ядра Windows. 3 года в команде Windows Kernel: Wow64 и поддержка AVX. Мой блог: http://blog.not-a-kernel-guy.com. 2
Содержание. Архитектура стека TCP/IP. Путь данных вверх и вниз. Настройки и аппаратное ускорение. Фильтры и мониторинг трафика. 3
Архитектура стека TCP/IP. 4
Архитектура стека TCP/IP. 5 Applications API RPC Windows Networking Windows Internet API Windows Sockets NetBIOS Support HTTP Server API User mode Kernel mode afd.sys netbt.sys Winsock Kernel http.sys TCP/UDP IP ICMP IP Forwarding/Filtering ARP Internet Layer NDIS Wrapper Network Interface Layer NDIS WAN Miniport Wrapper ATM Ethernet Wi-Fi ISDN PPTP … …
Стек драйверовв NDIS 6.0. Отдельный стек над каждым сетевым адаптером. Многопортовые сетевые адаптеры могут запросить отдельный стек для каждого порта. Сетевой адаптер может привязывается к нескольким протоколам. Фильтры устанавливаются отдельно над каждым сетевым адаптером. 6 Protocol 1 Protocol 2 Filter Module 1 Filter Module 3 Filter Module 2 Filter Module 4 Miniport Adapter 1 Miniport Adapter 2
Промежуточные драйверы. Промежуточный драйвер объединяет два стека в один. Верхний стек видит виртуальный сетевой адаптер. Нижний стек привязывается  к промежуточному драйверу как к протоколу. 7 Protocol Binding Filter Modules Intermediate Driver Filter Modules Virtual Miniport Protocol Edge Miniport Adapter
Программные интерфейсы. 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 NET_BUFFER Data MDL MDL MDL Next Next Next [3] [1] [2] Data Data
Прямой доступ в память (DMA). Сетевой адаптер поддерживает очереди буферов. Несколько очередей для приёма и передачи. Драйвер отвечает за выделение памяти, вставляет буферы в очередь и удаляет их оттуда. Сетевой адаптер сохраняет принятые данные вподготовленные драйвером буфера. Дескрипторы указывают сетевому адаптеру как нужно «склеивать» пакеты из нескольких буферов. 13 Сетевой адаптер Data Buffer Buffer Buffer Next Next Next … … … Data 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_MACHINEYSTEMurrentControlSetontrollassguid}XXX
Настройка TCP/IP. Доступные через реестр параметры TCP/IP описаны в TechNet и множестве других источников. HKLMYSTEMurrentControlSetervicescpiparameters: Адреса. Размер окна 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 Приложения Anti-virus callout KM Filter Engine TCP/IP стек Stream layer shim Stream layer Parental control callout ALE shim ALE layer IDS callout TCP/UDP shim Transport layer WFP – Windows Filtering Platform. NAT callout IPv4/IPv6 shim IP layer IPSec callout Сетевой адаптер
Основные элементы WFP. Shims: Стек TCP/IP определяет несколько ключевых точек, где происходит фильтрация трафика. Filters: Ко входящему и исходящему трафику применяется набор правил, задающий действия, применяемые к данным. Layers: Фильтры групприрутся по уровням и подуровням. Каждый уровень определяет свой набор полей для фильтрации. Порядок применения фильтров однозначно определён. Callouts: Фильтр может принять решение о глубокой инспекции пакета. 27
Архитектура IPsec. 28 Запрос на обмен  ключами BFE IKE/AuthIP Приложения IPSec layers User mode Kernel mode Настройка фильтров TCP/IP стек ALE layer Фильтрация соединений и авторизация Добавление SA Запрос на обмен ключами Transport layer Фильтрация пакетов IP layer Шифрование
Мониторинг WFP. Aудит: Конфигурация WFP. Отброшенные/пропущенные пакеты, соединения, операции с сокетами. Обмен ключами и отброшенные пакеты в IPsec. Конфигурация WFP доступна через Win32 API. 29

More Related Content

What's hot

Презентация 6
Презентация 6Презентация 6
Презентация 6
Nikita Zablotskiy
 
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуре
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуреСХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуре
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуреDEPO Computers
 
Компьютерные сети
Компьютерные сетиКомпьютерные сети
Компьютерные сети
Гимназия
 
Локальные и глобальные компьютерные сети
Локальные и глобальные компьютерные сетиЛокальные и глобальные компьютерные сети
Локальные и глобальные компьютерные сетиMaxim Demyanov
 
Лекция №12 Организация ЭВМ и систем
Лекция №12 Организация ЭВМ и системЛекция №12 Организация ЭВМ и систем
Лекция №12 Организация ЭВМ и системpianist2317
 
Кластер высокой готовности @ Лаборатория 50
Кластер высокой готовности @ Лаборатория 50Кластер высокой готовности @ Лаборатория 50
Кластер высокой готовности @ Лаборатория 50
lab50
 
09 server mgmt_ii_ru
09 server mgmt_ii_ru09 server mgmt_ii_ru
09 server mgmt_ii_ru
mcroitor
 
Nets
NetsNets
NetsAnna
 
Презентация 5
Презентация 5Презентация 5
Презентация 5
Nikita Zablotskiy
 
Ibm megatrade шиндак xiv v3.0
Ibm megatrade шиндак xiv v3.0Ibm megatrade шиндак xiv v3.0
Ibm megatrade шиндак xiv v3.0Nick Turunov
 
EZchip Open Flow switch by ARCCN
EZchip Open Flow switch by ARCCN  EZchip Open Flow switch by ARCCN
EZchip Open Flow switch by ARCCN
ARCCN
 
08 server mgmt_ru
08 server mgmt_ru08 server mgmt_ru
08 server mgmt_ru
mcroitor
 
презентация для википедии
презентация для википедиипрезентация для википедии
презентация для википедииEvgenia Kalinina
 
Lokalnye kompyuternye seti
Lokalnye kompyuternye setiLokalnye kompyuternye seti
Lokalnye kompyuternye setiskorpah749
 

What's hot (16)

Презентация 6
Презентация 6Презентация 6
Презентация 6
 
Локальная компьютерная сеть
Локальная компьютерная сетьЛокальная компьютерная сеть
Локальная компьютерная сеть
 
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуре
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуреСХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуре
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуре
 
Компьютерные сети
Компьютерные сетиКомпьютерные сети
Компьютерные сети
 
Локальные и глобальные компьютерные сети
Локальные и глобальные компьютерные сетиЛокальные и глобальные компьютерные сети
Локальные и глобальные компьютерные сети
 
Лекция №12 Организация ЭВМ и систем
Лекция №12 Организация ЭВМ и системЛекция №12 Организация ЭВМ и систем
Лекция №12 Организация ЭВМ и систем
 
Кластер высокой готовности @ Лаборатория 50
Кластер высокой готовности @ Лаборатория 50Кластер высокой готовности @ Лаборатория 50
Кластер высокой готовности @ Лаборатория 50
 
09 server mgmt_ii_ru
09 server mgmt_ii_ru09 server mgmt_ii_ru
09 server mgmt_ii_ru
 
ПК КВГ
ПК КВГПК КВГ
ПК КВГ
 
Nets
NetsNets
Nets
 
Презентация 5
Презентация 5Презентация 5
Презентация 5
 
Ibm megatrade шиндак xiv v3.0
Ibm megatrade шиндак xiv v3.0Ibm megatrade шиндак xiv v3.0
Ibm megatrade шиндак xiv v3.0
 
EZchip Open Flow switch by ARCCN
EZchip Open Flow switch by ARCCN  EZchip Open Flow switch by ARCCN
EZchip Open Flow switch by ARCCN
 
08 server mgmt_ru
08 server mgmt_ru08 server mgmt_ru
08 server mgmt_ru
 
презентация для википедии
презентация для википедиипрезентация для википедии
презентация для википедии
 
Lokalnye kompyuternye seti
Lokalnye kompyuternye setiLokalnye kompyuternye seti
Lokalnye kompyuternye seti
 

Viewers also liked

ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....rit2011
 
Reciprocate to accumulate july 2011
Reciprocate to accumulate   july 2011Reciprocate to accumulate   july 2011
Reciprocate to accumulate july 2011
Colin Campbell
 
как стать хорошим веб технологом. нарек мкртчян. зал 4
как стать хорошим веб технологом. нарек мкртчян. зал 4как стать хорошим веб технологом. нарек мкртчян. зал 4
как стать хорошим веб технологом. нарек мкртчян. зал 4rit2011
 
разработчики с марса, пользователи с венеры. место встречи – сайт. к. стернин...
разработчики с марса, пользователи с венеры. место встречи – сайт. к. стернин...разработчики с марса, пользователи с венеры. место встречи – сайт. к. стернин...
разработчики с марса, пользователи с венеры. место встречи – сайт. к. стернин...rit2011
 
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4rit2011
 
Lidkurping 06.07.11
Lidkurping   06.07.11Lidkurping   06.07.11
Lidkurping 06.07.11
Colin Campbell
 
Introduction to Learning Circles & Nopros
Introduction to Learning Circles & NoprosIntroduction to Learning Circles & Nopros
Introduction to Learning Circles & Nopros
Colin Campbell
 
Edinburgh lc3 presentationrp
Edinburgh lc3 presentationrpEdinburgh lc3 presentationrp
Edinburgh lc3 presentationrp
Colin Campbell
 
как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...
как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...
как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...rit2011
 

Viewers also liked (9)

ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
 
Reciprocate to accumulate july 2011
Reciprocate to accumulate   july 2011Reciprocate to accumulate   july 2011
Reciprocate to accumulate july 2011
 
как стать хорошим веб технологом. нарек мкртчян. зал 4
как стать хорошим веб технологом. нарек мкртчян. зал 4как стать хорошим веб технологом. нарек мкртчян. зал 4
как стать хорошим веб технологом. нарек мкртчян. зал 4
 
разработчики с марса, пользователи с венеры. место встречи – сайт. к. стернин...
разработчики с марса, пользователи с венеры. место встречи – сайт. к. стернин...разработчики с марса, пользователи с венеры. место встречи – сайт. к. стернин...
разработчики с марса, пользователи с венеры. место встречи – сайт. к. стернин...
 
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
 
Lidkurping 06.07.11
Lidkurping   06.07.11Lidkurping   06.07.11
Lidkurping 06.07.11
 
Introduction to Learning Circles & Nopros
Introduction to Learning Circles & NoprosIntroduction to Learning Circles & Nopros
Introduction to Learning Circles & Nopros
 
Edinburgh lc3 presentationrp
Edinburgh lc3 presentationrpEdinburgh lc3 presentationrp
Edinburgh lc3 presentationrp
 
как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...
как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...
как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...
 

Similar to краткий, неполный и в основном неверный обзор сетевой подсистемы в Windows. алексей пахунов. зал 2

Занятие № 7. Общая характеристика и понятия Windows. Файловые системы ОС семе...
Занятие № 7. Общая характеристика и понятия Windows. Файловые системы ОС семе...Занятие № 7. Общая характеристика и понятия Windows. Файловые системы ОС семе...
Занятие № 7. Общая характеристика и понятия Windows. Файловые системы ОС семе...
Aibek9
 
Qlogic: Технологии Ethernet
Qlogic: Технологии EthernetQlogic: Технологии Ethernet
Qlogic: Технологии Ethernet
Expolink
 
Инфрраструктура ЦОД - интерконнект от Qlogik
Инфрраструктура ЦОД - интерконнект от QlogikИнфрраструктура ЦОД - интерконнект от Qlogik
Инфрраструктура ЦОД - интерконнект от Qlogik
Expolink
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
Yandex
 
MUM Построение сети доступа на основе технологий DHCP + Radius на Mikrotik
MUM Построение сети доступа на основе технологий DHCP + Radius на Mikrotik MUM Построение сети доступа на основе технологий DHCP + Radius на Mikrotik
MUM Построение сети доступа на основе технологий DHCP + Radius на Mikrotik
Naim Shafiev
 
Повышение производительности программного коммутатора в сетях SDN
Повышение производительности программного коммутатора в сетях SDNПовышение производительности программного коммутатора в сетях SDN
Повышение производительности программного коммутатора в сетях SDN
ARCCN
 
Технополис: Сетевой стек
Технополис: Сетевой стекТехнополис: Сетевой стек
Технополис: Сетевой стек
Dmitry Samsonov
 
Операционные системы
Операционные системыОперационные системы
Операционные системыyaevents
 
SDN: Что это? Что оно нам дает и как его использовать
SDN: Что это? Что оно нам дает и как его использоватьSDN: Что это? Что оно нам дает и как его использовать
SDN: Что это? Что оно нам дает и как его использовать
Cisco Russia
 
Создание и развитие отечественной платформы с открытым программным кодом для ...
Создание и развитие отечественной платформы с открытым программным кодом для ...Создание и развитие отечественной платформы с открытым программным кодом для ...
Создание и развитие отечественной платформы с открытым программным кодом для ...
ARCCN
 
Cassandra db
Cassandra dbCassandra db
Cassandra db
Andrei Poliakov
 
Решения DEPO Computers для консолидации данных и серверной виртуализации на б...
Решения DEPO Computers для консолидации данных и серверной виртуализации на б...Решения DEPO Computers для консолидации данных и серверной виртуализации на б...
Решения DEPO Computers для консолидации данных и серверной виртуализации на б...DEPO Computers
 
Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...
Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...
Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...
sami_11
 
Введение в сетевые технологии
Введение в сетевые технологииВведение в сетевые технологии
Введение в сетевые технологии
Unguryan Vitaliy
 
Обратная разработка бинарных форматов с помощью Kaitai Struct
Обратная разработка бинарных форматов с помощью Kaitai StructОбратная разработка бинарных форматов с помощью Kaitai Struct
Обратная разработка бинарных форматов с помощью Kaitai Struct
Positive Hack Days
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Mikhail Kurnosov
 
Дмитрий Меньшиков "Топ-10 фейлов на реальном highload проекте"
Дмитрий Меньшиков "Топ-10 фейлов на реальном highload проекте"Дмитрий Меньшиков "Топ-10 фейлов на реальном highload проекте"
Дмитрий Меньшиков "Топ-10 фейлов на реальном highload проекте"
Fwdays
 
Локальные и глобальные вычислительные сети
Локальные и глобальные вычислительные сетиЛокальные и глобальные вычислительные сети
Локальные и глобальные вычислительные сетиАндрей Сергеевич
 

Similar to краткий, неполный и в основном неверный обзор сетевой подсистемы в Windows. алексей пахунов. зал 2 (20)

Занятие № 7. Общая характеристика и понятия Windows. Файловые системы ОС семе...
Занятие № 7. Общая характеристика и понятия Windows. Файловые системы ОС семе...Занятие № 7. Общая характеристика и понятия Windows. Файловые системы ОС семе...
Занятие № 7. Общая характеристика и понятия Windows. Файловые системы ОС семе...
 
Qlogic: Технологии Ethernet
Qlogic: Технологии EthernetQlogic: Технологии Ethernet
Qlogic: Технологии Ethernet
 
Инфрраструктура ЦОД - интерконнект от Qlogik
Инфрраструктура ЦОД - интерконнект от QlogikИнфрраструктура ЦОД - интерконнект от Qlogik
Инфрраструктура ЦОД - интерконнект от Qlogik
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
 
MUM Построение сети доступа на основе технологий DHCP + Radius на Mikrotik
MUM Построение сети доступа на основе технологий DHCP + Radius на Mikrotik MUM Построение сети доступа на основе технологий DHCP + Radius на Mikrotik
MUM Построение сети доступа на основе технологий DHCP + Radius на Mikrotik
 
Повышение производительности программного коммутатора в сетях SDN
Повышение производительности программного коммутатора в сетях SDNПовышение производительности программного коммутатора в сетях SDN
Повышение производительности программного коммутатора в сетях SDN
 
Hpvc
HpvcHpvc
Hpvc
 
Технополис: Сетевой стек
Технополис: Сетевой стекТехнополис: Сетевой стек
Технополис: Сетевой стек
 
Операционные системы
Операционные системыОперационные системы
Операционные системы
 
SDN: Что это? Что оно нам дает и как его использовать
SDN: Что это? Что оно нам дает и как его использоватьSDN: Что это? Что оно нам дает и как его использовать
SDN: Что это? Что оно нам дает и как его использовать
 
Создание и развитие отечественной платформы с открытым программным кодом для ...
Создание и развитие отечественной платформы с открытым программным кодом для ...Создание и развитие отечественной платформы с открытым программным кодом для ...
Создание и развитие отечественной платформы с открытым программным кодом для ...
 
Cassandra db
Cassandra dbCassandra db
Cassandra db
 
Решения DEPO Computers для консолидации данных и серверной виртуализации на б...
Решения DEPO Computers для консолидации данных и серверной виртуализации на б...Решения DEPO Computers для консолидации данных и серверной виртуализации на б...
Решения DEPO Computers для консолидации данных и серверной виртуализации на б...
 
Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...
Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...
Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...
 
Введение в сетевые технологии
Введение в сетевые технологииВведение в сетевые технологии
Введение в сетевые технологии
 
Data storage systems
Data storage systemsData storage systems
Data storage systems
 
Обратная разработка бинарных форматов с помощью Kaitai Struct
Обратная разработка бинарных форматов с помощью Kaitai StructОбратная разработка бинарных форматов с помощью Kaitai Struct
Обратная разработка бинарных форматов с помощью Kaitai Struct
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
 
Дмитрий Меньшиков "Топ-10 фейлов на реальном highload проекте"
Дмитрий Меньшиков "Топ-10 фейлов на реальном highload проекте"Дмитрий Меньшиков "Топ-10 фейлов на реальном highload проекте"
Дмитрий Меньшиков "Топ-10 фейлов на реальном highload проекте"
 
Локальные и глобальные вычислительные сети
Локальные и глобальные вычислительные сетиЛокальные и глобальные вычислительные сети
Локальные и глобальные вычислительные сети
 

More from rit2011

классификация Ddos. александр лямин, артем гавриченков. зал 2
классификация Ddos. александр лямин, артем гавриченков. зал 2классификация Ddos. александр лямин, артем гавриченков. зал 2
классификация Ddos. александр лямин, артем гавриченков. зал 2rit2011
 
Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2
Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2
Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2rit2011
 
как объяснить заказчику, что он не прав. денис тучин. зал 3
как объяснить заказчику, что он не прав. денис тучин. зал 3как объяснить заказчику, что он не прав. денис тучин. зал 3
как объяснить заказчику, что он не прав. денис тучин. зал 3rit2011
 
классификация Ddos. александр лямин, артем гавриченков. зал 2
классификация Ddos. александр лямин, артем гавриченков. зал 2классификация Ddos. александр лямин, артем гавриченков. зал 2
классификация Ddos. александр лямин, артем гавриченков. зал 2rit2011
 
Kpi разработчика vs kpi разработки. евгения фирсова. зал 1
Kpi разработчика vs kpi разработки. евгения фирсова. зал 1Kpi разработчика vs kpi разработки. евгения фирсова. зал 1
Kpi разработчика vs kpi разработки. евгения фирсова. зал 1rit2011
 
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....rit2011
 
что и почему вы должны программировать на Erlang.максим лапшин. зал 4
что и почему вы должны программировать на Erlang.максим лапшин. зал 4что и почему вы должны программировать на Erlang.максим лапшин. зал 4
что и почему вы должны программировать на Erlang.максим лапшин. зал 4rit2011
 
I pv6 малоизвестные подробности. андрей пантюхин. зал 2
I pv6   малоизвестные подробности. андрей пантюхин. зал 2I pv6   малоизвестные подробности. андрей пантюхин. зал 2
I pv6 малоизвестные подробности. андрей пантюхин. зал 2rit2011
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...rit2011
 
выращиваем интерфейс своими руками. ольга павлова. зал 3
выращиваем интерфейс своими руками. ольга павлова. зал 3выращиваем интерфейс своими руками. ольга павлова. зал 3
выращиваем интерфейс своими руками. ольга павлова. зал 3rit2011
 
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2rit2011
 
от Flash к html5. александр бацуев. зал 4
от Flash к html5. александр бацуев. зал 4от Flash к html5. александр бацуев. зал 4
от Flash к html5. александр бацуев. зал 4
rit2011
 
Ie9 и ie10. алекс могилевский. зал 2
Ie9 и ie10. алекс могилевский. зал 2Ie9 и ie10. алекс могилевский. зал 2
Ie9 и ie10. алекс могилевский. зал 2
rit2011
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...rit2011
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...rit2011
 
рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...
рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...
рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...rit2011
 
типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2
типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2
типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2rit2011
 
круглый стол по найму. александр зиза. зал 2
круглый стол по найму. александр зиза. зал 2круглый стол по найму. александр зиза. зал 2
круглый стол по найму. александр зиза. зал 2rit2011
 
бэм! в.харисов, с. бережной. зал 2
бэм! в.харисов, с. бережной. зал 2бэм! в.харисов, с. бережной. зал 2
бэм! в.харисов, с. бережной. зал 2
rit2011
 
круглый стол по найму. александр зиза. зал 2
круглый стол по найму. александр зиза. зал 2круглый стол по найму. александр зиза. зал 2
круглый стол по найму. александр зиза. зал 2rit2011
 

More from rit2011 (20)

классификация Ddos. александр лямин, артем гавриченков. зал 2
классификация Ddos. александр лямин, артем гавриченков. зал 2классификация Ddos. александр лямин, артем гавриченков. зал 2
классификация Ddos. александр лямин, артем гавриченков. зал 2
 
Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2
Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2
Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2
 
как объяснить заказчику, что он не прав. денис тучин. зал 3
как объяснить заказчику, что он не прав. денис тучин. зал 3как объяснить заказчику, что он не прав. денис тучин. зал 3
как объяснить заказчику, что он не прав. денис тучин. зал 3
 
классификация Ddos. александр лямин, артем гавриченков. зал 2
классификация Ddos. александр лямин, артем гавриченков. зал 2классификация Ddos. александр лямин, артем гавриченков. зал 2
классификация Ddos. александр лямин, артем гавриченков. зал 2
 
Kpi разработчика vs kpi разработки. евгения фирсова. зал 1
Kpi разработчика vs kpi разработки. евгения фирсова. зал 1Kpi разработчика vs kpi разработки. евгения фирсова. зал 1
Kpi разработчика vs kpi разработки. евгения фирсова. зал 1
 
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
 
что и почему вы должны программировать на Erlang.максим лапшин. зал 4
что и почему вы должны программировать на Erlang.максим лапшин. зал 4что и почему вы должны программировать на Erlang.максим лапшин. зал 4
что и почему вы должны программировать на Erlang.максим лапшин. зал 4
 
I pv6 малоизвестные подробности. андрей пантюхин. зал 2
I pv6   малоизвестные подробности. андрей пантюхин. зал 2I pv6   малоизвестные подробности. андрей пантюхин. зал 2
I pv6 малоизвестные подробности. андрей пантюхин. зал 2
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
 
выращиваем интерфейс своими руками. ольга павлова. зал 3
выращиваем интерфейс своими руками. ольга павлова. зал 3выращиваем интерфейс своими руками. ольга павлова. зал 3
выращиваем интерфейс своими руками. ольга павлова. зал 3
 
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
 
от Flash к html5. александр бацуев. зал 4
от Flash к html5. александр бацуев. зал 4от Flash к html5. александр бацуев. зал 4
от Flash к html5. александр бацуев. зал 4
 
Ie9 и ie10. алекс могилевский. зал 2
Ie9 и ie10. алекс могилевский. зал 2Ie9 и ie10. алекс могилевский. зал 2
Ie9 и ie10. алекс могилевский. зал 2
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
 
рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...
рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...
рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...
 
типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2
типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2
типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2
 
круглый стол по найму. александр зиза. зал 2
круглый стол по найму. александр зиза. зал 2круглый стол по найму. александр зиза. зал 2
круглый стол по найму. александр зиза. зал 2
 
бэм! в.харисов, с. бережной. зал 2
бэм! в.харисов, с. бережной. зал 2бэм! в.харисов, с. бережной. зал 2
бэм! в.харисов, с. бережной. зал 2
 
круглый стол по найму. александр зиза. зал 2
круглый стол по найму. александр зиза. зал 2круглый стол по найму. александр зиза. зал 2
круглый стол по найму. александр зиза. зал 2
 

краткий, неполный и в основном неверный обзор сетевой подсистемы в Windows. алексей пахунов. зал 2

  • 1. Сетевая подсистема Windows глазами разработчика. Алексей Пахунов alexeypa@microsoft.com 1 Краткий, неполный и, в основном, неверный обзор. :-)
  • 2. Обо мне. Senior SDE в команде eXtreme Computing Group (XCG), Microsoft Research. Специализация: низкоуровневое и системное программирование; разработка драйверов и компонентов ядра Windows. 3 года в команде Windows Kernel: Wow64 и поддержка AVX. Мой блог: http://blog.not-a-kernel-guy.com. 2
  • 3. Содержание. Архитектура стека TCP/IP. Путь данных вверх и вниз. Настройки и аппаратное ускорение. Фильтры и мониторинг трафика. 3
  • 5. Архитектура стека TCP/IP. 5 Applications API RPC Windows Networking Windows Internet API Windows Sockets NetBIOS Support HTTP Server API User mode Kernel mode afd.sys netbt.sys Winsock Kernel http.sys TCP/UDP IP ICMP IP Forwarding/Filtering ARP Internet Layer NDIS Wrapper Network Interface Layer NDIS WAN Miniport Wrapper ATM Ethernet Wi-Fi ISDN PPTP … …
  • 6. Стек драйверовв NDIS 6.0. Отдельный стек над каждым сетевым адаптером. Многопортовые сетевые адаптеры могут запросить отдельный стек для каждого порта. Сетевой адаптер может привязывается к нескольким протоколам. Фильтры устанавливаются отдельно над каждым сетевым адаптером. 6 Protocol 1 Protocol 2 Filter Module 1 Filter Module 3 Filter Module 2 Filter Module 4 Miniport Adapter 1 Miniport Adapter 2
  • 7. Промежуточные драйверы. Промежуточный драйвер объединяет два стека в один. Верхний стек видит виртуальный сетевой адаптер. Нижний стек привязывается к промежуточному драйверу как к протоколу. 7 Protocol Binding Filter Modules Intermediate Driver Filter Modules Virtual Miniport Protocol Edge Miniport Adapter
  • 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
  • 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 NET_BUFFER Data MDL MDL MDL Next Next Next [3] [1] [2] Data Data
  • 13. Прямой доступ в память (DMA). Сетевой адаптер поддерживает очереди буферов. Несколько очередей для приёма и передачи. Драйвер отвечает за выделение памяти, вставляет буферы в очередь и удаляет их оттуда. Сетевой адаптер сохраняет принятые данные вподготовленные драйвером буфера. Дескрипторы указывают сетевому адаптеру как нужно «склеивать» пакеты из нескольких буферов. 13 Сетевой адаптер Data Buffer Buffer Buffer Next Next Next … … … Data 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
  • 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_MACHINEYSTEMurrentControlSetontrollassguid}XXX
  • 21. Настройка TCP/IP. Доступные через реестр параметры TCP/IP описаны в TechNet и множестве других источников. HKLMYSTEMurrentControlSetervicescpiparameters: Адреса. Размер окна 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 Приложения Anti-virus callout KM Filter Engine TCP/IP стек Stream layer shim Stream layer Parental control callout ALE shim ALE layer IDS callout TCP/UDP shim Transport layer WFP – Windows Filtering Platform. NAT callout IPv4/IPv6 shim IP layer IPSec callout Сетевой адаптер
  • 27. Основные элементы WFP. Shims: Стек TCP/IP определяет несколько ключевых точек, где происходит фильтрация трафика. Filters: Ко входящему и исходящему трафику применяется набор правил, задающий действия, применяемые к данным. Layers: Фильтры групприрутся по уровням и подуровням. Каждый уровень определяет свой набор полей для фильтрации. Порядок применения фильтров однозначно определён. Callouts: Фильтр может принять решение о глубокой инспекции пакета. 27
  • 28. Архитектура IPsec. 28 Запрос на обмен ключами BFE IKE/AuthIP Приложения IPSec layers User mode Kernel mode Настройка фильтров TCP/IP стек ALE layer Фильтрация соединений и авторизация Добавление SA Запрос на обмен ключами Transport layer Фильтрация пакетов IP layer Шифрование
  • 29. Мониторинг WFP. Aудит: Конфигурация WFP. Отброшенные/пропущенные пакеты, соединения, операции с сокетами. Обмен ключами и отброшенные пакеты в IPsec. Конфигурация WFP доступна через Win32 API. 29

Editor's Notes

  1. XCG: http://research.microsoft.com/en-us/labs/xcg/default.aspx
  2. Фактически это интерфейс между Data Link Layer и Network Layer
  3. Winsock: http://msdn.microsoft.com/en-us/library/ms740673(VS.85).aspxWinsock Kernel: http://msdn.microsoft.com/en-us/library/ff571084(v=VS.85).aspxIP Helper: http://msdn.microsoft.com/en-us/library/aa366073(VS.85).aspx, RPC: http://msdn.microsoft.com/en-us/library/aa378651(VS.85).aspxWnet: http://msdn.microsoft.com/en-us/library/aa385397(v=VS.85).aspxWinInet: http://msdn.microsoft.com/en-us/library/aa385331(VS.85).aspxWinHTTP: http://msdn.microsoft.com/en-us/library/aa384273(VS.85).aspxHTTP Server API: http://msdn.microsoft.com/en-us/library/aa364510(v=VS.85).aspx
  4. Кроме того, обработчик прерывания выполняется в контексте произвольного потока.
  5. Здесь нужно рассказать про NDIS Interrupt Throttling.
  6. Рассказать, как передается offloading информация между драйверами в стеке.TCP & UDP Checksum Offloading разный для IPv4 & IPv6.Поддержка виртуализации.Сетевой адаптер с поддержкой Virtual Machine Queue (VMQ) умеет:Фильтровать пакеты по адресу назначения и тегу VLAN до копирования данных пакета в память.Копировать данные пакета напрямую в память гостевой ОС.Сигнализировать приход пакетов, предназначенных разным виртуальными машинам, разным процессорам.
  7. Следует помнить, однако, что возможность сделать не означает того, что это следует делать.
  8. TCP/IP Configuration Parameters: http://technet.microsoft.com/en-us/library/cc739819(WS.10).aspx
  9. "C:\\Program Files\\Debugging Tools for Windows (x64)\\windbg.exe" -kl -y SRV*c:\\symbols*http://msdl.microsoft.com/download/symbols
  10. Вот здесь приводится гораздо более детальная схема: http://msdn.microsoft.com/en-us/library/aa366509(v=VS.85).aspxUser mode часть вообще не показана.ALE - Application Layer Enforcement.IDS – Intrusion Detection Systems.
  11. http://msdn.microsoft.com/en-us/library/aa363977(v=VS.85).aspx
  12. http://msdn.microsoft.com/en-us/library/bb736264(v=VS.85).aspxSA – Security Association.
  13. Auditing: http://msdn.microsoft.com/en-us/library/bb309058(v=VS.85).aspx