Hyper-V 확장 가능한 스위치 포트 개요

Hyper-V 확장 가능 스위치에 대한 각 네트워크 연결은 포트로 표시됩니다. 확장 가능한 스위치 인터페이스는 네트워크 연결이 이루어지기 전에 포트를 만들고 구성합니다. 네트워크 연결이 중단된 후 인터페이스는 포트를 삭제하거나 다른 네트워크 연결에 다시 사용할 수 있습니다.

네트워크 인터페이스로 구성된 모든 Hyper-V 자식 파티션에는 확장 가능한 스위치에 포트가 할당됩니다. Hyper-V 자식 파티션이 시작되면 확장 가능한 스위치 인터페이스는 게스트 운영 체제 내에서 VM(가상 머신) 네트워크 어댑터가 노출되기 전에 포트를 만듭니다. VM 네트워크 어댑터가 노출되고 초기화되면 확장 가능한 스위치 인터페이스는 VM 네트워크 어댑터와 확장 가능한 스위치 포트 간에 네트워크 연결을 만듭니다. 자식 파티션이 중지된 경우 확장 가능한 스위치 인터페이스는 먼저 네트워크 연결을 삭제한 다음 확장 가능한 스위치 포트를 삭제합니다.

확장 가능한 스위치 포트가 만들어지면 고유 식별자와 이름으로 구성됩니다. 확장 가능한 스위치 포트를 만든 후에는 포트를 통해 패킷 트래픽을 관리하기 위한 다양한 특성을 정의하는 정책을 사용하여 프로비전할 수 있습니다. 예를 들어 VLAN(가상 LAN) 특성 및 포트 트래픽에 대한 액세스 제한에 대해 표준 포트 정책을 정의할 수 있습니다. 또한 ISV(독립 소프트웨어 공급업체)는 개별 포트를 프로비전할 수 있는 사용자 지정 정책을 정의할 수 있습니다. 자세한 내용은 포트 정책을 참조하세요.

확장 가능한 스위치 포트는 다음 형식으로 구성됩니다.

유효성 검사 포트
유효성 검사 포트는 포트 설정의 유효성을 검사하고 확인하는 데 사용됩니다. 이러한 포트는 임시이며 특정 조건에서 만들어집니다.

예를 들어 네트워크 액세스를 위해 Hyper-V 자식 파티션을 만들거나 다시 구성하면 확장 가능한 스위치 인터페이스가 유효성 검사 포트를 만듭니다. 인터페이스는 이 포트를 사용하여 파티션의 VM(가상 머신) 네트워크 어댑터에 대한 네트워크 연결 설정을 확인합니다. 확인이 완료되면 유효성 검사 포트가 삭제되고 운영 포트가 만들어집니다.

자세한 내용은 유효성 검사 포트를 참조하세요.

운영 포트
확장 가능한 스위치 네트워크 어댑터 연결을 호스트하기 위해 운영 포트가 만들어집니다. 운영 포트가 만들어지면 포트 유형이 할당됩니다. 이 포트 형식은 포트를 만든 후 삭제되기 전에 적용됩니다. Hyper-V 자식 파티션에 할당된 포트의 경우 파티션이 실행되고 작동되는 동안 작동 포트 유형이 계속 적용됩니다.

자세한 내용은 운영 포트를 참조하세요.

확장 가능한 스위치 확장은 다음 OID(확장 가능한 스위치 개체 식별자) 요청을 통해 포트 만들기, 업데이트 및 삭제에 대한 알림을 받습니다.

OID_SWITCH_PORT_CREATE
확장 가능한 스위치의 프로토콜 에지는 확장 가능한 스위치 포트 생성에 대해 확장 가능한 스위치 확장에 알리기 위해 OID_SWITCH_PORT_CREATE OID 집합 요청을 실행합니다.

확장은 OID 요청에 대한 STATUS_DATA_NOT_ACCEPTED 반환하여 생성 알림을 거부할 수 있습니다. 예를 들어 확장이 포트에 구성된 정책을 적용하기 위해 리소스를 할당할 수 없는 경우 확장은 생성 알림을 거부합니다.

확장이 생성 알림을 수락하는 경우 확장 가능한 스위치 드라이버 스택 아래로 OID 요청을 전달해야 합니다. 확장은 이 OID 요청의 완료 상태 모니터링하여 기본 확장이 포트 생성 알림을 거부했는지 여부를 확인합니다.

확장은 네트워크 연결을 만들 때까지 새로 만든 포트로 패킷을 전달할 수 없습니다. 이 프로세스에 대한 자세한 내용은 Hyper-V 확장 가능한 스위치 네트워크 어댑터를 참조하세요.

OID_SWITCH_PORT_UPDATED
확장 가능한 스위치의 프로토콜 에지는 확장 가능한 스위치 확장에 확장 가능한 스위치 포트의 매개 변수가 업데이트되고 있음을 알리기 위해 OID_SWITCH_PORT_UPDATED OID 집합 요청을 실행합니다. OID는 이미 생성된 포트에 대해서만 발급되며 아직 해체/삭제 프로세스를 시작하지 않았습니다. 현재 PortFriendlyName 필드만 만든 후에 업데이트될 수 있습니다.

확장 가능한 스위치의 프로토콜 에지는 포트에 대한 이전 네트워크 연결이 해제되고 포트에 대한 모든 OID 요청이 완료되었을 때 이 OID 요청을 실행합니다.

참고 네트워크 어댑터 연결이 이전에 포트에 연결되지 않은 경우 이 OID 요청을 실행할 수 있습니다.

확장은 항상 확장 가능한 스위치 드라이버 스택 아래로 이 OID 집합 요청을 전달해야 합니다. 확장이 요청에 실패하면 안됩니다.

OID_SWITCH_PORT_TEARDOWN
확장 가능한 스위치의 프로토콜 에지는 확장 가능한 스위치 포트가 삭제되고 있음을 확장 가능한 스위치 확장에 알리기 위해 OID_SWITCH_PORT_TEARDOWN OID 집합 요청을 실행합니다. 확장 가능한 스위치의 프로토콜 에지는 포트에 대한 이전 네트워크 연결이 해제되고 포트에 대한 모든 OID 요청이 완료되었을 때 이 OID 요청을 실행합니다.

참고 네트워크 어댑터 연결이 이전에 포트에 연결되지 않은 경우 이 OID 요청을 실행할 수 있습니다.

확장은 항상 확장 가능한 스위치 드라이버 스택 아래로 이 OID 집합 요청을 전달해야 합니다. 확장이 요청에 실패하면 안됩니다.

확장이 이 OID 요청을 전달한 후에는 삭제되는 포트에 대한 OID 요청을 더 이상 발급할 수 없습니다.

OID_SWITCH_PORT_DELETE
확장 가능한 스위치의 프로토콜 에지는 확장 가능한 스위치 포트가 삭제되었음을 확장 가능한 스위치 확장에 알리기 위해 OID_SWITCH_PORT_DELETE OID 집합 요청을 실행합니다. 확장 가능한 스위치의 프로토콜 에지는 포트를 대상으로 하는 OID_SWITCH_PORT_TEARDOWN 요청 및 OID 요청이 완료된 후 이 OID 요청을 실행합니다.

확장은 항상 확장 가능한 스위치 드라이버 스택 아래로 이 OID 집합 요청을 전달해야 합니다. 확장이 요청에 실패하면 안됩니다.

네트워크 연결에 대해 만들어진 모든 확장 가능한 스위치 포트에는 NDIS_SWITCH_DEFAULT_PORT_ID보다 큰 식별자가 할당됩니다. NDIS_SWITCH_DEFAULT_PORT_ID 식별자는 예약되어 있으며 다음과 같은 방법으로 사용됩니다.

  • 패킷의 원본 포트 식별자는 NET_BUFFER_LIST 구조와 연결된 패킷의 OOB(대역 외) 전달 컨텍스트에 저장됩니다. NDIS_SWITCH_DEFAULT_PORT_ID 원본 포트 식별자는 패킷이 확장 가능한 스위치 포트가 아닌 확장 가능한 스위치 확장에서 시작되었음을 지정합니다. NDIS_SWITCH_DEFAULT_PORT_ID 원본 포트 식별자가 있는 패킷은 신뢰할 수 있으며 ACL(액세스 제어 목록) 및 QoS(서비스 품질)와 같은 확장 가능한 스위치 포트 정책을 무시합니다.

    확장은 패킷이 특정 포트에서 시작된 것처럼 처리되도록 할 수 있습니다. 이렇게 하면 해당 포트에 대한 정책을 패킷에 적용할 수 있습니다. 확장은 SetNetBufferListSource 를 호출하여 패킷의 원본 포트를 변경합니다.

    그러나 확장에서 패킷의 원본 포트 식별자를 NDIS_SWITCH_DEFAULT_PORT_ID 할당하려는 경우가 있을 수 있습니다. 예를 들어 확장은 외부 네트워크의 디바이스로 전송되는 독점 제어 패킷에 대해 원본 포트 식별자를 NDIS_SWITCH_DEFAULT_PORT_ID 설정할 수 있습니다.

    전달 컨텍스트에 대한 자세한 내용은 Hyper-V 확장 가능한 전환 전달 컨텍스트를 참조하세요.

  • 확장 가능한 스위치 외부 네트워크 어댑터에 발급된 OID 요청을 캡슐화하기 위해 확장 가능한 스위치 인터페이스에서 OID_SWITCH_NIC_REQUEST OID(개체 식별자) 요청을 실행합니다. 예를 들어 하드웨어 오프로드 OID 요청은 확장 가능한 스위치 드라이버 스택에서 실행되기 전에 인터페이스에 의해 캡슐화됩니다.

    확장은 확장 가능한 스위치 제어 경로 아래로 요청을 전달하기 위해 캡슐화된 OID 요청을 실행할 수도 있습니다. 이렇게 하면 확장에서 기본 물리적 네트워크 어댑터의 기능을 쿼리하거나 구성할 수 있습니다.

    이 OID 요청에 대한 NDIS_OID_REQUEST 구조체의 InformationBuffer 멤버에는 NDIS_SWITCH_NIC_OID_REQUEST 구조체에 대한 포인터가 포함되어 있습니다. SourcePortId 멤버가 NDIS_SWITCH_DEFAULT_PORT_ID 설정된 경우 확장 가능한 스위치 인터페이스에서 OID 요청이 시작되었음을 지정합니다. DestinationPortIdNDIS_SWITCH_DEFAULT_PORT_ID 설정된 경우 확장 가능한 스위치 드라이버 스택의 확장에서 OID 요청을 처리하도록 지정합니다.

    OID 요청에 대한 제어 경로에 대한 자세한 내용은 OID 요청에 대한 Hyper-V 확장 가능한 스위치 제어 경로를 참조하세요.

  • NDIS_STATUS_SWITCH_NIC_STATUS NDIS 상태 표시는 확장 가능한 스위치 외부 네트워크 어댑터에서 상태 표시를 캡슐화하기 위해 확장 가능한 스위치의 미니포트 에지에 의해 발급됩니다.

    확장은 확장 가능한 스위치 제어 경로를 표시하기 위해 캡슐화된 NDIS 상태 표시를 발행할 수도 있습니다. 이렇게 하면 확장에서 기본 물리적 네트워크 어댑터의 보고된 기능을 변경할 수 있습니다.

    이 표시에 대한 NDIS_STATUS_INDICATION 구조체의 StatusBuffer 멤버에는 NDIS_SWITCH_NIC_STATUS_INDICATION 구조체에 대한 포인터가 포함됩니다. SourcePortId 멤버가 NDIS_SWITCH_DEFAULT_PORT_ID 설정된 경우 확장 가능한 스위치 인터페이스에서 상태 표시가 시작되었음을 지정합니다. DestinationPortIdNDIS_SWITCH_DEFAULT_PORT_ID 설정된 경우 확장 가능한 스위치 드라이버 스택의 확장에서 OID 요청을 처리하도록 지정합니다.

    NDIS 상태 표시에 대한 제어 경로에 대한 자세한 내용은 NDIS 상태 표시에 대한 Hyper-V 확장 가능한 스위치 제어 경로를 참조하세요.

확장 가능한 스위치 인터페이스는 생성된 각 포트에 대한 참조 카운터를 유지 관리합니다. 참조 카운터에 0이 아닌 값이 있으면 포트가 삭제되지 않습니다. 인터페이스는 확장 가능한 스위치 포트의 참조 카운터를 증가 또는 감소시키는 다음 처리기 함수를 제공합니다.

ReferenceSwitchPort
확장 가능한 스위치 확장은 포트의 참조 카운터를 증가하기 위해 이 함수를 호출합니다. 참조 카운터에는 0이 아닌 값이 있지만 확장 가능한 스위치의 프로토콜 에지는 확장 가능한 스위치 포트를 삭제하기 위한 OID_SWITCH_PORT_DELETE OID(개체 식별자) 집합 요청을 실행하지 않습니다.

확장은 포트가 활성 상태여야 하는 작업을 수행하기 전에 ReferenceSwitchPort 를 호출해야 합니다. 예를 들어 확장은 OID_SWITCH_PORT_PROPERTY_ENUM OID 메서드 요청을 실행하기 전에 ReferenceSwitchPort를 호출해야 합니다.

참고 확장은 해당 포트에 대한 OID_SWITCH_PORT_TEARDOWN OID 집합 요청을 받은 후 포트에 대해ReferenceSwitchPort를 호출해서는 안 됩니다.

DereferenceSwitchPort
확장 가능한 스위치 확장은 이 함수를 호출하여 포트의 참조 카운터를 감소합니다.

확장은 포트에서 수행되는 작업이 완료된 후 DereferenceSwitchPort 를 호출해야 합니다. 예를 들어 OID_SWITCH_PORT_PROPERTY_ENUM 요청을 실행한 경우 이전에 ReferenceSwitchPort라는 확장이 호출된 경우 확장은 OID 요청이 완료된 후 DereferenceSwitchPort를 호출해야 합니다.

참고 NDIS 포트와 확장 가능한 스위치 포트는 서로 다른 개체입니다. 확장 가능한 스위치 데이터 경로를 통해 이동하는 패킷은 항상 NDIS_DEFAULT_PORT_NUMBER NDIS 포트 번호에 할당됩니다. 그러나 패킷의 원본 및 대상 확장 가능한 스위치 포트 번호는 NDIS_SWITCH_DEFAULT_PORT_ID 이상의 값일 수 있습니다. 자세한 내용은 Hyper-V 확장 가능한 스위치 데이터 경로를 참조하세요.