четверг, 24 октября 2019 г.

DECT/GAP - что это за стандарт?


         По сути, когда мы говорим про GAP мы говорим про стандарт ETSI EN 300 444 V2.1.1 (2008-10) , котопый и описывает взаимодействие
         Изначально ДЕКТ использовал технологию FDMA, что переводится как множественный доступ с частотным разделением каналов и каждый творил что ему вздумается, но все начало налаживаться в далеком 1996, лихие 90ые еще не закончились, широкополносного доступа еще не было и в помине, о выделенных линиях мечтали, а xDSL, какой-нить ADSL2+ считался немеренным везеньем - вот в такой период и принимается один из первых стандартов унификации в беспроводной передачи:
Generic Access Profile (GAP).
     О чем GAP-стандарт? О наболевшем, о согласовании параметров между производителями т.е. чтобы базы и трубки разных производителей общались на одном языке и покупая одну дект-систему, клиент не привязывался бы полностью к одному производителю ,а мог использовать и другие радиотелефоны, что очень актуально т.к. трубки производителей Авайи, Метели, Алькателя(да даже не которые от Панасоника) стоят очень дорого и это останавливает. Фишечка в том что некоторые функции могут не работать, такие как АОН, перевод вызова, конференция и т. д. 
      Сейчас без GAP идут обычно домашние радио телефоны, все отдельные DECT-трубки его уже поддерживают и в целом все спокойно на рынке.
      Давайте полистаем стандар, мало ли он нам откроет что-то новое и удивительное:

      Сначало шло описание огромного количества функций и где как оно расписанно
Table 1: NWK features status

      Потом я увидел следующую таблицу и как мы видим происходит поступенчатый разбор основной функции на более мелкие:
Table 5: NWK feature to procedure mapping

Идем смотреть обозначенные разделы:

8.2
ETSI EN 300 444 V2.1.1 (2008-10)
Outgoing call request


Собственно выше описан запрос, как и все в телефонии.
      Мы здесь уже дошлли до квнвльного уровня по модели ВОС и смотрим форматы сообщения аналогичного сообщению SETUP сигнализации DSS1

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

        Описывается детально обмен каждой функции, каждый таймер и регистр, которые будут учавствоватся в процессе, это не RFC и в общих словах не говорят, в стандарте почти 200 страниц и поверьте воды тут нет, только сухой язык и все по делу. Смотрел редакцию 2008 года, думаю есть и новее, но на ознакомление подойдет, радикального изменения нет со времен 96ого, в основном добавлялись функции.
       Если никто не видел, то у производителей обычно так выглядит описание:
Это даташит на телефоны mitel
А так в Avaya:
Причем каждый в своей формулировке и в своем месте перестраховывается и в чем-то стращает от инакопроизводителя, что увы норма.

вторник, 22 октября 2019 г.

tshark: казалось бы зачем?


     Tshark - анализатор трафика аккуратно расположившийся между Tcpdump и Wireshark. С одной стороны он консольный, как Tcpdump, а с другой много функциональный, как Wireshark, сами посудите, более 300 различный хпротоколов, возможность писать регуляркой, да и в целом более пнятный и человеческий интерфейс в рамках той же библиотеки LibPcap.

Примеры по телефонии:

tshark -ta -ni any -Y "ip.addr==4952231648"
tshark -ta -ni any -Y "sip contains 4952231648"
tshark -ta -Vni any -Y "sip==565$RK070395 and ip.addr==194.87.34.228"
tshark -ta -ni any -Y "sip && ip.addr== 213.208.184.137"

Примеры по СПД:

захват пакетов для конкретного IP-адреса
tshark -i eth0 host 192.168.1.100

информацию только о входящих пакетах или только об исходящих пакетах
tshark -i eth0 src host 192.168.1.100

указываем, что из файла /tmp/capture.cap нужно извлечь пакеты для IP-адреса 192.168.0.1.
tshark -R "ip.addr == 192.168.0.1" -r /tmp/capture.cap

Исключая трафик с определенного IPtshark -i eth0 'not host 212.245.4.23' 

Извлекаем пакеты только для определенного мак-адресса:
tshark -R  "eth.addr == 00:08:15:00:08:15" -r /tmp/capture.cap

Для создания статистических отчетов используется опция -z, после которой указывается тип отчета.
Отчёт по протоколам SMB, DNS и IP:
tshark -i ens1 -z smb,srt -z dns,tree -z http,tree -z hosts

Непосредсвенно снятие дампа в файл командой:
tshark –i eth0 –w /tmp/eth0.pcap

из файла /tmp/capture.cap нужно извлечь информацию о порте-источнике всех пакетов
tshark -z "proto,colinfo,tcp.srcport,tcp.srcport" -r /tmp/capture.cap

Памятка поключам с сайта

tshark [ -2 ] [ -a <capture autostop condition> ] ... [ -b <capture ring buffer option>] ... [ -B <capture buffer size> ] [ -c <capture packet count> ] [ -C <configuration profile> ] [ -d <layer type>==<selector>,<decode-as protocol> ] [ -D ] [ -e <field> ] [ -E <field print option> ] [ -f <capture filter> ] [ -F <file format> ] [ -g ] [ -h ] [ -H <input hosts file> ] [ -i <capture interface>|- ] [ -I ] [ -j <protocol match filter> ] [ -J <protocol match filter> ] [ -K <keytab> ] [ -l ] [ -L ] [ -n ] [ -N <name resolving flags> ] [ -o <preference setting> ] ... [ -O <protocols> ] [ -p ] [ -P ] [ -q ] [ -Q ] [ -r <infile> ] [ -R <Read filter> ] [ -s <capture snaplen> ] [ -S <separator> ] [ -t a|ad|adoy|d|dd|e|r|u|ud|udoy ] [ -T ek|fields|json|jsonraw|pdml|ps|psml|tabs|text ] [ -u <seconds type>] [ -U <tap_name>] [ -v ] [ -V ] [ -w <outfile>|- ] [ -W <file format option>] [ -x ] [ -X <eXtension option>] [ -y <capture link type> ] [ -Y <displaY filter> ] [ -M <auto session reset> ] [ -z <statistics> ] [ --capture-comment <comment> ] [ --list-time-stamp-types ] [ --time-stamp-type <type> ] [ --color ] [ --no-duplicate-keys ] [ --export-objects <protocol>,<destdir> ] [ --enable-protocol <proto_name> ] [ --disable-protocol <proto_name> ] [ --enable-heuristic <short_name> ] [ --disable-heuristic <short_name> ] [ <filter> ]

Конец!

пятница, 18 октября 2019 г.

А мы точно развиваемся?

   
     Набрел в интернете на такую статью, которая как раз отражала мое миро ощущение и очень интересную для меня тему, цитирую:

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

https://danluu.com/input-lag/

И вот такая таблица есть в итоге к размышлению:

computerlatency
(ms)
yearclock# T
apple 2e3019831 MHz3.5k
ti 99/4a4019813 MHz8k
custom haswell-e 165Hz5020143.5 GHz2G
commodore pet 40166019771 MHz3.5k
sgi indy601993.1 GHz1.2M
custom haswell-e 120Hz6020143.5 GHz2G
thinkpad 13 chromeos7020172.3 GHz1G
imac g4 os 9702002.8 GHz11M
custom haswell-e 60Hz8020143.5 GHz2G
mac color classic90199316 MHz273k
powerspec g405 linux 60Hz9020174.2 GHz2G
macbook pro 201410020142.6 GHz700M
thinkpad 13 linux chroot10020172.3 GHz1G
lenovo x1 carbon 4g linux11020162.6 GHz1G
imac g4 os x1202002.8 GHz11M
custom haswell-e 24Hz14020143.5 GHz2G
lenovo x1 carbon 4g win15020162.6 GHz1G
next cube150198825 MHz1.2M
powerspec g405 linux17020174.2 GHz2G
packet around the world190
powerspec g405 win20020174.2 GHz2G
symbolics 362030019865 MHz390k

      Серым выделили время прохождения пакета по всему миру из Нью-Йорка в Нью-Йорк через Токио и Лондон
      Как видно, можно сказать что "удивительно", но да роста производительности нет, то что называем говно-кодом захватило мир и если раньше код писали ближе к машине, то сейчас все проходит через множество буферов и слоев. С одной стороны ПК стали ближе к людям и язык человк-машина сдвинулся в сторону Человек, но с этим мы и получаем, что самый топовый компьютер работает медленнее чем тридцатилетнего старичка.
      Разумеется я не отрицаю прогресса, но я сомневаюсь в направлении общего развития, так сказать цели прогресса.

Конец

вторник, 8 октября 2019 г.

Я узнал теримнальный мультиплексор tmux и полюбил его

         tmux — свободная консольная утилита-мультиплексор, предоставляющая пользователю доступ к нескольким терминалам в рамках одного экрана. tmux может быть отключен от экрана: в этом случае он продолжит исполняться в фоновом режиме; имеется возможность вновь подключиться к tmux, находящемуся в фоне. tmux является штатным мультиплексором терминалов операционной системы OpenBSD. Программа tmux задумывалась как замена программы GNU Screen.Это то что взял из Вики.
        Памятка по командам, которую нашел на Хабре:

Старт
# tmux //без параметров будет создана сессия 0
# tmux new -s session1 //новая сессия session1. Название отображается снизу-слева в квадратных скобках в статус строке. Далее идет перечисление окон. Текущее окно помечается звездочкой.

Префикс (с него начинаются команды)
<C-b> (CTRL + b)

Новое окно (нажать CTRL+b, затем нажать с)
<C-b c>

Список окон
<C-b w> // переключиться курсором вверх-вниз

Переключение
<C-b n> // следующее окно
<C-b p> // предыдущее окно
<C-b 0> // переключиться на номер окна

Окна можно делить на панели (Panes)
Как в тайловых (мозаичных) оконных менеджерах.

Деление окна горизонтально
<C-b ">
либо команда
# tmux split-window -h

Деление окна вертикально
<C-b %>
либо команда
# tmux split-window -v

Переход между панелей
<C-b стрелки курсора> // либо режим мыши

Изменение размеров панелей
<C-b c-стрелки> // либо режим мыши

Закрытие окон
<C-b x> // нужно подтвердить y
либо
# exit

Отключение от сессии
<C-b d>
либо
# tmux detach

Список сессий
# tmux ls

Подключиться к работающей сессии
# tmux attach //подключение к сессии, либо к единственной, либо последней созданной
# tmux attach -t name -- подключение к сессии name



Завершение сессии
# tmux kill-session -t name

Завершить все сессии
# tmux kill-server

Список поддерживаемых комманд
# tmux list-commands

Дополнительная информация
# man tmux

По умолчанию он не особо красив пестр и локаничен, но на гит-хабе есть для него классный конфиг, который рекомендую натянуть сразуже, что сделает его приятным и красивым :-)

https://github.com/gpakosz/.tmux

$ cd
$ git clone https://github.com/gpakosz/.tmux.git
$ ln -s -f .tmux/.tmux.conf
$ cp .tmux/.tmux.conf.local 

Сам tmux пришел с тогоже гита, вот его вики
https://github.com/tmux/tmux/wiki


В отличие от Screen может делать несколько окон в одном окне - именно этого мне и не хватало как оказалось, еще один почти аналог  - Terminator, давал много окон в сессии, но не давал много вкладок, что тоже не есть гуд и вот в Ю-тубе я увидел, то что было мне необходимо

     Нашел еще такой конфиг с хорошими коментариями

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

set -g default-terminal "screen-256color" # прикидываемся скрином дабы 256 цветов юзать
set -g history-limit 100000 # буфер скрола в строках
set -g base-index 1 # счет окон с единицы, а не с нуля
set -g pane-base-index 1  # счет панелей с единицы, а не с нуля
set -g mouse on # включаем мышь что бы как минимум переключаться по окнам и панелям

# хоткеи { # регистр важен
bind C-b last-window  # дабы по ^b^b последние окна переключать (по умолчанию ^b l)
bind V split-window -h  # горизонтальное разделение окна вместо "
bind H split-window # вертикальное разделение окна вместо %
bind C-k confirm-before -p 'kill-window #W (y/n)' kill-window # закрыть окно
# хелп по хоткеям (не забываем о префиксе в начале)
# !  вынесть панель в окно
# $  переименовать текущую сессию
# () переключение сессий
# ,  переименование окна
# ;  перейти на последнюю активную панель
# q  отобразить номера панелей (вводя номер переключимся на этот номер)
# x  убить текущую панельй
# }

set-option -g set-titles on # заголовки окон
set-window-option -g automatic-rename on # auto name

# настройка статуса и попытка раскрасить всё ala monokai
set -g status-utf8 "on"
set -g status-interval 1 # обновляем статус каждую секунду
set -g status-bg "colour235" # основной фон статусной строки
set -g message-command-fg "colour231"
#set -g status-justify "centre" # позиция списка окон [left | centre | right]
set -g status "on" # включает статусбар, off выключает
set -g message-bg "colour81"
set -g message-fg "colour231"
set -g message-command-bg "colour81"
# цвета текста краев панелей (исользуется │ или U+2502 с фоном, так что от шрифта можно наколдовать хоть черепки в качестве разделителя)
set -g pane-border-fg colour241
set -g pane-border-bg default
set -g pane-active-border-fg colour81
set -g pane-active-border-bg default
# set -g status-attr "none" # стиль статуса bright (or bold), dim, underscore, blink, reverse, hidden, or italics
# set -g status-left-attr "none" # стиль левого статуса
# set -g status-right-attr "none" # стиль правого статуса
# цвета окон: активного и неактивного
setw -g window-status-fg "colour231"
setw -g window-status-bg "colour237"
setw -g window-status-attr "none"
setw -g window-status-activity-fg "colour231"
setw -g window-status-activity-bg "colour237"
setw -g window-status-separator ""
# собственно строка статус
set -g status-left "#[fg=colour231,bg=colour81] #S #[fg=colour81,bg=colour235,nobold,nounderscore,noitalics]" # что видим слева
set -g status-right "#[fg=colour241,bg=colour235,nobold,nounderscore,noitalics] #H #[fg=colour231] #(skb -h) #[nobold,fg=default]" #  что видим справа (skb покажет раскладку в иксах)
setw -g window-status-format "#[fg=colour235,bg=colour237,nobold,nounderscore,noitalics]#[default] #I #W #[fg=colour237,bg=colour235,nobold,nounderscore,noitalics]" # формат окна (расположение списка окон с помощью status-justify)
setw -g window-status-current-format "#[fg=colour235,bg=colour81,nobold,nounderscore,noitalics]#[fg=colour231,bg=colour81] #I.#P #W #[fg=colour81,bg=colour235,nobold,nounderscore,noitalics]" # формат текущего окна

Рекомендую всем кто работает в *nix средах ознакомится с ним
При администрировании серверов по сути становятся обязательным +
крайне ускаряет работу в системе, что из 1, ну или первое вытекает из него.

воскресенье, 6 октября 2019 г.

Интересная чертовщина с NAT на Mikrotik для AddPac

            Казалось бы, стандартная заявка, включить на чужом интернете за роутером клиента + грамотный сисадмин, может что-то и не пройдет сразу, но это поправим быстро... как я тогда ошибался.
        Дебаг показывал следующее, но вот что это понял не сразу, суть получилось в следующем: микротик принимал вызов разворачивал его и покеты кидал обратно в аддпак и аддпак отбивал классическим для нас InvalidNumber, что логично,  при исходящем вызове номера Б на шлюзе быть не может

# sh call hist a

 CallNum EventTime         Descript    CallingPartyNum     CalledPartyNum            RemoteInfo                 SetupTime       Dur  Reason
---------------------------------------------------------------------------------------------------------------------------------------------------  
<    41> Jun 19 01:47:11   outgoing 260506#74959871773        89035791332        89035791332:213.134.195.38  0 Remote:InvalidNumber                              
<    42> Jun 19 01:47:11  incomming 260506#74959871773        89035791332 voip.217.28.212.30:213.134.195.38    0 Local:InvalidNumber                               
<    39> Jun 19 01:38:12   outgoing 260506#74959871773        89771106546        89771106546:213.134.195.38   0 Remote:InvalidNumber                              
<    40> Jun 19 01:38:12  incomming 260506#74959871773        89771106546 voip.217.28.212.30:213.134.195.38    0 Local:InvalidNumber                               
<    37> Jun 19 01:36:52   outgoing 260506#74959871773        89771106546        89771106546:213.134.195.38    0 Remote:InvalidNumber                              
<    38> Jun 19 01:36:52  incomming 260506#74959871773     89771106546 voip.217.28.212.30:213.134.195.38  0 Local:InvalidNumber                               
<    36> Jun 19 01:35:36   outgoing            9871773       897711065466  :  0 Local:UnreachableDestination





вторник, 1 октября 2019 г.

Microsoft вдруг решила портирвать свой браузер Edge на Linux

           Услышал на днях такую новость:

https://www.opennet.ru/opennews/art.shtml?num=51577

     Кажется, еще лет 5-10 назад было такое невозможно, а тут смотрю по не многу начинает монстр сдавать позиции. Не желание делать качественный софт помноженное на навязывание своего видения - дает плоды.
      Предполагаю, что так и будет идти по пути мимикрирования на Линукс с сохранением лица, чтобы потом опять пытаться снова затянуть шарманку что Виндовс лучше и удобнее, только к этому моменту он будет уже по сути какой-нить *nix подобной веткой развития
      В свое время вин сделал себе имя за счет скорости и интересного тогда решения, как то внедрение графического ядра в ядро системы, что тогда было весьма оправданно и давало хороший прирост, но со временем - это было уже минусом от которого не могли отказаться. Проблема в том, что если у тебя висло графическое окружение, то висло все и навсегда, в то время как в линукс отказ Иксов никогда не приводил к фатальным проблемам, можно было уйти на другое направление и не парится - это по моему мнению один из важных гвоздей в гроб мелкомягкой ОС

Linux/UNIX: unixtimestamp - что заперевод, где играет и какая его роль?

         Сейчас, когда пишу, время у меня 1659086347 или  Fri Jul 29 2022 12:19:07 GMT+0300 (Москва, стандартное время)  Забегая вперед, спо...