Антон Борисов
Подключаемся к Интернету через спутник
Спутниковый Интернет развивается семимильными шагами. Тарифы на передачу данных посредством спутниковых провайдеров одни из самых низких. Однако, если вы не являетесь подписчиком услуг спутникового провайдера, данные вы сможете получить в любом случае.
История развития DVB-S-стандарта уходит корнями в последние несколько десятилетий прошлого века. Запуск искусственных спутников Земли всегда был интересной задачей для человечества, как в технологическом плане – вывод на орбиту, так получаемыми возможностями – наблюдение за атмосферными осадками, радионавигация и радиосвязь. Применений для орбитальных спутников много. По мере развития технологий и, в какой-то степени, их удешевления появилась возможность использовать спутниковые технологии для передачи интернет-трафика конечному пользователю. Для приема последнему следует обзавестись спутниковой антенной и обратным каналом связи.
Запрос на конкретный документ в сети происходит по обратному каналу связи, а на тарелку принимается трафик со спутника. С прямым каналом вроде бы всё ясно – скорость приема достаточно высокая, порядка 4 Мбит/с (а если быть точным, то ограничение здесь накладывает DVBSкарта с её максимальной символьной скоростью, которую она может обработать). С обратным каналом количество вариантов побольше – это может обычная телефонная линия к интернет-провайдеру, либо GPRS-соединение к оператору сотовой связи, либо оптоволоконная линия до национального оператора. В случае, когда вы являетесь провайдером услуг интернет-связи и львиный трафик получаете со спутника, то наверняка у вас на руках есть соотношение исходящего и входящего трафика. Чем больше делается запросов по обратному каналу, тем больше данных приходит по прямому каналу. Поэтому в ситуации, когда требуется передавать много данных по обратному каналу, следует рассмотреть возможность подключения к скоростному каналу (см. рис. 1). Например, оптоволоконная линия.
Рисунок 1. Асинхронное подключение к спутниковому Интернету [4]
Трасса N1 – обратный канал связи. На схеме не показан региональный ISP, но его наличие предполагается. По трассе N2 проходит трафик уже от/к самому спутниковому провайдеру. Далее он передается на спутник и в качестве СВЧ-излучения по трассе N3 (прямому каналу) приходит к вам в дом.
Итак, по обратному каналу происходит запрос на ресурс в сети, по прямому каналу происходит его получение. Вроде бы всё ясно и понятно. А теперь представьте, что обратного канала нет. Будь у нас обычное модемное соединение или ethernet-подключение, то разумно было бы расстроиться. Однако это не повод впадать в депрессию в случае со спутниковым каналом. Почему? Сейчас разберемся.
Когда пользователь отправляет запрос по обратному каналу спутниковому оператору (предположим, что это PlanetSky [2] или SatGate [3]), то последний забирает файл в сети по указанному url и со спутника отправляет уже для всей аудитории территории покрытия. А уж кому предназначается данный файл, решает конечный пользователь, т.е. из всего DVB-потока выбираются те данные, которые совпадают с MAC-адресом DVB-карты пользователя и с PID, который был выдан при его подключении к спутниковому оператору. Таким образом, фильтрация данных в DVB-потоке на совести конечного пользователя.
Теперь попробуем вывернуть данную ситуацию наизнанку. Предположим, что пользователь фильтровать ничего не хочет. Тогда он сможет получить весь трафик на конкретном транспондере (частоте) данного спутника. Луч достаточно широкий, поэтому получить сигнал теоретически сможет любой, было б необходимое оборудование. Здорово, не правда ли? Эта процедура и называется – спутниковая «рыбалка».
Дабы не быть голословным, рассмотрим данный вид «спорта» на реальном примере. Считаем, что тарелка, DVBS-карта установлены, драйвера настроены и вы в курсе, что такое PlanetSky (или хотя бы слышали).
Я переориентирую тарелку на направление 40E (восточная долгота) – это спутник Express AM 1 [5].
Проверяю уровень сигнала, который приходит на тарелку.
$ szap -c /etc/channels.conf "PlanetSky"
reading channels from file "/etc/channels.conf"
zapping to 64 "PlanetSky":
sat 0, frequency = 11051 MHz H, symbolrate 29650000, vpid = 0x020c, apid = 0x020c
using "/dev/dvb/adapter0/frontend0" and "/dev/dvb/adapter0/demux0"
status 03 | signal b893 | snr cfde | ber 0000039b | unc 00000000 |
status 1f | signal b81d | snr d4c7 | ber 00000008 | unc 00000000 | FE_HAS_LOCK
status 1f | signal b8a7 | snr d4ac | ber 00000000 | unc 00000000 | FE_HAS_LOCK
status 1f | signal b6dc | snr ccd2 | ber 00000000 | unc 00000000 | FE_HAS_LOCK
status 1f | signal b83d | snr d566 | ber 00000000 | unc 00000000 | FE_HAS_LOCK
|
В среднем значение 72%. Вполне терпимо.
Сам файл channels.conf выглядит так:
# 40E
FirstChannel:3675:r:0:33483:650:512:1:1
Rossiya:3675:r:0:33483:660:513:1:2
RMayak:3675:r:0:33483:0:651:1:11
PlanetSky:11051:h:0:29650:524:524:524
Если для приема видео/аудио каналов AID, VID и важны (последние 3 цифры в параметрах транспондера), то для приема потока они не важны. Почти.
Чтобы посмотреть, какие PID (Packet IDentifier) передаются на данной частоте, стоит запустить утилиту dvbtraffic.
$ dvbtraffic
0200 2543 p/s 466 kb/s 3825 kbit
0202 3926 p/s 720 kb/s 5904 kbit
0203 724 p/s 132 kb/s 1089 kbit
0204 1252 p/s 229 kb/s 1883 kbit
0205 792 p/s 145 kb/s 1191 kbit
0207 200 p/s 36 kb/s 301 kbit
0208 342 p/s 62 kb/s 514 kbit
0209 723 p/s 132 kb/s 1088 kbit
020a 791 p/s 145 kb/s 1190 kbit
020b 235 p/s 43 kb/s 354 kbit
020c 844 p/s 154 kb/s 1269 kbit
020d 225 p/s 41 kb/s 339 kbit
020e 1232 p/s 226 kb/s 1853 kbit
020f 137 p/s 25 kb/s 206 kbit
0210 194 p/s 35 kb/s 292 kbit
0211 849 p/s 155 kb/s 1277 kbit
0212 373 p/s 68 kb/s 561 kbit
022b 575 p/s 105 kb/s 865 kbit
0309 359 p/s 65 kb/s 540 kbit
0378 140 p/s 25 kb/s 211 kbit
03e7 140 p/s 25 kb/s 211 kbit
2000 16606 p/s 3048 kb/s 24976 kbit
|
Получается, что потоки с номерами PID (обращаю ваше внимание на их шестнадцатиричную нотацию) в самом начале списка и в конце наиболее оживленные. Однако последний поток – это суммарный общий поток. Начнем с простого – опробуем самый первый.
Для этого настроим dvb-интерфейс на этот PID.
# dvbnet -p 0x200
DVB Network Interface Manager
Version 1.1.0-TVF (Build Втр Сен 06 23:45:44 2005)
Copyright (C) 2003, TV Files S.p.A
Device: /dev/dvb/adapter0/net0
Status: device dvb0_1 for pid 512 created successfully.
|
# ifconfig dvb0_0 192.168.0.1
Для приема данных воспользуемся пакетом owns – One Way Network Sniffer [6]. Программа довольно простая. Требуется указать интерфейс, на котором будем вылавливать поток данных (см. рис. 2).
Рисунок 2. Указываем интерфейс для приема
Затем по вкусу выставить размер файлов. Я выставил в качестве фильтра все графические и текстовые файлы больше 100 Кб (см. рис. 3).
Рисунок 3. Выставляем фильтр на размер файлов
Нажимаем на кнопку «Start Capture» и можно ждать. Главное, чтобы место на жестком диске не кончилось.
Пока файлы постепенно начинают приходить, давайте обратим внимание на моральную сторону данного занятия. С одной стороны, получается, что вы получаете данные, предназначенные вовсе не вам. С другой стороны, вы просто отфильтровываете один большой поток – уместно сравнение с радиоэфиром. Если у вас есть радиоприемник FMдиапазона и вы умеете крутить на нем кнопки, насколько неэтично слушать радиостанции FM-диапазона? Пожалуй, этично. А если вы слышите разговор по беспроводному телефону в этом диапазоне? Мне кажется, что это будет уже забота тех, кто болтает, чтобы их не слышали. В применении к спутниковому Интернету это означает, что сохранность информации зависит от профессиональности принимающей стороны. Что это означает? «Рыбалка», по-видимому, ваш промежуточный шаг к использованию асимметричного спутникового Интернета. Технология поворота антенны и получение трафика без ошибок отработана. Следующее действие – подключение к спутниковому провайдеру. А вот в этот момент вы уже знаете, что данные может получить и кто-то еще. Нужно безопасное соединение? Используйте VPN-шлюзы! Тогда ваш трафик придет в зашифрованном виде. Не желаете использовать полную шифрацию – упаковывайте архивы с паролями. В противном случае получайте данные в открытом виде, например, фильмы, звуковые файлы, книги и т. п. Аудитория спутниковых рыбаков будет вам благодарна. Но похоже мы с вами расфантазировались и забежали в будущее – пока же мы сами работаем обычными «рыболовами-спортсменами».
Так, что там с полученными данными (см. рис. 4)?
Рисунок 4. Анализируем статистику приема
За 737 секунд входящий трафик оказался немаленьким – более 300 Мб. Весьма и весьма неплохо. Более 2/3 трафика пришлось на TCP-соединения, 1/3 – на другие протоколы. Чтобы сказать более точно, что это за протоколы, следует скопировать весь поток в файл и проанализировать его.
В спутниковой рыбалке есть свои негативные стороны. Самый жирный минус – невозможность докачать файл или получить заново некоторые его части, если произошла ошибка. Вы же не будете звонить эфемерному, неизвестному пользователю с просьбой забрать тот или иной файл заново. Ошибка может возникнуть и на вашей стороне. Например, из-за высокой нагрузки процессора не хватило кванта времени на переключение контекста задачи и, в итоге, «вылетел» маленький кусочек большого файла. В случае, если это графический или видео-файл, то почти ничего страшного. Однако если попался архив, то увы и ах (см. рис. 5).
Рисунок 5. Помехи при приеме вызывают потерю данных
Другой негативный момент – обилие информации. Требуются большие запасы свежего места на винчестере, т.е. это мегабайты и гигабайты свободного места, которое через несколько часов перестанет быть свободным. А отсюда вытекает проблема сортировки. В частности, у OWNS не слишком развита система фильтрации файлов. Что делать?
Обратимся к альтернативной программе – skynet [6]. Нет, это не сеть из Terminator 2 – это программа отечественной инженерной мысли. Как в лучших детективах, известен о нем только позывной – s.o.v.a.
Интерфейс у skynet довольно оригинальный, если не сказать спартанский (см. рис. 6).
Рисунок 6. Фильтрация данных в программе skynet
Однако, как было упомянуто на одном форуме, именно горизонтальные полоски, характеризующие процесс получения файлов, а также их разбивку по типам файлов (jpeg, avi, djvu и т. д.), являются визитной карточкой skynet. Ну и, конечно же, алгоритм сборки файлов по фрагментам. И стоит отметить особо – самый минимальный размер среди программ подобного класса – всего 150 Кб!
Обращаю внимание, что ключевым файлом к успешной рыбалке является содержимое файла skynet.ini, в котором задается частота транспондера, символьная скорость и PID потоков. В моем варианте самые важные параметры выставлены следующим образом.
tuner=11051000,H,29650000,A
pids=512
incomplete=/mnt/BigMuzzy/SkyTest/incomplete
temp=/mnt/BigMuzzy/SkyTest/temp
ok=/mnt/BigMuzzy/SkyTest/ok
Как можно догадаться, последние три параметра – это путь к неполным файлам (у них произошел тайм-аут, после которого они перемещаются из временного каталога temp в каталог incomplete), собственно к файлам, находящимся в процессе сборки, и файлы, которые получены без ошибок.
Кроме указанного skynet.ini существуют файлы regex.txt и rules.txt – названия их говорят сами за себя. В первом хранятся шаблоны, с помощью которых происходит идентификация типа файла, а во втором – правила, по которым следует ловить файлы.
Предположим, что вам интересны будут только zip-файлы, предназначенные для определенного MAC-адреса. Тогда использование указанной ниже конструкции в rules.txt позволит подхватывать данные архивы.
m 0011223344 +zip
Предположим, что все zip-файлы не представляют интереса, а нужны только файлы больше 500 Кб и с определенного IP-адреса.
s 1.2.3.4 +zip[500k-]
Можно указывать не только, с какого именно IP-адреса, но и для какого адресата предназначен файл.
d 1.2.3.4 +zip[-500k]
В этом случае, все zip-файлы, предназначенные для адресата с IP-адресом «1.2.3.4» и размером меньше, чем 500 Кб, попадут к вам на обработку.
Чтобы во время работы добавлять/удалять нужные классы файлов, следует нажать <Ctrl+G>. На дополнительной цифровой панели справа с помощью серых клавиш «+»/«-» указать нужный диапазон размеров файлов. И не забыть нажать <Ctrl+S>. Тогда созданный файл regex.dat в директории с xskynet позволит в дальнейшем не запускать X-Server и xskynet, а непосредственно из консоли заниматься столь интересным делом, как спутниковая рыбалка.
Бывает так, что файл приходит с «дырками» в архиве. Что делать? Исправлять по мере возможности. Если файлы упакованы zip, то попытаться его исправить:
$ zip -FF ZipArchive.zip
$ unzip ZipArchive.zip
Естественно, что целым распакованный файл не будет, но во всяком случае вам удастся его распаковать. Например, полученный мною архив с документом в pdf-формате оказался физически битым, но ошибки пришлись только на фотографии внутри документа, так что текст, можно сказать, не пострадал.
Для упакованных файлов архиватором rar используйте следующую комбинацию:
$ rar x -kb RarArchive.rar
Если вас заинтересовали тонкости настройки skynet, то нелишним будет ознакомиться с информацией волгоградского ресурса [8].
На этом пока всё. Желаю творческих успехов в сортировке полученных гигабайтов. Надеюсь, вы по-настоящему оцените тот калейдоскоп, который буквально падает на нас сверху.
Ссылки:
- http://hostinfo.ru/htmltree/communication/satellite.
- http://www.planetsky.com.
- http://www.satgate.com.
- http://www.space-service.ru/technology.html.
- http://www.lyngsat.com/eam1.html.
- http://owns.sourceforge.net.
- http://skynet.mcdir.ru/files/skynet090.7z.
- http://www.volgosat.ru/skynet.html.