Outlook TCP-Connections
Damit Outlook mit Exchange kommunizieren kann, muss es natürlich eine Verbindung per TCP oder HTTP aufbauen. Dabei ist es aber nicht mit einer einzigen TCP-Connection getan. Je nach Anwendungsfall baut Outlook mehrere TCP-Connections auf. Diese Seite beschreibt die Aspekte im Hinblick auf Migration und Betrieb.
Siehe dazu auch TCP-Connection Report
Viele statt einer ?
Rein technisch betrachtet würde auch Outlook eine einzige TCP-Connection reichen, über die die komplette Kommunikation betrieben wird. Aber in Realität nutzt Outlook mehrere parallele Verbindungen und das hat gute Gründe
- Latenz
Eine TCP-Verbindung ist bezüglich des maximal möglichen Durchsatzes nicht nur von der Bandbreite sondern vor allem der Latenzzeit abhängig. Anders als bei ICMP oder UDP sendet Outlook per TCP Daten weg und wartet auf eine Quittung. Das ist zwar kein "Ping Pong" sondern arbeitet mit einem Buffer, aber wenn der Buffer z.B. 64kByte groß ist und die Pakete 10ms für Hin und zurück brauchen, dann können maximal 100 Pufferinhalte übertragen werden- Mehr als 6,4 Megabyte/Sek oder 64MBit sind über eine TCP-Connection nicht möglich. Der TCP-Stack passt natürlich die Puffergröße der Latenz und den Paketverlustraten an aber es ist endlich. Erst durch eine parallele Verbindung können Zugriffe "parallelisiert" werden. - Dienste auf dem gleichen Server
Die Parallelisierung gilt umso mehr, wenn verschiedene Dienste angefragt werden. Wenn Outlook per MAPI/TCP das Postfach liest, nutzt es andere Ports als wenn es das Offline Adressbuch per HTTPS runterlädt oder Frei/Belegt-Zeiten per EWS anfragt oder eine Suche im Postfach über den Server macht. Auch hier ist klar, dass das eine weitere TCP-Verbindung ist, die zudem die Abhängigkeit reduziert. - Ziele
Zudem kann Outlook ja nicht nur ein Postfach, sondern auch Stellvertreter und andere Postfächer in anderen Exchange Organisationen parallel öffnen. Bei Stellvertretern ist vielleicht eine andere Exchange Frontend besser geeignet. Wenn sie in Deutschland ihr Postfach öffnen aber einen Raum in Asien abfragen, dann ist der direkte Weg von ihrem Client nach Asien meist effektiver als den deutschen Server als Relay zu nutzen. Das gilt um so mehr, wenn Sie ein Postfach in der Cloud oder einer anderen Organisation mit öffnen. Da könnte ihnen ihr eigener Exchange Server gar nicht helfen. Das gilt auch z.B. für einen Zugriff auf ein "Online Archiv" in der Cloud oder weitere Postfächer, die per POP3/IMAP4 eingebunden sein könnten.
Damit dürfte gut erklärt sein, warum Outlook mit mehr als einer TCP-Connection arbeiten wird. In Office 365 gehen wir von ca. 10 gleichzeitigen Connections als Mittelwert aus. Das bedeutet nicht, dass Outlook diese Verbindungen alle auch dauerhaft am Leben erhält. Bestimmte Abfragen sind "kurzfristig", d.h. die Verbindung wird für die Abfrage aufgebaut aber nach einigen Minuten ist sie wieder weg. Übrigens arbeiten Webbrowser genauso. Wenn Sie eine Webseite betrachten, dann wird zuerst einmal die HTML-Seite geladen aber für die darin enthaltenen Bilder, Stylesheets, Skripte etc. öffnen die meisten Browser zusätzliche Verbindungen, damit die Seite schnell aufbereitet werden kann und nicht eine "dicke Datei" die Anzeige verzögert.
Wo ist das Problem?
Nun könnten Sie sich auf den Standpunkt stellen, dass das alles doch gar kein Problem ist. TCP-Connections sind ja nicht teuer und jeder Client hat 65535 mögliche Quell-Ports. Das bisschen Overhead für den Aufbau der Verbindung (SYN/ACK) und das Aufrechthalten (Keep Alive) machen andere Clients ja auch so. Bis zu einem gewissen Maße haben Sie hier auch recht aber Sie dürfen nicht vergessen, dass einige der Outlook-Verbindungen "dauerhaft" bestehen. Schließlich will der Server ihrem Outlook auch schnell mitteilen, wenn eine neue Mail angekommen ist oder in einer Shared-Mailbox sich etwas getan hat. Da Outlook Clients aber manchmal hinter Proxy Server und NAT-Routern versteckt sind, kann der Exchange Server die Verbindung nicht von seiner Seite her aufbauen. Also muss Outlook die Verbindung initiieren und am Leben halten. Das kann aber zu Problemen führen, z.B.
- TCP-Sessions bei NAT-Routern
Die meisten "SoHo"-Router haben nur beschränkte Kapazitäten bei Speicher und CPU und können daher nur eine gewisse Menge an NAT-Zuordnungen speichern. Oft ist hier schon bei wenigen hundert Einträgen Schluss. Das ist für eine Familie mit vielleicht 10 aktiven Geräten ausreichend. Für Firmen natürlich nicht. Sie glauben aber gar nicht, wie viele "Filialen" nach und nach wachsen, Office 365 nutzen und damit an diese Grenzen kommen. Die Effekte sind das übliche "geht mal, geht mal nicht, Mails sehe ich erst nach einem Neustart, ..." - HTTP-Proxy
Die gleiche Thematik gilt für Anwender, die über einen HTTP-Proxy auf Exchange zugreifen. Diese "Long Running HTTP-Sessions" belegen auf dem Proxy Speicher, der endlich ist. Oft fällt hier dann erst nach langer Zeit auch auf, dass ein Proxy vielleicht ein Speicherloch hat und sich "vollfrisst", weil die Verbindung nicht "weggeräumt" wird. - TCP-Sessions beim Loadbalancer
Wenn Sie selbst Exchange betreiben und mehrere Server als DAG zusammengeschaltet haben, dann betreiben Sie in der Regel auch einen Loadbalancer davor. Clients greifen über diese Instanz auf die Services zu. Klar, dass der Loadbalancer jede aktive Verbindung sich "merken" und entsprechend dimensioniert sein muss. Das gilt besonders bei "HA"-Konfigurationen, bei denen zwei Loadbalancer auch noch ihre Session-Table abgleichen, so dass ein Failover ohne neuen Verbindungsaufbau erfolgt. Auch das ist wichtig, da ansonsten bei einem HLB-Failover alle Clients in sehr kurzer Zeit neue Verbindungen zu den nachgeschalteten Services aufbauen. Das kann dort dann eine Überlastsituation bewirken. - Lizenzen pro Connection.
Mittlerweile habe ich auch gelernt, dass verschiedene Komponenten im LAN und WAN ihre Lizenz an den Anzahl der Connections festmachen. Das gilt z.B. für Systeme von Riverbed Steelhead und auch die die ein oder andere Firewall oder Loadbalancer fallen darunter. Wenn Outlook durch geänderte Protokolle (MAPI/HTTP statt MAPI/TCP) oder geänderte Serverversionen (2016 statt 2010) oder andere Client Versionen sich anders verhält, kann dies weitere Probleme nach sich ziehen
Daher ist es wichtig zu wissen, wie viele Connections ein Client in ihrer individuellen Umgebung geöffnet hat und wie sich Updates und Veränderungen auswirken.
- K6475: Overview of SSL TPS licensing
limits
https://support.f5.com/csp/article/K6475 - Riverbed: Limit of connections
https://splash.riverbed.com/thread/7895 - Maximum number of simultaneous IP
connections
https://en.avm.de/service/fritzbox/fritzbox-7490/knowledge-base/publication/show/21_Maximum-number-of-simultaneous-IP-connections/ - Wie viele NAT-Sessions verträgt mein
Router?
http://www.nwlab.net/know-how/Router-Test-Tool/
Outlook Verhalten
Also müssen wir Outlook mal etwas genauer auf die Finger schauen. In einem Test habe ich daher Outlook mit einem Exchange Server 2010 verbunden und dabei erst einmal nur mein eigenes Postfach geöffnet und danach noch ein paar Stellvertreter eingebunden. Die Ergebnisse waren speziell für Exchange 2010 und Exchange 2013/2016-Umgebungen interessant, da hier auch ein Protokollwechsel von MAPI/TCP auf RPC/HTTP bzw. MAPI/HTTP erfolgt ist. Ich habe mir daher ein Postfach auf Exchange 2010 mit einigen Stellvertretern angelegt und eine kleine Versuchsreihe mit folgendem Ergebnis gestartet:
Client | Mailbox | RPC/TCP | RPC/http | MAPI/HTTP |
---|---|---|---|---|
Outlook2010 |
Exchange 2010 |
Wenig Verbindungen |
Wenig Verbindungen |
Nicht möglich |
Outlook2010 |
Exchange 2016 |
Nicht möglich |
Mehr Verbindungen |
Mehr Verbindungen |
Es hängt also nicht alleine am Protokoll sondern auch am dahinter liegenden Exchange Server. Ein Outlook 2010 gegen Exchange 2010 scheint sich mit wenigen Verbindungen zufrieden zu geben. Sobald aber ein Exchange 2016 Server als Backend angesprochen wird, kommen mehr Verbindungen zum Einsatz. Zumindest habe ich das schon beobachtet und die ein oder andere Schätzung bezüglich der verfügbaren Proxy-Sessions und Source-Ports (NAT) mussten angepasst werden. Das ist natürlich ein Problem, wenn Drittprodukte dann nicht pro Bandbreite sondern pro Connection lizenziert werden, z.B. WAN-Optimierer (Riverbed), Proxy-Systeme oder Loadbalancer.
Quellenstudium
Mir war dieses geänderten Verhalten so auch nicht bewusst, zumal ich seit Office 365 als Faustregel immer die 10 Connections/Outlook predige. Aber dass Outlook mit MAPI/TCP so sparsam ist, ist mir erst aufgefallen, als Outlook/HTTP viel mehr Connections benötigt und damit an anderer Stelle ein Engpass aufgetreten ist. Dennoch habe ich mich auf die Suche nach Quellen zu dem Thema gemacht. Die meisten Artikel beschreiben aber sehr schön, dass MAPI/HTTP in vielen Fällen effektiver ist, also bisherige Protokolle und nur in manchen Fällen etwas mehr Bandbreite braucht. Hier ein paar Quellen:
MAPI/HTTP moves connectivity to a true
HTTP request/response pattern and no longer requires two
long-lived TCP connections to be open for each session
between Outlook and Exchange…
…The change in communication between Exchange and Outlook
has a small impact on the bytes sent over the wire. The
header content in MAPI/HTTP is responsible for an increase
in bytes transferred. In a typical message communications we
have observed an average packet size increase of 1.2% versus
Outlook Anywhere for a 50 KB average packet. In scenarios of
data transfers over 10 MB the increase in bytes over the
wire is 5-10%. These increases assumes an ideal network
where connections are not dropped or resumed. If you
consider real world conditions you may actually find
MAPI/HTTP data on the wire may be lower than Outlook
Anywhere. Outlook Anywhere lacks the ability to resume
connections and the cost of re-syncing items can quickly
outweigh the increase from the MAPI/HTTP header information.
Quelle: Link:
https://blogs.technet.microsoft.com/exchange/2014/05/09/outlook-connectivity-with-mapi-over-http/
Ich würde das so interpretieren, dass MAPI/HTTP auf "guten Verbindungen" etwas mehr Bandbreite braucht aber auf schlechteren Leitungen gewinnt, da nicht immer eine Neuanmeldung erforderlich ist.
.. For each RPC connection, Outlook
initiates two HTTP sessions: one session for outgoing data
and one session for incoming data. If Outlook shows five
connections to the Exchange server for the Exchange mailbox,
public folders, and the directory service, there are
actually ten HTTP sessions. It is possible to fill the queue
of concurrent kernel requests in the Internet Information
Services (IIS) application pool. If the queue of concurrent
kernel requests is filled, performance on Outlook clients
may be negatively affected…
Quelle: HTTP Sessions Established by Outlook by Using RPC
over HTTP
https://technet.microsoft.com/en-us/library/bb124771(v=exchg.65).aspx
Hier ist gut zu sehen, warum Outlook mehrere "RPC-Verbindungen" aufmacht, für jede er dann zwei HTTP-Connections benötigt. Komisch nur, dass ich das so nicht mit NETSTAT verifizieren konnte.
Aber auch die KB-Artikel von Riverbed sind aufschlußreich, vor allem weil dort ein sehr gutes Verständnis der Protokolle vorhanden sein sollte.
.. Remember that one of the improvements
made by Microsoft with MAPI over HTTP is that it uses fewer
TCP connections compared to previous Outlook-to-Exchange
dialects. Therefore, when you use down negotiation, you
increase the connection count compared to MAPI over HTTP…
Quelle: Riverbed Microsoft Exchange Email Optimization
https://support.riverbed.com/bin/support/static/lrj6rq1evg0fnm7pekuq3j2md1/html/vte4p5uj2dkg9k1ukjv82835ci/sh_9.2_dg_protocols_html/index.html#page/sh_9.2_dg_protocols%2Fmapi.html%23ww309102
Riverbed bietet einen "Steelhead Cloud Accelerator (SC A)" an, mit dem Sie den Verkehr zwischen einem lokalen Client und Exchange Online optimieren können. Auch hier ist die Preisgestaltung und Staffelung interessant. Riverbed rechnet mit 10 Connections und 80kbps pro User
Quelle: Riverbed Licensing Frequently Asked Questions
https://supportkb. riverbed.com/support/index?page=content&id=S16282
Eine Sache ist mir aber aufgefallen, wenn ich in einem MAPI-Profil zweimal den "Exchange Provider" addiert habe. Das können Sie zwar auch machen, um z.B. zwei Postfächer in der gleichen Organisation zu öffnen, aber es ist nicht supported.
„Outlook 2010, Outlook 2013, and
Outlook 2016 let you add your delegate’s account to your own
profile and lets your delegate add your account to their
profile. However, although there is no warning message or
error, this profile configuration is not supported.“ ;
“In Exchange Server 2010 Service Pack 1 (SP1), the new Auto
Mapping feature automatically adds mailb oxes to the Outlook
Navigation Pane if you have Full Access permission to the mailboxes. Outlook manages these additional mailboxes by
using a specific permissions set. If you previously
configure d these same mailboxes as multiple Exchange
accounts in Das neue Outlook profile, you may experience
unexpected behavior when you send mail by using those other
mailboxes. This is because mailboxes that are accessed by
using the Outlook multiple Exchange accounts functionality
use a different permissions set from those mailboxes that a
re added by Exchange Auto Mapping. Outlook tries to use both
permission sets at the same time. This profile
configuration is not supported.“
Quelle: Issues that can occur when you add multiple Exchange
accounts in the same Outlook profile
https://support.microsoft.com/en-us/help/981245/issu es-that-can-occur-when-you-add-multiple-exchange-accounts-in-the-same-outlo
ok-profile
Nur weil etwas von der Software nicht verhindert wird, sollten Sie nicht drauf vertrauen, dass es auch erlaubt ist.
Outlook <> NetStat
Es gibt zudem eine kleine Diskrepanz zwischen den in Outlook angezeigten "Verbindungen" und den per NETSTAT sichtbaren Verbindungen. Oft gibt es ein paar NETSTAT-Verbindungen mehr. Das erkläre ich mit aber so, dass Outlook auch noch HTTPS-Verbindungen zu EWS, OAB und AUTODISCOVER auf macht, die im Outlook Fenster selbst aber nicht zu sehen sind.
Hier sehen Sie ein Outlook, welches zwei Exchange Postfächer in zwei Organisationen geöffnet hat. zudem hat ein Postfach ein paar zusätzliche Postfächer eingebunden. Nicht zu vergessen die POP/IMAP-Konten verschiedener Testpostfächer. Ich komme auf 12 "MAPI"-Verbindungen und 7 weitere IMAP-Verbindungen.
Beim Blick auf die aktiven TCP-Verbindungen erscheinen aber nur 7 "aktive" und 4 weitere inaktive (graue) Verbindungen. Interessanteweise kann man am Port gut sehen, dass keine einzige IMAP-Verbindung "besteht":
Verbindungen zum IMAP-Server werden aufgebaut, wenn ich in Outlook einen Ordner dieses Postfachs anwähle oder Outlook mal wieder im Hintergrund nachschaut. Anscheinend nutzt Outlook kein IMAP4-Push mit einer bestehenden Verbindung.
Weitere Links
- TCP-Connection Report
- Outlook Connectivity with MAPI over HTTP
https://blogs.technet.microsoft.com/exchange/2014/05/09/outlook-connectivity-with-mapi-over-http/ - HTTP Sessions Established by Outlook by
Using RPC over HTTP
https://technet.microsoft.com/en-us/library/bb124771(v=exchg.65).aspx - TCP/IP KeepAlive, Session Timeout, RPC
Timeout, Exchange, Outlook and you
http://ilantz.com/2013/01/14/tcpip-keepalive-session-timeout-rpc-timeout-exchange-outlook-and-you/ - Riverbed Microsoft Exchange Email
Optimization
https://support.riverbed.com/bin/support/static/lrj6rq1evg0fnm7pekuq3j2md1/html/vte4p5uj2dkg9k1ukjv82835ci/sh_9.2_dg_protocols_html/index.html#page/sh_9.2_dg_protocols%2Fmapi.html%23ww309102 - Best practices for using Office 365 on a slow network
https://support.office.com/en-us/article/Best-practices-for-using-Office-365-on-a-slow-network-fd16c8d2-4799-4c39-8fd7-045f06640166 - TCP/IP KeepAlive, Session Timeout, RPC
Timeout, Exchange, Outlook and you
http://ilantz.com/2013/01/14/tcpip-keepalive-session-timeout-rpc-timeout-exchange-outlook-and-you/ - 291626 How to manage mu ltiple Exchange mailbox accounts in Outlook
- Configure multiple Exch ange accounts
for Outlook 2013
http:/ /technet.microsoft.com/en-us/library/ee815819.aspx - Configure multiple Exch ange accounts
for Outlook 2010
http://technet.microsoft.com/en-us/lib rary/ee815819(v=office.14).aspx - Checklist for troubleshooting Outlook connectivity in Exchange 2013 and 2016
(on-pre mises)
https://blogs.technet.microsoft.com/exc hange/2016/05/31/checklist-for-troubleshooting-outlook-connectivity-in-exch ange-2013-and-2016-On-Premises/ - Issues that can occur when you add multiple Exchange accounts in the same
Outlook profile
https://support.microsoft.com/e n-us/help/981245/issues-that-can-occur-when-you-add-multiple-exchange-accou nts-in-the-same-outlook-profile - Exchange 2013 Client Access Server Role
https://blogs.technet.microsoft.com/exchange/2013/01/25/exchange-2013-cl ient-access-server-role/