확장 가능한 스위치 데이터 경로를 통한 패킷 흐름
이 항목에서는 Hyper-V 확장 가능한 스위치 데이터 경로를 통해 패킷이 확장 가능한 스위치 포트로 이동하거나 이동하는 방법을 설명합니다.
참고 확장 가능한 스위치 인터페이스에서 NDIS 필터 드라이버를 확장 가능한 스위치 확장 이라고 하며 드라이버 스택을 확장 가능한 스위치 드라이버 스택이라고 합니다. 확장에 대한 자세한 내용은 Hyper-V 확장 가능한 스위치 확장을 참조하세요.
참고 이 페이지에서는 Hyper-V 확장 가능 스위치 및 하이브리드 전달 개요의 정보를 잘 알고 있다고 가정합니다.
포트에서 확장 가능한 스위치에 도착하는 모든 패킷 트래픽은 확장 가능한 스위치 드라이버 스택을 통해 동일한 경로를 따릅니다. 예를 들어 외부 네트워크 어댑터 연결에서 수신되거나 VM(가상 머신) 네트워크 어댑터 연결에서 전송된 패킷 트래픽은 동일한 데이터 경로를 통해 이동합니다.
다음 그림에서는 NDIS 6.40(Windows Server 2012 R2) 이상에 대한 확장 가능한 스위치 데이터 경로를 보여 줍니다.
다음 그림에서는 NDIS 6.30(Windows Server 2012)에 대한 확장 가능한 스위치 데이터 경로를 보여 줍니다.
확장 가능한 스위치 인터페이스의 구성 요소에 대한 자세한 내용은 Hyper-V 확장 가능한 스위치 아키텍처를 참조하세요.
확장 가능한 스위치 데이터 경로에는 패킷이 통과하는 순서대로 나열된 다음 부분이 있습니다.
오버리링 프로토콜 에지
패킷은 스위치 포트에 연결된 네트워크 어댑터에서 확장 가능한 스위치에 도착합니다. 이러한 패킷은 확장 가능한 스위치 수신 데이터 경로 아래로 확장 가능한 스위치의 프로토콜 가장자리에서 보내기 요청으로 먼저 발급됩니다.
확장 가능한 스위치의 프로토콜 에지는 수신 데이터 경로에 대한 패킷을 준비합니다. 프로토콜 에지는 OOB(대역 외) 확장 가능한 전환 전달 컨텍스트를 포함하는 이러한 패킷에 대한 컨텍스트 영역을 할당합니다. 패킷이 확장 가능한 스위치로 전달된 원본 포트 및 네트워크 어댑터 연결에 대한 정보로 OOB 데이터를 채웁니다.
전달 컨텍스트에 대한 자세한 내용은 Hyper-V 확장 가능한 전환 전달 컨텍스트를 참조하세요.
NDIS 6.40(Windows Server 2012 R2) 이상에서 패킷이 외부 네트워크 어댑터의 NVGRE 패킷인 경우 확장 가능한 스위치는 패킷의 OOB(대역 외) 정보에서 NativeForwardingRequired 플래그를 설정합니다. 자세한 내용은 하이브리드 전달을 참조하세요.
패킷이 트래픽에 가상 서브넷이 있는 포트에 도착한 경우 확장 가능한 스위치는 패킷에 대한 NDIS_NET_BUFFER_LIST_VIRTUAL_SUBNET_INFO 구조체의 VirtualSubnetId 멤버를 설정합니다.
참고 가상 서브넷은 HNV 서브넷 또는 타사 가상 서브넷일 수 있습니다.
수신 데이터 경로
확장은 FilterSendNetBufferLists 함수가 호출되면 수신 데이터 경로에서 패킷을 가져옵니다. 확장은 NdisFSendNetBufferLists를 호출하여 수신 데이터 경로의 기본 확장에 패킷을 전달합니다. 확장 필터링 및 전달은 NdisFSendNetBufferListsComplete를 호출하여 수신 데이터 경로에서 패킷을 삭제할 수도 있습니다.
확장을 캡처하면 수신 데이터 경로에서 패킷을 가져올 때 패킷 데이터를 검사할 수 있습니다. 그러나 확장을 캡처해도 수신 데이터 경로의 패킷에 대한 송신 요청을 완료하면 안 됩니다. 이러한 확장은 항상 확장 가능한 스위치 드라이버 스택의 기본 확장에 패킷을 전달해야 합니다.
캡처 확장 프로그램은 수신 데이터 경로에서 패킷을 생성할 수도 있습니다. 예를 들어 확장은 원격 모니터링 애플리케이션에 트래픽 조건을 보고하기 위해 패킷을 발생시킬 수 있습니다.
확장에서 패킷을 시작하는 방법에 대한 자세한 내용은 원본 패킷 트래픽을 참조하세요.
확장을 필터링하면 수신 데이터 경로에서 패킷을 가져올 때 다음을 수행할 수 있습니다.
사용자 지정 확장 가능한 스위치 또는 포트 정책에 따라 패킷을 삭제합니다.
이러한 정책에 대한 자세한 내용은 Hyper-V 확장 가능한 전환 정책을 참조하세요.
참고 수신 데이터 경로에서 가져온 패킷에는 패킷의 OOB 데이터에 정의된 대상 포트가 없습니다. 따라서 필터링 확장은 패킷 데이터 또는 패킷의 원본 포트 또는 네트워크 어댑터 연결에 따라 사용자 지정 정책만 적용해야 합니다.
수신 데이터 경로에서 가져온 패킷을 복제하거나 수정합니다.
수신 데이터 경로에 새 패킷을 삽입합니다.
NDIS 6.40 이상에서는 확장을 캡처 및 필터링한 후 수신 데이터 경로의 전달 확장 전에 확장 가능 스위치에서 다음을 수행합니다.
패킷이 외부 네트워크 어댑터의 NVGRE 패킷인 경우 패킷 헤더의 주소는 PA(공급자 주소) 공간 주소입니다. 확장 가능한 스위치는 패킷의 OOB(대역 외) 정보에서 NativeForwardingRequired 플래그를 설정하여 이를 나타냅니다. 자세한 내용은 하이브리드 전달을 참조하세요.
확장 가능한 스위치는 기본 제공 수신 정책을 패킷에 적용합니다. 이러한 정책에는 ACL(수신 액세스 제어 목록), DHCP Guard 및 라우터 가드가 포함될 수 있습니다.
확장 가능한 스위치 드라이버 스택에서 전달 확장을 사용하도록 설정하지 않은 경우 패킷의 대상 포트 배열은 확장 가능한 스위치에 의해 결정됩니다.
전달 확장을 사용하는 경우 수신 데이터 경로에서 패킷을 가져올 때 다음을 수행해야 합니다.
NDIS 6.40 이상에서 패킷이 NVGRE 패킷인 경우( 하이브리드 전달 참조) 전달 확장은 수신 데이터 경로에 있는 패킷의 OOB 데이터에서 대상 포트 배열을 수정할 수 없습니다. 그러나 패킷을 삭제할 수 있습니다.
패킷이 NVGRE 패킷이 아닌 경우 전달 확장은 패킷의 OOB 데이터에서 대상 포트 배열에 대상 포트를 추가해야 합니다.
전달 확장은 표준 또는 사용자 지정 확장 가능한 스위치 또는 포트 정책에 따라 패킷을 삭제해야 합니다. 표준 스위치 또는 포트 정책에는 보안 및 VLAN(가상 LAN) 속성이 포함됩니다. 확장 가능한 스위치 드라이버 스택에서 전달 확장을 사용하도록 설정하지 않은 경우 이러한 정책은 확장 가능한 스위치에 의해 적용됩니다.
참고 전달 확장은 수신 데이터 경로의 패킷을 필터링할 때 원본 포트와 확장이 패킷에 할당하는 대상 포트를 기반으로 필터링 규칙을 적용합니다.
또한 전달 확장은 다음을 수행할 수 있습니다.
수신 데이터 경로에서 가져온 패킷을 복제하거나 수정합니다.
수신 데이터 경로에 새 패킷을 삽입합니다.
기본 미니포트 에지
패킷이 확장 가능한 스위치의 기본 미니포트 가장자리에 도착하면 확장 가능한 스위치는 기본 제공 정책을 패킷에 적용합니다. 이러한 정책에는 ACL(액세스 제어 목록) 및 QoS(서비스 품질) 속성이 포함됩니다. 이러한 정책으로 인해 패킷이 삭제되지 않은 경우 확장 가능한 스위치는 패킷에 대한 수신 표시를 시작하고 패킷을 송신 데이터 경로 위로 전달합니다.
참고 패킷을 배달할 포트에서 포트 미러링을 사용하도록 설정한 경우 미니포트 에지는 미러 포트에 대한 패킷의 OOB 데이터에 대상 포트를 추가합니다. 미니포트 에지는 전달 확장이 확장 가능한 스위치 드라이버 스택에 설치되고 사용하도록 설정되어 있는지 여부에 관계없이 이 작업을 수행합니다. 미니포트 에지는 패킷의 대상 포트 배열에 아직 지정되지 않은 경우에만 미러 포트를 추가합니다.
전달 확장을 사용하도록 설정하지 않으면 확장 가능한 스위치는 패킷의 대상 포트를 결정하고 패킷을 송신 데이터 경로로 전달하기 전에 패킷의 OOB 데이터에 이러한 대상 포트를 추가합니다.
NDIS 6.40 이상에서 HNV 구성 요소는 수신 후 및 송신 전에 필요한 NVGRE 캡슐화 또는 캡슐화를 수행하므로 전달 확장에서 패킷을 캡슐화되고 캡슐화되지 않은 형태로 볼 수 있습니다. 예를 들어 패킷이 외부 네트워크 어댑터에서 도착하여 내부 VM으로 향하는 경우 전달 확장은 수신 시 캡슐화된 패킷과 송신 시 캡슐화된 패킷을 가져옵니다.
참고 캡슐화된 패킷에서 패킷 헤더의 주소는 PA(공급자 주소) 공간 주소입니다. 캡슐화되지 않은 패킷에서는 CA(고객 주소) 공간 주소입니다.
패킷이 외부 네트워크 어댑터에서 도착한 NVGRE 패킷인 경우 확장 가능한 스위치의 Hyper-V HNV(네트워크 가상화) 구성 요소는 패킷에서 NVGRE 캡슐화를 수행합니다. HNV 구성 요소는 HNV 정책에 따라 패킷의 대상을 결정한 다음 확장 가능한 스위치가 패킷을 송신 데이터 경로 위로 전달합니다.
패킷이 내부 VM에서 도착한 경우 HNV 구성 요소는 패킷에 대해 HNV 정책이 설정된 경우 패킷에서 NVGRE 캡슐화를 수행합니다. HNV 구성 요소는 HNV 정책에 따라 패킷의 대상을 결정한 다음 확장 가능한 스위치가 패킷을 송신 데이터 경로 위로 전달합니다.
그렇지 않으면 전달 확장은 패킷을 송신 데이터 경로 위로 전달합니다.
NDIS 6.30에서 전달 확장을 사용하도록 설정한 경우 패킷을 송신 데이터 경로 위로 전달해야 합니다.
송신 데이터 경로
확장은 FilterReceiveNetBufferLists 함수가 호출되면 송신 데이터 경로에서 패킷을 가져옵니다. 확장은 NdisFIndicateReceiveNetBufferLists를 호출하여 송신 데이터 경로의 오버레이 확장에 패킷을 전달합니다. 확장 필터링 및 전달은 NdisFReturnNetBufferLists를 호출하여 송신 데이터 경로에서 패킷을 삭제할 수도 있습니다.
전달 확장이 송신 데이터 경로에서 패킷을 가져오는 경우 OOB 데이터에서 패킷의 대상 포트 정보를 검사할 수 있습니다.
참고 확장은 GetNetBufferListDestinations를 호출하여 OOB 데이터에서 이 정보를 가져옵니다.
표준 또는 사용자 지정 스위치 또는 포트 정책에 따라 확장은 OOB 데이터에 포함된 하나 이상의 대상 포트로 패킷 배달을 제외할 수 있습니다.
NDIS 6.40(Windows Server 2012 R2) 이상에서는 전달 확장 이후이지만 송신 데이터 경로에서 확장을 필터링하고 캡처하기 전에 확장 가능한 스위치는 패킷에 기본 제공 송신 정책을 적용합니다. 이러한 정책에는 트렁크 모드, 모니터링 모드, 송신 ACL 및 QoS(서비스 품질) 속성이 포함될 수 있습니다.
확장을 필터링하면 송신 데이터 경로에서 패킷을 가져올 때 OOB 데이터에서 패킷의 대상 포트 정보를 검사할 수 있습니다. 사용자 지정 스위치 또는 포트 정책에 따라 확장은 OOB 데이터에 포함된 하나 이상의 대상 포트로 패킷 배달을 제외할 수 있습니다.
필터링 확장 프로그램에서 패킷의 데이터를 수정해야 하는 경우 먼저 포트 대상을 유지하지 않고 패킷을 복제해야 합니다. 그런 다음 확장은 수정된 패킷을 수신 데이터 경로에 삽입해야 합니다. 이렇게 하면 기본 확장에서 수정된 패킷에 정책을 적용할 수 있으며 전달 확장은 포트 대상을 추가할 수 있습니다.
자세한 내용은 복제 또는 패킷 트래픽을 참조하세요.
확장을 캡처하면 송신 데이터 경로에서 패킷을 가져올 때 패킷 데이터를 검사할 수 있습니다. 그러나 캡처 확장이 원격 모니터링 애플리케이션에 트래픽 조건을 보고하기 위해 패킷을 시작해야 하는 경우 NdisFSendNetBufferLists 를 호출하여 수신 데이터 경로에 대한 송신 작업을 시작하여 이 패킷 트래픽을 시작해야 합니다.
패킷이 확장 가능한 스위치의 오버리싱 프로토콜 에지에 도착하면 확장 가능한 스위치 인터페이스는 패킷을 지정된 모든 대상 포트로 전달합니다.
패킷이 전달되면 인터페이스는 동일한 경로를 통해 패킷을 역방향으로 완료합니다. 먼저 인터페이스는 확장의 FilterReturnNetBufferLists 함수를 호출하여 송신 데이터 경로에서 전달된 패킷을 완료합니다. 그런 다음 인터페이스는 확장의 FilterSendNetBufferListsComplete 함수를 호출하여 수신 데이터 경로에서 전달된 패킷을 완료합니다.
송신 및 수신 데이터 경로 모두에서 패킷이 완료되면 확장은 필요할 수 있는 필요한 패킷 정리 및 사후 처리를 수행합니다.