Dies ist eine sehr breite Frage.
Nein, das ist im Grunde nicht unbedingt CUBIC.
Die Neuübertragung wird zuerst in TCP "Basic" RFC 793 (1981), Abschnitt 3.7 Datenkommunikation, Abschnitt "Retransmission Timeout" angegeben.
Seitdem gab es viele (wirklich viele [*]) Erweiterungen. Ein sehr auffälliges ist "Slow-Start", zuletzt spezifiziert durch RFC 5681, aber die Wurzeln gehen zurück bis 1997 RFC 2001, "TCP Langsamer Start, Congestion Avoidance, Fast Retransmit und Fast Recovery Algorithms".
Es gibt keine Einheitsgröße in dieser Domäne, es gibt immer einen Kompromiss. Plus "intelligente" Algorithmen haben mehr Platz (Software + CPU-Nutzung), so dass sie je nach Anwendung verwendet werden können oder auch nicht oder sogar einfach verfügbar sind (denken Sie an Embedded-Geräte). Und da diese Dinge in der Implementierung sind (d. H. Nicht in den ausgetauschten Daten zwischen Host gesehen), können Sie nie sicher wissen, welche Host welche verwenden. Sie sehen zum Beispiel die TCP-Fenstergröße und -skalierung in den Segmenten, aber Sie werden nicht wissen, mit welchem Algorithmus sie verwaltet wird.
Wie für Linux, es ist Standard zu PRR seit 3.2. Davor war CUBIC und vorheriger BIC.
Obwohl Standard nicht bedeutet, dass es der einzige verfügbare ist. Auf meinen debian Lager 4.4.0 Kernel, es ist CUBIC: Abschnitt: "erweiterte Staukontrolle TCP"
[email protected]:~$ cat /proc/sys/net/ipv4/tcp_allowed_congestion_control
cubic reno
... und es gibt ein Dutzend in der:
[email protected]:~$ cat /proc/sys/net/ipv4/tcp_congestion_control
cubic
Obwohl Reno auch verfügbar ist der Kernel-Konfiguration.
*: https://en.wikipedia.org/wiki/TCP_congestion-avoidance_algorithm
Dies ist ein * sehr * breite Frage (siehe meine Antwort). ** Vielleicht möchten Sie genauer sein. ** Ihre Frage kann sehr gut als "zu breit" oder nicht-thematisch (weil nicht direkt programmierend) markiert und in die Warteschleife gesetzt werden. – jbm