172 похожих чатов

@Diana_Vamp удалось тебе переопределить NUD для интерфейса? У меня пока

не вышло не одним из трёх способов, зато я слегка окунулся в процесс маршрутизации для актуальных Windows NT ОС.

В Windows Vista был представлен новый сетевой стек, прошлый базировался на сетевом стеке BSD. В Next-Generation TCP/IP стеке Microsoft реализовали унифицированный для IPv4 и IPv6 набор модулей и функций. В частности для IPv4 протокола они позаимствовали из IPv6 Neighbor Unreachability Detection RFC 4861, RFC 7048. Выбор source и destination IP теперь базируется на общих правилах RFC 6724.

Первое, что делает ядро, это запрос в Destination cache, для поиска информации о маршруте, PMTU и тд. Если запись найдена, то пакет маршрутизируется, если нет, то выполняется поиск в RIB. При запросе в RIB возможно два сценария, выбор определяют входные данные. Если передан только destination IP, то будет выбран первый сценарий. Если так же передан source IP или exit-if(такая возможность есть в Test-NetConnection cmdlet из TCP/IP модуля PowerShell), то будет выбран второй сценарий. Значительное отличие в том, как интерпретируется настройка Weak/Strong Host Model RFC 1122 заданная для используемого интерфейса.

В первом сценарии выполняется unconstrained route lookup, для установления next-hop и exit-if. Выбор source IP выполняется согласно RFC 6724, на процесс влияют настройки Weak/Strong Host Model для exit-if. В случае Weak Host Model в процессе выбора будут участвовать все IP адреса узла. В случае Strong Host Model, только IP адреса назначенные на exit-if.

Во втором сценарии дополнительно передаётся source IP или exit-if. В этом случае нам известен source interface, поэтому решение о том, будет выполнен unconstrained или constrained route lookup принимается на основе настройки Weak/Strong Host Model для source interface. При Weak Host Model будет выполнен unconstrained route lookup, при этом exit-if может отличаться от source interface. При Strong Host Model будет выполнен constrained route lookup, при этом exit-if не может отличаться от source interface. Longest Prefix Match будет выполняться только для маршрутов, у которых exit-if = source interface. Так же ядро может выбрать маршрут с большей метрикой, несмотря на альтернативный маршрут с меньшей метрикой, исходя из source IP.

Как только next-hop установлен для него выполняется процедура Neighbor Unreachable Detection RFC 4861. В зависимости от состояния next-hop возникает несколько возможных сценариев. Если в neighbor cache запись для next-hop отсутствует, то она создаётся согласно RFC 4861. Если в процессе NUD MAC адрес next-hop установить не удастся, то ядро вернёт приложению ошибку. При этом в neighbor cache запись об узле сохранится со статусом unreachable согласно RFC 7048, а не incomplete RFC 4861.

При повторном обращении к тому же next-hop, ядро выполнит всю процедуру с самого начала, с запроса в Destination cache до точки проверки состояния next-hop в neighbor cache. При обнаружении в neighbor cache записи с состоянием unreachable будет выполнена повторная попытка обнаружить MAC адрес и если это не удастся, то ядро выполнит поиск нового маршрута.

При выборе нового маршрута будет выбран и новый source IP согласно RFC 6724, с учётом Weak/Strong Host Model для нового exit-if. На этом этапе может быть выбран менее специфичный маршрут, даже не смотря на то, что есть более специфичный, если next-hop в менее специфичном маршруте достижим. При этом в зависимости от настройки Ignore Default Route для exit-if в качестве маршрута может выступать и default route.

P/S/ В тексте могут быть ошибки или не точности, поскольку информация получена на основе тестов, трассировок событий ядра, статей Microsoft и анализа RFC 1122 и IPv6 RFC 4861, RFC 7048, RFC 6724 с учётом возможной их реализации для IPv4 протокола.

4 ответов

8 просмотров

привет, нет, на самом деле это потеряло актуальность именно для меня, потому что все-таки проблема была в гипервизоре.... Мы собственно дальше тесты и не вели, но на форуме технет саппорт майкрософта - был кто-то у кого работало по стронг модели, и на каком-то обновлении десятки сломалось

Roman-Polukhin Автор вопроса
Diana
привет, нет, на самом деле это потеряло актуальнос...

Странно, что ИБшники не возбуждаются, в текущей конфигурации возникает packet leak, если сетевой фильтр конечно не фильтрует всё на клиенте.

Roman Polukhin
Странно, что ИБшники не возбуждаются, в текущей ко...

там рдп попой в интернет торчит)))) какие иб?)

Похожие вопросы

Обсуждают сегодня

Комрады, посоветуйте, куда копать? Стал прикручивать кастомизацию тем. В OnShow главной главной формы пытаюсь загрузить из файла настроек и применить тему (на скрине, как долж...
Ed Doc
13
OnShow один раз вызывается? или возможен Hide?
Iluha Companets
14
Такс, блин, таки кто-то знает, каким образом работают макросы stdin/stdout/stderr? Я влез в stdio.h, там определения нет, отладил через асмокод - вызывается функция со странны...
The Bird of Hermes
18
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Всем привет, на линуксе лучше на fasm или nasm учиться писать для начала ?
meszjol
14
Если у меня есть такой класс: Object = {} function Object:new(a_name, a_transform, a_color, a_mesh, a_material, a_shader, a_textures) local private = {} private.n...
Cuarno Vile
4
@sand_witch скорее к тебе вопрос, добавил в .cabal webdriver-w3c и вот такая ошибка от nix develop error: Package ‘script-monad-0.0.4’ in /nix/store/7vdxbra0kwbr0ys0kc5...
Fedor
5
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
Карта сайта