Pada umumnya, untuk mengatur QoS Microsoft Teams yang paling sering melakukan tagging DSCP dalam sebuah jaringan LAN sebuah organisasi adalah Switch dan Router. Hanya saja kali ini saya mendapatkan kasus yang mengharuskan perangkat laptop yang melakukan marking DSCP. Tanpa Intune, dan tanpa Global Policy (GPO), di seri Windows 11 Home, maka kita akan mengandalkan perintah powershell NetQosPolicy. Sekali lagi, ini hanya marking packet saja, dan dalam postingan ini tidak sampai membahas traffic-shapping atau strategi Queueing di router, yang tentunya wajib dilakukan. Next time saya bahas.
Pertama kita harus tau dulu marking yang dianjurkan oleh dokumentasi dari Microsoft di sini. Yang kira-kira, kita akan membuat 4 NetQosPolicy untuk Audio, Video, ScreenSharing, dan Calling dan Meeting Microsoft Teams. Tabelnya kira-kira seperti ini:

Setelah itu, panggil powershell console dengan privilese Administrator, dan jalankan perintah sebagai berikut:
New-NetQosPolicy -Name "TeamsAudio" -AppPathNameMatchCondition "C:\Program Files\WindowsApps\MSTeams_25275.2601.4002.2815_x64__8wekyb3d8bbwe\ms-teams.exe" -IPProtocolMatchCondition UDP -IPSrcPortStartMatchCondition 50000 -IPSrcPortEndMatchCondition 50019 -IPDstPortStartMatchCondition 3478 -IPDstPortEndMatchCondition 3481 -PolicyStore ActiveStore -DSCPValue 46 New-NetQosPolicy -Name "TeamsVideo" -AppPathNameMatchCondition "C:\Program Files\WindowsApps\MSTeams_25275.2601.4002.2815_x64__8wekyb3d8bbwe\ms-teams.exe" -IPProtocolMatchCondition UDP -IPSrcPortStartMatchCondition 50020 -IPSrcPortEndMatchCondition 50039 -IPDstPortStartMatchCondition 3478 -IPDstPortEndMatchCondition 3481 -PolicyStore ActiveStore -DSCPValue 34 New-NetQosPolicy -Name "TeamsAppSharing" -AppPathNameMatchCondition "C:\Program Files\WindowsApps\MSTeams_25275.2601.4002.2815_x64__8wekyb3d8bbwe\ms-teams.exe" -IPProtocolMatchCondition UDP -IPSrcPortStartMatchCondition 50040 -IPSrcPortEndMatchCondition 50059 -IPDstPortStartMatchCondition 3478 -IPDstPortEndMatchCondition 3481 -PolicyStore ActiveStore -DSCPValue 18 New-NetQosPolicy -Name "TeamsCallingMeetings" -AppPathNameMatchCondition "C:\Program Files\WindowsApps\MSTeams_25275.2601.4002.2815_x64__8wekyb3d8bbwe\ms-teams.exe" -IPProtocolMatchCondition UDP -IPSrcPortStartMatchCondition 50070 -IPSrcPortEndMatchCondition 50089 -IPDstPortStartMatchCondition 3478 -IPDstPortEndMatchCondition 3481 -PolicyStore ActiveStore -DSCPValue 40
Jika berhasil, maka ketika menjalankan perintah:
Get-NetQosPolicy -PolicyStore ActiveStore
Akan muncul:
Name : teamsaudio Owner : PowerShell / WMI NetworkProfile : All Precedence : 127 AppPathName : C:\program files\windowsapps\msteams_25275.2601.4002.2815_x64__8wekyb3d8bbwe\ms-teams.exe JobObject : IPProtocol : UDP IPSrcPortStart : 50000 IPSrcPortEnd : 50019 IPDstPortStart : 3478 IPDstPortEnd : 3481 DSCPValue : 46 Name : teamsvideo Owner : PowerShell / WMI NetworkProfile : All Precedence : 127 AppPathName : C:\program files\windowsapps\msteams_25275.2601.4002.2815_x64__8wekyb3d8bbwe\ms-teams.exe JobObject : IPProtocol : UDP IPSrcPortStart : 50020 IPSrcPortEnd : 50039 IPDstPortStart : 3478 IPDstPortEnd : 3481 DSCPValue : 34 Name : teamsappsharing Owner : PowerShell / WMI NetworkProfile : All Precedence : 127 AppPathName : C:\program files\windowsapps\msteams_25275.2601.4002.2815_x64__8wekyb3d8bbwe\ms-teams.exe JobObject : IPProtocol : UDP IPSrcPortStart : 50040 IPSrcPortEnd : 50059 IPDstPortStart : 3478 IPDstPortEnd : 3481 DSCPValue : 18 Name : teamscallingmeetings Owner : PowerShell / WMI NetworkProfile : All Precedence : 127 AppPathName : C:\program files\windowsapps\msteams_25275.2601.4002.2815_x64__8wekyb3d8bbwe\ms-teams.exe JobObject : IPProtocol : UDP IPSrcPortStart : 50070 IPSrcPortEnd : 50089 IPDstPortStart : 3478 IPDstPortEnd : 3481 DSCPValue : 40
Sedikit catatan parameter AppPathName. Di sini bukan path direktori di mana ms-teams.exe berada. Tapi lebih dari hasil output perintah:
Get-Process ms-teams | Select-Object Path
Nanti outputnya kira-kira seperti ini:
Path ---- C:\Program Files\WindowsApps\MSTeams_25275.2601.4002.2815_x64__8wekyb3d8bbwe\ms-teams.exe C:\Program Files\WindowsApps\MSTeams_25275.2601.4002.2815_x64__8wekyb3d8bbwe\ms-teams.exe C:\Program Files\WindowsApps\MSTeams_25275.2601.4002.2815_x64__8wekyb3d8bbwe\ms-teams.exe
Setup di sisi Microsoft Teams Admin Center
Login di https://admin.teams.micorosft.com sebagai Teams Administrator atau sebagai Global Administrator. Lalu pilih menu di panel sebelah kiri Meeting -> Meeting settings. Dan di bawah Network, pastikan Insert Quality of Service (QoS) markers for real-time media traffic dalam kondisi On, dan di bagian Select a port range for each type of real-time media traffic yang terpilih adalah button radio Specify port ranges seperti berikut:

Klik Save jika sudah.
Verifikasi
Untuk memverifikasi apakah marking berhasil atau tidak, nyalakan Wireshark di laptop, lalu arahkan ke interface yang hendak dimonitor (dalam kasus saya adalah interface WiFi laptop). Lalu filter Wireshark dapat memasukkan berikut ini:
ip.dsfield && (udp.port == 3478 || udp.port == 3479 || udp.port == 3480 || udp.port == 3481)
Lakukan panggilan ke sesama pengguna Microsoft Teams, atau jika memiliki Phone System yang aktif, dapat ditest dengan melakukan panggilan ke nomor GSM. Pada saat panggilan berlangsung, maka Wireshark akan mengcapture semua packet sesuai filter. Sorot salah satu baris yang menunjukkan trafik media keluar misal seperti :

Lalu periksa detailnya terutama di bagian Internet Protocol Version 4 seperti berikut:

Dalam baris yang di hilight di atas, packet sudah dimarking dengan EF (Expedited Forwarding) untuk Voice. Yang artinya ini sudah ada cap exclusive dan priortas. Dari sini tinggal diatur di bagian traffic shapping dan queue di router. Dan berharap ISP upstream juga “menghormati” DSCP marking dan tidak melakukan DSCP stripping. Tapi setidaknya di internal jaringan kita sendiri, sudah diberlakukan QoS dan juga diprioritaskan.