Bear_UA Posted December 18, 2016 Затеяли поднять IPTV в сети. Было принято решение отдавать клиентам unicast-ом все. Получаем мультикаст. Есть плейлист. В качестве прокси поставили msd_lite на FreeBSD. И столкнулись с следующей проблемой. Одновременно можно смотреть только один канал. Тоесть два устройства не могут смотреть разные каналы. Один и тот же - без проблем. Когда работает только одно устройство - нормально переключается между каналами без проблем. Сломали себе голову уже куда копать :( Посоветуйте может кто сталкивался с подобной проблемой и решил. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Bear_UA 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 Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
MESB Posted December 18, 2016 (edited) А обычным влц с бука например, вы можете открыть более одного канала через мультикаст? Edited December 18, 2016 by MESB Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Bear_UA Posted December 18, 2016 Та ж один подключеный клиент открывает без проблем любые каналы. Переключается между ними. Но вот второй уже не может открыть никакой канал кроме того который смотрит в данный момент первый клиент. netstat на сервере показывает что принимается только по одному udp потоку и все и второй udp поток не создается. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
MESB Posted December 18, 2016 (edited) Вопрос стоял не так. Вы с ноута например, запустить 3 копии влц можете и из мультикаста открыть эти разные каналы одновременно? Просто проверить в обход тазика с БСД. Edited December 18, 2016 by MESB Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Bear_UA Posted December 18, 2016 Нет возможности это сделать :((( Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
rdc Posted December 18, 2016 проверьте на udpxy - если будет та же картина, делаем выводы Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
FATHER_FBI Posted December 18, 2016 На тазике вместо msd_lite ставите Cesbo Astra и у вас сразу пропадает геморой. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted December 18, 2016 Когда работает только одно устройство - нормально переключается между каналами без проблем. Сломали себе голову уже куда копать :( Посоветуйте может кто сталкивался с подобной проблемой и решил. Что в логах? Что показывает tcpdump в плане igmp трафика? Что насчёт юдп мультикаста? На тазике вместо msd_lite ставите Cesbo Astra и у вас сразу пропадает геморой. Да да, вещай дальше Кашпировский :) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vurd Posted December 18, 2016 На тазике вместо msd_lite ставите Cesbo Astra и у вас сразу пропадает геморой. И начнется другой. Откуда берется мультикаст? Такое ощущение, что разрешена подписка только на одну группу на аплинк-порту. Вы там его не воруете случайно у соседнего оператора? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ShyLion Posted December 19, 2016 Нет возможности это сделать :((( На фрюше astra --analyze ... сразу два канала че показывает? ЗЫ: может и в msd есть такая утиля Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Bear_UA Posted December 23, 2016 Решилось прописыванием на сетевой карте куда льется мультикаст любого "левого" ип вместо обычного ifconfig_igbX="UP". Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Bear_UA Posted December 29, 2016 Оказывается не решилось. Проходит время и ситуация повторяется (нет закономерности). Решается на время перезагрузкой mpd_lite. Кто сталкивался? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ShyLion Posted December 30, 2016 Все сталкивались. tcpdump -s0 -nnvvei "интерфейс" igmp Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted December 30, 2016 Кверир в свиче покрутить, чтобы по агрессивнее стал. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...