Заметки матерого сисадмина
Мы, конечно, не башорг, но, это… стараемся :)
Мы, конечно, не башорг, но, это… стараемся :)
21 Июль
Мои пляски с бубном возле IPTV сервера начались уже очень давно, и только сейчас я пришел к конечной стадии танцев
Значит так, нужно было в сети городского интернет-провайдера организовать IPTV как бесплатную услугу.
Имеем: Уже настроенные и установленные спутниковые антенны на спутники AMOS, Sirius и ABS. Два достаточно мощных сервера: 1й – Intel Core 2 Quad Q8400, 2GB DDR3 RAM, 5 PCI port; 2й – AMD Athlon 3800+, 2 GB DDR2, 4 PCI port;. И необходимое количество dvb карт ss3 (technotrend).
Цель: Настроить вещание хотя бы 30-40 бесплатных каналов юникастом по http. Добиться максимально хорошего качества и минимального объема передаваемой информации с IPTV сервера дабы не перегрузить сеть трафиком.
И так, приступим:
СПОСОБ ПЕРВЫЙ (VLC):
Сначала я пошел по пути наименьшего сопротивления. Скажу сразу, что одна двб карта может одновременно вещать ТОЛЬКО с одного транспондера.
Немного теории о мультиплексоре (mux) :
| name | description |
| mpeg1 | MPEG-1 multiplexing – recommended for portability. Only works with mp1v video and mpga audio, but works on all known players |
| ts | MPEG Transport Stream, primarily used for streaming MPEG. Also used in DVDs |
| ps | MPEG Program Stream, primarily used for saving MPEG data to disk. |
| mp4 | MPEG-4 mux format, used only for MPEG-4 video and MPEG audio. |
| avi | AVI |
| asf | ASF |
| dummy | dummy output, can be used in creation of MP3 files. |
| ogg | Xiph.org’s ogg container format. Can contain audio, video, and metadata. |
Устанавливаем на наш компьютер Ubuntu Linux 10.0.4; DVB карты заработали из коробки; устанавливаем VLC;
Теперь разбираемся с командой запуска вещания:
vlc -vvv –color –ttl 12 –programs=820,1810 –dvb-adapter=0 dvb:// –dvb-frequency=12732000 –dvb-srate=22000000 –dvb-voltage=13 –sout ‘#duplicate{dst=std{access=http,mux=ogg,dst=:15815},select=»program=820″,dst=std{access=http,mux=ogg,dst=:15817},select=»program=1810″}’
Я думаю, тут не трудно догадаться, что и для чего указывается:
–programs=820,181 : Номера программ, которые будем вещать;
--dvb-adapter=0 : Номер ДВБ карты (от 0 до n);
–dvb-frequency=12732000 : частота транспондера;
–dvb-srate=22000000 : srate транспонедра;
–dvb-voltage=13 : поляризация (13 – горизонтальная, 18 – вертикальная);
–sout : вещать;
#duplicate{dst=std{access=http,mux=ogg,dst=:15815},select=»program=820″ : дубликатом (т.е. полученный поток без изменений) по http, используемый мультиплексер: ogg, на порт 15815 канал под номером 820;
Таким образом на одну карту вешаем все необходимые нам каналы и можем их вещать.
Но у Вас возникнет масса трудностей:
Во-первых: VLC где-то за сутки вещания 20 каналов забивает все 2 Gb оперативной памяти и если ничего не предпринимать, то компьютер начнет загибаться и в итоге сам закроет VLC. Лечим это скриптом, который будет проверять «А не зажрался ли наш плеер? Если да, то закрыть его и открыть снова, иначе – не трогать».
Вот скрипт, который надо засунуть в крон:
#!/bin/bash
MEMUSED=`top -n 1 | grep Mem | awk ‘{print $5}’ | sed ’s/k//i’`
if [ "$MEMUSED" -gt "1300000" ]thenkillall -9 vlcsu -l LOGIN -c ~/scripts/iptv.shfi
Во-вторых: Поток на один канал составит около 8 Мбит/сек на рыло.
В-третьих: Мы будем получать оочень интерлейсную картинку (эффект гребенки).
Последнее, но при этом самое распространённое значение слова «интерлейс» в амв-шной среде, означает артефакт видео, при котором из-за неправильного использования чересстрочного видео и телесайна возникают горизонтальные полоски, избавиться от которых уже невозможно. Единственный правильный способ борьбы с гребёнкой — давить любой интерлейс в зародыше, не допуская его появления при редактировании видео.
Вот скриншот:
В принципе, это не беда, если у юзера в VLC включить фильтр деинтерлейса ( Видео – Деинтерлейс – ТИП ), но ведь все равно не гуд это.
СПОСОБ ВТОРОЙ (VLC):
Избавится от интерлейса можно путем кодирования видео на лету при вещании.
Теперь немного теории о форматах, в которые можно кодировать с помощью VLC:
| name | description |
| mp1v | MPEG-1 Video – recommended for portability |
| mp2v | MPEG-2 Video – used in DVDs |
| mp4v | MPEG-4 Video |
| SVQ1 | Sorenson Video v1 |
| SVQ3 | Sorenson Video v3 |
| WMV1 | Windows Media Video v1 |
| WMV2 | Windows Media Video v2 |
| WMV3 | Windows Media Video v3, also called Windows Media 9 (unsupported) |
| DVSD | Digital Video |
| MJPG | MJPEG |
| H263 | H263 |
| h264 | H264 |
| theo | Theora |
| IV20 | Indeo Video |
| IV40 | Indeo Video version 4 or later (unsupported) |
| RV10 | Real Media Video |
| cvid | Cinepak |
| VP31 | On2 VP |
| FLV1 | Flash Video |
| CYUV | Creative YUV |
| HFYU | Huffman YUV |
| MSVC | Microsoft Video v1 |
| MRLE | Microsoft RLE Video |
| AASC | Autodesc RLE Video |
| FLIC | FLIC video |
| QPEG | QPEG Video |
Теперь рассмотрим команду запуска вещания:
vlc -vvv –color –ttl 12 –programs=2,3,6 –dvb-adapter=0 dvb:// –dvb-frequency=10722000 –dvb-srate=27500000 –dvb-voltage=18 –sout ‘#transcode{vcodec=[CODEC],width=768,height=576,vb=4096,deinterlace}:{dst=standard{access=http,mux=ts,dst=:8011},select=»program=2″,dst=standard{access=http,mux=ts,dst=:8012},select=»program=3″,dst=standard{access=http,mux=ts,dst=:8013},select=»program=6″}’
–sout : вещать;
#transcode{vcodec=[CODEC] : кодировать кодеком [CODEC]
vb=4096 : Видео Битрейт;
deinterlace : деинтерлейсить;
Вот таким способом будет вещать все красиво, НО у меня возник такая проблема: если я в команду добавляю более 2х – 3х каналов, то при кодировании начинают пропадать кадры в больших количествах (при этом процессор не грузится даже на 70 % ) а в логе пишет вот это:
[0x8f2b260] stream_out_transcode stream out debug: late picture skipped (71178)
[0x8f2b260] stream_out_transcode stream out debug: late picture skipped (171490)
[0x8f2b260] stream_out_transcode stream out debug: late picture skipped (134428)
[0x8f2b260] stream_out_transcode stream out debug: late picture skipped (101190)
[0x8f2b260] stream_out_transcode stream out debug: late picture skipped (58033)
[0x8f2b260] stream_out_transcode stream out debug: late picture skipped (21130)
[0x8f2b260] stream_out_transcode stream out debug: late picture skipped (127490)
[0x8f2b260] stream_out_transcode stream out debug: late picture skipped (11837)
Эту проблему я так и не смог победить.
Вот, собственно, на этом весь опыт работы с VLC закончился.
Пока все IPtv работает на Getstreamer’e, в планах на будущее купить аппаратный стриммер.
21 Июль
Звонит мне один из наших операторов тех. поддержки (мы – интернет провайдер), говорит, что какая-то тётя сильно требует соединить с системным администратором, больше никого слышать не хочет. Как оказалось, этой тёте я когда-то винду переустанавливал.
ОНА: Здравствуйте, это Александр?
Я: Да, здравствуйте.
ОНА: У меня с компьютером проблема, при загрузке выводит сообщение «Невозможно загрузить (!) «Винстон» из-за отсутствия системного файла C:/Windows/System32….»
Я (не в трубку): А Мальборо пробовали?
![]()
* После услышанного наш коллектив долго и дружно ржал
*
1 Июль
Вот недавно нужно было настроить вай-фай соединение между небольшими городами, расстояние между объектами было около 10 км.
Сначала решили попробовать это все с помощью, валявшихся в хозяйстве, Nanostation 2, для них была куплена внешняя антенна (сетка).
И так, при настройке нужно обязательно учитывать параметры коннекта и мощности передатчика, вот эта полезная таблица:
Спецификация передатчика
| Скорость передачи | Мощность передатчика | Погрешность | |
| 802.11b | 1 Мбит/с | 26 dBm | +/- 1dB |
| 2 Мбит/с | 26 dBm | +/- 1dB | |
| 5,5 Мбит/с | 26 dBm | +/- 1dB | |
| 11 Мбит/с | 26 dBm | +/- 1dB | |
| 802.11g OFDM | 6 Мбит/с | 26 dBm | +/- 1dB |
| 9 Мбит/с | 26 dBm | +/- 1dB | |
| 12 Мбит/с | 26 dBm | +/- 1dB | |
| 18 Мбит/с | 26 dBm | +/- 1dB | |
| 24 Мбит/с | 26 dBm | +/- 1dB | |
| 36 Мбит/с | 24 dBm | +/- 1dB | |
| 48 Мбит/с | 23 dBm | +/- 1dB | |
| 54 Мбит/с | 22 dBm | +/- 1dB |
Спецификация приемника
| Скорость передачи | Чувствительность | Погрешность | |
| 802.11b | 1 Мбит/с | -97 dBm | +/- 1dB |
| 2 Мбит/с | -96 dBm | +/- 1dB | |
| 5,5 Мбит/с | -95 dBm | +/- 1dB | |
| 11 Мбит/с | -92 dBm | +/- 1dB | |
| 802.11g OFDM | 6 Мбит/с | -94 dBm | +/- 1dB |
| 9 Мбит/с | -93 dBm | +/- 1dB | |
| 12 Мбит/с | -91 dBm | +/- 1dB | |
| 18 Мбит/с | -90 dBm | +/- 1dB | |
| 24 Мбит/с | -86 dBm | +/- 1dB | |
| 36 Мбит/с | -83 dBm | +/- 1dB | |
| 48 Мбит/с | -77 dBm | +/- 1dB | |
| 54 Мбит/с | -74 dBm | +/- 1dB |
Еще важно то, что во встроенной в AirOs тулсе «speedtest» обязательно нужно указывать логин / пароль от второго наноса, иначе скорость при тесте будет завышена мегабит на 8 – 10.
В итоге: через Nanostation 2 + внешняя антенна (сетка) мы получили реальную скорость в 12 Мбит/сек при уровне сигнала примерно в – 55 dbi.
На том же участке, с этой же антенной через Bullet M2 мы получили реальную скорость в 55 – 60 Мбит/сек. Результат вполне устроил. Во время работы с этими игрушками меня смутило только два фактора: 1. Сам bullet почему-то греется как ненормальный. 2. В AirOS отсутствует тулса «speedtest» и скорость приходится измерять своими силами.
И вот полезная таблица «соответствий» для Bullet M2:
Спецификация передатчика
| Скорость передачи | Мощность передатчика | Погрешность | |
| 802.11b/g | 6-24 Мбит/с | 28 dBm | +/- 2dB |
| 36 Мбит/с | 25 dBm | +/- 2dB | |
| 48 Мбит/с | 24 dBm | +/- 2dB | |
| 54 Мбит/с | 23 dBm | +/- 2dB | |
| 802.11n |
MCS0 | 28 dBm | +/- 2dB |
| MCS1 | 28 dBm | +/- 2dB | |
| MCS2 | 28 dBm | +/- 2dB | |
| MCS3 | 28 dBm | +/- 2dB | |
| MCS4 | 27 dBm | +/- 2dB | |
| MCS5 | 25 dBm | +/- 2dB | |
| MCS6 | 23 dBm | +/- 2dB | |
| MCS7 | 22 dBm | +/- 2dB |
Спецификация приемника
| Скорость передачи | Чувствительность | Погрешность | |
| 802.11b/g | 24 Мбит/с | -83 dBm | +/- 2dB |
| 36 Мбит/с | -80 dBm | +/- 2dB | |
| 48 Мбит/с | -77 dBm | +/- 2dB | |
| 54 Мбит/с | -75 dBm | +/- 2dB | |
| 802.11n |
MCS0 | -96 dBm | +/- 2dB |
| MCS1 | -95 dBm | +/- 2dB | |
| MCS2 | -92 dBm | +/- 2dB | |
| MCS3 | -90 dBm | +/- 2dB | |
| MCS4 | -86 dBm | +/- 2dB | |
| MCS5 | -83 dBm | +/- 2dB | |
| MCS6 | -77 dBm | +/- 2dB | |
| MCS7 | -74 dBm | +/- 2dB |
Подкатом несколько фоток
More >
5 Апрель
Предлагаю Вашему вниманию скрипт, с помощью которого можно мониторить время отклик а (пинг) устройство и количество потерь.
Нужно создать скрипт:
#!/bin/sh
PING=»/bin/ping»
ADDR=»IP пингуемого устройства»
DATA=`$PING -c10 -s500 $ADDR -q `
LOSS=`echo $DATA | awk ‘{print $18 }’ | tr -d %`
echo $LOSS
if [ $LOSS = 100 ];
then echo 0
else
echo $DATA | awk -F/ ‘{print $5 }’
fi
А в /etc/mrtg.cfg:
Title[ping]: RTT to IP
PageTop[ping]: < h2 >Round Trip Time< /h2 >
Target[ping]: `/usr/local/bin/ping.sh` # путь к только что созданному скрипту
MaxBytes[ping]: 2000
Options[ping]: growright,unknaszero,nopercent,gauge
LegendI[ping]: Pkt loss %
LegendO[ping]: Avg RTT
YLegend[ping]: RTT (ms)
На графике будет рисовать зеленым – потери, а синим время пинга (среднее из 10 пакетов)..
10 Март
Вот не давно столкнулся с подозрением на то, что мой Mikrotik 4.4 не правильно работает с 2-х ядерным процессором. В инете на форумах, где умные дядьки говорят о микротиках я услышал два мнения:
1. Да, там все из коробки работает.
2. Они обещали многоядерность к 5.x версиям.
Но, к счастью, есть действительно умные люди, которые подсказали мне, что поддержка многоядерных процессоров может быть просто отключена.
Проверяем: (в терминале)
/system hardware print
Если нам выдало «multi-cpu=no», значит применяем команду
/system hardware set multi-cpu=yes
Ну а если выдало «multi-cpu=yes» - значит все в порядке
7 Март
Словил недавно на вновь установленную винду вирусяку.
Симптомы:
- Тормозит либо вообще не работает интернет, не смотря на то, что PPPoE/VPN подключения запускаются нормально. И локальная сеть пингуется нормально.
- Еще интернет может отключаться через каждые 20 секунд.
Признаки:
- В диспетчере задач появляется некий процесс xfgni, если его закрыть – все нормализуется.
- В «Автозагрузке» (msconfig) видим это же приложение, которое находится в /system32/drivers/, если запретить запуск – ничего не изменится.
Лечим:
Если Ваша антивирусная система не смогла это счастье удалить, то нужно поставить программку AVZ.. И выполнить в ней следующий скрипт:
beginSearchRootkit(true, true);SetAVZGuardStatus(True);QuarantineFile(‘C:\WINDOWS\system32\60.scr’,»);QuarantineFile(‘C:\WINDOWS\system32\14.scr’,»);QuarantineFile(‘C:\WINDOWS\system32\47.scr’,»);TerminateProcessByName(‘c:\windows\system32\drivers\xfgni.exe’);QuarantineFile(‘c:\windows\system32\drivers\xfgni.exe’,»);DeleteFile(‘c:\windows\system32\drivers\xfgni.exe’);RegKeyParamDel(‘HKEY_LOCAL_MACHINE’,'Software\Microsoft\Windows\CurrentVersion\Run’,'Microsoft Driver Setup’);RegKeyParamDel(‘HKEY_LOCAL_MACHINE’,'Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run’,'Microsoft Driver Setup’);DeleteFile(‘C:\WINDOWS\system32\47.scr’);DeleteFile(‘C:\WINDOWS\system32\14.scr’);DeleteFile(‘C:\WINDOWS\system32\60.scr’);BC_ImportAll;ExecuteSysClean;BC_Activate;RebootWindows(true);end.beginSearchRootkit(true, true);SetAVZGuardStatus(True);QuarantineFile(‘C:\WINDOWS\system32\60.scr’,»); QuarantineFile(‘C:\WINDOWS\system32\14.scr’,»); QuarantineFile(‘C:\WINDOWS\system32\47.scr’,»); TerminateProcessByName(‘c:\windows\system32\drivers\xfgni.exe’); QuarantineFile(‘c:\windows\system32\drivers\xfgni.exe’,»); DeleteFile(‘c:\windows\system32\drivers\xfgni.exe’); RegKeyParamDel(‘HKEY_LOCAL_MACHINE’,'Software\Microsoft\Windows\CurrentVersion\Run’,'Microsoft Driver Setup’); RegKeyParamDel(‘HKEY_LOCAL_MACHINE’,'Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run’,'Microsoft Driver Setup’); DeleteFile(‘C:\WINDOWS\system32\47.scr’); DeleteFile(‘C:\WINDOWS\system32\14.scr’); DeleteFile(‘C:\WINDOWS\system32\60.scr’);BC_ImportAll;ExecuteSysClean;BC_Activate;RebootWindows(true);end.
После перезагрузки компьютера должно все работать