다음을 통해 공유


물리적 네트워크 어댑터에서 NDIS 상태 표시 전달

이 항목에서는 확장 가능한 스위치 전달 확장에서 기본 물리적 어댑터에서 NDIS 상태 표시를 전달하는 데 사용되는 방법에 대해 설명합니다. 하나 이상의 기본 물리적 어댑터를 Hyper-V 확장 가능 스위치의 외부 네트워크 어댑터에 바인딩할 수 있습니다.

예를 들어 외부 네트워크 어댑터는 MUX(NDIS 멀티플렉서) 중간 드라이버의 가상 미니포트 에지에 바인딩할 수 있습니다. MUX 드라이버는 호스트에 있는 하나 이상의 물리적 네트워크 팀에 바인딩됩니다. 이 구성을 확장 가능한 스위치 팀이라고 합니다.

이 구성에서는 확장 가능한 스위치 확장이 팀의 모든 네트워크 어댑터에 노출됩니다. 이렇게 하면 확장에서 팀의 개별 네트워크 어댑터 구성 및 사용을 관리할 수 있습니다. 예를 들어 전달 확장은 나가는 패킷을 개별 어댑터에 전달하여 팀을 통해 LBFO(부하 분산 장애 조치( failover) 솔루션을 지원할 수 있습니다. 확장 가능한 스위치 팀을 관리하는 전달 확장을 팀 공급자라고 합니다. 팀 공급자에 대한 자세한 내용은 팀 공급자 확장을 참조 하세요.

다음 그림에서는 NDIS 6.40(Windows Server 2012 R2) 이상에 대한 기본 물리적 네트워크 어댑터의 표시를 상태 NDIS에 대한 Hyper-V 확장 가능한 스위치 제어 경로를 보여 줍니다.

NDIS 6.40 이상에 대한 물리적 네트워크 어댑터의 표시를 상태 NDIS에 대한 Hyper-V 확장 가능한 스위치 제어 경로를 보여 주는 다이어그램

다음 그림에서는 NDIS 6.30(Windows Server 2012)에 대한 기본 물리적 네트워크 어댑터의 표시를 상태 NDIS에 대한 Hyper-V 확장 가능한 스위치 제어 경로를 보여 줍니다.

NDIS 6.30에 대한 물리적 네트워크 어댑터의 표시를 상태 NDIS에 대한 Hyper-V 확장 가능한 스위치 제어 경로를 보여 주는 다이어그램

참고 확장 가능한 스위치 인터페이스에서 NDIS 필터 드라이버를 확장 가능한 스위치 확장 이라고 하며 드라이버 스택을 확장 가능한 스위치 드라이버 스택이라고 합니다.

확장 가능한 스위치 인터페이스는 기본 물리적 어댑터에서 생성된 NDIS 상태 표시를 전달합니다. 외부 네트워크 어댑터가 확장 가능한 스위치 팀에 바인딩된 경우 NDIS 상태 표시는 MUX 드라이버의 가상 어댑터 가장자리에서 시작됩니다. 그렇지 않으면 상태 표시는 외부 네트워크 어댑터에 바인딩된 단일 물리적 네트워크 어댑터에서 발생합니다.

NDIS 상태 표시가 확장 가능한 스위치 인터페이스에 도착하면 NDIS_SWITCH_NIC_STATUS_INDICATION 구조 내의 표시를 캡슐화합니다. 그런 다음 확장 가능한 스위치의 미니포트 가장자리가 이 구조를 포함하는 NDIS_STATUS_SWITCH_NIC_STATUS 표시를 실행합니다.

전달 확장이 NDIS 상태 표시를 받으면 원래 표시 데이터를 전달하거나 표시를 전달하기 전에 데이터를 수정할 수 있습니다.

참고 전달 확장 프로그램만 상태 표시를 전달하기 전에 데이터를 수정할 수 있습니다. 이러한 유형의 확장에 대한 자세한 내용은 확장 전달을 참조하세요.

전달 확장은 확장 가능한 스위치의 외부 네트워크 어댑터에 바인딩된 모든 기본 물리적 어댑터에서 상태 표시를 수정하고 전달할 수 있습니다. 일반적으로 확장은 이러한 상태 표시를 발행하여 기본 물리적 어댑터의 보급된 하드웨어 오프로드 기능을 변경합니다. 예를 들어 확장은 다음과 같은 유형의 하드웨어 오프로드에 대한 상태 표시를 수정하고 전달할 수 있습니다.

  • IPsec(인터넷 프로토콜 보안)

  • 가상화된 머신 큐(VMQ)

  • 단일 루트 I/O 가상화 (SR-IOV)

전달 확장이 NDIS 상태 표시를 전달하는 경우 다음과 같은 방식으로 NDIS_SWITCH_NIC_STATUS_INDICATION 구조체의 멤버를 설정해야 합니다.

  • SourcePortId 멤버는 외부 네트워크 어댑터가 연결된 포트의 식별자로 설정해야 합니다. 외부 네트워크 어댑터는 하나 이상의 물리적 어댑터에 바인딩됩니다. 자세한 내용은 외부 네트워크 어댑터를 참조하세요.

  • SourceNicIndex 멤버를 NDIS_SWITCH_DEFAULT_NIC_INDEX 설정해야 합니다. 이렇게 하면 상태 표시가 외부 네트워크 어댑터에 바인딩된 확장 가능한 전체 스위치 팀에서 시작된 것으로 해석될 수 있습니다.

  • DestinationPortId 멤버는 NDIS_SWITCH_DEFAULT_PORT_ID 설정해야 합니다.

  • DestinationNicIndex 멤버는 NDIS_SWITCH_DEFAULT_NIC_INDEX 설정해야 합니다.

  • StatusIndication 멤버는 NDIS_STATUS_INDICATION 구조체에 대한 포인터로 설정해야 합니다. 이 구조체에는 캡슐화된 NDIS 상태 표시에 대한 데이터가 포함됩니다.

전달 확장이 캡슐화된 NDIS 상태 표시를 발급하는 경우 다음 단계를 수행해야 합니다.

  1. 확장은 ReferenceSwitchNic 를 호출하여 외부 네트워크 어댑터에 대한 참조 카운터를 증가합니다. 이렇게 하면 참조 카운터가 0이 아닌 동안 확장 가능한 스위치 인터페이스가 네트워크 어댑터 연결을 삭제하지 않습니다.

    확장이 ReferenceSwitchNic를 호출하면 SwitchPortId 매개 변수를 SourcePortId 멤버에 대해 지정된 값으로 설정합니다. 또한 확장은 SwitchNicIndex 매개 변수를 SourceNicIndex 멤버에 지정된 값으로 설정합니다.

    참고ReferenceSwitchNic가 NDIS_STATUS_SUCCESS 반환하지 않으면 캡슐화된 NDIS 상태 표시를 실행할 수 없습니다.

  2. 확장은 NdisFIndicateStatus를 호출하여 캡슐화된 상태 알림을 전달합니다.

    참고 확장이 캡슐화된 NDIS 상태 표시를 전달하는 경우 FilterStatus 함수에 대한 호출 컨텍스트 내에서 NdisFIndicateStatus를 호출해야 합니다.

  3. NdisFIndicateStatus가 반환된 후 확장은 DereferenceSwitchNic를 호출하여 원본 또는 대상 네트워크 어댑터 연결에 대한 참조 카운터를 지웁니다. 확장은 SwitchPortIdSwitchNicIndex 매개 변수를 ReferenceSwitchNic 호출에 사용한 것과 동일한 값으로 설정합니다.

MUX 드라이버에 대한 자세한 내용은 NDIS MUX 중간 드라이버를 참조하세요.