Azure Virtual Desktop용 RDP Shortpath
RDP Shortpath는 Azure Virtual Desktop에서 지원되는 플랫폼 및 세션 호스트에서 로컬 디바이스 Windows 앱 또는 원격 데스크톱 앱 간에 직접 UDP 기반 전송을 설정합니다.
기본적으로 RDP(원격 데스크톱 프로토콜)는 UDP를 사용하여 원격 세션을 설정하려고 시도하고 대체 연결 메커니즘으로 TCP 기반 역방향 연결 전송을 사용합니다. UDP 기반 전송은 더 나은 연결 안정성과 더 일관된 대기 시간을 제공합니다. TCP 기반 역방향 연결은 다양한 네트워킹 구성과 최상의 호환성을 제공하며 RDP 연결을 설정하는 데 성공률이 높습니다.
RDP Shortpath는 두 가지 방법으로 사용할 수 있습니다.
관리 네트워크, VPN(가상 사설망)과 같은 프라이빗 연결을 사용할 때 클라이언트와 세션 호스트 간에 직접 연결이 설정됩니다. 관리형 네트워크를 사용하는 연결은 다음 방법 중 하나로 설정됩니다.
- RDP Shortpath 수신기를 사용하도록 설정하고 각 세션 호스트의 인바운드 포트가 연결을 수락하도록 허용해야 하는 클라이언트 디바이스와 세션 호스트 간의 직접 UDP 연결입니다.
- 클라이언트와 세션 호스트 간의 STUN(Simple Traversal Underneath NAT) 프로토콜을 사용하는, 클라이언트 디바이스와 세션 호스트 간의 직접 UDP 연결입니다. 세션 호스트의 인바운드 포트를 허용할 필요가 없습니다.
공용 네트워크에서는 공용 연결을 사용할 때 클라이언트와 세션 호스트 간에 직접 연결이 설정됩니다. 공용 연결을 사용하는 경우 두 가지 연결 형식이 있으며 기본 설정 순서대로 여기에 나열됩니다.
- 클라이언트와 세션 호스트 간의 STUN(Simple Traversal UnderNEATH NAT) 프로토콜을 사용하는 직접 UDP 연결입니다.
- 클라이언트와 세션 호스트 간의 릴레이와 함께 TURN(Traversal Using Relay NAT) 프로토콜을 사용하는 간접 UDP 연결입니다. 이는 미리 보기 상태입니다.
RDP Shortpath에 사용되는 전송은 URCP(Universal Rate Control Protocol)를 기반으로 합니다. URCP는 네트워크 상태에 대한 활성 모니터링으로 UDP를 개선하며 공평하고 완전한 링크 사용률을 제공합니다. URCP는 필요에 따라 낮은 지연 및 손실 수준에서 작동합니다.
- 미리 보기 중에 TURN은 유효성 검사 호스트 풀의 세션 호스트에 연결하는 경우에만 사용할 수 있습니다. 호스트 풀을 유효성 검사 환경으로 구성하려면, 호스트 풀을 유효성 검사 환경으로 정의를 참조하세요.
- TURN이 포함된 공용 네트워크용 RDP Shortpath는 Azure 퍼블릭 클라우드에서만 사용할 수 있습니다.
주요 혜택
RDP Shortpath를 사용하면 다음과 같은 주요 이점이 있습니다.
URCP를 사용하여 UDP를 향상시키면 네트워크 매개 변수를 동적으로 학습하고 프로토콜에 속도 제어 메커니즘을 제공하여 최상의 성능을 얻을 수 있습니다.
추가 릴레이 지점을 제거하면 왕복 시간이 줄어들어 연결 안정성과 대기 시간에 중요한 애플리케이션 및 입력 방법에 대한 사용자 환경이 개선됩니다.
또한 관리 네트워크의 경우:
- RDP Shortpath는 DSCP(Differentiated Services Code Point) 표시를 통해 RDP 연결에 대한 QoS(서비스 품질) 우선 순위를 구성할 수 있도록 지원합니다.
- RDP Shortpath 전송을 사용하면 각 세션에 대해 스로틀 비율을 지정하여 아웃바운드 네트워크 트래픽을 제한할 수 있습니다.
관리 네트워크에 대해 RDP Shortpath가 작동하는 방식
다음 방법을 사용하여 관리 네트워크에서 RDP Shortpath를 사용하는 데 필요한 직접 가시선 연결을 달성할 수 있습니다.
- ExpressRoute 개인 피어링
- 사이트 간 VPN 또는 지점 및 사이트 간 VPN(IPsec)(예: Azure VPN Gateway)
직접적인 가시선 연결이 있다는 것은 클라이언트가 방화벽에 의해 차단되지 않고 세션 호스트에 직접 연결할 수 있음을 의미합니다.
참고 항목
다른 VPN 형식을 사용하여 Azure에 연결하는 경우 UDP 기반 VPN을 사용하는 것이 좋습니다. 대부분의 TCP 기반 VPN 솔루션은 중첩된 UDP를 지원하지만 TCP 정체 제어의 상속된 오버헤드를 추가하여 RDP 성능을 저하시킵니다.
관리 네트워크에 RDP Shortpath를 사용하려면 세션 호스트에서 UDP 수신기를 사용하도록 설정해야 합니다. 기본적으로 포트 3390이 사용되지만 다른 포트를 사용할 수도 있습니다.
이 다이어그램은 Active Directory 도메인에 조인한 관리 네트워크와 세션 호스트에 RDP Shortpath를 사용할 때의 네트워크 연결에 대한 개략적인 개요를 보여 줍니다.
연결 시퀀스
모든 연결은 Azure Virtual Desktop Gateway를 통해 TCP 기반 역방향 연결 전송을 설정하여 시작됩니다. 그런 다음 클라이언트와 세션 호스트는 초기 RDP 전송을 설정하고 기능 교환을 시작합니다. 이러한 기능은 다음 프로세스를 사용하여 협상됩니다.
- 세션 호스트는 IPv4 및 IPv6 주소 목록을 클라이언트에 보냅니다.
- 클라이언트는 백그라운드 스레드를 시작하여 세션 호스트의 IP 주소 중 하나에 직접 병렬 UDP 기반 전송을 설정합니다.
- 클라이언트가 제공된 IP 주소를 검색하는 동안 사용자 연결에 지연이 없는지 확인하기 위해 역방향 연결 전송을 통해 초기 연결을 계속 설정합니다.
- 클라이언트가 세션 호스트에 직접 연결되어 있는 경우 클라이언트는 신뢰할 수 있는 UDP에서 TLS를 사용하여 보안 연결을 설정합니다.
- RDP Shortpath 전송을 설정한 후 원격 그래픽, 입력 및 디바이스 리디렉션을 포함한 모든 DVC(동적 가상 채널)가 새 전송으로 이동됩니다. 그러나 방화벽이나 네트워크 토폴로지에 따라 클라이언트가 직접 UDP 연결을 설정하지 못하는 경우 RDP는 역방향 연결 전송을 계속합니다.
사용자가 관리 네트워크용 RDP Shortpath와 공용 네트워크를 모두 사용할 수 있는 경우 발견된 첫 번째 알고리즘이 사용됩니다. 먼저 설정되는 연결이 사용자가 해당 세션에 사용할 연결입니다.
공용 네트워크에 대해 RDP Shortpath가 작동하는 방식
공용 연결을 사용할 때 UDP 연결이 성공할 수 있는 최상의 기회를 제공하기 위해 직접 및 간접 연결 형식이 있습니다.
직접 연결: STUN은 클라이언트와 세션 호스트 간에 직접 UDP 연결을 설정하는 데 사용됩니다. 이 연결을 설정하려면 클라이언트와 세션 호스트가 공용 IP 주소 및 협상된 포트를 통해 서로 연결할 수 있어야 합니다. 그러나 대부분의 클라이언트는 NAT(네트워크 주소 변환 ) 게이트웨이 디바이스 뒤에 있기 때문에 자신의 공용 IP 주소를 알지 못합니다. STUN은 NAT 게이트웨이 디바이스 뒤에서 공용 IP 주소를 자체 검색하고 클라이언트가 자체 공용 IP 주소를 확인하기 위한 프로토콜입니다.
클라이언트가 STUN을 사용하려면 네트워크에서 UDP 트래픽을 허용해야 합니다. 클라이언트와 세션 호스트가 모두 검색된 다른 IP 주소와 포트로 직접 라우팅할 수 있다고 가정하면 WebSocket 프로토콜을 통해 직접 UDP를 사용하여 통신이 설정됩니다. 방화벽 또는 다른 네트워크 디바이스가 직접 연결을 차단하는 경우 간접 UDP 연결이 시도됩니다.
간접 연결: TURN은 직접 연결이 불가능한 경우 클라이언트와 세션 호스트 간의 중간 서버를 통해 트래픽을 릴레이하는 간접 연결을 설정하는 데 사용됩니다. TURN은 STUN의 확장입니다. TURN을 사용하면 방화벽 및 기타 네트워크 디바이스를 통해 허용될 수 있는 공용 IP 주소 및 포트를 미리 알 수 있습니다.
TURN은 일반적으로 사용자 이름/암호를 통해 서버에 대한 액세스 권한을 부여하며 기본 설정 작업 모드는 UDP 소켓을 사용하는 것입니다. 방화벽 또는 다른 네트워크 디바이스가 UDP 트래픽을 차단하는 경우 연결은 TCP 기반 역방향 연결 전송으로 대체됩니다.
연결이 설정되면 ICE(Interactive Connectivity Establishment)는 STUN 및 TURN의 관리를 조정하여 연결이 설정될 가능성을 최적화하고 기본 네트워크 통신 프로토콜에 우선 순위가 지정되도록 합니다.
각 RDP 세션은 RDP Shortpath 트래픽을 허용하는 임시 포트 범위(기본적으로 49152~65535)에서 동적으로 할당된 UDP 포트를 사용합니다. 포트 65330은 Azure에서 내부적으로 사용하도록 예약되어 있으므로 이 범위에서 무시됩니다. 더 작고 예측 가능한 포트 범위를 사용할 수도 있습니다. 자세한 내용은 공용 네트워크에 대해 클라이언트가 사용하는 포트 범위 제한을 참조하세요.
이 다이어그램은 세션 호스트가 Microsoft Entra ID에 조인한 공용 네트워크에 RDP Shortpath를 사용할 때의 네트워크 연결에 대한 개요를 간략하게 보여 줍니다.
네트워크 주소 변환 및 방화벽
대부분의 Azure Virtual Desktop 클라이언트는 프라이빗 네트워크의 컴퓨터에서 실행됩니다. 인터넷 액세스는 NAT(네트워크 주소 변환) 게이트웨이 디바이스를 통해 제공됩니다. 따라서 NAT 게이트웨이는 프라이빗 네트워크에서 인터넷으로 향하는 모든 네트워크 요청을 수정합니다. 이러한 수정은 프라이빗 네트워크의 모든 컴퓨터에서 단일 공용 IP를 공유하려고 합니다.
IP 패킷 수정으로 인해 트래픽 수신자는 실제 보낸 사람이 아닌 NAT 게이트웨이의 공용 IP를 볼 수 있습니다. 트래픽이 NAT 게이트웨이로 돌아오면 보낸 사람의 정보 없이 의도한 수신자에게 전달하도록 주의해야 합니다. 대부분의 시나리오에서 이러한 NAT 뒤에 숨겨진 디바이스는 변환이 발생하는 것을 인식하지 못하며 NAT 게이트웨이의 네트워크 주소를 모릅니다.
NAT는 모든 세션 호스트가 상주하는 Azure Virtual Network에 적용됩니다. 세션 호스트가 인터넷의 네트워크 주소에 연결하려고 하면 NAT Gateway(사용자 고유 또는 Azure에서 제공하는 기본값) 또는 Azure Load Balancer가 주소 변환을 수행합니다.
대부분의 네트워크에는 일반적으로 트래픽을 검사하고 규칙에 따라 차단하는 방화벽이 포함됩니다. 대부분의 고객은 들어오는 연결(즉, 요청 없이 전송된 인터넷에서 원치 않는 패킷)을 방지하기 위해 방화벽을 구성합니다. 방화벽은 다양한 기술을 사용하여 데이터 흐름을 추적하여 요청된 트래픽과 원치 않는 트래픽을 구분합니다. TCP의 컨텍스트에서 방화벽은 SYN 및 ACK 패킷을 추적하며 프로세스는 간단합니다. UDP 방화벽은 일반적으로 패킷 주소를 기반으로 추론을 사용하여 트래픽을 UDP 흐름과 연결하고 허용하거나 차단합니다.
연결 시퀀스
모든 연결은 Azure Virtual Desktop Gateway를 통해 TCP 기반 역방향 연결 전송을 설정하여 시작됩니다. 그런 다음 클라이언트와 세션 호스트는 초기 RDP 전송을 설정하고 기능 교환을 시작합니다. 공용 네트워크에 대해 RDP Shortpath가 세션 호스트에서 사용하도록 설정된 경우 세션 호스트는 후보 수집이라는 프로세스를 시작합니다.
- 세션 호스트는 VPN 및 Teredo와 같은 가상 인터페이스를 포함하여 세션 호스트에 할당된 모든 네트워크 인터페이스를 열거합니다.
- Windows 서비스 원격 데스크톱 서비스(TermService)는 각 인터페이스에 UDP 소켓을 할당하고 IP:Port 쌍을 후보 테이블에 로컬 후보로 저장합니다.
- 원격 데스크톱 서비스는 이전 단계에서 할당된 각 UDP 소켓을 사용하여 공용 인터넷에서 Azure Virtual Desktop STUN Server에 도달하려고 시도합니다. 작은 UDP 패킷을 포트 3478로 보내 통신을 수행합니다.
- 패킷이 STUN 서버에 도달하면 STUN 서버는 공용 IP 및 포트로 응답합니다. 이 정보는 후보 테이블에 재귀 후보로 저장됩니다.
- 세션 호스트가 모든 후보를 수집한 후 세션 호스트는 설정된 역방향 연결 전송을 사용하여 후보 목록을 클라이언트에 전달합니다.
- 클라이언트가 세션 호스트로부터 후보자 목록을 수신하면 클라이언트 쪽에서도 후보 수집을 수행합니다. 그런 다음 클라이언트는 해당 후보 목록을 세션 호스트로 보냅니다.
- 세션 호스트와 클라이언트가 후보 목록을 교환한 후 두 당사자는 수집된 모든 후보를 사용하여 서로 연결하려고 시도합니다. 이 연결 시도는 양쪽에서 동시에 수행됩니다. 대부분의 NAT 게이트웨이는 아웃바운드 데이터 전송이 초기화되는 즉시 소켓으로 들어오는 트래픽을 허용하도록 구성됩니다. NAT 게이트웨이의 이러한 동작은 동시 연결이 필수적인 이유입니다. STUN이 차단되어 실패하면 TURN을 사용하여 간접 연결을 시도합니다.
- 초기 패킷 교환 후 클라이언트 및 세션 호스트는 하나 이상의 데이터 흐름을 설정할 수 있습니다. 이러한 데이터 흐름에서 RDP는 가장 빠른 네트워크 경로를 선택합니다. 그런 다음 클라이언트는 세션 호스트와 신뢰할 수 있는 UDP에 TLS를 사용하여 보안 연결을 설정하고 RDP Shortpath 전송을 시작합니다.
- RDP가 RDP Shortpath 전송을 설정한 후 원격 그래픽, 입력 및 디바이스 리디렉션을 포함한 모든 DVC(동적 가상 채널)가 새 전송으로 이동합니다.