Rating@Mail.ru

Форум по операционной системе GNU/Linux и свободному программному обеспечению


Текущее время: 15 дек 2017, 17:01

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: протокол SCTP
Непрочитанное сообщениеДобавлено: 26 июн 2017, 11:13 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10264
Откуда: Харьков
Протокол SCTP был добавлен достаточно поздно (2000г.) как 3-й протокол транспортного уровня TCP/IP (в дополнение к UDP и TCP).
Считается, что он объединяет возможности UDP и TCP и одновременно устраняет (некоторые) их недостатки.
(более-менее внятное объяснение см. по ссылке выше)
Изображение
Меня интересовала программная реализация SCTP ... и, естественно, в Linux.
Но найти внятных обсуждений, а тем более примеры кода, как оказалось, не так просто... :-(
Описание и некоторые примеры см. Надежная передача данных по протоколу SCTP (2008г.) ... но это, в таком виде, не работает (неизвестно в какой ОС это делалось).


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: протокол SCTP
Непрочитанное сообщениеДобавлено: 26 июн 2017, 11:18 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10264
Откуда: Харьков
Olej писал(а):
не работает

Поехали... ;-)
Т.е. не компилируется даже:
Код:
[olej@dell SCTP]$ make
cc     ss.c   -o ss
ss.c: В функции «main»:
ss.c:52:11: предупреждение: неявная декларация функции «sctp_sendmsg» [-Wimplicit-function-declaration]
     ret = sctp_sendmsg( connSock,
           ^
...

Код:
[olej@dell linux]$ dnf list '*sctp*'
Последняя проверка окончания срока действия метаданных: 0:00:11 назад, Mon Jun 26 09:57:41 2017.
Установленные пакеты
lksctp-tools.x86_64                                               1.0.16-4.fc23                                         @System
Доступные пакеты
lksctp-tools.i686                                                 1.0.16-4.fc23                                         fedora
lksctp-tools-devel.i686                                           1.0.16-4.fc23                                         fedora
lksctp-tools-devel.x86_64                                         1.0.16-4.fc23                                         fedora
lksctp-tools-doc.x86_64                                           1.0.16-4.fc23                                         fedora
python-pysctp.x86_64                                              0.6-5.fc23                                            fedora

Код:
[olej@dell linux]$ sudo dnf install lksctp-tools*
...
Выполнение транзакции
  Установка    : lksctp-tools-devel-1.0.16-4.fc23.x86_64                                                                   1/2
  Установка    : lksctp-tools-doc-1.0.16-4.fc23.x86_64                                                                     2/2
  Проверка     : lksctp-tools-doc-1.0.16-4.fc23.x86_64                                                                     1/2
  Проверка     : lksctp-tools-devel-1.0.16-4.fc23.x86_64                                                                   2/2

Установлено:
  lksctp-tools-devel.x86_64 1.0.16-4.fc23                         lksctp-tools-doc.x86_64 1.0.16-4.fc23

Выполнено!

Теперь не линкуется:
Код:
[olej@dell SCTP]$ make
cc     ss.c   -o ss
/tmp/cc6oAoBJ.o: In function `main':
ss.c:(.text+0x106): undefined reference to `sctp_sendmsg'
ss.c:(.text+0x17b): undefined reference to `sctp_sendmsg'
collect2: ошибка: выполнение ld завершилось с кодом возврата 1
<встроенное>: ошибка выполнения рецепта для цели «ss»
make: *** [ss] Ошибка 1

Это ничего не даёт:
Код:
[olej@dell netinet]$ pkg-config --list-all | grep sctp

Зато даёт:
Код:
[olej@dell lib64]$ ls *sctp*.*
libsctp.so  libsctp.so.1  libsctp.so.1.0.16

[olej@dell lib64]$ pwd
/lib64


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: протокол SCTP
Непрочитанное сообщениеДобавлено: 26 июн 2017, 11:20 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10264
Откуда: Харьков
Olej писал(а):
Зато даёт:

Код:
[olej@dell SCTP]$ make
cc -Wall -l sctp ss.c -o ss
cc -Wall -l sctp sc.c -o sc

Код:
[olej@dell SCTP]$ cat Makefile
CC += -Wall
LDOPT += -l sctp

TASK = ss sc
all: $(TASK)

%: %.c
    $(CC) $(LDOPT) $< -o $@

clean:
    rm -f $(TASK) *.o


Вложения:
common.h [339 байт]
Скачиваний: 4
ss.c [1.89 КБ]
Скачиваний: 4
sc.c [1.63 КБ]
Скачиваний: 4
Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: протокол SCTP
Непрочитанное сообщениеДобавлено: 26 июн 2017, 11:31 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10264
Откуда: Харьков
Olej писал(а):
Но найти внятных обсуждений, а тем более примеры кода, как оказалось, не так просто... :-(

Вот что настораживает - SCTP:
Цитата:
Протокол SCTP реализован в следующих операционных системах:
...
QNX Neutrino Realtime OS,[6] в версиях с 6.3.0 по 6.3.2, но с 6.4.0 поддержка прекращена
...


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: протокол SCTP
Непрочитанное сообщениеДобавлено: 26 июн 2017, 12:47 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10264
Откуда: Харьков
Выглядит это как-то так:
Код:
[olej@dell SCTP]$ ./ss
...

Код:
[olej@dell SCTP]$ ./sc
(Local) Mon Jun 26 12:45:40 2017

(GMT  ) Mon Jun 26 09:45:40 2017


Связь в 2 независимых канала разнородной информации.


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: протокол SCTP
Непрочитанное сообщениеДобавлено: 27 июн 2017, 01:05 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10264
Откуда: Харьков
Olej писал(а):
Меня интересовала программная реализация SCTP ... и, естественно, в Linux.
Но найти внятных обсуждений, а тем более примеры кода, как оказалось, не так просто... :-(

Интерфейс прикладного программирования Socket API, Часть 5: SCTP
Цитата:
Оригинал: "The Socket API, Part 5: SCTP"
Автор: Pankaj Tanwar
Дата публикации: December 29, 2011
Перевод: Н.Ромоданов
Дата перевода: июль 2012 г.

Протокол SCTP
Это полный официальный стандарт протокола (перевод):
Цитата:
Stream Control Transmission Protocol

23.12. Когда SCTP оказывается предпочтительнее TCP
Цитата:
7. Многие функции TCP поддерживаются и SCTP: уведомление о приеме, повторная передача утерянных данных, сохранение последовательности данных, оконное управление передачей, медленное начало и алгоритмы предотвращения перегрузки линий, а также выборочные уведомления. Есть и два исключения: состояние неполного закрытия и срочные данные.

Цитата:
SCTP лишен двух особенностей TCP. Одной из них является состояние неполного (половинного) закрытия соединения. Это состояние возникает, когда приложение закрывает свой конец соединения, но разрешает собеседнику отправлять данные, а само принимает их (мы обсуждали это состояние в разделе 6.6). Приложение входит в это состояние для того, чтобы сообщить собеседнику, что отправка данных завершена. Приложения очень редко используют эту возможность, поэтому при разработке SCTP решено было не заботиться об ее поддержке. Приложениям, которым нужна эта функция, с переходом на SCTP придется изменять протокол уровня приложения, чтобы отправлять сигнал в потоке данных. В некоторых случаях изменения могут быть далеко не тривиальными.

SCTP не поддерживает и такую функцию TCP, как обработка внеочередных данных (urgent data). Для доставки срочных данных в SCTP можно использовать отдельный поток, однако это не позволяет в точности воспроизвести поведение TCP.

Для приложений, ориентированных на передачу потока байтов, переход на SCTP может оказаться невыгодным. К таким приложениям относятся:
- telnet
- rlogin
- rsh
- ssh
TCP сегментирует поток байтов на пакеты IP более эффективно, чем SCPT, который пытается сохранять границы сообщений, из-за чего могут получаться блоки, не помещающиеся целиком в IP-дейтаграммы и вызывающие избыточные накладные расходы на передачу.

UNIX: разработка сетевых приложений
Цитата:
Стивенс Уильям Ричард
Глава 23 Дополнительные сведения о сокетах SCTP


Вернуться к началу
 Профиль Отправить личное сообщение  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
[ Time : 0.243s | 18 Queries | GZIP : On ]