Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описываются рекомендации, которые Hyper-V расширения расширяемых коммутаторов должны соответствовать управлению пакетами, полученными на пути к расширяемым коммутаторам.
Примечание В интерфейсе расширяемого коммутатора драйверы фильтров NDIS называются расширениями расширяемого коммутатора, а стек драйверов называется стеком расширяемых коммутаторов. Дополнительные сведения о расширениях см. в Hyper-V расширяемые расширения коммутаторов.
Примечание Предполагается, что вы ознакомлены с информацией и схемами в обзоре Hyper-V расширяемого коммутатора и гибридной пересылки.
Расширения должны соответствовать этим рекомендациям по управлению пакетами в пути к данным расширяемого коммутатора:
Расширения, которые вызывают пакеты, должны вызывать NdisFSendNetBufferLists, чтобы инициировать запрос на отправку по пути данных входящего трафика. Это необходимо сделать таким образом, чтобы обеспечить правильную пересылку пакета через расширяемый коммутатор.
Расширение записи может отслеживать пакеты на расширяемом коммутаторе входящего трафика и пути к исходящим данным. Однако этот тип расширения должен всегда пересылать пакеты и не должен удалять пакеты. Кроме того, расширение записи не должно изменять данные пакета, прежде чем он перенаправит пакет.
В пути к данным расширяемого коммутатора ingress расширения фильтрации и пересылки могут выполнять следующие действия:
Расширения фильтрации могут фильтровать трафик пакетов и применять только пользовательские политики портов или коммутаторов для доставки пакетов через расширяемый коммутатор. Когда расширение фильтрует пакеты в потоке данных входящего трафика, оно может применять правила фильтрации, основанные только на исходном порту и подключении сетевого адаптера, из которого прибыл пакет. Эти сведения хранятся в данных OOB структуры NET_BUFFER_LIST пакета и могут быть получены с помощью макроса NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL.
Примечание Пакеты, полученные на пути к данным входящего трафика, не содержат конечные порты. Фильтрация пакетов на основе конечных портов может выполняться только на пакетах, полученных на выходящем векторе передачи данных.
Расширения пересылки могут фильтровать трафик пакетов и применять пользовательские и стандартные политики портов или коммутаторов для доставки пакетов через расширяемый коммутатор. Когда модуль пересылки фильтрует пакеты во входящем пути передачи данных, он применяет правила фильтрации на основе исходного порта, а также целевых портов, которые модуль пересылки назначает пакету.
В расширяемом коммутаторе исходящий путь передачи данных, расширения для фильтрации и пересылки могут выполнять следующие действия:
Расширения фильтрации могут фильтровать трафик пакетов и применять только пользовательские политики портов или коммутаторов для доставки пакетов через расширяемый коммутатор. Когда модуль фильтрации фильтрует пакеты в пути исходящих данных, он может применять правила фильтрации только на основе портов назначения для пакета.
Данные порта назначения хранятся в данных OOB NET_BUFFER_LIST структуры пакета. Расширения получают эти сведения путем вызова функции GetNetBufferListDestinations.
Расширения пересылки могут фильтровать трафик пакетов и применять как пользовательские, так и стандартные политики портов или коммутаторов для доставки пакетов через расширяемый коммутатор. Когда расширение переадресации фильтрует пакеты в выходном потоке данных, оно может применять правила фильтрации на основе исходных или целевых портов пакета.
В зависимости от политик, применяемых к пакету, расширение фильтрации или пересылки может исключить доставку пакета в одного или нескольких адресатов. Дополнительные сведения об этой процедуре см. в разделе Исключение доставки пакетов на порты назначения расширяемого коммутатора.
В зависимости от политик, применяемых для пакета, расширение пересылки может исключить доставку пакета на одно или несколько назначений. Дополнительные сведения см. в гибридной пересылки.
На расширяемом коммутаторе исходящий путь к данным, фильтрация и пересылка расширений не должны выполнять следующие действия:
Измените данные пакета перед его пересылкой по пути исходящего трафика.
Если расширение фильтрации должно изменить данные в пакете, он должен сначала клонировать пакет, не сохраняя назначения портов. Затем расширение должно встроить измененный пакет в путь входящего трафика данных. Это позволяет подчиненным расширениям применять политики к измененному пакету, а расширение пересылки может добавлять портовые назначения.
Если расширению пересылки необходимо изменить данные в пакете, оно должно сначала клонировать пакет перед тем, как назначить порты назначения. После изменения пакета и назначения портов расширение должно внедрить измененный пакет в путь данных входящего трафика.
Для получения дополнительной информации см. клонирование трафика пакетов.
Примечание Если расширение клонирует пакет, полученный на пути к данным исходящего трафика, он может внедрить новый пакет в путь к данным исходящего трафика только в том случае, если он не изменил данные пакета и сохранил исходные данные порта назначения.
Добавьте порты назначения в пакет перед пересылкой пакета.
Заметка расширения для пересылки разрешается добавлять порты назначения в пакеты, полученные на входящем пути передачи данных.
Внедрять новые или клонированные пакеты данных в траекторию исходящих данных.
В стандартном маршруте передачи данных NDIS нерасширяемый коммутатор OOB часто имеет разные форматы в зависимости от того, указывается ли пакет как отправляемый или получаемый. Например, данные OOB NDIS_IPSEC_OFFLOAD_V2_HEADER_NET_BUFFER_LIST_INFO представляют собой объединение структур, специфичных для отправки и получения.
В расширяемом пути передачи данных коммутатора все пакеты проходят через стек драйверов расширения, будучи как отправленными, так и полученными. Из-за этого данные OOB нерасширяемого коммутатора в структуре пакета NET_BUFFER_LIST будут находиться в формате отправки или получения на протяжении всего потока в стеке драйверов.
Формат этих данных OOB зависит от порта расширяемого коммутатора источника, из которого пакет прибыл в расширяемый коммутатор. Если исходный порт подключен к внешнему сетевому адаптеру, данные нераcширяемого коммутатора OOB будут иметь формат приема. Для других портов эти данные OOB будут находиться в формате отправки.
Примечание Если расширение клонирует структуру NET_BUFFER_LIST пакета, необходимо учитывать данные OOB, которые не могут быть расширены, если они добавляются или изменяются. Расширение должно вызывать CopyNetBufferListInfo, чтобы скопировать данные OOB, связанные с расширяемым путем переключения данных из исходного пакета в клонированный пакет. Эта функция будет поддерживать формат отправки или получения OOB при копировании данных в клонированный пакет.
Если расширение удаляет пакет из входящего или исходящего пути данных, оно должно вызывать ReportFilteredNetBufferLists. При вызове этой функции расширяемый интерфейс коммутатора увеличивает счетчики и журналы событий для удаленных или исключенных пакетов.