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?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage