Параметр сокета SCTP_PEER_ADDR_PARAMS
Параметр позволяет приложению считывать и устанавливать различные параметры ассоциации. Приложение должно заполнить поле идентификатора ассоциации в структуре sctp_paddrparams
и передать ее вместе с параметром сокета. Формат структуры приведен ниже:
struct sctp_paddrparams {
sctp_assoc_t spp_assoc_id;
struct sockaddr_storage spp_address;
u_int32_t spp_hbinterval;
u_int16_t spp_pathmaxrxt;
};
Поля структуры имеют следующий смысл:
■ spp_assoc_id
содержит идентификатор ассоциации, параметры которой считываются или устанавливаются. Если это значение равно нулю, приложение будет работать с параметрами по умолчанию, а не с конкретной ассоциацией;
■ spp_address
указывает IP-адрес, для которого запрашиваются или устанавливаются параметры. Если значение поля равно нулю, оно игнорируется;
■ spp_hbinterval
задает интервал между проверочными сообщениями (heartbeats). Значение SCTP_NO_HB
отключает проверочные сообщения. Значение SCTP_ISSUE_HB
приводит к внеочередной отправке проверочного сообщения. Все остальные значения задают интервал проверки в миллисекундах. При установке параметров по умолчанию задание константы SCTP_ISSUE_HB
не допускается;
■ spp_hbpathmaxrxt
определяет максимальное количество повторных передач, после которых адресат считается недоступным ( INACTIVE
). Если основной адрес собеседника признается недоступным, в качестве нового основного адреса выбирается один из доступных адресов.
Параметр сокета SCTP_PRIMARY_ADDR
Параметр позволяет узнать или установить адрес, используемый локальной конечной точкой SCTP в качестве основного. Основной адрес используется в качестве адреса назначения во всех сообщениях, передаваемых собеседнику. Приложение должно заполнить структуру sctp_setprim
идентификатором ассоциации и адресом собеседника.
struct sctp_setprim {
sctp_assoc_t ssp_assoc_id;
struct sockaddr_storage ssp_addr;
};
Поля структуры имеют следующий смысл:
■ ssp_assoc_id
указывает идентификатор ассоциации, для которой следует установить или считать основной адрес. В случае сокета типа «один-к-одному» это поле игнорируется;
■ ssp_addr
определяет основной адрес, который обязательно должен принадлежать собеседнику. Если используется функция setsockopt
, значение поля трактуется как новый основной адрес собеседника.
Получение значения этого параметра для сокета типа «один-к-одному» с единственным локальным адресом эквивалентно вызову функции getsockname
.
Параметр сокета SCTP_RTOINFO
Параметр используется для считывания и установки различных тайм-аутов для конкретной ассоциации или используемых по умолчанию для конечной точки. Для считывания параметров по соображениям переносимости следует использовать функцию sctp_opt_info
, а не getsockopt
. Перед вызовом необходимо заполнить структуру sctp_rtoinfo
, которая определяется следующим образом:
struct sctp_rtoinfo {
sctp_assoc_t srto_assoc_id;
uint32_t srto_initial;
uint32_t srto_max;
uint32_t srto_min;
};
Поля структуры имеют следующий смысл:
■ srto_assoc_id
содержит либо идентификатор конкретной ассоциации, либо 0. В последнем случае работа осуществляется со значениями по умолчанию;
■ srto_initial
хранит начальное значение RTO для конкретного адреса собеседника. Это значение используется при отправке порции INIT. Измеряется поле в миллисекундах и по умолчанию равно 3000;
■ srto_max
содержит максимальное значение RTO, используемое при изменении таймера повторной передачи. Если рассчитанное значение оказывается больше максимального RTO, в качестве нового тайм-аута используется именно максимальное значение. По умолчанию это поле имеет значение 60 000 мс;
■ srto_min
содержит минимальное значение RTO, используемое при первом запуске таймера повторной передачи. Когда таймер RTO изменяется, новое значение обязательно сравнивается с минимальным. По умолчанию это поле имеет значение 1000 мс.
Запись 0 в поля srto_initial
, srto_max
и srto_min
означает, что менять текущие параметры по умолчанию не требуется. Все значения измеряются в миллисекундах. Руководство по установке таймеров для достижения максимальной производительности приводится в разделе 23.11.
Параметр сокета SCTP_SET_PEER_PRIMARY_ADDR
Установка этого параметра приводит к отправке собеседнику сообщения, запрашивающего установку конкретного локального адреса в качестве основного. Процесс должен заполнить структуру sctp_setpeerprim
и указать в ней идентификатор ассоциации и локальный адрес, который должен быть сделан основным. Этот адрес должен быть привязан к данной конечной точке. Структура sctp_setpeerprim
определяется следующим образом:
Читать дальше
Конец ознакомительного отрывка
Купить книгу