Что-то вроде промежуточного минипорта NDIS в Mac OS X

У нас есть решение промежуточного сетевого уровня, которое в настоящее время реализовано как NDIS IM в Windows. Я изучаю, как эту штуку можно портировать на Mac OS X.

В идеале это должен быть промежуточный драйвер/kext прямо поверх адаптера с поддержкой Ethernet и ниже любого IP/ARP/что-то еще, работающий только с фреймами Ethernet.

Некоторый учебник/образец был бы предпочтительнее, что-то вроде образца сквозного доступа из WDK, хотя любые подсказки будут оценены.

Нет, это не фильтр/брандмауэр, это не впн, это совершенно новый и достаточно сложный промежуточный слой, работающий на этом уровне.


person Vitalie    schedule 25.04.2013    source источник
comment
Вероятно, было бы полезно узнать, какие операции он должен выполнять? Имейте в виду, что эксперты по ядру OSX могут не быть экспертами по ядру Windows, поэтому термины, специфичные для Windows, такие как NDIS или Miniport, мало что значат.   -  person pmdj    schedule 25.04.2013
comment
он должен иметь возможность получать пакеты, отправленные вышележащими уровнями (обрабатывать их и заворачивать в свои собственные пакеты, а затем отправлять их вниз), указывать пакеты вышележащим уровням (распаковывать то, что он получил снизу), а также иметь возможность обсуждать себя с другими, такими как он, в том же сегменте Ethernet (через свой собственный ethertype). также должен быть в состоянии сообщить вышеперечисленным уровням, каков его размер MTU, чтобы освободить место для собственной процедуры упаковки.   -  person Vitalie    schedule 26.04.2013


Ответы (1)


Я предлагаю вам прочитать Руководство по программированию расширений сетевого ядра . См. раздел «Архитектура NKE» в разделе «Обзор расширений сетевого ядра». Похоже, вам нужен фильтр интерфейса или может быть даже виртуальным интерфейсом.
См. также главу «Сеть» (глава 13) в книге «Программирование ядра OS X и iOS» (автор Оле Генри Халворсен и Дуглас Кларк). Насколько я помню, там был пример простого драйвера ethernet-контроллера.

person cody    schedule 26.04.2013
comment
книга - хороший справочник, потому что мне тоже нужна некоторая общая мудрость. Спасибо! - person Vitalie; 26.04.2013
comment
Я прочитал первые 5 глав или около того этой книги... в ней много внимания уделяется написанию конкретных аппаратных драйверов, так что для меня это будет на 90% пустой тратой времени. пока не ясно, куда должен идти мой чисто программный уровень абстракции, учитывая, что ядро ​​состоит из 3 частей. чувствую, будет как в этом анекдоте: - жена, где соль? - Ты идиот, соль в коробке из-под сахара, на которой написано кофе! - person Vitalie; 02.05.2013
comment
Что ж, мой совет касался главы книги «Сеть». Осталось 7 глав, пока вы не доберетесь туда ;) Для общего понимания сначала прочитайте Руководство по программированию NKE. Это поможет вам решить, где должен быть ваш водитель - person cody; 02.05.2013
comment
Ну, мое личное впечатление таково, что я должен перейти к соединениям драйверов Mach (по крайней мере, кажется, как они называются), все вместе ниже подсистемы bsd. в конце концов, ndis в Windows также полностью ниже своей части bsd/tcpip. Итак, NKE кажется пропущенным предположением, но окончательный вывод будет после того, как я закончу книгу. - person Vitalie; 03.05.2013
comment
в конце концов, я сказал, что мы не VPN, не фильтр/брандмауэр, хотя у нас есть некоторые характеристики обоих. но мы должны быть совместимы и иметь возможность сосуществовать с любым возможным типом VPN или фильтра/брандмауэра, которые пользователи хотели бы иметь в своих системах. Таким образом, мы предпочитаем оставить им часть bsd, чтобы они могли подключиться туда, как обычно, и мы делаем нашу работу совершенно прозрачно для них, почти так же, как мы сейчас делаем в Windows. - person Vitalie; 03.05.2013
comment
В порядке. Прочитайте Руководство по программированию ядра - оно более общее. - person cody; 03.05.2013