패킷의 확장 가능한 스위치 원본 포트 데이터 수정

Hyper-V 확장 가능한 스위치 소스 포트는 NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO 구조의 SourcePortId 멤버에 의해 지정됩니다. 이 구조체는 패킷의 NET_BUFFER_LIST 구조체의 OOB(out-of-band) 전달 컨텍스트에 포함됩니다. 이 컨텍스트에 대한 자세한 내용은 Hyper-V 확장 가능한 전환 전달 컨텍스트를 참조하세요.

확장 가능한 스위치 확장은 패킷의 원본 포트 식별자를 수정하기 위해 다음 지침을 따라야 합니다.

  • 확장 가능한 스위치 확장은 SetNetBufferListSource 를 호출하여 패킷의 원본 포트를 수정해야 합니다. 확장은 NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO 구조체의 SourcePortId 멤버를 직접 수정해서는 안 됩니다.

  • 확장이 패킷을 만들거나 복제하는 경우 NdisAllocateNetBufferList를 호출한 후 AllocateNetBufferListForwardingContext 함수를 호출해야 합니다. 이 함수는 패킷에 대한 정보를 전달하는 데 사용되는 OOB 데이터에 대해 확장 가능한 스위치 컨텍스트 영역을 할당합니다.

    확장이 AllocateNetBufferListForwardingContext를 호출하면 SourcePortId 멤버가 NDIS_SWITCH_DEFAULT_PORT_ID 설정됩니다. 확장 가능한 스위치 포트에 도착하는 대신 패킷이 확장에서 시작되도록 지정합니다.

    원본 포트가 NDIS_SWITCH_DEFAULT_PORT_ID 패킷은 확장 가능한 스위치 확장 데이터 경로에서 권한 있고 신뢰할 수 있는 것으로 처리됩니다. 이러한 트래픽에는 다른 원본 포트의 패킷에 적용되는 정책이 적용되지 않아야 합니다. 예를 들어 원본 포트 식별자가 NDIS_SWITCH_DEFAULT_PORT_ID 패킷은 확장 가능한 스위치의 기본 미니포트 에지에 의해 적용되는 확장 가능한 기본 제공 스위치 정책을 무시합니다. 이러한 정책에는 ACL(액세스 제어 목록) 및 QoS(서비스 품질)가 포함됩니다.

    확장이 패킷 트래픽을 시작하는 경우 NDIS_SWITCH_DEFAULT_PORT_ID 원본 포트를 아끼고 신중하게 사용해야 합니다. 대부분의 경우 확장은 확장 가능한 스위치에서 원본 포트 식별자를 활성 포트로 수정해야 합니다. 이렇게 하면 해당 포트의 정책을 패킷에 적용할 수 있습니다.

    그러나 확장이 시작된 패킷에 NDIS_SWITCH_DEFAULT_PORT_ID 원본 포트를 사용해야 하는 경우가 있을 수 있습니다. 예를 들어 확장이 물리적 또는 가상 네트워크의 대상으로 전송되어야 하는 제어 패킷을 시작하는 경우 원본 포트 식별자에 NDIS_SWITCH_DEFAULT_PORT_ID 사용해야 합니다. 이렇게 하면 확장 가능한 스위치 드라이버 스택의 기본 확장에 의해 패킷이 필터링 및 거부되지 않습니다.