RSS
 

Relaying: Multicast в HTTP и обратно

06 Dec

В рамках разработки нашего iptv-решения (которое близко к публичному релизу, и это радует), родилась небольшая утилита под рабочим названием relaying, пардон мой французский. Эта утилита может получает поток (mpeg2, mpeg4 – не столь важно), поступающий на multicast-группу или запрошенный по http с удаленного вэбсервера и может:

  • отдать его по http любому количеству клиентов, корректно отрабатывая передачу данных низкоскоростным потребителям (т.е. не распухая в памяти) и/или
  • отдать поток в определенную multicast-группу и в определенный интерфейс.

При этом relay получает только одну копию исходного потока и этим отличается от массы других подобных утилит. Еще стоит заметить, что relay может обслуживать сотни и сотни http-клиентов, не требуя при этом дорогостоящего оборудования и мощного сервера. Так, прямо сейчас на соседнем сервере на базе старенького Xeon X3065 под управлением FreeBSD relaying отдает по http около 500Мбит/с, при этом load averages: 0,91 0,67 0,54!

Примеры вызова:


# ./relaying --outhttp=x.y.z.x:port --inudp=233.61.10.203:1234 --inudpif=a.b.c.d

Клиент может получить содержимое multicast-группы 233.61.10.203:1234 (доступной на локальном интерфейса a.b.c.d) по http с адреса: http://x.y.z.x:port/


# ./relaying --outhttp=x.y.z.x:port --inhttp=a.b.c.d:8080/iptv/channel

Получаем поток с адреса http://a.b.c.d:8080/iptv/channel и отдаем его по http нашим зрителям.

Пока мы еще не определились, стоит ли делать код этой утилиты open-source, но сделать ее freeware я бы хотел. Поэтому, если есть интерес поэкспериментировать, свяжитесь со мной, у меня есть красивый профайл с контактной информацией на about.me/deineka.

p.s. Версии win32 нет, только FreeBSD и Linux.

 

Tags:

Leave a Reply

You must be logged in to post a comment.

  1. dr_zoid

    декабря 7, 2010 at 09:57

    Есть пару вопросов:
    -Почему сейчас используется MPEG2, а не MPEG4? Нет мощностей для конвертации?
    -А 720p будет?

     
  2. Дмитрий

    декабря 7, 2010 at 14:04

    Самому relaying – все равно. Если речь идет о том, что сейчас берется с DVB и отправляется в KH-IX – да, там mpeg2. Не вижу необходимости конвертировать, да и качественно это сделать достаточно дорого. 720p – будет, для наших приставок уже есть :)

     
  3. Валерий

    декабря 12, 2010 at 10:41

    Как заюзать тулзу?)

     
    • Дмитрий

      декабря 12, 2010 at 12:20

      мы в понедельник-вторник выложим версию с последними багфиксами.

       
      • Валерий

        декабря 18, 2010 at 15:20

        получится заюзать?

         
  4. Дмитрий

    декабря 18, 2010 at 16:42

    Сорри за задержку. Бета-версия под FreeBSD 7.x-8.x лежит тут, собственно она у нас сейчас работает на трех тазиках. На скоростях раздачи до 600Мбит/с дополнительно тюнить ОС не требуется.

     
    • Sergey Korotonozhkin

      декабря 10, 2011 at 14:55

      Дмитрий, а можно-ли версию relaying for linux ? дайте ссылку плиз .

       
  5. Alexsey

    декабря 27, 2010 at 15:28

    а под Linux будет?

     
    • Дмитрий

      декабря 27, 2010 at 15:34

      там же лежит более старая версия под линукс 64bit. Попрошу разработчика порадовать более свежей. Но, честно говоря, рекомендую использовать под FreeBSD, так как в ряде вопросов оптимизировали именно под эту ОС.

       
  6. Андрей

    декабря 31, 2010 at 09:45

    А чем Ваша разработка лучше udpxy ? sourceforge.net/projects/udpxy/
    в udpxy есть много параметров, включая размер кеша и т.д. и своя страничка с статистикой

     
    • Дмитрий

      декабря 31, 2010 at 09:50

      Размер буфера у нас тоже настраивается. А разница с udpxy очень проста – попробуйте udpxy нагрузить, скажем, сотней-двумя клиентов и посмотрите, что будет :)

      udpxy – отличное решение для дома. Наш же софт – для более промышленных применений. Кроме того, мы планируем реализовать поддержку rtsp.

       
  7. Exercise Balls

    января 21, 2011 at 08:55

    Nice site, nice and easy on the eyes and great content too.

     
  8. Вячеслав

    февраля 17, 2011 at 12:59

    Есть ли возможность одним глазком глянуть исходный код? :))

     
    • Дмитрий

      марта 7, 2011 at 15:32

      Разве что в таком виде:

      # more Relaying.hs | head -300 | tail -10
      h <- socketToHandle ssock ReadWriteMode
      forkIO $ catch (do
      atomicModifyIORef clientCount (\x -> (1+x, 0))
      hGetLine h
      hdrs <- parseHeaders <$> readHeaders h []
      pid <- getProcessID
      sockName <- getSocketName ssock
      putStrLn $ "HTTP_CLIENT\t" ++ (show pid) ++ "\t" ++ (show sockName) ++ "\t" ++ (show addr)++"\t" ++ (show $ lookup "User-Agent" hdrs)
      showDebug $ "client headers: "++(show hdrs)
      hFlush stdout
      :)

       
  9. Сергей

    марта 24, 2011 at 08:19

    Напишите пример конфига как будет выглядеть если прием идет например с udp адресов 224.12.0.1, 224.12.0.2 и так далее.

     
  10. @sha90w

    марта 30, 2011 at 09:31

    А что может быть ? VLC играет несколько минут – потом теряет поток – на стороне сервера:

    2011-03-30 10:29:39.738454 relaying(94393) WARN: http broadcaser client exception: <socket: 4>: hPutBuf: resource vanished (Broken pipe)

    с udpxy примерно то же….

     
    • Дмитрий

      марта 30, 2011 at 14:04

      похоже, что не хватает полосы между сервером и VLC. Еще могу порекомендовать поставить больше буфер (ключ –bs). Можно не жадничать у увеличить до 10-20мбит.

      через время выложу новую версию с вкусняшками:
      – опция для перманентного чтения Multicast (даже если нет http-клиентов)
      – конфигурируемый размер начального буфера, который отсылается клиенту на полной скорости
      – оптимизированный (надеюсь :)) код отдачи по http

       
      • Александр

        марта 31, 2011 at 00:22

        А утилита должна слать IGMP report или подразумевается что поток уже есть на интерфейсе?

         
        • Дмитрий

          марта 31, 2011 at 09:09

          утилита при возникновении первого клиента делает подключается в малтикаст-группу и начинает читать поток .

           
  11. Артем

    апреля 3, 2011 at 10:51

    А есть официальный сайт и где можно скачать последнюю версию под FreeBSD
    Я так понял одним процессом нельзя релеить больше одного потока?

     
  12. Артем

    апреля 16, 2011 at 20:32

    А что обозначает?
    2011-04-16 21:32:25.958674 relaying(48558) WARN: http broadcaser client exception: <socket: 5>: hPutBuf: resource vanished (Broken pipe)

     
    • Дмитрий

      апреля 27, 2011 at 13:40

      Артем,

      это означает, что зритель закрыл соединение (как правило – переключил канал). Это информационное сообщение, не обращайте на него особого внимания.

       
      • Артем

        апреля 27, 2011 at 19:32

        Спасибо за ответ, а все таки… Где взять новую версия и если ли она вообще :)
        Кстати наблюдается проблема, "временами" сыпится картинка или пропадает до 5 секунд, при этом возобновляется с того-же момента или еще иногда может пропадать звук на 0,5сек.
        тазик (core 7i) загрузка в среднем 10% FreeBSD 8.0-RELEASE
        При этом этих проблемы не наблюдаться в UDP потоке и связь от Relay сервера до клиента при этом нормальная без потерь средний пинг 1-2мсек.

        Спасибо за ответ :)

         
        • Дмитрий

          апреля 27, 2011 at 19:50

          Артем,

          Новая версия есть и она у меня используется. Компактный changelog:

          + начало отдачи потока с PAT, а не с любого места (для некоторых приставок – важно)
          + опция постоянного чтения потока, даже если нет клиентов
          + появилась возможность определенную часть буфера налить клиенту на максимально возможной скорости ("быстрое" включение канала)

          и еще по мелочам.

          Выложу на днях.

           
        • Дмитрий

          апреля 27, 2011 at 19:56

          Про обрывы – добавьте буфера побольше (ключ –bs, кажется). Также следите за нагрузкой на шину и ззернеты – если используете realtec и прочий low-end, будет грустно. Мы гоняем в препродакшне на Supermicro 5016 с минимальными процессорами, с парой гиг памяти на каждом, но немного подстроенными em(4).

          на десктопных решениях – жизни особо не будет.

           
  13. vlad

    мая 1, 2011 at 19:20

    Хорошая программа. Планируется ли возможность вещания нескольких потоков из одного процесса, на одном http-порту, как в udpxy?

     
  14. Артем

    мая 6, 2011 at 20:04

    Ну где новая версия? :)

     
    • Дмитрий

      мая 6, 2011 at 20:20

      до конца не причесали, даю рабочую, которая у нас стоит. брать на нашем ftp.

      –help работает. из важного:

      –pj – читать входной поток, даже когда нет зрителей
      –bs/–pf – циклический буфер/размер данных, который нужно отдать клиенту на максимальной скорости (а не на скорости получения потока).

      Официальный релиз – чуть позже, дайте выдохнуть эту неделю :)

       
      • Артем

        мая 10, 2011 at 19:42

        % ./relaying-freebsd-20110505
        ELF interpreter /libexec/ld-elf.so.1 not found
        Abort

        FreeBSD 8.0-RELEASE amd64
        Предыдущий билд от 20101212 работает, новый нет.

         
  15. server801

    мая 17, 2011 at 15:32

    Можно версию под linux?

     
    • Дмитрий

      мая 23, 2011 at 12:50

      будет, ожидайте. но производительность на FreeBSD выше.

       
  16. Spinaker

    мая 25, 2011 at 15:43

    Ждемс версию для Linux x86…

     
  17. Артем

    июня 17, 2011 at 09:08

    Кстати а когда уже будет поддержка RTP как писалось выше?

     
    • Дмитрий Дейнека

      июня 19, 2011 at 20:44

      Сейчас relaying делает все, что нам нужно. В ней будут новые фишки (статистика, ключи доступа). RTSP – будет видно, насколько это необходимо будет в нашей схеме.

      Пока я смысла большого не вижу.

       
  18. freedom

    июля 3, 2011 at 10:23

    Здравствуйте! Подскажите реализовать схему:
    Сервер вещатель ( Linux Ubuntu ) c с адресом 192.168.1.2

    auto eth0
    iface eth0 inet static
    address 192.168.1.2
    netmask 255.255.255.0
    gateway 192.168.1.1
    up route add -net 224.0.0.0/8 dev eth0

    вещает на сервер relaying ( FreeBSD 8.2) c с адресом 192.168.1. 1

    ifconfig_em0="inet 10.0.10.10 netmask 255.255.0.0"
    ifconfig_nfe0="inet 192.168.1.1 netmask 255.255.255.0"
    gateway_enable="YES"

    Поток с сервера (Linux) уходит, а на relay (FreeBSD) не приходит.
    Вот что на вещателе происходит

    tcp 0 48 192.168.1.2:ssh 192.168.1.1:51417
    ESTABLISHED 5846/0
    udp 0 0 192.168.1.2:44141 239.100.2.17:1234
    ESTABLISHED 1496/getstream0
    udp 0 0 192.168.1.2:33664 239.100.2.5:1234
    ESTABLISHED 1496/getstream0
    udp 0 0 192.168.1.2:35736 239.100.2.3:1234
    ESTABLISHED 1496/getstream0
    udp 0 0 192.168.1.2:59043 239.100.2.14:1234
    ESTABLISHED 1496/getstream0
    udp 0 0 192.168.1.2:50596 239.100.2.8:1234
    ESTABLISHED 1496/getstream0
    udp 0 0 192.168.1.2:35499 239.100.2.6:1234
    ESTABLISHED 1496/getstream0
    udp 0 0 192.168.1.2:39126 239.100.2.2:1234
    ESTABLISHED 1496/getstream0
    udp 0 0 192.168.1.2:42717 239.100.2.1:1234
    ESTABLISHED 1496/getstream0
    udp 0 0 192.168.1.2:52193 239.100.2.13:1234
    ESTABLISHED 1496/getstream0
    udp 0 0 192.168.1.2:46329 239.100.2.19:1234
    ESTABLISHED 1496/getstream0

    Как заставить фрю принимать мультикаст? Пакеты на интерфейсе 192.168.1.2 идут, а на релее уже нет

     
  19. tipok

    августа 7, 2011 at 14:24

    Стыд! У такой утилитки – кода на 1000 строк, и вы жмётесь выложить исходники?

     
  20. Dmitry

    августа 8, 2011 at 18:43

    Доброго времени суток! Хотелось бы проконсультироваться с Вами по поводу релея – запускаю свой проект tv.mozhay dot net – есть пару вопросов) Если не затруднит – отпишите мне на dimka.smith dot gmail.com

     
  21. Gab

    августа 27, 2011 at 20:31

    Подскажите, большая нагрузка процессов релеинга:

    PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
    6392 root 4 44 0 98M 86284K ucond 0 60:26 63.67% relaying-freebsd
    6385 root 4 44 0 37700K 26756K ucond 0 12:02 18.26% relaying-freebsd
    6443 root 4 44 0 25412K 18908K CPU0 1 15:21 12.55% relaying-freebsd
    6434 root 4 44 0 29508K 21048K ucond 3 12:00 8.06% relaying-freebsd
    6388 root 4 44 0 29508K 20712K ucond 1 9:48 7.23% relaying-freebsd
    6484 root 4 44 0 27460K 19220K ucond 2 10:19 6.15% relaying-freebsd
    6386 root 4 44 0 41796K 30676K ucond 1 13:45 5.76% relaying-freebsd

    Хотя всего 16 конектов

    root relaying-f 6392 5 tcp4 10.0.0.92:8010 *:*
    root relaying-f 6392 6 tcp4 10.0.0.92:8010 10.42.0.21:55942
    root relaying-f 6392 7 udp4 *:1234 *:*
    root relaying-f 6392 8 tcp4 10.0.0.92:8010 10.111.40.51:64630
    root relaying-f 6392 9 tcp4 10.0.0.92:8010 10.42.80.16:60474
    root relaying-f 6392 10 tcp4 10.0.0.92:8010 10.21.0.13:43335
    root relaying-f 6392 11 tcp4 10.0.0.92:8010 10.31.60.34:60053
    root relaying-f 6392 12 tcp4 10.0.0.92:8010 10.41.50.10:1089
    root relaying-f 6392 13 tcp4 10.0.0.92:8010 10.0.1.10:37644
    root relaying-f 6392 14 tcp4 10.0.0.92:8010 10.61.110.25:1224
    root relaying-f 6392 15 tcp4 10.0.0.92:8010 10.51.50.19:55268
    root relaying-f 6392 16 tcp4 10.0.0.92:8010 10.111.70.5:1955
    root relaying-f 6392 17 tcp4 10.0.0.92:8010 10.21.70.7:1294
    root relaying-f 6392 18 tcp4 10.0.0.92:8010 10.51.90.20:54798
    root relaying-f 6392 19 tcp4 10.0.0.92:8010 10.20.50.6:50182
    root relaying-f 6392 20 tcp4 10.0.0.92:8010 10.61.50.28:1313
    root relaying-f 6392 21 tcp4 10.0.0.92:8010 10.111.0.30:13326
    root relaying-f 6392 22 tcp4 10.0.0.92:8010 10.31.90.47:1879
    root relaying-f 6392 23 tcp4 10.0.0.92:8010 10.111.120.15:44431

     
  22. Gab

    августа 27, 2011 at 20:33

    FreeBSD 8.2-RELEASE FreeBSD 8.2-RELEASE, Core Quad 2.83

     
    • Gab

      августа 27, 2011 at 20:38

      Сетевая Intel ET Dual Port, через pci-e.

       
      • Gab

        августа 27, 2011 at 20:41

        Запускаю relaying-freebsd –bs=300000 –outhttp =http://10.0.0.92:8000/udp/xxx –inudpif=xxx –inudp=xxxxx:1234 &

        Трафика всего бежит ~300Мбит а загрузка почти 70%

         
        • Дмитрий

          октября 7, 2011 at 07:57

          Зрите в лог, разбрасывайте процессы по ядрам, добавляйте буферов драйверу ethernet.

          У нас на G6950/2G памяти (Supermicro 5016) отдает полный гиг. Нагрузка есть, но не влияет на картинку. Процессоры они на то и есть, чтобы их грузить

           
  23. Ashandy

    октября 28, 2011 at 13:29

    не получается настроить. имеется:

    vlan3005 192.168.251.102/252 интерфейс на прием мультикаста
    net1 195.54.xx.yy/28 интерфейс смотрит на абонентов

    запускаю
    ./relaying –outhttp=195.54.xx.yy:1234 –inudp=239.0.1.10:1234 –inudpif=192.168.251.102
    не работает, и не совсем вообще понятно – это нужно на каждый канал мультикаст группы запускать relaying ? а забирать по адресу 195.54.xx.yy:1234
    а если через udpxy то
    udpxy -a net1 -m vlan3005 -p 8888 -S -l /var/log/udpxy.log
    работает отлично по адресам вида http://195.54.xx.yy:8888/udp/239.0.1.228:1234
    ну и так дальше
    я что то неправильно прописываю в ситуации с relaying?

     
  24. Ashandy

    октября 28, 2011 at 14:31

    Все, внимательно прочитал комментарии, сделал как в конфигах в другой статье – работает.

     
  25. Tygra

    ноября 1, 2011 at 15:21

    Очень занятная програмка , установил фряху подтюнил по вашим рекомендациям , на данный момент пытаюсь прогнать уникаст-уникаст , на выходе имею картинку с сильными артефактами и рваным звуком , так и должно быть в случае уникаст-уникаст релея ?

     
    • Ashandy

      ноября 11, 2011 at 14:16

      скажите как вы писали скрипт для схемы уникаст уникаст.. у меня почему то не выходит.. ((

       
  26. Tygra

    ноября 2, 2011 at 06:22

    включил debug ("high mark:",54611,"low mark:",54598,"tailLength:",13)
    ("sent ",2444,"bytes")
    2011-11-02 04:18:04.523079 relaying(3034) DEBUG: clentCount==2
    ("high mark:",54824,"low mark:",54611,"tailLength:",213)
    ("sent ",40044,"bytes")
    ("high mark:",54930,"low mark:",54824,"tailLength:",106)
    ("sent ",19928,"bytes")
    2011-11-02 04:18:04.623606 relaying(3034) DEBUG: clentCount==2
    ("high mark:",55036,"low mark:",54930,"tailLength:",106)
    ("sent ",19928,"bytes")
    2011-11-02 04:18:04.724142 relaying(3034) DEBUG: clentCount==2
    ("high mark:",55142,"low mark:",55036,"tailLength:",106)
    ("sent ",19928,"bytes")
    ("high mark:",55248,"low mark:",55142,"tailLength:",106)
    ("sent ",19928,"bytes")
    2011-11-02 04:18:04.800474 relaying(3034) WARN: http broadcaser client exception: <socket: 7>: hPutBuf: resource vanished (Broken pipe)
    2011-11-02 04:18:04.824675 relaying(3034) DEBUG: clentCount==1
    2011-11-02 04:18:04.925488 relaying(3034) DEBUG: clentCount==1
    2011-11-02 04:18:05.025736 relaying(3034) DEBUG: clentCount==1
    2011-11-02 04:18:05.126563 relaying(3034) DEBUG: clentCount==1
    2011-11-02 04:18:05.227299 relaying(3034) DEBUG: clentCount==1
    2011-11-02 04:18:05.327855 relaying(3034) DEBUG: clentCount==1
    2011-11-02 04:18:05.428685 relaying(3034) DEBUG: clentCount==1
    2011-11-02 04:18:05.528937 relaying(3034) DEBUG: clentCount==1
    2011-11-02 04:18:05.629469 relaying(3034) DEBUG: clentCount==1
    2011-11-02 04:18:05.730301 relaying(3034) DEBUG: clentCount==1
    2011-11-02 04:18:05.83055 relaying(3034) DEBUG: clentCount==1
    2011-11-02 04:18:05.931372 relaying(3034) DEBUG: clentCount==1
    2011-11-02 04:18:06.031623 relaying(3034) DEBUG: clentCount==1
    2011-11-02 04:18:06.132449 relaying(3034) DEBUG: clentCount==1

    ерроров не вижу , почему не адекватно работает уникаст-уникаст ? Хмм если и не должно то просто скажите что и не должно работать , я не буду мучаться и переведу в мультикаст .

     
    • Ashandy

      ноября 11, 2011 at 14:18

      подскажите для такой схемы скрипт, я тоже попробую скажу свое мнение..
      мультикаст – уникаст у меня работает отлично – кеш поставил 4 метра.
      для радио поставил 512к.

       
  27. Илья

    ноября 23, 2011 at 16:45

    gentoo linux
    ./relaying_threaded –outhttp=10.24.1.200:7144 –inudp=239.10.20.11:1234 –inudpif=10.24.2.30
    relaying_threaded: ../sysdeps/unix/sysv/linux/getpagesize.c:32: __getpagesize: Assertion `_rtld_global_ro._dl_pagesize != 0' failed.
    Aborted

    где зарыта собака? :)

     
    • Илья

      ноября 23, 2011 at 16:48

      uname -a
      Linux tv.convex-tagil.ru 3.0.6-gentoo #1 SMP Fri Nov 18 23:06:13 YEKT 2011 x86_64

       
      • Илья

        ноября 25, 2011 at 11:43

        уже не актуально, поставил фрю 8.2, кстати на amd64 не запускалось пока не залил libiconv от i384

         
  28. Tygra

    ноября 28, 2011 at 14:04

    Очень хороший сервачок , после кой какой обкатик нарисовалась проблема , не с первого раза включаются каналы , т.е. раз 5 ткнеш в один и тот же канал то приконнектится , если законнектился то уже держит и показывает стабильно . Сильнее сказывается сия проблема на каналах которые релеятся с мультикаст источника getstream , с аппаратного тюнера PBI 4000 , сия проблема не так выражена т.е. переключается в худшем случае с 3 его разу , а каналы что с гетсрима релеит могут переключится и с 15 ого разу или вообще не переключиться , тупо подождеш , ткнеш еще пару раз и коннектится . Я понимаю что каналы приходят мультикастом и какая разница от чаго приходят потоки вроде не должно быть разницы . Как сию проблему победить ? собирал систему по ману отсюда же , система фря , протюнена по рекомендациям с данного сайта , не перегружена , сервер выделенный ничаго кроме релея на нем не крутится . Тиспидумп грит что запросы от клиентов приходят , а демон релея их или не видит или тупо игнорирует . Сетевая двуголовая гигабитная интел (емка) , дрова яндекса .

     
    • Илья

      декабря 7, 2011 at 06:22

      а что мешает перманентно каналы вешать на твой сервак не по деманду? для этого есть спец опция

      только это не спасает когда от стримера пропадает поток, приходится делать перезапуск

       
    • Дмитрий

      декабря 15, 2011 at 14:37

      в версии для линукс этого функционала нет, извините. Под линукс доступна только старая сборка.

       
    • Tygra

      января 26, 2012 at 14:08

      скачал новую версию , ту что за декабрь 2011 , в ней по запросу плеера видно что поток отсылает НО плеер не желает показывать , т.е. запросы с плеера получает стабильно , но показывает не с первого запроса , какието каналы сразу , какието хоть затыкайся , подождем с минуту другую , ткнеш и кажет , подбирать пытался и размер буфера , и размер отдаваемого на макс скорости , вплоть до 0 , всегда поток читать стоит флаг , плеера VLC и IPTV , может стриммер заточен под чтото другое ? могет эти плеера просто неадекватно обрабатывают начало потока . пробывал использовать –rawhttp , пофиг . Хмм может что с буферами в самих плеерах , уже не знаю что ковырять .

       
      • tygra

        февраля 21, 2012 at 08:11

        Проблема была решена с помощью форума наг.ру , дело было в EPG , отключил его везде и каналы стали переключаться с 1ого раза , пользователи очень довольны , а то было не понятно толи работает канал, просто включаться не хочет, то ли загнулся . Спасибо афтору за замечательную прогу . Давно искал не что подобное .

         
  29. Александр

    декабря 8, 2011 at 12:11

    relaying: mkTextEncoding: invalid argument (Invalid argument)

    uname -a
    Linux pbx 2.6.23.17-88.fc7 #1 SMP Thu May 15 00:02:29 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux

     
  30. pronix

    декабря 19, 2011 at 21:52

    Подскажите как пользоваться параметрами
    –auth=ITEM [none] evil auth server
    –auths=ITEM [/etc/relaying.auth.sh] evil auth shell script

     
  31. yuren

    января 14, 2012 at 16:54

    Планируется ли новая версия под лінукс?

     
  32. MasterHome

    февраля 8, 2012 at 18:58

    При работе идёт утечка памяти. Процессы распухают, отжирая всю свободную память.

    last pid: 19563; load averages: 1.01, 1.04, 1.01 up 0+09:15:47 22:46:53
    573 processes: 3 running, 570 sleeping
    CPU: 13.0% user, 0.0% nice, 23.1% system, 6.5% interrupt, 57.5% idle
    Mem: 4350M Active, 21M Inact, 448M Wired, 364K Cache, 489M Buf, 3009M Free
    Swap: 1024M Total, 1024M Free

    PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
    5452 root 4 44 0 135M 126M ucond 0 9:34 6.74% relaying
    5453 root 4 44 0 119M 110M ucond 0 9:41 2.73% relaying
    5484 root 4 44 0 117M 108M ucond 0 6:24 0.78% relaying
    5449 root 4 44 0 91364K 81920K ucond 3 6:05 2.83% relaying

     
    • mmikel

      февраля 11, 2012 at 07:53

      а где можно скачать данное чудо? интересует linux x64 версия, если такая есть в природе…

       
    • Илья

      февраля 18, 2012 at 21:11

      подтверждаю… аналогичная ситуация, ребут раз в пару дней помогает, на данный момент на серваке 12 гигабайт памяти, стример работает вторые сутки, схавал уже 10 гигов…

       
  33. Pasha_49

    марта 13, 2012 at 10:11

    2.6.32-5-amd64 GNU/Linux, relaying для линукса. Дебиан 64 битный
    Почему-то все каналы смешиваются в один поток. При открытии ссылки в плеере, постоянно открывается разный канал, и трафик на сетевуху идет равный сумме всех каналов. Порты прописаны разные, пробовал даже с разными ip.

    #!/bin/sh
    IF_HTTP=10.0.0.122
    IF_UDP=10.0.0.122
    killall relaying; sleep 1
    /usr/local/bin/relaying –bs=10997936 –outhttp=$IF_HTTP:3001 –inudp=239.0.1.56:3000 –inudpif=$IF_UDP >> /dev/null &
    /usr/local/bin/relaying –bs=10997936 –outhttp=$IF_HTTP:3002 –inudp=239.0.1.57:3000 –inudpif=$IF_UDP >> /dev/null &
    /usr/local/bin/relaying –bs=10997936 –outhttp=$IF_HTTP:3003 –inudp=239.0.1.58:3000 –inudpif=$IF_UDP >> /dev/null &

    Пробовал запустить на Убнту сервер 11,04 – 64: 2.6.38-13-generic x86_64 GNU/Linux
    там вообще не хочет запускаться (# /usr/local/bin/relaying –outhttp=10.0.16.9:3000 –inudp=239.0.1.58:3000 –inudpif=10.0.16.9) , пишет "relaying: mkTextEncoding: invalid argument (Invalid argument)
    "

     
    • MasterHome

      марта 16, 2012 at 02:52

      Разнесите входящий и отдаваемый трафф по разным интерфейсам. Чтобы мультикаст не шёл сразу весь на интерфейс включите на коммутаторе (если он есть) IGMP snooping.

       
      • Pasha_49

        апреля 26, 2012 at 11:40

        IGMP snooping включен, смешивала потоки сама программы. Проблему удалось решить, поменяв порты мультикастового потока. То есть если мультикастовые потоки все на одном порту, то relaying смешивает их, а если на разных – проблем нету.

         
  34. pronix

    апреля 6, 2012 at 15:51

    Отличная программа! Работает неделями без сбоев. Есть ли в ближайших планах добавить к http еще и раздачу по rtsp?

     
  35. Гость

    апреля 10, 2012 at 22:17

    ./relaying –outhttp=127.0.0.1:8000 –inhttp =http://x.y.z.w/udp/239.1.2.2/5566
    Пробовaл так, не идёт. Пишет,нужен порт.
    relaying: fromJustX: Nothing, label=http port not specifieduried for receiver
    Возможно ли запустить?

     
  36. Артем

    мая 9, 2012 at 08:58

    Не работают ссылки для скачивания возможно перезалить – нужна версия дли линукс ну или на почту плиз…..

     
  37. 220B

    июня 14, 2012 at 11:37

    При схеме юникаст-юникаст иногда с первого обращения зритель получает вместо нормального потока серую картинку с артефактми(при этом скорость отрелеенного потока явно в 1/2 от нормальной)
    В чем причина и как это победить?

     
  38. 220B

    июня 14, 2012 at 11:38

    При реализации схемы мультикаст-юникаст релей в дэбаге сыпет сообщениями: ("delay (no data in buffer to send to client: receiver stopped working?)…",0,0)ж Хотя vlc принимает поток нормально.
    С чем может быть связана эта проблемас незамечанием потока в мультикасте?

     
    • 220B

      июня 15, 2012 at 15:20

      Разобрался, это происходит потому что relaying-freebsd понимает только RAW UDP и не понимает RTP

       
  39. pronix

    июня 22, 2012 at 09:54

    1. Планируется ли добавить поддержку выдачи потока в TS обертке (аналогично mux=ts в VLC)? Это необходимо для приема мкаста такими приставками, как DIB120, понимающие только TS. Если в ближайших планах нет, то будет ли данная программа выложена в open source?
    2. Следующую проблему пока не могу точно сформулировать, опишу как есть.
    FreeBSD 9.0, relaying version 0.2e-235. Схема mcast-udpxy-relaying. Если не доступен udpxy или источник мкаста для него, то relaying не "отпускает" клиентские соединения:
    $ ./relaying –debug –outhttp=0.0.0.0:22222 –inhttp =http://1.1.1.1:8085/udp/224.130.100.100:1234/ –rawhttp
    подключаюсь клиентом vlc и отключаю его. Соединение переходит в состояние CLOSE_WAIT
    # netstat -an | grep 22222
    tcp4 0 0 127.0.0.1.22222 127.0.0.1.16622 CLOSE_WAIT
    relaying периодически пытается подключиться к 1.1.1.1:8085
    в дебаг сыпет сообщениями
    2012-06-22 10:09:15.378275 relaying(84263) DEBUG: clentCount==1
    ("delay (no data in buffer to send to client: receiver stopped working?)…",0,0)
    ("delay (no data in buffer to send to client: receiver stopped working?)…",0,0)
    Сколько в состоянии CLOSE_WAIT будет висеть соединение не проверял, но полчаса висит и этого достаточно, чтобы проверяющая программа насоздавала таких соединений.
    Такие соединения не отстреливаются:
    # tcpdrop 127.0.0.1 22222 127.0.0.1 16622
    соединение переходит в состояние CLOSED, продолжая висеть, и сбрасываются только рестартом утилиты.
    Возможно выходом из данной ситуации может послужить установка SO_KEEPALIVE, TCP_KEEPIDLE, TCP_KEEPINTVL, TCP_KEEPCNT, тк на уровне ОС это подтюнить не получилось.

     
  40. Дмитрий

    января 14, 2011 at 10:01

    uname -a ? dmesg (или просто описание платформы) ? md5 бинарника, который запускается ?

     
  41. Дмитрий

    марта 30, 2011 at 14:04

    ОС (uname -a) ?