Welche Betriebssysteme berücksichtigen Sie dafür?
Wenn Sie ein Windows-Betriebssystem verwenden und etwas später als Vista verwenden, sollten Sie kein Problem mit vielen Tausenden von Verbindungen auf einem einzelnen Computer haben. Ich habe Tests (hier: http://www.lenholgate.com/blog/2005/11/windows-tcpip-server-performance.html) mit einer niedrigen Spezifikation Windows Server 2003-Maschine durchgeführt und leicht mehr als 70.000 aktive TCP-Verbindungen erreicht. Einige der Ressourcenbeschränkungen, die die Anzahl der möglichen Verbindungen beeinflussen, wurden unter Vista erheblich gelockert (siehe hier: http://www.lenholgate.com/blog/2005/11/windows-tcpip-server-performance.html) und Sie könnten Ihr Ziel wahrscheinlich mit einem kleinen Cluster von Maschinen erreichen. Ich weiß nicht, was Sie vor denen brauchen würden, um die Verbindungen zu routen.
Windows bietet eine Einrichtung namens I/O Completion Ports (siehe: http://msdn.microsoft.com/en-us/magazine/cc302334.aspx), mit der Sie viele tausend gleichzeitige Verbindungen mit sehr wenigen Threads bedienen können (Ich habe gestern Tests mit 5000 Verbindungen ausgeführt, die einen Link zu einem Server mit 2 sättigten Threads zur Verarbeitung der E/A ...). Daher ist die grundlegende Architektur sehr skalierbar.
Wenn Sie einige Tests ausführen möchten, dann habe ich einige frei verfügbaren Tools auf meinem Blog, die Ihnen erlauben einen einfachen Echo-Server mit vielen Tausenden von Verbindungen zu dreschen (1) und (2) und einige freie Code, die Sie nutzen könnten (3)
Der zweite Teil Ihrer Frage, aus Ihren Kommentaren, ist komplizierter. Wenn sich die IP-Adresse des Clients ständig ändert und nichts zwischen Ihnen und Ihnen liegt, die NAT für eine konsistente IP-Adresse bereitstellen, werden die Verbindungen ohne Zweifel beendet und müssen neu eingerichtet werden. Wenn die Clients feststellen, dass diese Verbindung abreißt, wenn sich ihre IP-Adresse ändert, können sie sich wieder mit dem Server verbinden. Wenn sie dies nicht können, würde ich vorschlagen, dass die Clients den Server ab und zu abfragen müssen, um den Verbindungsverlust zu erkennen erneut verbinden. Es gibt nichts, was der Server hier tun kann, da er die neue IP-Adresse nicht vorhersagen kann und er erkennt, dass die alte Verbindung beim Versuch, Daten zu senden, fehlgeschlagen ist.
Und denken Sie daran, Ihre Probleme beginnen gerade erst, wenn Sie Ihr System auf dieser Ebene zu skalieren bekommen ...
Muss es TCP sein? Wenn der Verkehr gering ist, können die Kosten für das Verfolgen aller Verbindungen unverhältnismäßig hoch sein. Und könnten Sie ein wenig darüber nachdenken, was der Server tun wird? Millionen aktiver Verbindungen, die nicht aktiv genutzt werden, erscheinen mir verdächtig. – VladV