WVD の RDP Shortpath で通信の効率化を目指す!?

WVD の RDP Shortpath で通信の効率化を目指す!?

今回は WVD の新機能である RDP Shortpath を試します。執筆段階でプレビュー状態なので仕様が変わる可能性があることはご承知おきを。

RDP Shortpath ってなに

RDP Short Path は WVD クライアントとセッションホスト間で直接リモートデスクトップ通信を行うための機能です。従来のように WVD のコントロールプレーンを経由しない分、トラフィックの制御を行いやすくなっています。

RDP Shortpath ネットワーク接続の図

ただし、構成のためには WVD クライアントが次のようなネットワーキングサービスによって Azure 上のセッションホストと通信できる状態である必要があります。

  • ExpressRoute プライベートピアリング
  • S2S VPN
  • P2S VPN
  • セッションホストへのパブリック IP の付与

通信制御の柔軟性

プライベート IP による通信が可能になるので、QoS 制御を用いたトラフィックのコントロールもできるようになります。リモートデスクトップ通信を優先して伝送したり、必要な帯域を確保しておくことができます。

効率的な通信プロトコル

RDP Shortpath では、Universal Rate Control Protocol (URCP) を利用することでネットワーク状況に合わせた効率的な通信を実現しています。という触れ込みですが、実際に体感できるほどの効果までは見れていないので Microsoft の研究レポートの紹介までとさせてもらいます。

URCP: Universal Rate Control Protocol for Real-Time Communication Applications

トラフィックの安定・閉域化(ExpressRoute 利用時)

WVD のクライアントからコントロールプレーンまでの通信は閉域網を通すことができません。そのため、インターネットの影響を受けたり画面転送トラフィックの閉域化を実現できませんでした。

この機能アップデートで Azure AD 認証以外の部分のトラフィックを ExpressRoute 経由で通信することができるようになりました。

RDP Shortpath を構成してみる

まずはホストプールを展開しておきます。また、このホストプールと WVD クライアントが直接通信できるように S2S VPN などで到達性を確保しておきます。

RDP Shortpath を構成するための手順は次の通りです。

  1. RDP Shortpath の有効化
  2. Windows Firewall ルール追加

RDP Shortpath の有効化

セッションホストで RDP Shortpath を有効にします。次のいずれかの方法で有効にできます。

  • レジストリエディタでの有効化
  • PowerShell での有効化

レジストリエディタでの有効化

セッションホストで [regedit.exe] を起動します。[regedit.exe] で次の階層に移動します。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations

次の値をそれぞれ作成します。ポート番号は 3389 ではなく 3390 なので注意。

名前 (10進数)
fUseUdpPortRedirectorDWORD1
UdpPortNumberDWORD3390

設定後、[regedit.exe] を終了してセッションホストを再起動します。

PowerShell での有効化

PowerShell を管理者権限で実行し、次のコマンドを実行します。

$WinstationsKey = 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations'
New-ItemProperty -Path $WinstationsKey -Name 'fUseUdpPortRedirector' -ErrorAction:SilentlyContinue -PropertyType:dword -Value 1 -Force
New-ItemProperty -Path $WinstationsKey -Name 'UdpPortNumber' -ErrorAction:SilentlyContinue -PropertyType:dword -Value 3390 -Force

Windows Firewall ルール追加

PowerShell を使用してファイアウォールルールを追加します。次のコマンドを PowerShell で実行します。

New-NetFirewallRule -DisplayName 'Remote Desktop - Shortpath (UDP-In)'  -Action Allow -Description 'Inbound rule for the Remote Desktop service to allow RDP traffic. [UDP 3390]' -Group '@FirewallAPI.dll,-28752' -Name 'RemoteDesktop-UserMode-In-Shortpath-UDP'  -PolicyStore PersistentStore -Profile Domain, Private -Service TermService -Protocol udp -LocalPort 3390 -Program '%SystemRoot%\system32\svchost.exe' -Enabled:True

接続の確認

WVD でセッションホストに接続したら、接続ツールバーのアンテナアイコンをクリックします。

リモート デスクトップ接続バーの画像

[リモート デスクトップ] ダイアログに [接続のネットワーク ラウンドトリップ時間は良好で、UDP は有効です。] と表示されていれば正常に構成できています。[Network details][トランスポート プロトコル] [UDP] となっていることも確認します。

通信の確認

参考までに Remote Display Analyzer の結果を載せておきます。

RDP Shortpath 無効時

RDP Shortpath 有効時

RTT が向上しているようですが、特段トラフィック量が削減されるといった傾向はあまり見受けられません。UDP らしくロスは気にせずどんどん送っているようです。

パケットキャプチャしたところ、確かにプライベート IP 同士で通信しています。(クライアント:192.168.10.33、セッションホスト:10.10.0.5)

Remote Display Analyzer の対応もまだなのか少し数値がおかしく見えるところもあるので、しばらくしたらもう一度確認してみたいと思います。