fib'ы — это несколько не то. fib-ы — это эквивалент нескольких таблиц роутинга.
внутри неймспейсов возможно:
1)множество таблиц роутинга(т.е. можно считать что fib'ы внутри fib'ов).
2)свои правила iptables & ipset(на новых ядрах его сделали namespace aware)
3)свои интерфейсы и даже кое-какие настройки conntrack, вроде net.netfilter.nf_conntrack_max и net.netfilter.nf_conntrack_buckets
4)терминировать pppoe
5)держать phy от wifi-карточки и создавать свои wlan-интерфейсы
Вообще, можно много всякого делать, например как в моём примере
Открою вам секрет: mp4 — это не единственный контейнер для видео.
Ок, вы упомянули модуль streaming, в котором смещение задается в секундах от начала файла, что годится для весьма ограниченного числа применений.
Например, мы делаем облачный сервис видеонаблюдения и клиенту выделяется некое количество Гб/минут записи. Писать видео цельным куском тут не получится(не говоря уже о всяких заморочках с moov atom'ами), да и смещение относительно начала файла теряет смысл.
Так что давайте вернемся к отдаче статики.
На самом деле интересен пример не только на reactphp + libevent, но и на node.js
например, у вас на диске 30Тб видео, порезанное кусками по 1 минуте. Вам надо отдать 2 часа видео(т.е. склеить 120 сегментов и отдать в рамках 1 http-запроса).
а с чего вы решили, что у вас будут потребляться ресурсы именно на epoll?
большее число fd => больше событий => больше сисколлов => больше контекстсвитчей.
вот по вашей же ссылке сразу 2 кодека.
и большой вопрос чем играть hls в браузере.
имхо, для аудио проще с обычным progressive download.
это не так. особенно, если использовать ipvs + direct routing.
20Gbit/s — легко.
простите, а как?
hls — это mpeg-ts, порезанный на куски.
это да.
это не так. на старте:
добавим правило:
теперь мы его видим не только в fib 0:
но и в fib 1:
это тоже не так.
PS: имхо, вы путаете с VIMAGE, который даже в CURRENT
внутри неймспейсов возможно:
1)множество таблиц роутинга(т.е. можно считать что fib'ы внутри fib'ов).
2)свои правила iptables & ipset(на новых ядрах его сделали namespace aware)
3)свои интерфейсы и даже кое-какие настройки conntrack, вроде net.netfilter.nf_conntrack_max и net.netfilter.nf_conntrack_buckets
4)терминировать pppoe
5)держать phy от wifi-карточки и создавать свои wlan-интерфейсы
Вообще, можно много всякого делать, например как в моём примере
хотя да, неклассифицированный трафик может быть просто лимитирован.
не знаю, насчёт e1000, но у меня igb в linux спокойно выдаёт 1.48mpps одним ядром.
увы, всё сильно зависит от сетевухи. на r8169 и sky2 цифры удручающие.
а в чём проблема? можно mmap'нуть пару файлов и использовать writev() для записи в сокет.
будет тот же самый эффект.
>по моему мнению, статика это то, что можно отдать напрямую из файловой системы, без модификаций…
так оно и отдаётся без модификаций.
>в node.js отдача статики реализуется pipelining'ом чтения файловой системы
а можно всё-таки пример? желательно с sendfile().
Ок, вы упомянули модуль streaming, в котором смещение задается в секундах от начала файла, что годится для весьма ограниченного числа применений.
Например, мы делаем облачный сервис видеонаблюдения и клиенту выделяется некое количество Гб/минут записи. Писать видео цельным куском тут не получится(не говоря уже о всяких заморочках с moov atom'ами), да и смещение относительно начала файла теряет смысл.
Так что давайте вернемся к отдаче статики.
На самом деле интересен пример не только на reactphp + libevent, но и на node.js
(нет, не надо кричать сразу про nginx. некоторые вещи на nginx вы просто не сделаете).