Bear_UA Posted December 18, 2016 Posted December 18, 2016 Затеяли поднять IPTV в сети. Было принято решение отдавать клиентам unicast-ом все. Получаем мультикаст. Есть плейлист. В качестве прокси поставили msd_lite на FreeBSD. И столкнулись с следующей проблемой. Одновременно можно смотреть только один канал. Тоесть два устройства не могут смотреть разные каналы. Один и тот же - без проблем. Когда работает только одно устройство - нормально переключается между каналами без проблем. Сломали себе голову уже куда копать :( Посоветуйте может кто сталкивался с подобной проблемой и решил. Вставить ник Quote
Bear_UA Posted December 18, 2016 Author Posted December 18, 2016 Вот конфиг который используем <?xml version="1.0" encoding="utf-8"?> <!-- Sizes in kb, time in seconds --> <!-- <skt> <rcvLowat>XXXX</rcvLowat> - DOES NOT WORK on Linux! man socket(7): ... The select(2) and poll(2) system calls currently do not respect the SO_RCVLOWAT setting on Linux, and mark a socket readable when even a single byte of data is available. ... --> <msd> <log> <file>/var/log/msd_lite.log</file> </log> <threadPool> <threadsCount>0</threadsCount> <!-- 0 = auto --> <fBindToCPU>yes</fBindToCPU> <!-- Bind threads to CPUs. --> <fCacheGetTimeSyscall>yes</fCacheGetTimeSyscall> <!-- Cache gettime() syscalls.. --> <timerGranularity>100</timerGranularity> <!-- 1/1000 sec --> </threadPool> <systemResourceLimits> <!-- "unlimited" - value valid only in this section! --> <maxOpenFiles>8192</maxOpenFiles> <!-- Numbers only! --> <maxCoreFileSize>unlimited</maxCoreFileSize> <processPriority>0</processPriority> <!-- Program scheduling priority. setpriority(). Hi: -20, Low: 20, Default: 0 --> </systemResourceLimits> <!-- HTTP server --> <!-- Sizes in kb, time in seconds --> <HTTP> <!-- HTTP server settings. --> <skt> <rcvBuf>4</rcvBuf> <sndBuf>256</sndBuf> <rcvTimeout>30</rcvTimeout> <sndTimeout>30</sndTimeout> </skt> <ioBufInitSize>4</ioBufInitSize> <!-- HTTP request receive buf initial size. --> <ioBufMaxSize>4</ioBufMaxSize> <!-- HTTP request receive max buf size. --> <bindList> <bind> <address>x.x.x.x:1235</address> <backlog>2048</backlog> <fAcceptFilter>yes</fAcceptFilter> <!-- Set SO_ACCEPTFILTER(httpready)/ TCP_DEFER_ACCEPT. --> <congestionControl>htcp</congestionControl> <!-- TCP_CONGESTION: replace cc from OS default --> </bind> </bindList> <hostnameList> <!-- This host names for all addresses. --> <hostname>*</hostname> </hostnameList> </HTTP> <hubProfileList> <!-- Stream hub profiles templates. --> <hubProfile> <fDropSlowClients>no</fDropSlowClients> <!-- Disconnect slow clients. --> <fSocketHalfClosed>no</fSocketHalfClosed> <!-- Enable shutdown(SHUT_RD) for clients. --> <fSocketTCPNoDelay>yes</fSocketTCPNoDelay> <!-- Enable TCP_NODELAY for clients. --> <fSocketTCPNoPush>yes</fSocketTCPNoPush> <!-- Enable TCP_NOPUSH / TCP_CORK for clients. --> <precache>4096</precache> <!-- Pre cache size. Can be overwritten by arg from user request. --> <sndBlockSize>1</sndBlockSize> <!-- Send block size. Must be multiple of 4. --> <ringBufSize>32768</ringBufSize> <!-- Stream receive ring buffer size. Must be multiple of sndBlockSize. --> <fZeroCopyOnSend>no</fZeroCopyOnSend> <skt> <sndBuf>512</sndBuf> <!-- Max send block size, apply to clients sockets only, must be > sndBlockSize. --> <congestionControl>htcp</congestionControl> <!-- TCP_CONGESTION: this value replace/overwrite(!) all others cc settings: cc from http req args, http server settings, OS default --> </skt> <headersList> <!-- Custom HTTP headers (sended before stream). --> <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> <sourceProfileList> <!-- Stream source profiles templates. --> <sourceProfile> <skt> <rcvBuf>512</rcvBuf> <!-- Multicast recv socket buf size. --> <rcvLowat>16</rcvLowat> <!-- Actual cli_snd_block_min if polling is off. --> <rcvTimeout>2</rcvTimeout> <!-- STATUS, Multicast recv timeout. --> </skt> <!-- Source connection specific info. --> <multicast> <!-- For: multicast-udp and multicast-udp-rtp. --> <ifName>igb0</ifName> <!-- For multicast receive. --> </multicast> </sourceProfile> </sourceProfileList> </msd> Вставить ник Quote
MESB Posted December 18, 2016 Posted December 18, 2016 (edited) А обычным влц с бука например, вы можете открыть более одного канала через мультикаст? Edited December 18, 2016 by MESB Вставить ник Quote
Bear_UA Posted December 18, 2016 Author Posted December 18, 2016 Та ж один подключеный клиент открывает без проблем любые каналы. Переключается между ними. Но вот второй уже не может открыть никакой канал кроме того который смотрит в данный момент первый клиент. netstat на сервере показывает что принимается только по одному udp потоку и все и второй udp поток не создается. Вставить ник Quote
MESB Posted December 18, 2016 Posted December 18, 2016 (edited) Вопрос стоял не так. Вы с ноута например, запустить 3 копии влц можете и из мультикаста открыть эти разные каналы одновременно? Просто проверить в обход тазика с БСД. Edited December 18, 2016 by MESB Вставить ник Quote
Bear_UA Posted December 18, 2016 Author Posted December 18, 2016 Нет возможности это сделать :((( Вставить ник Quote
rdc Posted December 18, 2016 Posted December 18, 2016 проверьте на udpxy - если будет та же картина, делаем выводы Вставить ник Quote
FATHER_FBI Posted December 18, 2016 Posted December 18, 2016 На тазике вместо msd_lite ставите Cesbo Astra и у вас сразу пропадает геморой. Вставить ник Quote
Ivan_83 Posted December 18, 2016 Posted December 18, 2016 Когда работает только одно устройство - нормально переключается между каналами без проблем. Сломали себе голову уже куда копать :( Посоветуйте может кто сталкивался с подобной проблемой и решил. Что в логах? Что показывает tcpdump в плане igmp трафика? Что насчёт юдп мультикаста? На тазике вместо msd_lite ставите Cesbo Astra и у вас сразу пропадает геморой. Да да, вещай дальше Кашпировский :) Вставить ник Quote
vurd Posted December 18, 2016 Posted December 18, 2016 На тазике вместо msd_lite ставите Cesbo Astra и у вас сразу пропадает геморой. И начнется другой. Откуда берется мультикаст? Такое ощущение, что разрешена подписка только на одну группу на аплинк-порту. Вы там его не воруете случайно у соседнего оператора? Вставить ник Quote
ShyLion Posted December 19, 2016 Posted December 19, 2016 Нет возможности это сделать :((( На фрюше astra --analyze ... сразу два канала че показывает? ЗЫ: может и в msd есть такая утиля Вставить ник Quote
Bear_UA Posted December 23, 2016 Author Posted December 23, 2016 Решилось прописыванием на сетевой карте куда льется мультикаст любого "левого" ип вместо обычного ifconfig_igbX="UP". Вставить ник Quote
Bear_UA Posted December 29, 2016 Author Posted December 29, 2016 Оказывается не решилось. Проходит время и ситуация повторяется (нет закономерности). Решается на время перезагрузкой mpd_lite. Кто сталкивался? Вставить ник Quote
ShyLion Posted December 30, 2016 Posted December 30, 2016 Все сталкивались. tcpdump -s0 -nnvvei "интерфейс" igmp Вставить ник Quote
Ivan_83 Posted December 30, 2016 Posted December 30, 2016 Кверир в свиче покрутить, чтобы по агрессивнее стал. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.