Как вы можете получить (RTO-, MTU- и SRTT-) информацию из сообщения SCTP?
Как вы можете получить дополнительную информацию (например, RTO, MTU и SRTT) из struct sctp_rcvinfo
полученного сообщения SCTP?
Каждый раз SCTP-сообщение обнаруживается и обрабатывается с помощью функции обратного вызова, такой как
static int
receive_cb(struct socket *sock, union sctp_sockstore addr, void *data,
size_t datalen, struct sctp_rcvinfo rcv, int flags, void *ulp_info)
{...
struct sctp_rcvinfo
заполнен этой дополнительной информацией (я полагаю).
Вы можете найти пример клиента здесь.
Но мне нужно преобразовать это в данные, как
struct sctp_paddrinfo moreInfo; moreInfo.spinfo_rto
.. и так далее.
Как вы можете достичь этого?
1 ответ
RTO, MTU и SRTT не являются частью сообщений SCTP. Конечные точки не обмениваются этой информацией. Каждая сторона рассчитывает свои собственные SRTT и RTO и имеет собственный MTU.
От вашей конечной точки вы не можете получить информацию о SRTT, RTO и MTU, которые есть у другой стороны.
Значения SRTT, RTO и MTU вашей стороны для однорангового узла можно найти в структуре sctp_info.
Вы можете получить эту структуру с помощью следующего вызова API:
int sctp_get_sctp_info(struct sock *sk, struct sctp_association *asoc,
struct sctp_info *info);
Смотрите определение sctp_get_sctp_info в sctp.h