• Как раздельно передать сообщения, которые не помешаются в один пакет?

    @yaror
    10 лет в мобильном телекоме
    А всё просто )
    Когда Вы работаете с протоколом TCP, вы не оперируете понятием "пакет": TCP скрывает от Вас тот факт, что сообщение при передаче каким-то образом разбивается на отдельно передаваемые фрагменты.
    Причём, уровень шифрования, например, SSL/TLS, большинство библиотек реализуют прозрачно и незаметно для Вас, поэтому Ваша программа может и не знать, что в какой-то момент данные на отправке зашифровываются, а на приёме расшифровываются.

    Логика отправки или приёма чего-то из TCP-соединения абсолютно такая же, как и при работе с дисковым файлом: есть некоторый поток байт, которые на уровне протокола никак на отдельные сообщения не разделены. Признак "началось новое сообщение" Вам надо придумать самому.

    Например, популярной является разметка TLV: Tag-Length-Value
    Tag: тип сообщения или некоторый маркер начала нового сообщения. Как правило, это поле фиксированной длины, например, 1 байт.
    Length: длина сообщения. Поле фиксированной длины, например, 4 байта.
    Value: само передаваемое сообщение переменной длины.

    Какое какое именно значение передавать в Length - решать Вам.
    Можно сделать так:
    Length = длина_поля_в_байтах(Value)
    А можно и так:
    Length = длина_поля_в_байтах(Tag) + длина_поля_в_байтах(Length) + длина_поля_в_байтах(Value)

    Не надо опасаться, что, начав читать из TCP-соединения, Вы начнёте читать его "с середины": протокол гарантирует, что Вы при чтении увидите байты в том же самом порядке, в котором они были отправлены в вашу сторону с той стороны.

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

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

    Пример: допустим, Вы ожидаете сообщение длиной 100 байт.
    Возможна ситуация, когда Вы прочитали из соединения 50 байт, а затем Вы получаете уведомление "больше данных нет". Это означает, что оставшиеся 50 байт всё ещё где-то в пути; Вам следует периодически повторять процедуру чтения из соединения до тех пор, пока Вы не получите, вероятно, за несколько приёмов, оставшиеся данные.

    Получается, на псевдокоде пусть не оптимальная, но зато простейшая логика чтения каждого нового сообщения в разметке TLV может иметь следующий вид:

    пока (соединение_не_закрыто):
        подождать_пока_в_буфере_приёма_не_окажется_байт(1)
        tag = прочитать_байт(1)
    
        подождать_пока_в_буфере_приёма_не_окажется_байт(4)
        length = прочитать_байт(4)
    
        подождать_пока_в_буфере_приёма_не_окажется_байт(length)
        value = прочитать_байт(length)
    
        обработать_новое_сообщение(tag, value)


    Подобная логика позволит Вам нормально обработать ситуацию, когда кто-то отправил Вам два сообщения подряд, но сразу до Вас первое сообщение долетело целиком, а от второго - только первая половина: столько влезло в один TCP-пакет. Вторая же половина второго сообщения в следующем TCP-пакете может прилететь даже и через полчаса.
    Ответ написан
    1 комментарий
  • На каких модемах можно организовать связь точка-точка по технологиям 4G / 5G /LTE без участия оператора?

    @yaror
    10 лет в мобильном телекоме
    На любых, но Вам для этого придётся самому стать оператором )

    SIM-карты не проблема, их можно взять и здесь:
    shop.sysmocom.de/products/sysmoISIM-SJA2

    Базовую станцию вполне можно взять на вторичке, ядро можно взять кривое, зато бесплатное, типа https://github.com/open5gs/open5gs

    А вот что делать, чтобы Вас не взяла за чувствительное место Государственная комиссия по радиочастотам - вопрос...

    Видимо, запираться в железном ангаре, чтобы сигнал не пробивался наружу и выкручивать мощность базовой станции до минимума.
    Ответ написан
    Комментировать
  • Как настроить NAT на Juniper SRX650?

    @yaror
    10 лет в мобильном телекоме
    А не может ли узел с ip-адресом 192.168.16.1, который для SRX является default gateway, отфутболивать уже прошедший через NAT клиентский трафик?

    И что, кстати видно на SRX, если при попытке запустить пинг наружу выполнить
    show security flow session?

    И, кстати, а вот это - оно зачем?
    pool 192.168.16.0/24 {
    address-range low 192.168.16.186 high 192.168.16.254;
    router {
    192.168.16.1;
    }
    propagate-settings ge-0/0/1.0;
    }
    Ответ написан
  • VoLTE с выключенной передачей данных?

    @yaror
    10 лет в мобильном телекоме
    Не будет: VoLTE работает как раз поверх мобильного интернета.
    Ответ написан
    5 комментариев
  • Ограничение трафика на открытые порты?

    @yaror
    10 лет в мобильном телекоме
    В принципе, если Ваш провайдер готов разделить Ваш канал на два VLAN и настроить в нём QoS таким образом, чтобы каждый VLAN имел некоторую гарантированную полосу, то почему нет?
    Сделать это со стороны провайдера обычно можно, но - лень )

    А ещё есть техническая возможность отсеять DDoS с вашей стороны, однако, для этого придётся либо воспользоваться услугой очистки трафика от провайдера либо специализированной конторы, либо - самый "лобовой" способ - поднять с вашим провайдером BGP + BGP Flowspec.
    Полагаю, коммерческие вопросы обсуждаются обычно отдельно )

    Итак, BGP Flowspec: RFC 5575/7674.
    Если кратко, то BGP Flowspec позволит Вам попросить вышестоящего провайдера даже в автоматическом - важно! - режиме заблокировать входящий трафик, удовлетворяющий некоторым критериям:
    - Source Prefix
    - Destination Prefix
    - IP Protocol
    - Source port/Destination port
    - Packet Length
    и т.д.

    То есть, с помощью стандартного расширения протокола BGP Вы можете попросить Вашего провайдера: "Пожалуйста, не пропускайте в мою сторону UDP-пакеты размерами от 100 до 150 байт с source port из диапазона 1000-2000 и имеющие Source ip address из диапазона 1.2.3.0/24"

    Таким образом - да, трафик, который Вы попросили к Вам не пропускать, умрёт ещё у Вашего провайдера (а может, и у провайдера Вашего провайдера), и Ваш канал перегружен не будет.
    Открытым, конечно, остаётся творческий вопрос "как понять, какой именно трафик следует блокировать" )

    Вероятно, BGP Flowspec есть смысл использовать _совместно_ с разделением канала на два VLAN с гарантированной минимальной полосой: один VLAN для управления и, если понадобится, ручной модификации правил Flowspec, а второй - продуктивный.
    Ответ написан
    Комментировать
  • Насколько затратно по деньгам для мобильного оператора внедрение технологии VoLTE?

    @yaror
    10 лет в мобильном телекоме
    VoLTE И VoWiFi это две разные песни.

    VoWiFi самому оператору не просто не полезен, а даже, наоборот, вреден )
    VoWiFi это, фактически, отмена международного роуминга, а это - падение доходов, ибо толком зарабатывать на VoWiFI пока не научились.
    А ещё в VoWiFi нет механизмов гарантированного QoS. А это - щелчки, заикания и прочие радости перегруженного вайфая, всем нам знакомые по скайпу и вотсапу в кафешках, при том что дома оно, как будто бы, работает без проблем. И если в VoLTE оператор параметры качества гарантировать может, то удовлетворить офонаревшего от качества VoWiFI-соединения в египетском двухзвёздном отеле абонента оператор не сможет в принципе.

    С VoLTE всё получше, ибо, в перспективе, голос таки уйдёт туда. Есть, правда, подозрение, что к тому времени опять придётся всё переделывать, поскольку на носу уже настоящий 5G (не тот, который местами с помпой развёрнут по миру - а настоящий), а там, похоже, всё опять будет по-новому, и никто пока не знает - как.
    По крайней мере, VoLTE на данный момент к 5G прикручивается трансректально.

    Ну, а по тормозящим факторам VoLTE соглашусь с Валентин:
    - перетащить голосовую связь с традиционных MSS на IMS, не поломав по пути - само по себе подвиг
    - билинг в VoLTE работает совсем по-другому. Перетащить же биллинг с CAMEL на Diameter зачастую означает сменить биллинговую систему в принципе, и за это участникам уже положено ставить бронзовый конный прижизненный памятник. Сложность тут, разумеется, не в запуске инсталлятора СУБД, а в том, что другая биллинговая оперирует другими понятиями в своей конфигурации, и при этом необходимо сохранить работоспособность тех нескольких тысяч накопившихся за всё время работы тарифных опций
    - сдача СОРМ VoLTE, который в лицензированном виде появился совсем вот-вот - тоже отдельная песня, особенно, поговаривают, на Урале )

    Особой остроты во внедрении VoLTE, кстати, наверняка добавляет ситуация, когда базовые станции eNodeB, узел управления политиками QoS PCRF и узел управления мобильностью MME - разных производителей. И, вроде бы, всё работает по стандартам, но каждый производитель стандарты прочитал и понял по-своему, держится своего мнения до последнего и на заявки отвечает "это не мы, это вон тот ваш поставщик дурак". Как результат, в лаборатории VoLTE худо-бедно работает, но все понимают, что в таком виде в коммерцию его выпускать нельзя.
    Ответ написан
    4 комментария
  • Как вырезать из файлов всё, кроме нужного тега?

    @yaror
    10 лет в мобильном телекоме
    Я бы посоветовал глянуть в сторону xmllint.
    Утилита юниксовая, но в Cygwin она есть:
    https://stackoverflow.com/questions/21871237/use-x...

    Примерный формат будет таким:
    xmllint --xpath 'путь-к-xml-тегу' --output 'путь-к-файлу-для-сохранения-результата' путь-к-исходному-xml-файлу

    Например, если надо выдрать все теги , где бы они не находились, будет примерно так:
    xmllint --xpath '//TaxNo' --output 'file.stripped.xml' file.xml

    Если надо выдирать не все попало теги TaxNo, а только вложенные в единственный тег Taxes, который, в свою очередь, вложен в корневой тег Root, то команда будет примерно такой:
    xmllint --xpath '/Root/Taxes//TaxNo' --output 'file.stripped.xml' file.xml
    Ответ написан
    Комментировать
  • Как поймать сигнал с сотового телефона?

    @yaror
    10 лет в мобильном телекоме
    Давайте с самого начала.
    Это абстрактный интерес "хочу волшебную пепяку, чтобы быть как Джеймс Бонд", или у Вас есть востребованная реальной жизнью задача, допустим, посчитать, сколько владельцев айфонов такой-то модели проходит рядом с Вашим бутиком модной одежды?
    Ответ написан
  • Visitor Location Register: данные LAC и Cell_ID - хранится ли история их изменений и где?

    @yaror
    10 лет в мобильном телекоме
    1. Я бы посоветовал обратиться с этим вопросом в отделы по работе с корпоративными клиентами самих операторов. И мешок денег приготовил бы. И говорил бы шопотом, чтобы не подслушал никто )
    Кстати, отдельный вопрос - персональные данные. Предполагаю, что историческую информацию отдадут либо по номерам, записанным непосредственно на Вас, либо с некими анонимными абонентскими идентификаторами вместо номеров.

    2. Теперь по технологии.
    Во-первых, если абонент находится в Idle (абонентский радиоканал разобран для экономии ёмкости сети и абонентского аккумулятора), его местонахождение известно с точностью до LAC (GSM, CDMA) или TAC (LTE).
    Да, известен Cell-ID его последней активности, но нет никаких гарантий, что за это время абонент не убежал на другую соту в пределах LAC/TAC.
    Получается, когда абонент в Idle, то, как Вы и написали, его местонахождение уточняется в момент:
    - Location Update при смене LAC/TAC
    - Periodic Location Update
    - Explicit Detach

    Когда же абонент находится в состоянии Connected (идёт или только-только закончился разговор либо передача данных), его местонахождение с точностью до соты известно.
    Кстати, я исторические данные вытягивал бы не из VLR, а из биллинга: все записи, что в CDR (Call Detail Records), пишутся с указанием CGI/E-CGI.
    Ответ написан
    2 комментария
  • Зачем нужен BGP роутер внутри компании?

    @yaror
    10 лет в мобильном телекоме
    BGP - он как томограф или карьерный самосвал: если Вы не знаете, зачем он Вам нужен - скорее всего, он Вам не нужен )

    В принципе, верно, изначально BGP построен вокруг понятия автономной системы (AS). Однако, стоит помнить, что существуют диапазоны AS как публичные ("интернетовские"), так и внутренние, предназначенные для использования внутри организации.

    По использованию BGP внутри организации у каждого производителя - Cisco, Juniper, Huawei, Alcatel-Lucent - есть отдельная линейка курсов "Как правильно построить сеть предприятия, и зачем здесь BGP" )

    Для примера, BGP может сильно облегчить жизнь, если:
    - вы строите сеть, объединяющую несколько предприятий - каждое со своим IT-отделом и персональным набором головных тараканов
    - на вашей сети из десятков площадок VLAN колосятся сотнями, и вам приходится каждый день подключать к ним новые и новые узлы, произвольно по этим площадкам раскиданные (и здесь вам помогут работающие через BGP L3VPN/L2VPN/VPLS)
    Ответ написан
    Комментировать
  • Какие есть виды высокоскоростного Интернета для стрима видео на максимальной скорости?

    @yaror
    10 лет в мобильном телекоме
    Универсального решения, я думаю, нет.
    Разумеется, проводное подключение всегда будет стабильнее и надёжнее.

    Если куда-то дотянется только спутник - там и выбора-то особого нет )
    Не подскажу по использованию Wi-Fi в качестве радиорелейки - не специалист - а вот в сотовых сетях немного ориентируюсь )

    Выше в комментариях я видел требования к полосе 2 Мбит/с, верно?
    Тогда скажу так: да, скорость на мобильной сети вполне достижимая.
    Обозначу некоторые не сразу очевидные вещи:
    1. Радио у мобильных операторов заточено под типичное для среднего абонента распределение передача/приём (Uplink/Downlink) ~ 1/7 - 1/8. Соответственно, поскольку камера работает на передачу, заявленную оператором доступную полосу (а маркетологи любят обещать и 100, и 300 мегабит в секунду) я бы сразу смело делил на 8.
    2. Доступную полосу в конкретной точке всё равно надо проверить. Проверять не спидтестом - он зачастую подвирает - а, например, iperf'ом. Вообще, для каждой конкретной площадки я бы взял симки всех доступных там операторов, померил бы скорость на каждом, и выбрал наиболее подходящую.

    Насчёт же запараллеливания каналов от нескольких мобильных операторов... Думаю, при большом количестве точек геморрой с обслуживанием этой конструкции съест любой возможный выигрыш. Так что, максимум, на мой взляд, это комбинация из двух каналов: основной/резервный.
    Ответ написан
    Комментировать
  • Можно ли улучшить качество мобильного интернета использованием нескольких модемов?

    @yaror
    10 лет в мобильном телекоме
    Именно для Скайпа использовать несколько модемов разом бесполезно.
    Дело в том, что любые доступные вам методы балансировки (т.е. перераспределения) интернет-трафика будут раскидывать между модемами не отдельные ip-пакеты, а установленные соединения.
    Сделать так, чтобы половина скайп-трафика шла через модем Зелёный-телеком, а вторая - через Полосатый-телеком, не получится.
    Максимум, чего можно добиться: Скайп, допустим, ходит через Зелёный-телеком, а веб-серфинг, торренты и всё остальное - через Полосатый.
    Ответ написан
    Комментировать
  • Как пропускать трафик через сайт МТС, чтобы он не тратился?

    @yaror
    10 лет в мобильном телекоме
    Правда, не совсем через сайт, но...
    DNS-туннель?
    iodine?

    Ох, прилетит мне сейчас от МТС ;)
    Ответ написан
    Комментировать
  • Литература, курсы или какой-либо другой материал по сотовым сетям для новичка?

    @yaror
    10 лет в мобильном телекоме
    Вопрос в том, насколько глубоко новичок хочет разобраться в теме.
    Если вводные статьи, найденные longclaps, кажутся слишком поверхностными...

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

    Ну, вот если сходу и крупными мазками, то современная мобильная сеть это:
    - радио трёх разных поколений: GERAN (GSM), UTRAN (3G), EUTRAN (LTE) и механизмы взаимодействия между поколениями
    - классическая голосовая подсистема 2G/3G, костыль CSFB/RIM для выталкивания абонента в сеть GSM/3G из LTE для совершения звонка, и вообще ни на что не похожий VoLTE/IMS
    - свои заморочки в мобильном интернете 2G/3G/LTE, включая экзотику вроде мобильного мультикаста MBMS
    - интегрированный Wi-Fi
    - онлайн-биллинг
    - DPI

    Из протоколов сигнализации, придётся понять:
    - SS7 (для 2G/3G)
    - Diameter (биллинг/DPI/LTE)
    - RADIUS
    - всякая портящая жизнь мелочь вроде BSSAP, S1AP, GTP-C/GTP-U )

    В общем, одной книжки про всё разом, скорее всего, в природе нет в силу слишком большого охвата. Да и, вообще, мобильные сети связи - это университетская специальность на четыре года обучения )

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

    Ещё мне очень хвалили за глубокий подход к теории читаемые инженерам операторов связи курсы от Хуавея.
    Ответ написан
    1 комментарий
  • Определяется ли оператор автоматически, если владелец сменил оператора?

    @yaror
    10 лет в мобильном телекоме
    Доступ должен бы быть.
    Если нет, надо подключиться.
    Вот здесь:
    https://zniis.ru/bdpn/operators/request

    Кстати, таблица маршрутных номеров, на всякий случай:
    https://zniis.ru/bdpn/operators/avtomaticheskaya-v...

    Дело в том, что абоненский номер MSISDN +79ххххххххх по первым цифрам всегда будет принадлежать какому-то конкретному оператору. Но если абонент ушёл к другому оператору, в таблице маршрутных номеров "дырки" на его месте не будет, зато он появится в доступной уже за деньги таблице переехавших MNP-абонентов )
    Ответ написан
    Комментировать
  • Существует ли доступная технология для ловли 4g сетей на расстоянии в 50км?

    @yaror
    10 лет в мобильном телекоме
    Очень-очень советую предварительно пообщаться с Вашим оператором связи насчёт технической возможности работы соты LTE на расстоянии 50 км в принципе.

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

    В документации сказано явно и открытым текстом:
    If the feature is activated and if the cell range exceeds 15 km, extra Uplink (UL) resource blocks must be reserved for random access, which reduces UL capacity.
    // пропущено
    The feature includes use of the random access preamble format 1 that is appropriate for the large round trip times in cells with cell range larger than 15 km.

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

    Может, действительно в сторону спутника посмотреть?
    Или в сторону радиорелейки?
    Ответ написан
    Комментировать
  • Соединение между двумя компьютерами через сокет?

    @yaror
    10 лет в мобильном телекоме
    Давайте ещё раз.
    На каком порту вы начинаете слушать входящие соединения?

    Работать всё, на примере TCP, должно так:
    1. Клиент устанавливает соединение с публичным сервером:
    192.168.1.100:12345 -> 1.2.3.4:80
    Порт 12345 со стороны клиента выделяется, как правило, автоматически операционной системой клиента.

    2. NAT выделяет публичную пару Ip-адрес: порт для этого соединения, и запоминает её:
    (клиент) 192.168.1.100:12345 -> (NAT)(5.6.7.8:11111) -> (сервер)1.2.3.4:80
    Соответственно, с точки зрения сервера, в нему подключились с пары адрес:порт 5.6.7.8:11111

    3. Теперь, внимание!
    Клиент, ожидая входящие соединения, начинает слушать на порту 12345, поскольку именно для этого порта пробита "дырка" в NAT.
    Эта технология так и называется: Hole Punching.
    Про другие порты, открытые на этом клиенте, NAT ничего не знает.

    4. Кто-то снаружи устанавливает TCP-соединение с парой адрес:порт 5.6.7.8:11111.
    NAT знает, что за публичной парой 5.6.7.8:11111 скрывается, на самом деле, "серая" пара 192.168.1.100:12345, подменяет в TCP SYN-пакете destination address и destination port c 5.6.7.8:11111 на 192.168.1.100:12345, и отправляет этот ip-пакет клиенту.
    Клиент, получив запрос на соединение на порту 12345, подтверждает установление соединения.

    Соответственно, есть три момента, которые стоит проверить:
    1. После установления соединения с внешним сервером, клиент должен поднять Listening Socket на том же source TCP port, с которым было установлено соединение с внешним сервером
    2. На NAT должна быть включена функциональность Hole Punching
    3. Для успешного установления соединения между находящимися за NAT узлами по их публичным адресам, на NAT должна быть включена отвечающая именно за это функциональность Hairpinning.
    Ответ написан
    Комментировать
  • Как делать запросы по нескольким ip?

    @yaror
    10 лет в мобильном телекоме
    Смотря что и как надо )

    Вот из man curl:
    --interface
    Perform an operation using a specified interface. You can enter interface name, IP address or host name. An example could look like:
    curl --interface eth0:1 www.netscape.com
    If this option is used several times, the last one will be used.


    Если хочется написать делающую сие программу самостоятельно, то стоит обратиться к документации реализации сетевых сокетов в близком Вам языке.
    Вот так конкретный ip-адрес приколачивается к будущему TCP-соединению в C:
    When a socket is created with socket(2), it exists in a name space
    (address family) but has no address assigned to it. bind() assigns
    the address specified by addr to the socket referred to by the file
    descriptor sockfd. addrlen specifies the size, in bytes, of the
    address structure pointed to by addr. Traditionally, this operation
    is called “assigning a name to a socket”.
    Ответ написан
    Комментировать
  • Есть ли анонимность если подключаться к интернету с помощью сотового оператора в следующих условиях?

    @yaror
    10 лет в мобильном телекоме
    Анонимность от кого?

    От соседа Васи такой подход анонимность обеспечит вполне.
    От ФСБ - нет, поскольку ФСБ имеет доступ к информации о связи телефонного номера с паспортными данными официального владельца.
    Ответ написан
    Комментировать
  • Почему для восстановления 3G надо перезагружать телефон?

    @yaror
    10 лет в мобильном телекоме
    Это был крик души, или действительно интересны технические подробности? )

    Если кратко, то причина вполне техническая, и звучит она "экономии для".
    Далее должна быть фраза типа "снижая расходы на дополнительное оборудование, мы добиваемся снижения стоимости наших услуг". Как инженер, я не могу судить, сколько именно в ней правды, но логика подсказывает, что какая-то корреляция быть действительно должна.

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