User Tools

Site Tools


en:software:msd:config

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

en:software:msd:config [2014/10/23 00:18] (current)
root created
Line 1: Line 1:
 +FIXME **This page is not fully translated, yet. Please help completing the translation.**\\ //(remove this paragraph once the translation is finished)//
 +
 +Конфиг файл представляет из себя xml файл.\\
 +Размер в килобайтах,​ время в секундах,​ кроме параметров для которых явно указаны другие размерности.\\
 +
 +Флаг - значение принимающее 1 или 0.\\
 +Имя всегда начинается с "​f"​ и за ней следует прописная буква.\\
 +Флаг считается установленным,​ например:​
 +<code xml>
 +<​fSocketHalfClosed>​1</​fSocketHalfClosed>​
 +<​fSocketHalfClosed>​y</​fSocketHalfClosed>​
 +<​fSocketHalfClosed>​yes</​fSocketHalfClosed>​
 +<​fSocketHalfClosed>​t</​fSocketHalfClosed>​
 +<​fSocketHalfClosed>​true</​fSocketHalfClosed>​
 +</​code>​
 +идентичные записи того что флаг установлен.\\
 +Регистр не важен, те "​yes"​ и "​YES"​ интерпретируются одинаково.
 +
 +Чтобы флаг считался не установленным можно воспользоваться любым значением из примера ниже:
 +<code xml>
 +<​fSocketHalfClosed>​0</​fSocketHalfClosed>​
 +<​fSocketHalfClosed>​n</​fSocketHalfClosed>​
 +<​fSocketHalfClosed>​n</​fSocketHalfClosed>​
 +<​fSocketHalfClosed>​f</​fSocketHalfClosed>​
 +<​fSocketHalfClosed>​false</​fSocketHalfClosed>​
 +</​code>​
 +
 +Далее перечисляются секции и настройки которые в них хранятся.
 +
 +----
 +
 +====== log ======
 +Лог файл.
 +
 +<code xml><​log>​
 + <​file>/​root/​msd/​msd.log</​file>​
 +</​log></​code>​
 +
 +===== file =====
 +Имя файла. Запись производится если в командной строке не указан -v, иначе лог пишется в stdout.
 +
 +----
 +
 +====== threadPool ======
 +Настройки пула потоков.
 +
 +<code xml><​threadPool>​
 + <​threadsCount>​0</​threadsCount>​
 + <​fBindToCPU>​yes</​fBindToCPU>​
 + <​fCacheGetTimeSyscall>​yes</​fCacheGetTimeSyscall>​
 + <​timerGranularity>​100</​timerGranularity>​
 +</​threadPool></​code>​
 +
 +===== threadsCount =====
 +Количество потоков. Если 0 = автоматически по количеству доступных ядер в системе.
 +
 +===== fBindToCPU =====
 +Прикреплять потоки к процессорным ядрам. Если флаг задан то каждый поток будет выполнятся всегда только на одном ядре процессора. Такое поведение позволяет более эффективно использовать процессорный кеш.
 +
 +===== fCacheGetTimeSyscall =====
 +Кешировать системный вызов clock_gettime(). \\
 +clock_gettime() будет вызываться с задержкой указанной в [[ru:​software:​msd:​config#​timerGranularity|timerGranularity]].\\
 +На Linux позволяет экономить процессорное время при получении потоков по udp.\\
 +На FreeBSD экономия будет меньше заметна.\\
 +
 +===== timerGranularity =====
 +Задержка между вызовами clock_gettime() для обновления времени.\\
 +Измеряется как 1/1000 секунды. Например:​ 100 означает 10 раз в секунду,​ 1000 - один раз в секунду.\\
 +Выставление слишком маленького значения приведёт к повышенной нагрузке на процессор,​ выставление слишком большого значения к излишнему загрублению расчётов основанных на времени.
 +
 +----
 +
 +====== systemResourceLimits ======
 +Задаются лимиты системных ресурсов для msd.
 +
 +<code xml><​systemResourceLimits>​
 + <​maxOpenFiles>​8192</​maxOpenFiles>​
 + <​maxCoreFileSize>​unlimited</​maxCoreFileSize>​
 + <​maxMemLock>​unlimited</​maxMemLock>​
 + <​processPriority>​-10</​processPriority>​
 +</​systemResourceLimits></​code>​
 +
 +===== maxOpenFiles =====
 +Максимально доступное для msd количество файлов/​сокетов/​таймеров (для linux).
 +
 +===== maxCoreFileSize =====
 +Разрешить записывать дамп памяти (указанного размера) в случае сбоя приложения.
 +
 +===== maxMemLock =====
 +Максимально доступный объём памяти которую можно блокировать.
 +
 +===== processPriority =====
 +Приоритет выполнения msd в системе:​ -20 = высокий,​ 20 = низкий,​ 0 = по умолчанию.
 +
 +----
 +
 +====== HTTP ======
 +Настройки HTTP сервера.
 +
 +<code xml><​HTTP>​
 + <​skt>​
 + <​rcvBuf>​4</​rcvBuf>​
 + <​sndBuf>​256</​sndBuf>​
 + <​rcvTimeout>​30</​rcvTimeout>​
 + <​sndTimeout>​30</​sndTimeout>​
 + </​skt>​
 +
 + <​ioBufInitSize>​4</​ioBufInitSize>​
 + <​ioBufMaxSize>​4</​ioBufMaxSize>​
 +
 + <​bindList>​
 + <​bind>​
 + <​address>​192.168.1.1:​7088</​address>​
 + <​ifName>​vlan777</​ifName>​
 + <​backlog>​1024</​backlog>​
 + <​fAcceptFilter>​no</​fAcceptFilter>​
 + <​congestionControl>​htcp</​congestionControl>​
 + </​bind>​
 + <​bind>​
 + <​address>​[::​1]:​7088</​address>​
 + <​backlog>​2048</​backlog>​
 + <​fAcceptFilter>​no</​fAcceptFilter>​
 + <​congestionControl>​htcp</​congestionControl>​
 + <​hostnameList>​
 + <​hostname>​localhost</​hostname>​
 + </​hostnameList>​
 + </​bind>​
 + </​bindList>​
 +
 + <​hostnameList>​
 + <​hostname>​netlab.linkpc.net</​hostname>​
 + <​hostname>​www.netlab.linkpc.net</​hostname>​
 + </​hostnameList>​
 +</​HTTP></​code>​
 +
 +===== ioBufInitSize =====
 +Начальный размер буфера для приёма http запроса от клиента.
 +
 +===== ioBufMaxSize =====
 +Максимальный размер буфера для приёма http запроса от клиента.
 +
 +===== skt =====
 +Настройки сокета клиента.
 +
 +==== rcvBuf ====
 +Максимальный размер буфера для приёма (SO_RCVBUF).
 +
 +==== sndBuf ====
 +Максимальный размер буфера для отправки (SO_SNDBUF).
 +
 +==== rcvTimeout ====
 +Таймаут приёма запроса от клиента.
 +
 +==== sndTimeout ====
 +Таймаут отправки ответа клиенту.
 +
 +===== bindList, bind =====
 +bindList содержит секции bind, в которых описывается на каких адресах принимать запросы от клиентов и дополнительные параметры.
 +
 +==== address ====
 +IPv4Address:​Port или [IPv6Address]:​Port на котором принимать клиентские запросы.
 +
 +==== ifName ====
 +Имя интерфейса,​ не обязательно,​ если задано то <​address>​ IPv4 или IPv6 заменяется соответствующим IPv4 или IPv6 адресом на указанном интерфейсе перед вызовом bind(). Если на указанном интерфейсе нет IP адреса то выдаётся ошибка,​ если адресов несколько - используется первый полученный.
 +
 +==== backlog ====
 +Максимальное количество ожидающих в очереди на подключение (listen(...,​ backlog) ).
 +
 +==== fAcceptFilter ====
 +Использовать SO_ACCEPTFILTER(httpready) для FreeBSD (accf_http модуль должен быть загружен) либо TCP_DEFER_ACCEPT под linux.\\
 +Использование данного флага позволяет уменьшить использование CPU при большом количестве HTTP запросов.
 +
 +==== congestionControl ====
 +TCP Congestion Control Algoritm. (TCP_CONGESTION) Алгоритм контроля перегрузки канала в TCP.\\
 +Позволяет выжать максимум из канала при передаче клиенту.\\
 +[[ru:​software:​msd:​urls#​tcpcc|Очерёдность применения]].
 +
 +
 +===== hostnameList,​ hostname =====
 +Список доменных имён которые ассоциированы с этим адресом.\\
 +Данная подсекция может быть как в HTTP, тогда она применяется ко всем подсекциям в bindList, так и в отдельной подсекции bind, тогда заданные имена будут считатся локальными только для клиентов которые подключились на указанный в bind адрес.
 +
 +==== hostname ====
 +Доменное имя или "​*"​ - для любого имени.\\
 +IP адреса проверяются автоматически,​ не имеет смысла добавлять их в этот список.
 +
 +----
 +
 +====== limits ======
 +Лимиты применяемые к параметрам в URL запросов клиентов. См [[ru:​software:​msd:​urls#​Дополнительные параметры|URLs,​ Дополнительные параметры]].
 +
 +<code xml><​limits>​
 + <​precacheMin>​0</​precacheMin>​
 + <​precacheMax>​8192</​precacheMax>​
 + <​sndBlockSizeMin>​32</​sndBlockSizeMin>​
 + <​sndBlockSizeMax>​512</​sndBlockSizeMax>​
 +</​limits></​code>​
 +
 +===== precacheMin,​ precacheMax =====
 +В килобайтах,​ минимальное и максимальное значение precache доступное клиенту. Минимальное не может быть меньше 0, максимальное ограничено размером кольцевого буфера активного источника.\\
 +Ограничивает значение [[ru:​software:​msd:​urls#​precache|precache в URL запросе клиента]].
 +
 +===== sndBlockSizeMin,​ sndBlockSizeMax =====
 +В килобайтах,​ минимальное и максимальное значение sndBlockSize. В основном это значение влияет на производительность,​ как сервера так и клиента. Если указано слишком маленькое значение,​ то сервер будет часто пытаться отправить данные клиенту вызывая send(), это приведёт к повешению нагрузки на CPU. Если значение слишком большое,​ то сервер будет отправлять клиенту большие блоки данных,​ это может привести к тому, что различные пристаки/​плееры со слабы процессором будут слишком активно и долго загружать свой CPU чтобы переместить принятые данные из буфера сокета в буфер плеера,​ что приведёт к заиканиям звука.\\
 +Минимальное значение 0, но на самом деле они ограничено параметром rcvLowat источника.\\
 +На Linux rcvLowat (SO_RCVLOWAT) не работает и в случае мультикаста оно будет равно размеру пакета,​ а в случае TCP не известно и определяется внутренней логикой ядра.\\
 +Максимальное значение ограничено размером кольцевого буфера активного источника.\\
 +Рекомендую от 16 до 64.\\
 +Ограничивает значение [[ru:​software:​msd:​urls#​blocksize|blocksize в URL запросе клиента]].
 +
 +----
 +
 +====== hubProfileList,​ hubProfile ======
 +hubProfileList содержит список шаблонов настроек Stream Hub - hubProfile, каждому hubProfile присваивается уникальное имя.
 +
 +<code xml><​hubProfileList>​
 + <​hubProfile>​
 + <​name>​default</​name>​
 + <​fZeroCliPersistent>​no</​fZeroCliPersistent>​
 + <​fZeroSrcBitratePersistent>​no</​fZeroSrcBitratePersistent>​
 + <​fPrecacheWait>​no</​fPrecacheWait>​
 + <​fUsePollingForSend>​no</​fUsePollingForSend>​
 + <​fDropSlowClients>​no</​fDropSlowClients>​
 + <​fMPEG2TSAnalyzing>​no</​fMPEG2TSAnalyzing>​
 + <​fSocketHalfClosed>​no</​fSocketHalfClosed>​
 + <​fSocketTCPNoDelay>​no<​fSocketTCPNoDelay>​
 + <​fSocketTCPNoPush>​no</​fSocketTCPNoPush>​
 + <​fZeroCopyOnSend>​no</​fZeroCopyOnSend>​
 + <​ringBufSize>​32768</​ringBufSize>​
 + <​ringBufStorePath>/​tmp</​ringBufStorePath>​
 + <​zeroCliTimeout>​3</​zeroCliTimeout>​
 + <​errorRateInterval>​60</​errorRateInterval>​
 + <​errorRateMax>​5</​errorRateMax>​
 + <​skt>​
 + <​sndBuf>​512</​sndBuf>​
 + <​sndTimeout>​30</​sndTimeout>​
 + <​congestionControl>​htcp</​congestionControl>​
 + </​skt>​
 + <​precache>​4096</​precache>​
 + <​sndBlockSize>​64</​sndBlockSize>​
 + <​headersList>​
 + <​header>​Pragma:​ no-cache</​header>​
 + <​header>​Content-Type:​ video/​mpeg</​header>​
 + <​header>​ContentFeatures.DLNA.ORG:​ DLNA.ORG_OP=01;​DLNA.ORG_CI=0;​DLNA.ORG_FLAGS=01700000000000000000000000000000</​header>​
 + <​header>​TransferMode.DLNA.ORG:​ Streaming</​header>​
 + </​headersList>​
 + </​hubProfile>​
 +</​hubProfileList></​code>​
 +
 +===== name =====
 +Уникальное имя для hubProfile.
 +
 +===== fZeroCliPersistent =====
 +Продолжать работать даже если все клиенты отключились. Для каналов заданных в конфиге всегда выставлен. Если флаг не выставлен то хаб уничтожается по истечении времени [[ru:​software:​msd:​config#​zeroCliTimeout|zeroCliTimeout]].
 +
 +===== fZeroSrcBitratePersistent =====
 +Продолжать работать даже если все источники ничего не вещают. Для каналов заданных в конфиге всегда выставлен.
 +
 +===== fPrecacheWait =====
 +Ожидать пока в кольцевом буфере накопится заданное в precache параметре конфига/​запроса количество данных чтобы отправить их клиенту.\\
 +Используется чтобы гарантировать что только что подключённый клиент сможет сразу получить указанное количество данных.
 +
 +===== fUsePollingForSend =====
 +Добавлять сокет клиента в kqueue/​epoll.\\
 +Клиенты в kqueue/​epoll добавляются если количество данных которые нужно отправить клиенту из кольцевого буфера больше чем sndBlock для данного клиента.\\
 +Обычно это случается во время отправки прекеша,​ если у клиента проблемы с задеркажми/​потерей пакетов и он медленно принимает. Так же есть клиенты с маленьким буфером сокета (обычно VLC), они всегда висят в поллинге тк не могут принять всех данных которые для них доступны.
 +
 +===== fDropSlowClients =====
 +Отключать клиентов которые медленно принимают данные.
 +Если флаг выключен то клиентам будет пере запускаться вещание с пропуском/​потерей данных в размере:​ [[ru:​software:​msd:​config#​zeroCliTimeout|ringBufSize]] - [[ru:​software:​msd:​config#​precache|precache]].
 +
 +===== fMPEG2TSAnalyzing =====
 +Форсировать выставление флага для всех источников данного хаба. Если флаг выставлен то поток MPEG2-TS подвергается анализу:​ выделяются служебные пакеты,​ пакеты с данными,​ строятся PSI таблицы,​ подсчитывается количество пакетов,​ CC ошибок и прочих типов ошибок для каждого PID в потоке,​ лишние PID (на которые нет ссылок в PAT+PMT таблицах) отбрасываются.\\
 +Так же этот флаг выключает отсылку всех служебных MPEG2-TS данных новым клиентам перед отправкой данных из кольцевого буфера,​ что позволяет клиентам не отбрасывать пакеты в поисках пакетов со служебной информацией.\\
 +Побочный эффект:​ дополнительная нагрузка на процессор и увеличение потребления памяти,​ не значительное на фоне памяти отведённой для кольцевого буфера [[ru:​software:​msd:​config#​ringBufSize|ringBufSize]].
 +
 +===== fSocketHalfClosed =====
 +Вызывать shutdown(SHUT_RD) для клиентов.\\
 +Явно указывает клиенту что больше данные передавать на сервер нельзя.\\
 +Некоторые клиенты ошибочно принимают за закрытие соединения и отключаются.
 +
 +===== fSocketTCPNoDelay =====
 +Выставлять TCP_NODELAY флаг на сокет клиента.
 +
 +===== fSocketTCPNoPush =====
 +Выставлять TCP_NOPUSH FreeBSD / TCP_CORK Linux флаг на сокет клиента.
 +
 +===== fZeroCopyOnSend =====
 +ZCoS\\
 +Использовать sendfile() вместо sendmsg().\\
 +Использование sendfile() позволяет уменьшить нагрузку на процессор при отправке данных клиентам за счёт уменьшения количества операций копирования,​ всю работу берёт на себя ядро операционной системы.
 +см так же [[ru:​software:​msd:​config#​ringBufStorePath|ringBufStorePath]]\\
 +Эффект особенно заметен на качественный сетевых адаптерах с включённым offloading опциями.
 +
 +===== flagMergeSources =====
 +Экспериментальная возможность объединения потоков разных источников с целью коррекции ошибок,​ запланировано на будущее.
 +
 +===== ringBufSize =====
 +В килобайтах,​ форсировать выставление размера кольцевого буфера для всех источников данного хаба.
 +
 +===== ringBufStorePath =====
 +Путь к файлам где хранить файлы с содержимым кольцевого буфера.\\
 +Актуально только когда выставлен флаг [[ru:​software:​msd:​config#​fZeroCopyOnSend|fZeroCopyOnSend]]\\
 +Специальное значение:​ "​shm"​ - использовать posix shared memory (shm_open()).\\
 +Рекомендуется хранить файлы в tmpfs.\\
 +
 +==== Особенности ====
 +Если msd аварийно завершился то требуется ручное удаление файлов кольцевых буферов,​ кроме shm под FreeBSD 10 и выше.\\
 +
 +=== Особенности FreeBSD ===
 +shm можно использовать только начиная с версии 10.\\
 +
 +=== Особенности Linux ===
 +При использовании shm файлы хранятся в /run/shm, чей размер обычно ограничен. На ubuntu 12.04 - 4 гигабайта.\\
 +
 +
 +===== zeroCliTimeout =====
 +В секундах,​ время для уничтожения хаба без клиентов,​ если не выставлен флаг [[ru:​software:​msd:​config#​fZeroCliPersistent|fZeroCliPersistent]].
 +
 +===== errorRateInterval =====
 +В секундах,​ форсировать выставление интервала времени для подсчёта ошибок если задан флаг [[ru:​software:​msd:​config#​fMPEG2TSAnalyzing|fMPEG2TSAnalyzing]] для всех источников данного хаба.
 +
 +===== errorRateMax =====
 +Форсировать выставление максимального количества ошибок если задан флаг [[ru:​software:​msd:​config#​fMPEG2TSAnalyzing|fMPEG2TSAnalyzing]] для всех источников данного хаба.
 +
 +===== precache =====
 +В килобайтах,​ значение прекеша по умолчанию. Указывает сколько килобайт будет отправлено новому клиенту сразу после подключения из кольцевого буфера источника. Клиент может переопределить это значение в URL запроса. Не может превышать [[ru:​software:​msd:​config#​ringBufSize|ringBufSize]] для активного источника.\\
 +Так же [[ru:​software:​msd:​urls#​precache|задаётся в URL запроса клиента]].\\
 +Имеет [[ru:​software:​msd:​config#​precacheMin,​ precacheMax|настраиваемые лимиты]].
 +
 +===== sndBlockSize =====
 +В килобайтах,​ значение размера блока отправки по умолчанию.\\
 +Так же [[ru:​software:​msd:​urls#​blocksize|задаётся в URL запроса клиента]].\\
 +[[ru:​software:​msd:​config#​sndBlockSizeMin,​ sndBlockSizeMax|Подробное описание параметра см в секции limits]].
 +
 +===== skt =====
 +Настройки клиентских сокетов
 +
 +==== sndBuf ====
 +Максимальный размер буфера для отправки клиенту (SO_SNDBUF).
 +
 +==== sndTimeout ====
 +Таймаут отправки данных клиенту.
 +
 +==== congestionControl ====
 +TCP Congestion Control Algoritm. (TCP_CONGESTION) Алгоритм контроля перегрузки канала в TCP.\\
 +Позволяет выжать максимум из канала при передаче клиенту.\\
 +Переопределяет ранее заданные значения в URL запроса клиента,​ секции HTTP сервер,​ настройках OS.\\
 +[[ru:​software:​msd:​urls#​tcpcc|Очерёдность применения]].
 +
 +===== headersList =====
 +
 +==== header ====
 +Дополнительный HTTP заголовок и его значение добавляемые перед отправкой клиенту данных из кольцевого буфера.\\
 +Такие заголовки требуются некоторым UPnP/DLNA клиентам для работы.
 +
 +----
 +
 +====== sourceProfileList,​ sourceProfile ======
 +sourceProfileList содержит список шаблонов настроек источников потока - sourceProfile,​ каждому sourceProfileприсваивается уникальное имя.
 +
 +<code xml><​sourceProfileList>​
 + <​sourceProfile>​
 + <​name>​multicast-udp-default</​name>​
 + <​fMPEG2TSAnalyzing>​no</​fMPEG2TSAnalyzing>​
 + <​ringBufSize>​0</​ringBufSize>​
 + <​errorRateInterval>​0</​errorRateInterval>​
 + <​errorRateMax>​0</​errorRateMax>​
 + <​skt>​
 + <​rcvBuf>​2048</​rcvBuf>​
 + <​rcvLowat>​48</​rcvLowat>​
 + <​rcvTimeout>​2</​rcvTimeout>​
 + </​skt>​
 + <!-- Source connection specific info. -->
 + <​udp>​
 + <​address>​239.0.0.22:​1234</​address>​
 + </​udp>​
 + <​multicast>​
 + <​ifName>​vlan777</​ifName>​
 + </​multicast>​
 + </​sourceProfile>​
 + <​sourceProfile>​
 + <​name>​tcp-http-default</​name>​
 + <​fMPEG2TSAnalyzing>​yes</​fMPEG2TSAnalyzing>​
 + <​ringBufSize>​0</​ringBufSize>​
 + <​errorRateInterval>​0</​errorRateInterval>​
 + <​errorRateMax>​0</​errorRateMax>​
 + <​skt>​
 + <​rcvBuf>​2048</​rcvBuf>​
 + <​rcvLowat>​48</​rcvLowat>​
 + <​rcvTimeout>​30</​rcvTimeout>​
 + </​skt>​
 + <!-- Source connection specific info. -->
 + <​tcp>​
 + <​remonteHostname>​SomeServer.tv:​7088</​remonteHostname>​
 + <​connectTimeout>​5</​connectTimeout>​
 + <​reconnectInterval>​5</​reconnectInterval>​
 + <​reconnectCount>​5</​reconnectCount>​
 + <​fSocketHalfClosed>​no</​fSocketHalfClosed>​
 + </​tcp>​
 + <​http>​
 + <​urlPath>​udp/​239.0.0.6:​10000</​urlPath>​
 + <​headersList>​
 + <​header>​Accept:​ */​*</​header>​
 + <​header>​User-Agent:​ NSPlayer/​7.10.0.3059</​header>​
 + <​header>​getcontentFeatures.dlna.org:​ 1</​header>​
 + </​headersList>​
 + </​http>​
 + </​sourceProfile>​
 +</​sourceProfileList></​code>​
 +
 +===== name =====
 +Уникальное имя для sourceProfile.
 +
 +===== fMPEG2TSAnalyzing =====
 +Если флаг выставлен то поток MPEG2-TS подвергается анализу. [[ru:​software:​msd:​config#​fMPEG2TSAnalyzing|Подробнее в секции hubProfile]].
 +
 +===== ringBufSize =====
 +В килобайтах,​ размер кольцевого буфера. Не рекомендуется делать меньше,​ чем нужно для буферизации 2-5 секунд потока. Больше 32 мегабайт имеет смысл только для компенсации очень больших потерь во время приёма от HTTP источника. Меньше 4-8 мегабайт целесообразно ставить для радиостанций.
 +
 +===== errorRateInterval =====
 +В секундах,​ интервал времени для подсчёта ошибок если задан флаг [[ru:​software:​msd:​config#​fMPEG2TSAnalyzing|fMPEG2TSAnalyzing]].
 +
 +===== errorRateMax =====
 +Максимальное количество ошибок за интервал времени если задан флаг [[ru:​software:​msd:​config#​fMPEG2TSAnalyzing|fMPEG2TSAnalyzing]],​ по достижении на источнике выставляется флаг и может быть произведено переключение на следующий по списку источник.
 +
 +===== skt =====
 +Настройки принимающего сокета источника.
 +
 +==== rcvBuf ====
 +Максимальный размер буфера для приёма (SO_RCVBUF).
 +
 +==== rcvLowat ====
 +Минимальный размер данных в буфере сокета для начала считывания в кольцевой буфер и анализа (если задан флаг [[ru:​software:​msd:​config#​fMPEG2TSAnalyzing|fMPEG2TSAnalyzing]]) (SO_RCVLOWAT).\\
 +На Linux данный параметр игнорируется и чтение для udp осуществляется по пакетно,​ что ощутимо повышает нагрузку,​ для tcp по мере поступления данных.
 +
 +==== rcvTimeout ====
 +Таймаут приёма данных,​ после достижении источник считается не работающим и либо производится попытка переключения на другой источник либо клиенты отключены а хаб уничтожен,​ зависит от настроек хаба: флаг [[ru:​software:​msd:​config#​fZeroSrcBitratePersistent|fZeroSrcBitratePersistent]]
 +
 +===== udp =====
 +Настройки и информация для подключения UDP источника.
 +
 +==== address ====
 +IPv4Address:​Port или [IPv6Address]:​Port. Данная подсекция в секции sourceProfile даётся только для примера,​ поскольку для динамического хаба этот параметр извлекается из URL запроса,​ а для статического хаба подразумевается что он будет задан в настрокойках источника канала.
 +
 +===== multicast =====
 +Настройки и информация для подключения multicast источника. Так же должны присутствовать настройки для UDP.
 +
 +==== ifName ====
 +Имя интерфейса для подписки на multicast. Используется как значение по умолчанию.
 +
 +===== tcp =====
 +Настройки и информация для подключения TCP источника.
 +
 +==== remonteHostname ====
 +IPv4Address:​Port или [IPv6Address]:​Port. Адрес для tcp, tcp-http подключения к источнику. Данная подсекция в секции sourceProfile даётся только для примера,​ поскольку для динамического хаба этот параметр извлекается из URL запроса,​ а для статического хаба подразумевается что он будет задан в настрокойках источника канала.
 +
 +==== connectTimeout ====
 +В секундах,​ таймаут подключения.
 +
 +==== reconnectInterval ====
 +В секундах,​ задержка перед следующей попыткой подключения.
 +
 +==== reconnectCount ====
 +Количество попыток подключения.
 +
 +==== fSocketHalfClosed ====
 +Использовать полу закрытые соединения (Half Closed Connections).\\
 +Вызывать shutdown(SHUT_WR) сразу после: подключения (для TCP) / отправки запроса (HTTP).\\
 +Позволяет уведомить сетевой стёк ОС о том что отправки данных больше не будет и можно освободить/​не резервировать буфер сокета для отправки данных.\\
 +Некоторые реализации HTTP серверов и HTTP прокси не поддерживают полу закрытые соединения.
 +
 +===== http =====
 +Настройки и информация для подключения HTTP источника. Так же должны присутствовать настройки для TCP.
 +
 +==== urlPath ====
 +Строка для GET запроса:​ GET /%urlPath%
 +
 +==== headersList ====
 +Дополнительные HTTP заголовки и их значения добавляемые в запрос.
 +
 +----
 +
 +====== streamProxy ======
 +Настройки динамически генерируемых стрим хабов.
 +См [[ru:​software:​msd:​index#​Виды Stream Hub|Виды Stream Hub]]
 +
 +<code xml><​streamProxy>​
 + <​multicast>​
 + <​fEnable>​no</​fEnable>​
 + <​hubProfileName>​default</​hubProfileName>​
 + <​sourceProfileName>​multicast-udp-default</​sourceProfileName>​
 + </​multicast>​
 + <​http>​
 + <​fEnable>​no</​fEnable>​
 + <​hubProfileName>​default</​hubProfileName>​
 + <​sourceProfileName>​tcp-http-default</​sourceProfileName>​
 + </​http>​
 + <​transparent>​
 + <​fEnable>​no</​fEnable>​
 + <​hubProfileName>​default</​hubProfileName>​
 + <​sourceProfileName>​tcp-http-default</​sourceProfileName>​
 + </​transparent>​
 +</​streamProxy></​code>​
 +
 +===== Общие настройки динамических Stream Hub =====
 +Эти настройки одинаковые для всех динамических Stream Hub.
 +
 +==== fEnable ====
 +Разрешить использование динамическим прокси.
 +
 +==== hubProfileName ====
 +Имя профиля с настройками Stream Hub, см [[ru:​software:​msd:​config#​hubProfileList,​ hubProfile|hubProfileList,​ hubProfile]]
 +
 +==== sourceProfileName ====
 +Имя профиля с настройками источника,​ см [[ru:​software:​msd:​config#​sourceProfileList,​ sourceProfile|sourceProfileList,​ sourceProfile]]
 +
 +----
 +
 +====== channelList ======
 +В секции содержится описание каналов (Stream Hub + источники).\\
 +Описание каналов может быть вынесено во множество внешних файлов.
 +<code xml><​channelList>​
 + <​includeFile>​-/​root/​msd/​msd_channels.conf</​includeFile>​
 + <​includeFile>​-/​root/​msd/​msd_channels2.conf</​includeFile>​
 + <​channel>​
 + <​name>​Test1.ts</​name>​
 + <​hubProfileName>​default</​hubProfileName>​
 + <​precache>​8192</​precache>​
 + <​skt>​
 + <​sndBuf>​1024</​sndBuf>​
 + </​skt>​
 + <​sourceList>​
 + <​source>​
 + <​type>​tcp-http</​type>​
 + <​sourceProfileName>​tcp-http-default</​sourceProfileName>​
 + <​tcp>​ <!-- For: tcp and tcp-http. -->
 + <​remonteHostname>​SomeServer.tv:​7088</​remonteHostname>​
 + </​tcp>​
 + <​http>​
 + <​urlPath>​udp/​239.0.0.116:​4000</​urlPath>​
 + </​http>​
 + </​source>​
 + <​source>​
 + <​type>​multicast-udp</​type>​
 + <​sourceProfileName>​multicast-udp-default</​sourceProfileName>​
 + <​fMPEG2TSAnalyzing>​yes</​fMPEG2TSAnalyzing>​
 + <​udp>​
 + <​address>​239.0.0.2:​1234</​address>​
 + </​udp>​
 + <​multicast>​
 + <​ifName>​vlan777</​ifName>​
 + </​multicast>​
 + </​source>​
 + <​source>​
 + <​type>​multicast-udp</​type>​
 + <​sourceProfileName>​multicast-udp-default</​sourceProfileName>​
 + <​udp>​
 + <​address>​239.0.0.3:​1234</​address>​
 + </​udp>​
 + <​multicast>​
 + <​ifName>​vlan777</​ifName>​
 + </​multicast>​
 + </​source>​
 + </​sourceList>​
 + </​channel>​
 +</​channelList>​
 +</​code>​
 +
 +===== includeFile =====
 +путь к файлу с каналами. Параметр не обязательный. Можно использовать много раз для загрузки каналов из множества файлов.
 +
 +===== channel =====
 +Описание канала.\\
 +Включается в себя Stream Hub и как минимум один источник.\\
 +Особенность этой секции в том, что здесь можно записать любые параметры шаблона настроек Stream Hub, которые даны в [[ru:​software:​msd:​config#​hubProfileList,​ hubProfile|hubProfileList,​ hubProfile]].\\
 +Порядок загрузки параметров Stream Hub:
 +  - Значения по умолчанию встроенные в msd
 +  - Содержимое шаблона настроек Stream Hub на которое указывает параметр hubProfileName
 +  - Значения определённые в этой секции
 +В примере выше значения precache и skt/sndBuf заменяют ранее загруженные одноимённые значения из шаблона настроек Stream Hub с именем default.\\
 +Флаги не могут быть сброшены,​ только установлены.\\
 +Флаги [[ru:​software:​msd:​config#​fZeroCliPersistent|fZeroCliPersistent]] и [[ru:​software:​msd:​config#​fZeroSrcBitratePersistent|fZeroSrcBitratePersistent]] устанавливаются всегда.
 +
 +
 +==== name ====
 +Уникальное имя канала.\\
 +По этому имени клиенты будут подключатся к Stream Hub.\\
 +Если имя начинается с "/"​ то оно остаётся без изменений,​ в противном случае к нему добавляется путь: /channel/ \\
 +Можно именовать каналы произвольно,​ например так: <​code>/​udp/​224.4.4.4:​1234</​code>​
 +См [[ru:​software:​msd:​urls#/​channel/​ИМЯ_КАНАЛА|URLs]]\\
 +Рекомендую использовать окончание "​.ts",​ это требуется некоторым плеерам,​ типа WMP, для корректной работы.\\
 +
 +==== hubProfileName ====
 +Имя шаблона настроек Stream Hub, см [[ru:​software:​msd:​config#​hubProfileList,​ hubProfile|hubProfileList,​ hubProfile]]
 +
 +==== sourceList, source ====
 +Список настроек источников потока.\\
 +Настройки источника потока.\\
 +Особенность этой секции в том, что здесь можно записать любые параметры шаблона настроек источника потока,​ которые даны в [[ru:​software:​msd:​config#​sourceProfileList,​ sourceProfile|sourceProfileList,​ sourceProfile]].\\
 +Порядок загрузки параметров источника потока:​
 +  - Значения по умолчанию встроенные в msd
 +  - Содержимое шаблона настроек источника потока на которое указывает параметр sourceProfileName
 +  - Значения определённые в этой секции
 +В примере выше флаг fMPEG2TSAnalyzing указывает что анализатор потока всегда включён для данного источника,​ не зависимо от наличия этого флага в шаблоне настроек источника.\\
 +Флаги не могут быть сброшены,​ только установлены.\\
 +
 +=== type ===
 +Тип источника потока,​ доступны следующие типы:
 +  * udp
 +  * udp-rtp
 +  * multicast-udp
 +  * multicast-udp-rtp
 +  * tcp
 +  * tcp-http
 +  * tcp-http-hls - не реализовано
 +
 +=== sourceProfileName ===
 +Имя шаблона источника потока,​ см [[ru:​software:​msd:​config#​sourceProfileList,​ sourceProfile|sourceProfileList,​ sourceProfile]].\\
  
en/software/msd/config.txt · Last modified: 2014/10/23 00:18 by root