Организация доступа к спутниковому каналу

В статье рассматриваются некоторые вопросы совместного использования спутникового канала в Linux

[Dimmus (Dimmus AT tomtel DOT ru)]

      Предполагаю начать рассматривать тему прежде всего в связи с ее актуальностью, а конкретно для какой цели вообще была избрана данная тематика к более подетальному рассмотрению и так сказать "раскладывания на кусочки". Затронем аспекты, как и основополагающие факты, непосредственно повлиявшие на написание данной статьи для предоставления ее широкой публике.

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

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

      После небольшой прелюдии, естественно, переходим к основной концепции затронутой темы и обобщения выше написанного. Именно спутниковый вид связи является сейчас одним из самых дешевых на потребительском рынке, в силу своей (пока еще) не зарекомендовавшейся, как таковой не устоявшейся и стабилизирующим явлением в предоставления услуг передачи данных. Как никак, но мы одни из первых, кто решил попробовать это на "вкус" и предоставить тем, кто действительно устал тратить свои деньги попусту.

      Итак, начать хотелось бы непосредственно с теоретических, осведомительных данных в общецелом понимании, что же вообще представляет из себя спутниковый Интернет и как его "готовить"?

      Первая часть коснется общевводных данных о передачи данных путем организации DVB-устройств.

Передача данных через DVB

      Общепринятый стандарт расшифровывает DVB, как Digital Video Broadcast. Помимо высокого качества передачи и разнообразия сервисов, одной из основных задач, реализованных в DVB явилась DTH (Direct To Home) доставка большого количества цифровых каналов непосредственно на терминал получателя. Таким образом уже известный к этому моменту асимметричный доступ к Интернет получил возможность интеграции во множество спутниковых DVB систем, а пользователи получили возможность высокоскоростного (до 48 Мбит/сек) приема Интернет данных с использованием доступного комплекта состоящего из небольшой спутниковой антенны и конвертера - (LNB - Low Noise Block), соединенных высокочастотным кабелем на ПЧ с приемным адаптером в виде PCI карты или Set Top Box (STB). В большинстве потребительских систем обратный канал строится с использованием существующей наземной инфраструктуры и запросы пользователей отправляются стандартным модемом (или же, каким-то иным видом связи, допустим обычным VPN-соединением, при условии, что ISP не учитывает исходящий трафик, хотя это так же не актуально, как из предложенных мною способов далее), обеспечивая таким образом экономичный двунаправленный доступ с требуемой полосой. Все эти системы обеспечивают низкую стоимость и широкую полосу доступа к Интернет для любой точки в пределах зоны покрытия спутника, используемого DVB системой.

      Теперь же, рассмотрим значительные приоритеты и недостатки, как и выборе оптимального протокола для передачи данных.

      Первоначальная цель научно-исследовательской работы, в ходе которой был создан TCP, состояла в том, чтобы связать спутниковую сеть (SATNET) с наземным Интернет-сегментом (ARPANET). Хотя нет никаких практических ограничений производительности TCP, существует ряд важных проблем, которые непосредственно не затрагивают эффективность, но о которых должны иметься правильные представления. Это основные отличия спутниковой связи от наземных каналов, оказывающие воздействие на производительность TCP:

  • Ошибки в спутниковом соединении
  • Временные задержки спутникового соединения
  • Ширина полосы частот и асимметрия соединений
  • Доступ к каналам и взаимодействия в сети

      Сегодня существует целый ряд организаций, исследующих эти проблемы и разрабатывающих методы для уменьшения эффекта воздействия свойств спутниковой связи на TCP соединение.

Передача данных в прямом канале

      Передача данных может быть одно или двунаправленной (используя в качестве обратного канал управления) и может быть unicast (точка-точка), multicast (точка-многоточка) или broadcast (все адаптеры получают выделенный PID). Основным элементом данной конфигурации, отличающей ее от чисто телевизионной DVB системы, является IP/DVB шлюз (шлюз, инкапсуляция).

      Стоит так же обратить внимание на те физические устройства, которые отвечают за непосредственную реализацию. Перечислять всеразличные модели не имеет смысла, в силу их стоимости или функций, которые по своей сути не нужны. По собственному примеру: производителем DVB карты является SkyStar, максимальная пропускная способность которой составляет порядка 48 Мбит/сек.

      Ранее адаптеры выпускались исключительно только фирмами, занимающимися разработкой IP/DVB, однако, с возвышением спроса, приоритет намного увеличился и передано было все в другие руки.

      Существует множество различных способов передачи данных, но в нашем случаем этому послужил Multi-Protocol Encapsulation (MPE) - наиболее часто используемая сегодня технология, основанная на DSM-CC (Digital Storage Media Command and Control - загрузка работает по гетерогенным соединениям и применима к ряду сетевых моделей, одной из которых является широковещательная модель без обратного канала) и предназначенная для эмуляции локальной сети при обмене пакетами данных. Каждый SI код, который распознается приемником/декодером обрабатывается, обеспечивая поддержку нестандартного кодирования соответствующими аппаратными средствами (элементарно, приводя пример привязки IP адреса по ARP к физическому адресу устройства (MAC)).

Передача данных в обратном канале

      Однонаправленная передача данных (с использованием UDP) требует разве что только наличия приемника, правда лишь для обеспечения двунаправленной связи (как требуется для TCP), дополнительно необходим обратный канал, иногда называемый каналом "взаимодействия". Полная система состоит из процессора пакетов данных на операционном центре (обычно форматирующем IP-пакеты используя MPE) и приемника клиента. Клиент посылает серверу запросы на передачу данных (а затем подтверждения об их получении в течение сеанса) через наземную сеть, в то время как сервер передает данные клиенту по более высокоскоростным спутниковым каналам.

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

Рекомендации

      Касаясь опять же протоколов передачи данных, стоит отметить про пропускную способность TCP/IP, которая ограниченна временным возвращением и размером TCP окна передачи данных. Высокая производительность DVB позволяет на максимальные возможности устанавливать предельные размеры окна - 65535 байт.

      Так же перед нами может возникнуть серьезная проблема, связанная с обратным каналом и его ограничением. Все дело в том, что большая угроза связанна именно с веб-трафиком (WWW), по своей сути наиболее значительным в потребительской деятельности. Фактически, выходит так, что при более быстродействующей системе прямого канала, он как бы выполнил все свои функции и ожидает отдачу от обратного (в нашем случае, если по пропускной способности ниже него), в чем заключается и вся чреватость. Не думаю, что понять пересылку пакетов для вас составит такую трудность. Так что, выходя из собственных усмотрений - использование подобной схемы категорически не рекомендуется.

      Взглянем на реальные цифры: средняя скорость при веб-серфинге (не беря во внимание ограничение полосы пропускной способности, потому как я рассматриваю отдельные интерактивные объекты), составляет ~ 18КБайт / (от 2.75 до 4.0 секунд), то есть, от 52.4 до 36 Кбит/сек. Естественно, чем больше объектов встроено на страницу, тем выше скорость соединения (рассматривая от 2 до 32 объектов, замечаем увеличение скорости фактически в 10 раз).

Провайдеры

      Как и в любой сфере деятельности, всегда найдутся те, кто решит взять под свое крыло эти необъятности (к тому же, какой стимул дает нашему движению слово "новизна"). Так и в данном случае, нам ничего не остается, как принять их политику, принять то, что есть и стараться использовать как более меньше критики к тем, кто действительно не побоялся вложиться в эту весьма загадочную и до конца еще не оттестированную пирамиду.

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

      В полной мере не такая уж и известная фирма "Траверс", открывает нашему вниманию из-за далеких гор (как говорилось ранее - "буржуазии"), два тарифных плана: провайдер "PlanetSky" (Спутники: Экспресс-АМ1 и Экспресс-АМ22) и "SpaceGate" (Спутники: Экспресс-АМ22, NSS-6) со своими критериями и условиями. Различные тарификации, приведенные на сайте курьера www.travers.tomsk.ru думаю будут рассмотрены единолично каждым и подлежат обсуждениям только с самими поставщиками (французами).

      Выходя лишь из личного мнения и использования услуг "PlanetSky", в силу подходящих мне тарифов, стоит отметить, что по большей части это такая же трата денег в пустую, ибо надеясь на более высокий приоритет CIR, мы в итоге получаем гарантированную скорость, а не максимально допустимую (кстати, не отметил про это, что есть разделения CIR), только оплата конечно же поступает за доминирующее целое и лишь тогда можно достичь ожидаемого результата, когда на протяжении 1-2 часов скорость не поднимается выше нижнего CIR (естественно, об этом нюансе все предпочитают умалчивать). Еще множество различных мелочей стоит выделить, только думаю, что более подходяще это будет сделать в практическом материале, изложенном далее.

Практическое использование DVB технологий

      Начнем конечно же с того, что все будет рассматриваться на примере построения в Linux и всеразличных инструментов, связанных с этой ОС. Не будем разбирать все по-детально, как это было в теоретическом свидетельстве, перейдем непосредственно к делу.

      За основу мною был взят стандартный rpm-based дистрибутив, от корпорации RedHat - Fedora Core. Собственно, что стоит только выделить - в рассмотрение берутся диапазон ядер от 2.6.1 до 2.6.12 включительно (касательно более ранних ядер, то поддержка того устройства, что мы будем рассматривать - не имелась, для этого придется накладывать патч драйвера на ядро, взять который можно с сайта производителя www.linuxtv.org).

      При конфигурировании ядра, в разделе "Драйвера Устройств" находим поддержку "Мультимедийные устройства", далее видим "DVB" и, естественно, выбираем, как и последующий пункт "DVB CORE" (только модулем!), здесь нам необходимо найти тип устройства (в данном случае карта "skystar2") - "B2C2/...". Затем устанавливаем поддержку "I2C" для чипсета нашей материнской платы (сделать это так же можно в основном разделе устройств).

      На этом этапе все. Собираем ядро и загружаемся. Теперь при просмотре lspci замечаем нашу карту:

Network controller: Techsan Electronics Co Ltd B2C2 FlexCopII DVB chip / Technisat SkyStar2 DVB card

      Переходим к настройке собственно самой тарелки. Для начала необходимо создать dvb-устройство в системе (стандартным путем или же при помощи udev). Скрипт выглядит таким образом (уточню, что его необходимо поставить в автозагрузку):

#!/bin/sh

    if [ -e /dev/.devfsd ]; then
    exit 0
    fi
    rm -rf /dev/dvb
    rm -rf /dev/dvb
    mkdir /dev/dvb
    chmod 755 /dev/dvb
    for i in `seq 0 3`; do
    mkdir /dev/dvb/adapter$i
    chmod 755 /dev/dvb/adapter$i
    mknod -m 0660 /dev/dvb/adapter$i/frontend0 c 212 `expr 64 \* $i + 3`
    mknod -m 0660 /dev/dvb/adapter$i/demux0 c 212 `expr 64 \* $i + 4`
    mknod -m 0660 /dev/dvb/adapter$i/net0 c 212 `expr 64 \* $i + 7`
    chown root.root /dev/dvb/adapter$i/*
done

      После этого необходимо скомпилировать утилиты для управления самой антенной. Взять их можно так же на сайте производителя http://www.linuxtv.org/downloads/linuxtv-dvb-apps-1.1.0.tar.bz2. Пригодятся лишь собранные бинарные файлы dvbnet (задача PID и соответственно включение broadcast) и szap (задача частоты параметра). Далее перекладываем их в /usr/local/bin и заносим значения частоты спутника, выданные провайдером, в файл /etc/channels.conf:

1:11056:h:0:20979:523:523:1

      Теперь пишем следующий скрипт и так же помещаем его в автозагрузку, который будет отвечать за загрузку модулей с необходимыми параметрами и соответственно установку связи со спутником (здесь необходимо подставить параметры PID и MAC, которые у каждого свои и зависят от устройства, IP прописывается фэйковый, фактически любой):

#!/bin/sh

    DIR=/usr/local
    PID=PID
    DEV_NAME=dvb0_0
    IP_ADDR=192.168.238.238
    MAC_ADDR=MAC

    cd $DIR/bin
    case "$1" in
    start)

    /sbin/rmmod -f skystar2 >/dev/null 2>&1
    /sbin/rmmod -f mt312 >/dev/null 2>&1
    /sbin/rmmod -f dvb-core >/dev/null 2>&1
    sh /root/.sh/dvb_0
    /sbin/modprobe dvb-core dvb_shutdown_timeout=0
    /sbin/modprobe mt312
    /sbin/modprobe skystar2
    $DIR/bin/szap -c /etc/channels.conf -n 1 -x
    $DIR/bin/dvbnet -p $PID
    /sbin/ifconfig $DEV_NAME $IP_ADDR
    /sbin/ifconfig $DEV_NAME hw ether $MAC_ADDR
    /etc/init.d/sat start

    ;;

    stop)

    /sbin/ifconfig $DEV_NAME down
    $DIR/bin/dvbnet -d 0
    /sbin/rmmod -f skystar2 >/dev/null 2>&1
    /sbin/rmmod -f mt312 >/dev/null 2>&1
    /sbin/rmmod -f dvb-core >/dev/null 2>&1
    /etc/init.d/sat stop
    ;;

    restart)
    $0 stop
    $0 start
    ;;
    *)
    echo "Usage: `basename $0` start | stop | restart"
    ;;

esac 
Небольшое пояснение: удаляем модули (при том именно со значением -f - форсированно, иначе какой-либо "зомби" может не дать перегрузить модули), затем применяем скрипт для создания dvb-устройства в системе, написанный выше, потом подгружаем модули (dvb-core обязательно со значением dvb_shutdown_timeout=0, за боле подробной информацией можно обратиться в документацию), после устанавливаем соединение со спутником (проверяем качество сигнала перед запуском скрипта, дабы убедиться, что все настроено верно - должно пройти 2 проверки и после этого szap закроется), устанавливаем PID при помощи dvbnet, создаем устройство сети с данными параметрами и применяем скрипт "sat", основные концепции которого будут приведены ниже.

      Значит, соединение мы установили, связь со спутником налажена. Теперь осталось завершение и то, к чему шли - сам Интернет. Провайдер предлагает 3 вида соединения для передачи данных (VPN, GRE и IPIP туннели). С нашей стороны все они конечно же будут выполнять роль обратного канала. Не буду рассматривать первые два, в силу того, что VPN абсолютно не составляет нужды в использовании, из-за постоянных разъединений, как конечно же и большой цени за обмен пакетами, благодаря тому, на сколько активно отдаются пакеты, на столько же и принимаются (речь идет о наших ISP, я же использую ppp-соединение, путем ADSL), в итоге набегают немалые деньги (инициатива есть использовать только для тех, у кого нет внешнего IP). GRE и IPIP во многом идентичны, я же взял за построение последний метод.

      Связываемся с тех. поддержкой нашего провайдера (путем ICQ или E-Mail) и просим на их стороне поднять на наш аккаунт IPIP туннель (не забудьте главное попросить еще предоставить внешний IP). После чего, выданные параметры заносим в следующий скрипт, которые и называется "sat":

#! /bin/sh

    IPIP_I_FACE=ipip1
    EARTH_IP=x.x.x.x
    VPN_SRV_IP=x.x.x.x
    PS_IP=x.x.x.x
    PS_GRAY_SRV=192.168.102.x
    PS_GRAY_CLI=192.168.102.x
    EARTH_GW=x.x.x.x
    LOG=/var/log/ipip_log

    start)
    echo "del ipip1 if exists" > $LOG
    /sbin/ip tunnel del $IPIP_I_FACE >> $LOG

    echo "create new ipip tunnel" >> $LOG 2>&1
    /sbin/ip tunnel add $IPIP_I_FACE mode ipip local $EARTH_IP remote $VPN_SRV_IP

    echo "assign PS ip to tunnel interface">>$LOG
    ifconfig $IPIP_I_FACE $PS_GRAY_CLI netmask 255.255.255.255 >> $LOG 2>&1

    echo "add route to gray tunnel IP" >> $LOG
    /sbin/ifconfig $IPIP_I_FACE:1 $PS_IP netmask 255.255.255.255
    /sbin/ip route add $PS_GRAY_SRV/32 dev $IPIP_I_FACE >> $LOG 2>&1

    echo "route to VPN-server via earth" >> $LOG
    /sbin/ip route add $VPN_SRV_IP via $EARTH_GW >> $LOG 2>&1

    echo "delete currewnt default route" >> $LOG
    /sbin/ip route del default >> $LOG 2>&1

    echo "route PS network via earth if needed" >> $LOG
    /sbin/ip route add 213.138.110.0/24 via $EARTH_GW src $EARTH_IP >> $LOG 2>&1

    echo "setting up new default route" >> $LOG
    /sbin/ip route add default via $PS_GRAY_SRV >> $LOG 2>&1
    ;;
     stop)
    /sbin/ifconfig ipip1 down
    ;;
    restart)
    $0 stop
    $0 start
    ;;
    *)
    echo "Usage: `basename $0` start | stop | restart"
    ;;

esac
Не думаю, что требуются какие-то обширные пояснения к скрипту, ибо, на мой взгляд, в нем подробно описан ход действий.

      По окончанию, раскладываем все по директориями (в моем случае это /root/.sh) и запускаем, затем смотрим вывод в логах (рекомендую для начала по-детально изучить каждую из выполняемых команд). Далее, при просмотре ifconfig, должны увидеть устройства: "dvb0_0" "ipip1" и его алиас с внешним IP "ipip1:1". Просматриваем маршрутизацию, убеждаемся, что все в порядке, настраиваем NAT с заданным интерфейсом (-o ipip) и заворачиваем все через внешний IP (--to-source IP).

      Есть еще один нюанс, так это то, что постоянно необходимо поддерживать связь со шлюзом, т.е. ~ каждые 15 секунд посылать пару пакетов, иначе при долгом застое просто на просто туннель падает с их стороны.

      В общем-то и все, на настройке системы мы закончили, об установке самой тарелки позаботятся естественно люди, которые являются у нас поставщиками данных услуг, от администратора такие навыки не требуются.

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

29.10.2005
Dimmus

Статья взята с сайта OpenNet.ru

[ опубликовано 09/11/2005 ]

Dimmus (Dimmus AT tomtel DOT ru) - Организация доступа к спутниковому каналу   Версия для печати