SCTP
имеет собственную поддержку размещения в разных сетях, которая, если я понимаю, это правильно автоматически перенаправит Ваши пакеты по вторичному NIC, если основной интерфейс понизится. Я копировал эту функциональность с TCP путем записи пользовательской маршрутизации deamon для изменения таблиц маршрутизации, если мой основной NIC понижается. Я хотел бы попытаться использовать SCTP
вместо этого.
В Сетевом программировании Unix Steven V1 3-й Выпуск на странице 288 это говорит:
Для этого примера мы используем one-to-many-style сервер. Мы делаем этот выбор по одной важной причине. Примеры в Главе 5 могут быть изменены для работания
SCTP
с одним незначительным изменением: изменитеsocket
вызов функции указатьIPPROTO_SCTP
вместоIPPROTO_TCP
как третий аргумент. Просто внесение этого изменения, однако, не использовало бы в своих интересах ни одной из дополнительных функций, обеспеченныхSCTP
кроме размещения в разных сетях.
Теперь я попробовал это довольно плохими результатами.
Я работаю на Ubuntu 9.04 с libsctp1, libsctp-dev, и установленных пакетах lksctp-инструментов. Я проверил с lksctp-инструментами это SCTP
работает правильно.
Я взял пример кода UNP и изменил, как обозначено выше ~/unpv13e/tcpcliserv/tcpserv04.c
и ~/unpv13e/select/tcpcli02.c
программы.
Это - простой сервер эха / клиентская пара. Выполнениям сервера, по-видимому, слушание, но клиентские выходы, говоря соединение отказали. Так как netstat не поддерживает SCTP
Я использовал lsof -n | grep tcpserv
который показал мне:
tcpserv04 6208 alice 3u sock 0,4 33889 can't identify protocol
Это, кажется, не говорит мне очень кроме tcpserv04, имеет некоторый открытый сокет.
Я имел, уже переписал и протестировал исходного клиента TCP в жемчуге, таким образом, я переключил его на sctp и смог соединиться, хотя передача по каналу файла на stdin не полностью работала (слонялся вокруг 2/3's пути посредством получения спины эха).
Кажется, что UNP подразумевает, что портирование TCP-приложений к SCTP для использования в своих интересах размещения в разных сетях тривиально, все же основывал эту простую попытку, которая, действительно кажется, не имеет место.
Кто-либо может указать на меня на хорошее учебное руководство или дать хороший совет относительно какого-либо глюка, чтобы не упустить при портировании приложений TCP на one-to-one-style SCTP для использования в своих интересах размещения в разных сетях?