SCTP
a un support natif multi-homing qui, si je comprends bien va automatiquement rediriger vos paquets sur une carte réseau secondaire si l'interface principale descend. J'ai dupliqué cette fonctionnalité avec TCP en écrivant un deamon de routage personnalisé pour modifier les tables de routage si mon NIC principal tombe en panne. Je voudrais essayer d'utiliser SCTP
à la place.SCTP avec Multihoming comme Drop In remplacement pour TCP
Dans Steven de Unix Network Programming V1 3rd Edition à la page 288, il est dit:
Pour cet exemple, nous utilisons un one-to-many style serveur. Nous faisons ce choix pour une raison importante. Les exemples dans le chapitre 5 peuvent être modifié pour fonctionner sur
SCTP
avec une modification mineure : modifier l'appel de fonction pour spécifiersocket
IPPROTO_SCTP
au lieu deIPPROTO_TCP
comme troisième argument. Simplement faire cette modification, cependant, ne tirerait parti de l'une des fonctionnalités supplémentaires fournies parSCTP
sauf multi-homing.
Maintenant, j'ai essayé cela avec des résultats assez médiocres.
Je suis en cours d'exécution sur Ubuntu 9.04 avec le libsctp1, libsctp-dev, et les paquets lksctp-outils installés. J'ai vérifié avec lksctp-tools que SCTP
fonctionne correctement. J'ai pris le UNP example code et modifié comme indiqué ci-dessus les programmes ~/unpv13e/tcpcliserv/tcpserv04.c
et ~/unpv13e/select/tcpcli02.c
.
Ceci est une paire simple serveur d'écho/client. Le serveur s'exécute apparemment en écoute, mais le client quitte en disant que la connexion a été refusée. Étant donné que netstat ne supporte pas SCTP
je lsof -n | grep tcpserv
qui m'a montré:
tcpserv04 6208 alice 3u sock 0,4 33889 can't identify protocol
Cela ne semble pas me dire que beaucoup d'autres tcpserv04 a une sorte de prise ouverte. J'ai déjà réécrit et testé le client TCP d'origine en perl, donc je l'ai changé en sctp et j'ai pu me connecter bien que piping un fichier sur stdin ne fonctionnait pas complètement (pendu environ 2/3 de la réception l'écho est de retour). Il semble que UNP implique que le portage d'applications TCP vers SCTP pour profiter du multi-homing est trivial, mais basé sur cette simple tentative qui ne semble pas vraiment être le cas. Est-ce que quelqu'un peut me diriger vers un bon tutoriel ou donner de bons conseils sur les pièges à surveiller lors du portage d'applications TCP vers un SCTP de type one-to-one pour tirer profit du multi-homing?
TCP peut également implémenter cette forme de redondance ---- routes multiples de a à b dans la table de routage - pourquoi s'embêter? –
@Hassan Syed: Parce que je suis curieux. –
avez-vous essayé de capturer wireshark. Si tout est configuré correctement, un appel de connexion sur le client doit déclencher l'établissement d'une liaison à quatre voies vers le serveur. En outre, je n'ai pas pu trouver le fichier client (~/unpv13e/select/tcpcli02.c) à partir du lien que vous avez fourni. –