SCTP mit Multihoming als Ersatz für TCP
SCTP
Hat native Multi-Homing-Unterstützung, die, wenn ich es richtig verstehe, Ihre Pakete automatisch über eine sekundäre Netzwerkkarte umleitet, wenn die primäre Schnittstelle ausfällt. Ich habe diese Funktionalität mit TCP dupliziert, indem ich einen benutzerdefinierten Routing-Deamon geschrieben habe, um die Routing-Tabellen zu ändern, wenn meine primäre Netzwerkkarte ausfällt. Ich möchte versuchen, mitSCTP
stattdessen.
Bei StevenUnix Network Programming V1 3. Ausgabe Auf Seite 288 heißt es:
In diesem Beispiel verwenden wir einen Server im Eins-zu-Viele-Stil. Wir treffen diese Wahl aus einem wichtigen Grund. Die Beispiele in Kapitel 5 können zum Überlaufen geändert werdenSCTP
mit einer kleinen Änderung: Ändern Sie diesocket
Funktionsaufruf zu spezifizierenIPPROTO_SCTP
Anstatt vonIPPROTO_TCP
als drittes Argument. Das einfache Vornehmen dieser Änderung würde jedoch keine der zusätzlichen Funktionen nutzen, die von bereitgestellt werdenSCTP
außer Multi-Homing.
Jetzt habe ich das mit ziemlich schlechten Ergebnissen versucht.
Ich arbeite unter Ubuntu 9.04 mit den Paketen libsctp1, libsctp-dev und lksctp-tools. Ich habe das mit lksctp-tools überprüftSCTP
funktioniert einwandfrei.
Ich nahm dieUNP-Beispielcode und modifiziert wie oben angegeben~/unpv13e/tcpcliserv/tcpserv04.c
und~/unpv13e/select/tcpcli02.c
Programme.
Dies ist ein einfaches Echo-Server / Client-Paar. Der Server hört anscheinend zu, aber der Client gibt an, dass die Verbindung abgelehnt wurde. Da netstat nicht unterstütztSCTP
ich benutztelsof -n | grep tcpserv
was mir zeigte:
tcpserv04 6208 alice 3u sock 0,4 33889 can't identify protocol
Dies scheint mir nicht viel anderes zu sagen, als dass tcpserv04 eine Art Socket offen hat.
Ich hatte bereits den ursprünglichen TCP-Client in Perl umgeschrieben und getestet, also habe ich ihn auf sctp umgestellt und konnte eine Verbindung herstellen, obwohl das Weiterleiten einer Datei über stdin nicht vollständig funktionierte (etwa 2/3 der Strecke hingen durch den Empfang des Echos zurück). .
Es scheint, als würde UNP implizieren, dass das Portieren von TCP-Anwendungen auf SCTP zur Nutzung von Multi-Homing trivial ist. Dieser einfache Versuch scheint jedoch nicht der Fall zu sein.
Kann mich jemand auf ein gutes Tutorial verweisen oder gute Ratschläge zu jedem Fall geben, auf den man achten muss, wenn man TCP-Apps auf eins-zu-eins-SCTP portiert, um die Vorteile von Multi-Homing zu nutzen?