Примеры сетевых топологий


Транспортный протокол реального времени RTCP - часть 25


#include
double rtcp_interval(int members,
int senders,
double rtcp_bw,
int we_sent,
int packet_size,
int *avg_rtcp_size,
int initial)
{
/*
* Минимальное время между пакетами RTCP от данного узла (в секундах). Это время
* предотвращает группирование отчетов, когда в сессии участвует малое число
* участников. Это препятствует чрезмерному уменьшению интервалов межу отчетами.
*/
double const RTCP_MIN_TIME = 5.;
/*
* Доля полосы RTCP, которая должна быть поделена между активными участниками.
* (Эта доля была выбрана так, чтобы в типовой сессии с одним или двумя
* активными отправителями, вычисленный период посылки отчетов был примерно
* равен минимальному интервалу между отчетами. Доля получателя должна равняться
* 1 - доля отправителя.
*/
double const RTCP_SENDER_BW_FRACTION = 0.25;
double const RTCP_RCVR_BW_FRACTION = (1-RTCP_SENDER_BW_FRACTION);
/*
* Коэффициент преобразования (сглаживающая константа) для полосового
* фильтра, который используется при оценке среднего размера RTCP пакетов.
*/
double const RTCP_SIZE_GAIN = (1./16.);
double t; /* интервал */
double rtcp_min_time = RTCP_MIN_TIME;
int n; /* число участников, используемое при вычислении */
/*
* Самый первый вызов приложения использует вдвое меньшую
* минимальную задержку для ускорения оповещения, в то же время оставляя
* некоторое время до отчета для рэндомизации и получения информации
* о других источниках. Таким образом, установление корректного периода
* отчетов произойдет быстрее. Средний размер RTCP пакета
* устанавливается в начальный момент равным 128 октетам
* (предполагается, что все остальные генерируют SR вместо RR:
* 20 IP + 8 UDP + 52 SR + 48 SDES CNAME октетов).
*/


if (initial) {
rtcp_min_time /= 2;
*avg_rtcp_size = 128;
}
/*
* Если имелись активные отправители, надо им дать
* по крайней мере минимальную долю полосы RTCP.
* В противном случае все участники будут делить полосу RTCP поровну
*/
n = members;
if (senders > 0 && senders < members * RTCP_SENDER_BW_FRACTION) {
if (we_sent) {



Начало  Назад  Вперед