Как вы можете получить (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

Другие вопросы по тегам