Microsoft Teams: Backend

Die Server für Microsoft Teams betreibt Microsoft selbst, Es gibt keine "On-Prem" Version und damit kann man nur ganz schwer sehen, was da im Hintergrund genutzt wird.

Ignite 2017: Get an overview of Microsoft Teams architecture - BRK3071
https://www.youtube.com/watch?v=IUFhRBX3YoU

Einige Dinge können Sie aber allein auf dem Client sehen:

Analyse des Netzwerkverkehrs

Auf den ersten Blick könnte man glauben, dass auch Teams ein "Next Generation SIP-Client" ist. Ich habe daher den Windows 7 Ressouce Monitor genutzt, um die Netzwerkverbindungen anzuschauen

Sie sehen hier aber keine Verbindung auf 5061 oder selbst einen Versuch, sondern die konsequente Nutzung von 443. Das ist bei Skype for Business aber auch erst mal nicht anders. Schaut man mit NETMON nach, dann sehen Sie zweimal den Teams.exe-Prozess. Beim Start scheint erst ein Teams-Loader zu  laufen, der dann das Programm noch mal "richtig" startet. Beide Prozesse bleiben aber aktiv

Allerdings baut der Client schon jede Menge Verbindungen auf. Schaut man sich die IP-Adressen an, so stehen die in den Subnetzen.

13.91.252.x
40.113.87.x
13.107.18.x
104.41.216.x
104.40.208.x
40.123.43

Von den Einträgen scheint aber nur einer direkt etwas mit Teams zu tun zu haben, der in den Bereich fällt.

amer-client-ss.msg.skype.com    CNAME amer-client-ss.msg.skype.com.akadns.net
webpoolblu2a18.infra.lync.com   A     52.112.67.45
swx.cdn.skype.com               CNAME e458.wpc.azureedge.net
teams.microsoft.com             CNAME s-0001.s-msedge.net
s-0001.s-msedge.net             A     13.107.3.128

Beim Versucht eine Audio-Verbindung aufzubauen, verrät der Client eine TURN-Anfragen an einen Edge Server

In meinem Fall war nun der 104.44.200.153 ein Edge Server. Eine WHOIS-Anfrage verortet diesen Server aktuell direkt in Redmond oder ist zumindest Microsoft zugeordnet. So genau weiß man das dank Anycast-DNS nicht. per Reverse-DNS ist er nicht auflösbar aber ein Ping verrät, dass er doch "näher" stehen muss.

C:\temp>ping  104.44.200.153

Ping wird ausgeführt für 104.44.200.153 mit 32 Bytes Daten:
Antwort von 104.44.200.153: Bytes=32 Zeit=21ms TTL=119
Antwort von 104.44.200.153: Bytes=32 Zeit=35ms TTL=119
Antwort von 104.44.200.153: Bytes=32 Zeit=21ms TTL=119
Antwort von 104.44.200.153: Bytes=32 Zeit=21ms TTL=119

20-30ms sind über den Teich aus Europa nicht möglich. Der mir im TURN-Request zugewiesene Kandidate kommt auch von dem gleichen Edge-Server

Über WireShark lässt sich die UDP-Verbindung als STUN decodieren.

Diese Teams zu Telefon-Verbindung nutzte den Codec 115, was eigentlich G7221/32000 ist. In der Regel ist das ein Konferenz-Codec

Wenn ich aber meine eigenen Traces durchschaue, dann verwendet Microsoft den Code 115 auch für

a=rtpmap:115 x-msrta/8000
a=fmtp:115 bitrate=11800

Es wird also an der Zeit nach den Traces zu schauen, mit denen man vor der Verschlüsselung etwas sehen kann.

Teams Logging

Der Skype for Business Client hat eine sehr gute Logging-Funktion, die ich auf Keyhole Diagnose beschrieben habe. Beim Teams Client gibt es auch einige Logfiles, die Sie heranziehen können:

# SetupLog
C:\Users\username\AppData\Local\Microsoft\Teams\SquirrelSetup.log

# Betriebslog
C:\Users\username\AppData\Roaming\Microsoft\Teams\logs.txt
# ETL-Traces für Media C:\Users\username\AppData\Roaming\Microsoft\Teams\media-stack # Outlook Meeting AdOn C:\Users\username\AppData\Roaming\Microsoft\Teams\meeting-addin\teams-meeting-addin.log # Interessant auch, dass einige Logs meines IPHONE auf dem Desktop landen C:\Users\username\AppData\Roaming\Apple Computer\Logs\CrashReporter\MobileDevice\iphone\Retired

Interessant ist hier das Betriebslog. Allerdings ist mein Log 4 MB groß und enthält laut Zeitstempel auch Logs seit dem Start. Hier steht also sicher nichts zum "INVITE" drin. Letztlich sehen hier nur die UpdateChecks und Start/Ende-Events und Veränderungen der Fenster und des Layouts drin aber keine Details zu z.B. Meetings und Telefonaten.

Desktop Logs ?

 

WAN und LAN-Bandbreite

Die Bandbreiten für Audio und Video entsprechen im wesentlichen den Anforderungen von Skype for Business. Die eingesetzten Codecs sind identisch. Bei Video wird eventuell durch das 4x4-Fenster mehr übertragen als bei Skype for Business mit einem großen Bild und der Gallery-View der letzten 5 Sprecher. Hier sind aber noch Erfahrungswerte zu sammeln zumal hier auch das Verhalten der Anwender maßgeblich ist.

Technik und Backend

Alles, was in Teams erzeugt und erstellt wird, ist "dauerhaft". Anders als ein Chat bei Skype for Business ist ein Chat in einem Teams Channel dauerhaft. Das gleiche gilt natürlich für Dateien, die an einem Channel abgelegt werden. Im Hintergrund gibt es für jedes "Team" einen Ordner in Office Groups im der für jeden Channel ein Ordner angelegt wird. Auch die Informationen in OneNote werden in der Office Group mit abgelegt. Sie können aus einer bestehenden Office 365 Group ein Microsoft Team machen.

Für die Konferenzen kommt ein Skype-vergleichbares Backend zum Einsatz. Es ist nicht die Skype for Business Online-Instanz, die in ihrem Tenant betreiben können.

Dokumente, die ein einem Meeting hochgeladen werden, erscheinen ebenfalls als Anlage der Konversation, die im Channel geführt werden. All das liegt in der Office 365 Group. Informationen, die im "Privaten Chat" gehalten werden, landen im persönlichen Onlinedrive for Business des Benutzers.

Die Audio/Video-Komponente arbeitet wie wir es von Skype for Business und jeder anderen Lösung gewöhnt sind. Dank ICE und Kandidaten handelt die beiden Partner, sei es ein Client mit der MCU oder zwei Client bei P2P, die Endpunkte aus und suchen den besten und kürzesten Weg.

Ignite 2017: Get an overview of Microsoft Teams architecture - BRK3071
https://www.youtube.com/watch?v=IUFhRBX3YoU

Weitere Links