This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
software:msd:config [2022/02/04 18:47] – removed - external edit (Unknown date) 127.0.0.1 | software:msd:config [2022/02/04 18:52] (current) – root | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | Конфиг файл представляет из себя xml файл.\\ | ||
+ | Размер в килобайтах, | ||
+ | |||
+ | Флаг - значение принимающее 1 или 0.\\ | ||
+ | Имя всегда начинается с " | ||
+ | Флаг считается установленным, | ||
+ | <code xml> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | идентичные записи того что флаг установлен.\\ | ||
+ | Регистр не важен, те " | ||
+ | |||
+ | Чтобы флаг считался не установленным можно воспользоваться любым значением из примера ниже: | ||
+ | <code xml> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | Далее перечисляются секции и настройки которые в них хранятся. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ====== log ====== | ||
+ | Лог файл. | ||
+ | |||
+ | <code xml>< | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | ===== file ===== | ||
+ | Имя файла. Запись производится если в командной строке не указан -v, иначе лог пишется в stdout. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ====== threadPool ====== | ||
+ | Настройки пула потоков. | ||
+ | |||
+ | <code xml>< | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | ===== threadsCount ===== | ||
+ | Количество потоков. Если 0 = автоматически по количеству доступных ядер в системе. | ||
+ | |||
+ | ===== fBindToCPU ===== | ||
+ | Прикреплять потоки к процессорным ядрам. Если флаг задан то каждый поток будет выполнятся всегда только на одном ядре процессора. Такое поведение позволяет более эффективно использовать процессорный кеш. | ||
+ | |||
+ | ===== fCacheGetTimeSyscall ===== | ||
+ | Кешировать системный вызов clock_gettime(). \\ | ||
+ | clock_gettime() будет вызываться с задержкой указанной в [[software: | ||
+ | На Linux позволяет экономить процессорное время при получении потоков по udp.\\ | ||
+ | На FreeBSD экономия будет меньше заметна.\\ | ||
+ | |||
+ | ===== timerGranularity ===== | ||
+ | Задержка между вызовами clock_gettime() для обновления времени.\\ | ||
+ | Измеряется как 1/1000 секунды. Например: | ||
+ | Выставление слишком маленького значения приведёт к повышенной нагрузке на процессор, | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ====== systemResourceLimits ====== | ||
+ | Задаются лимиты системных ресурсов для msd. | ||
+ | |||
+ | <code xml>< | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | ===== maxOpenFiles ===== | ||
+ | Максимально доступное для msd количество файлов/ | ||
+ | |||
+ | ===== maxCoreFileSize ===== | ||
+ | Разрешить записывать дамп памяти (указанного размера) в случае сбоя приложения. | ||
+ | |||
+ | ===== maxMemLock ===== | ||
+ | Максимально доступный объём памяти которую можно блокировать. | ||
+ | |||
+ | ===== processPriority ===== | ||
+ | Приоритет выполнения msd в системе: | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ====== HTTP ====== | ||
+ | Настройки HTTP сервера. | ||
+ | |||
+ | <code xml>< | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | < | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== ioBufInitSize ===== | ||
+ | Начальный размер буфера для приёма http запроса от клиента. | ||
+ | |||
+ | ===== ioBufMaxSize ===== | ||
+ | Максимальный размер буфера для приёма http запроса от клиента. | ||
+ | |||
+ | ===== skt ===== | ||
+ | Настройки сокета клиента. | ||
+ | |||
+ | ==== rcvBuf ==== | ||
+ | Максимальный размер буфера для приёма (SO_RCVBUF). | ||
+ | |||
+ | ==== sndBuf ==== | ||
+ | Максимальный размер буфера для отправки (SO_SNDBUF). | ||
+ | |||
+ | ==== rcvTimeout ==== | ||
+ | Таймаут приёма запроса от клиента. | ||
+ | |||
+ | ==== sndTimeout ==== | ||
+ | Таймаут отправки ответа клиенту. | ||
+ | |||
+ | ===== bindList, bind ===== | ||
+ | bindList содержит секции bind, в которых описывается на каких адресах принимать запросы от клиентов и дополнительные параметры. | ||
+ | |||
+ | ==== address ==== | ||
+ | IPv4Address: | ||
+ | |||
+ | ==== ifName ==== | ||
+ | Имя интерфейса, | ||
+ | |||
+ | ==== backlog ==== | ||
+ | Максимальное количество ожидающих в очереди на подключение (listen(..., | ||
+ | |||
+ | ==== fAcceptFilter ==== | ||
+ | Использовать SO_ACCEPTFILTER(httpready) для FreeBSD (accf_http модуль должен быть загружен) либо TCP_DEFER_ACCEPT под linux.\\ | ||
+ | Использование данного флага позволяет уменьшить использование CPU при большом количестве HTTP запросов. | ||
+ | |||
+ | ==== congestionControl ==== | ||
+ | TCP Congestion Control Algoritm. (TCP_CONGESTION) Алгоритм контроля перегрузки канала в TCP.\\ | ||
+ | Позволяет выжать максимум из канала при передаче клиенту.\\ | ||
+ | [[software: | ||
+ | |||
+ | |||
+ | ===== hostnameList, | ||
+ | Список доменных имён которые ассоциированы с этим адресом.\\ | ||
+ | Данная подсекция может быть как в HTTP, тогда она применяется ко всем подсекциям в bindList, так и в отдельной подсекции bind, тогда заданные имена будут считатся локальными только для клиентов которые подключились на указанный в bind адрес. | ||
+ | |||
+ | ==== hostname ==== | ||
+ | Доменное имя или " | ||
+ | IP адреса проверяются автоматически, | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ====== limits ====== | ||
+ | Лимиты применяемые к параметрам в URL запросов клиентов. См [[software: | ||
+ | |||
+ | <code xml>< | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | ===== precacheMin, | ||
+ | В килобайтах, | ||
+ | Ограничивает значение [[software: | ||
+ | |||
+ | ===== sndBlockSizeMin, | ||
+ | В килобайтах, | ||
+ | Минимальное значение 0, но на самом деле они ограничено параметром rcvLowat источника.\\ | ||
+ | На Linux rcvLowat (SO_RCVLOWAT) не работает и в случае мультикаста оно будет равно размеру пакета, | ||
+ | Максимальное значение ограничено размером кольцевого буфера активного источника.\\ | ||
+ | Рекомендую от 16 до 64.\\ | ||
+ | Ограничивает значение [[software: | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ====== hubProfileList, | ||
+ | hubProfileList содержит список шаблонов настроек Stream Hub - hubProfile, каждому hubProfile присваивается уникальное имя. | ||
+ | |||
+ | <code xml>< | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== name ===== | ||
+ | Уникальное имя для hubProfile. | ||
+ | |||
+ | ===== fZeroCliPersistent ===== | ||
+ | Продолжать работать даже если все клиенты отключились. Для каналов заданных в конфиге всегда выставлен. Если флаг не выставлен то хаб уничтожается по истечении времени [[software: | ||
+ | |||
+ | ===== fZeroSrcBitratePersistent ===== | ||
+ | Продолжать работать даже если все источники ничего не вещают. Для каналов заданных в конфиге всегда выставлен. | ||
+ | |||
+ | ===== fPrecacheWait ===== | ||
+ | Ожидать пока в кольцевом буфере накопится заданное в precache параметре конфига/ | ||
+ | Используется чтобы гарантировать что только что подключённый клиент сможет сразу получить указанное количество данных. | ||
+ | |||
+ | ===== fUsePollingForSend ===== | ||
+ | Добавлять сокет клиента в kqueue/ | ||
+ | Клиенты в kqueue/ | ||
+ | Обычно это случается во время отправки прекеша, | ||
+ | |||
+ | ===== fDropSlowClients ===== | ||
+ | Отключать клиентов которые медленно принимают данные. | ||
+ | Если флаг выключен то клиентам будет пере запускаться вещание с пропуском/ | ||
+ | |||
+ | ===== fMPEG2TSAnalyzing ===== | ||
+ | Форсировать выставление флага для всех источников данного хаба. Если флаг выставлен то поток MPEG2-TS подвергается анализу: | ||
+ | Так же этот флаг выключает отсылку всех служебных MPEG2-TS данных новым клиентам перед отправкой данных из кольцевого буфера, | ||
+ | Побочный эффект: | ||
+ | |||
+ | ===== fSocketHalfClosed ===== | ||
+ | Вызывать shutdown(SHUT_RD) для клиентов.\\ | ||
+ | Явно указывает клиенту что больше данные передавать на сервер нельзя.\\ | ||
+ | Некоторые клиенты ошибочно принимают за закрытие соединения и отключаются. | ||
+ | |||
+ | ===== fSocketTCPNoDelay ===== | ||
+ | Выставлять TCP_NODELAY флаг на сокет клиента. | ||
+ | |||
+ | ===== fSocketTCPNoPush ===== | ||
+ | Выставлять TCP_NOPUSH FreeBSD / TCP_CORK Linux флаг на сокет клиента. | ||
+ | |||
+ | ===== fZeroCopyOnSend ===== | ||
+ | ZCoS\\ | ||
+ | Использовать sendfile() вместо sendmsg().\\ | ||
+ | Использование sendfile() позволяет уменьшить нагрузку на процессор при отправке данных клиентам за счёт уменьшения количества операций копирования, | ||
+ | см так же [[software: | ||
+ | Эффект особенно заметен на качественный сетевых адаптерах с включённым offloading опциями. | ||
+ | |||
+ | ===== flagMergeSources ===== | ||
+ | Экспериментальная возможность объединения потоков разных источников с целью коррекции ошибок, | ||
+ | |||
+ | ===== ringBufSize ===== | ||
+ | В килобайтах, | ||
+ | |||
+ | ===== ringBufStorePath ===== | ||
+ | Путь к файлам где хранить файлы с содержимым кольцевого буфера.\\ | ||
+ | Актуально только когда выставлен флаг [[software: | ||
+ | Специальное значение: | ||
+ | Рекомендуется хранить файлы в tmpfs.\\ | ||
+ | |||
+ | ==== Особенности ==== | ||
+ | Если msd аварийно завершился то требуется ручное удаление файлов кольцевых буферов, | ||
+ | |||
+ | === Особенности FreeBSD === | ||
+ | shm можно использовать только начиная с версии 10.\\ | ||
+ | |||
+ | === Особенности Linux === | ||
+ | При использовании shm файлы хранятся в /run/shm, чей размер обычно ограничен. На ubuntu 12.04 - 4 гигабайта.\\ | ||
+ | |||
+ | |||
+ | ===== zeroCliTimeout ===== | ||
+ | В секундах, | ||
+ | |||
+ | ===== errorRateInterval ===== | ||
+ | В секундах, | ||
+ | |||
+ | ===== errorRateMax ===== | ||
+ | Форсировать выставление максимального количества ошибок если задан флаг [[software: | ||
+ | |||
+ | ===== precache ===== | ||
+ | В килобайтах, | ||
+ | Так же [[software: | ||
+ | Имеет [[software: | ||
+ | |||
+ | ===== sndBlockSize ===== | ||
+ | В килобайтах, | ||
+ | Так же [[software: | ||
+ | [[software: | ||
+ | |||
+ | ===== skt ===== | ||
+ | Настройки клиентских сокетов | ||
+ | |||
+ | ==== sndBuf ==== | ||
+ | Максимальный размер буфера для отправки клиенту (SO_SNDBUF). | ||
+ | |||
+ | ==== sndTimeout ==== | ||
+ | Таймаут отправки данных клиенту. | ||
+ | |||
+ | ==== congestionControl ==== | ||
+ | TCP Congestion Control Algoritm. (TCP_CONGESTION) Алгоритм контроля перегрузки канала в TCP.\\ | ||
+ | Позволяет выжать максимум из канала при передаче клиенту.\\ | ||
+ | Переопределяет ранее заданные значения в URL запроса клиента, | ||
+ | [[software: | ||
+ | |||
+ | ===== headersList ===== | ||
+ | |||
+ | ==== header ==== | ||
+ | Дополнительный HTTP заголовок и его значение добавляемые перед отправкой клиенту данных из кольцевого буфера.\\ | ||
+ | Такие заголовки требуются некоторым UPnP/DLNA клиентам для работы. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ====== sourceProfileList, | ||
+ | sourceProfileList содержит список шаблонов настроек источников потока - sourceProfile, | ||
+ | |||
+ | <code xml>< | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | <!-- Source connection specific info. --> | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | <!-- Source connection specific info. --> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== name ===== | ||
+ | Уникальное имя для sourceProfile. | ||
+ | |||
+ | ===== fMPEG2TSAnalyzing ===== | ||
+ | Если флаг выставлен то поток MPEG2-TS подвергается анализу. [[software: | ||
+ | |||
+ | ===== ringBufSize ===== | ||
+ | В килобайтах, | ||
+ | |||
+ | ===== errorRateInterval ===== | ||
+ | В секундах, | ||
+ | |||
+ | ===== errorRateMax ===== | ||
+ | Максимальное количество ошибок за интервал времени если задан флаг [[software: | ||
+ | |||
+ | ===== skt ===== | ||
+ | Настройки принимающего сокета источника. | ||
+ | |||
+ | ==== rcvBuf ==== | ||
+ | Максимальный размер буфера для приёма (SO_RCVBUF). | ||
+ | |||
+ | ==== rcvLowat ==== | ||
+ | Минимальный размер данных в буфере сокета для начала считывания в кольцевой буфер и анализа (если задан флаг [[software: | ||
+ | На Linux данный параметр игнорируется ядром и чтение для udp осуществляется по пакетно, | ||
+ | Для tcp чтение осуществляется по мере поступления данных.\\ | ||
+ | Для Linux данный параметр реализован в программе, | ||
+ | ==== rcvTimeout ==== | ||
+ | Таймаут приёма данных, | ||
+ | |||
+ | ===== udp ===== | ||
+ | Настройки и информация для подключения UDP источника. | ||
+ | |||
+ | ==== address ==== | ||
+ | IPv4Address: | ||
+ | |||
+ | ===== multicast ===== | ||
+ | Настройки и информация для подключения multicast источника. Так же должны присутствовать настройки для UDP. | ||
+ | |||
+ | ==== ifName ==== | ||
+ | Имя интерфейса для подписки на multicast. Используется как значение по умолчанию. | ||
+ | |||
+ | ===== tcp ===== | ||
+ | Настройки и информация для подключения TCP источника. | ||
+ | |||
+ | ==== remonteHostname ==== | ||
+ | IPv4Address: | ||
+ | |||
+ | ==== connectTimeout ==== | ||
+ | В секундах, | ||
+ | |||
+ | ==== reconnectInterval ==== | ||
+ | В секундах, | ||
+ | |||
+ | ==== reconnectCount ==== | ||
+ | Количество попыток подключения. | ||
+ | |||
+ | ==== fSocketHalfClosed ==== | ||
+ | Использовать полу закрытые соединения (Half Closed Connections).\\ | ||
+ | Вызывать shutdown(SHUT_WR) сразу после: подключения (для TCP) / отправки запроса (HTTP).\\ | ||
+ | Позволяет уведомить сетевой стёк ОС о том что отправки данных больше не будет и можно освободить/ | ||
+ | Некоторые реализации HTTP серверов и HTTP прокси не поддерживают полу закрытые соединения. | ||
+ | |||
+ | ===== http ===== | ||
+ | Настройки и информация для подключения HTTP источника. Так же должны присутствовать настройки для TCP. | ||
+ | |||
+ | ==== urlPath ==== | ||
+ | Строка для GET запроса: | ||
+ | |||
+ | ==== headersList ==== | ||
+ | Дополнительные HTTP заголовки и их значения добавляемые в запрос. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ====== streamProxy ====== | ||
+ | Настройки динамически генерируемых стрим хабов. | ||
+ | См [[software: | ||
+ | |||
+ | <code xml>< | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== Общие настройки динамических Stream Hub ===== | ||
+ | Эти настройки одинаковые для всех динамических Stream Hub. | ||
+ | |||
+ | ==== fEnable ==== | ||
+ | Разрешить использование динамическим прокси. | ||
+ | |||
+ | ==== hubProfileName ==== | ||
+ | Имя профиля с настройками Stream Hub, см [[software: | ||
+ | |||
+ | ==== sourceProfileName ==== | ||
+ | Имя профиля с настройками источника, | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ====== channelList ====== | ||
+ | В секции содержится описание каналов (Stream Hub + источники).\\ | ||
+ | Описание каналов может быть вынесено во множество внешних файлов. | ||
+ | <code xml>< | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== includeFile ===== | ||
+ | путь к файлу с каналами. Параметр не обязательный. Можно использовать много раз для загрузки каналов из множества файлов. | ||
+ | |||
+ | ===== channel ===== | ||
+ | Описание канала.\\ | ||
+ | Включается в себя Stream Hub и как минимум один источник.\\ | ||
+ | Особенность этой секции в том, что здесь можно записать любые параметры шаблона настроек Stream Hub, которые даны в [[software: | ||
+ | Порядок загрузки параметров Stream Hub: | ||
+ | - Значения по умолчанию встроенные в msd | ||
+ | - Содержимое шаблона настроек Stream Hub на которое указывает параметр hubProfileName | ||
+ | - Значения определённые в этой секции | ||
+ | В примере выше значения precache и skt/sndBuf заменяют ранее загруженные одноимённые значения из шаблона настроек Stream Hub с именем default.\\ | ||
+ | Флаги не могут быть сброшены, | ||
+ | Флаги [[software: | ||
+ | |||
+ | |||
+ | ==== name ==== | ||
+ | Уникальное имя канала.\\ | ||
+ | По этому имени клиенты будут подключатся к Stream Hub.\\ | ||
+ | Если имя начинается с "/" | ||
+ | Можно именовать каналы произвольно, | ||
+ | См [[software: | ||
+ | Рекомендую использовать окончание " | ||
+ | |||
+ | ==== hubProfileName ==== | ||
+ | Имя шаблона настроек Stream Hub, см [[software: | ||
+ | |||
+ | ==== sourceList, source ==== | ||
+ | Список настроек источников потока.\\ | ||
+ | Настройки источника потока.\\ | ||
+ | Особенность этой секции в том, что здесь можно записать любые параметры шаблона настроек источника потока, | ||
+ | Порядок загрузки параметров источника потока: | ||
+ | - Значения по умолчанию встроенные в msd | ||
+ | - Содержимое шаблона настроек источника потока на которое указывает параметр sourceProfileName | ||
+ | - Значения определённые в этой секции | ||
+ | В примере выше флаг fMPEG2TSAnalyzing указывает что анализатор потока всегда включён для данного источника, | ||
+ | Флаги не могут быть сброшены, | ||
+ | |||
+ | === type === | ||
+ | Тип источника потока, | ||
+ | * udp | ||
+ | * udp-rtp | ||
+ | * multicast-udp | ||
+ | * multicast-udp-rtp | ||
+ | * tcp | ||
+ | * tcp-http | ||
+ | * tcp-http-hls - не реализовано | ||
+ | |||
+ | === sourceProfileName === | ||
+ | Имя шаблона источника потока, | ||