물리적 네트워크 어댑터의 원래 NDIS 상태 표시
이 항목에서는 확장 가능한 스위치 전달 확장에서 스위치에 연결된 네트워크 어댑터에 대한 NDIS 상태 표시를 시작하는 데 사용하는 방법에 대해 설명합니다. 확장은 다음과 같은 유형의 어댑터에 대한 NDIS 상태 표시를 생성할 수 있습니다.
확장 가능한 스위치의 외부 네트워크 어댑터 에 바인딩된 하나 이상의 기본 물리적 어댑터입니다.
예를 들어 외부 네트워크 어댑터는 MUX(NDIS 멀티플렉서) 중간 드라이버의 가상 미니포트 에지에 바인딩할 수 있습니다. MUX 드라이버는 호스트에 있는 하나 이상의 물리적 네트워크 팀에 바인딩됩니다. 이 구성을 확장 가능한 스위치 팀이라고 합니다.
이 구성에서는 확장 가능한 스위치 확장이 팀의 모든 네트워크 어댑터에 노출됩니다. 이렇게 하면 확장에서 팀의 개별 네트워크 어댑터 구성 및 사용을 관리할 수 있습니다. 예를 들어 전달 확장은 나가는 패킷을 개별 어댑터에 전달하여 팀을 통해 LBFO(부하 분산 장애 조치( failover) 솔루션을 지원할 수 있습니다. 확장 가능한 스위치 팀을 관리하는 전달 확장을 팀 공급자라고 합니다. 팀 공급자에 대한 자세한 내용은 팀 공급자 확장을 참조 하세요.
Hyper-V 자식 파티션 내에서 노출되고 확장 가능한 스위치 포트에 연결된 VM(가상 머신) 네트워크 어댑터입니다.
다음 그림에서는 NDIS 6.40(Windows Server 2012 R2) 이상에 대한 물리적 및 VM 네트워크 어댑터의 NDIS 상태 표시에 대한 Hyper-V 확장 가능한 스위치 제어 경로를 보여 줍니다.
다음 그림에서는 NDIS 6.30(Windows Server 2012)에 대한 물리적 및 VM 네트워크 어댑터의 표시를 상태 NDIS에 대한 Hyper-V 확장 가능한 스위치 제어 경로를 보여 줍니다.
참고 확장 가능한 스위치 인터페이스에서 NDIS 필터 드라이버를 확장 이라고 하며 드라이버 스택을 확장 가능한 스위치 드라이버 스택이라고 합니다.
전달 확장은 확장 가능한 스위치 드라이버 스택에서 드라이버가 과도하게 표시될 상태 캡슐화된 하드웨어 오프로드를 발생시킬 수 있습니다. 또한 확장은 확장 가능한 스위치의 외부 네트워크 어댑터에 바인딩된 물리적 어댑터의 기본 팀의 현재 오프로드 기능을 변경할 수 있습니다. 어댑터 팀이 외부 네트워크 어댑터에 바인딩되는 경우 팀의 일반적인 기능만 NDIS 또는 지나치게 프로토콜 및 필터 드라이버에 보급됩니다. 확장은 캡슐화된 상태 표시를 시작하여 광고된 기능을 확장하여 팀의 일부 어댑터에서 지원하는 기능을 광고할 수 있습니다. 예를 들어 확장은 캡슐화된 NDIS_STATUS_RECEIVE_FILTER_CURRENT_CAPABILITIES 표시를 실행하여 전체 팀에 대해 현재 활성화된 수신 필터 기능을 변경할 수 있습니다.
참고 전달 확장만 캡슐화된 상태 표시를 생성할 수 있습니다. 이러한 유형의 확장에 대한 자세한 내용은 확장 전달을 참조하세요.
일반적으로 전달 확장은 기본 물리적 어댑터의 보급된 하드웨어 오프로드 기능을 변경하는 캡슐화된 NDIS 상태 표시를 시작합니다. 예를 들어 확장은 다음과 같은 유형의 하드웨어 오프로드에 대한 상태 표시를 발생시킬 수 있습니다.
IPsec(인터넷 프로토콜 보안).
VMQ(가상화된 머신 큐).
단일 루트 I/O 가상화(SR-IOV))
전달 확장은 Hyper-V 자식 파티션에 할당된 하드웨어 오프로드 리소스를 변경하는 캡슐화된 NDIS 상태 표시를 발생시킬 수도 있습니다. NDIS 6.30부터 확장은 캡슐화된 NDIS_STATUS_SWITCH_PORT_REMOVE_VF 표시를 실행하여 VM 네트워크 어댑터와 PCI Express(PCIe) VF(가상 함수) 간의 바인딩을 제거할 수 있습니다. VF는 SR-IOV(단일 루트 I/O 가상화) 인터페이스를 지원하는 기본 물리적 네트워크 어댑터에서 노출되고 지원됩니다.
전달 확장이 기본 물리적 어댑터의 하드웨어 오프로드 리소스에 대한 캡슐화된 NDIS 상태 표시를 시작하는 경우 다음과 같은 방식으로 NDIS_SWITCH_NIC_STATUS_INDICATION 구조체의 멤버를 설정해야 합니다.
DestinationPortId 멤버는 NDIS_SWITCH_DEFAULT_PORT_ID 설정해야 합니다.
DestinationNicIndex 멤버를 NDIS_SWITCH_DEFAULT_NIC_INDEX
SourcePortId 멤버는 외부 네트워크 어댑터가 연결된 확장 가능한 스위치 포트의 식별자로 설정해야 합니다.
SourceNicIndex 멤버는 NDIS_SWITCH_DEFAULT_NIC_INDEX 설정해야 합니다. 이렇게 하면 상태 표시가 외부 네트워크 어댑터에 바인딩된 확장 가능한 전체 스위치 팀에서 시작된 것으로 해석될 수 있습니다.
참고 또한 단일 물리적 네트워크 어댑터만 외부 네트워크 어댑터에 바인딩된 경우 전달 확장은 이 멤버를 NDIS_SWITCH_DEFAULT_NIC_INDEX 설정해야 합니다.
StatusIndication 멤버는 NDIS_STATUS_INDICATION 구조체에 대한 포인터로 설정해야 합니다. 이 구조체에는 캡슐화된 NDIS 상태 표시에 대한 데이터가 포함됩니다.
전달 확장이 Hyper-V 자식 파티션의 하드웨어 오프로드 리소스에 대한 NDIS 상태 표시를 시작하는 경우 다음과 같은 방식으로 NDIS_SWITCH_NIC_STATUS_INDICATION 구조체의 멤버를 설정해야 합니다.
DestinationPortId 및 DestinationNicIndex 멤버는 파티션에서 사용되는 네트워크 연결에 대한 포트 및 네트워크 어댑터 인덱스의 해당 값으로 설정해야 합니다.
SourcePortId 멤버는 NDIS_SWITCH_DEFAULT_PORT_ID 설정해야 합니다.
SourceNicIndex 멤버는 NDIS_SWITCH_DEFAULT_NIC_INDEX 설정해야 합니다.
StatusIndication 멤버는 NDIS_STATUS_INDICATION 구조체에 대한 포인터로 설정해야 합니다. 이 구조체에는 캡슐화된 NDIS 상태 표시에 대한 데이터가 포함됩니다.
확장에서 캡슐화된 NDIS 상태 표시를 발급하는 경우 다음 단계를 수행해야 합니다.
확장은 ReferenceSwitchNic 를 호출하여 원본 또는 대상 네트워크 어댑터 연결에 대한 참조 카운터를 증가합니다. 이렇게 하면 참조 카운터가 0이 아닌 동안 확장 가능한 스위치 인터페이스가 네트워크 어댑터 연결을 삭제하지 않습니다.
확장이 ReferenceSwitchNic를 호출할 때 다음과 같은 방법으로 매개 변수를 설정합니다.
전달 확장이 기본 물리적 어댑터에 대한 캡슐화된 NDIS 상태 표시를 시작하는 경우 SwitchPortId 매개 변수를 SourcePortId 멤버에 대해 지정된 값으로 설정합니다. 또한 확장은 SwitchNicIndex 매개 변수를 SourceNicIndex 멤버에 지정된 값으로 설정합니다.
전달 확장이 Hyper-V 자식 파티션에 대한 NDIS 상태 표시를 시작하는 경우 SwitchPortId 매개 변수를 DestinationPortId 멤버에 대해 지정된 값으로 설정합니다. 또한 확장은 SwitchNicIndex 매개 변수를 DestinationNicIndex 멤버에 지정된 값으로 설정합니다.
참고ReferenceSwitchNic가 NDIS_STATUS_SUCCESS 반환하지 않으면 캡슐화된 NDIS 상태 표시를 실행할 수 없습니다.
확장은 NdisFIndicateStatus를 호출하여 캡슐화된 상태 알림을 전달합니다.
참고 확장이 필터링된 OID 요청을 전달하는 경우 FilterStatus 함수에 대한 호출 컨텍스트 내에서 NdisFIndicateStatus를 호출해야 합니다.
NdisFIndicateStatus가 반환된 후 확장은 DereferenceSwitchNic를 호출하여 원본 또는 대상 네트워크 어댑터 연결에 대한 참조 카운터를 지웁니다. 확장은 SwitchPortId 및 SwitchNicIndex 매개 변수를 ReferenceSwitchNic 호출에 사용한 것과 동일한 값으로 설정합니다.