24/04/2026

Oracle® Communications Session

 


 

Oracle® Communications Session

Configuration Guide

    Начал изучать для себя новое. Многообразие связи даже в своем направлении поражает

     Oracle Communications Session Border Controller (SBC) — продукт, который обеспечивает безопасность, 
надёжность и качество передачи данных на стыке между разными сегментами сети, 
включая взаимодействие с внешними провайдерами услуг

     Session Border Controller (англ. Session Border Controller, также SBC; букв. «контроллер границы сеанса») — специализированное устройство или программное обеспечение, обеспечивающее разграничение между приватным и публичным сегментами сетей передачи голоса по протоколу VoIP и существенно повышающее безопасность VoIP-телефонии.  Иногда его называют также голосовым фаерволом или VoIP-фаерволом. 
     Session Border Controller играет важную роль в защите от VoIP-мошенничества. 

Всем связь!

 З.Ы.

Ссылка на доку что штудирую https://t.me/engineer_voip/174 

23/04/2026

Вспомним рабочий стол


 

     Ностольгия по былому, давайте разберем мой рабочий стол от 2015-2016 гг.

Прошло 10 лет и много изменилось, тогда был Билайн был еще виндовс, если конкретнее, то Windows 7. Помню уже был виндовс 8 или уже 8.1, но пользоваться им не смог и через пару дней сбежал с криками и слезами на родную 7ку))

    Давайте что упомню, то расскажу, набор то на самом деле обширный, но и я был старшим инженером эксплуатации УПАТС Avaya и Nortel Московского региона

     Первое что можно увидеть после Корзины - это браузер Tor, да-да, но тогда хорошо работал для доступа к rutracker, а все остальное работало...пустил слезу))

    Бесплатная программа для создания электрических схем Micro-Cap - это скорее по институту, по работе по пальцам можно пересчитать случат, когда действительно был инженером и правил схемы

    PBXUnified - а это я любил Одминить еще АТС фирмы Панасоник это наши люимые TDA/TDE-100/200/600 и т д

   Agat SoftPhone - софт-фон для тестирования и соединения с АТС АГАТ - тогда пытались импортозамещать ими, идея не выжила, но была тогда на хайпе

   Avaya one-X Communicator Avaya Flare Experience - это вот уже пошли фиремнные продукты авайи. Avaya one-X Communicator — это программный SIP-клиент для Windows, обеспечивающий унифицированные коммуникации (голос, видео, IM), а Avaya Flare Experience — это унифицированная коммуникационная среда, объединяющая видеосвязь, голос, мгновенные сообщения, контакты и социальные сети в едином интуитивном интерфейсе. Увы не долго и это играло, хотя клиенты есть и остались, но по сути нужен был софт-фон для вызовов и клинт для контакт-центра, а все остальное от лукавого

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

   Manager/Monitor - это уже IPOffice, решение Avaya в качестве УАТС, малая емкость, оч любима банками. Админить интересно, Manager - управление через загруку конфига -- внесение правок -- загрузку правленного конфига в АТС + идет вот  еще Monitor - это просмотр статусов и трейсов, вся сигнальная инфа. Весь приколь в том, что о нем местные связисты и админы не знали, на протяжении всей моей работы никто не знал, хотя он и был подробно описан в доке. Возможно всему виной то, что это отдельная прорамма, хотя какая разница

   Следующий мой любимый и основной инструмент Avaya Site Administration - управление станциями Avaya, именно УПАТС и именно шикарное админство

   Потом консоль винды - уже тогда убегал на линукс и любил консоль уже солидно

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

    putty - клиент с открытым исходным кодом для работы с сетевыми протоколами Telnet, SSH, SFTP, SCP, для подключения по COM-порту и много чему еще, даже модемом через него гоняли 

  Дальше всякие сервисы удаленного подключения,интересен нам только самый дальний клиент - Procomm Plus. Давайте просто приведу описание: Procomm Plus дает непревзойденную стабильность и надежность в области терминальной эмуляции и передачи информационных данных. Поддерживая свыше 30 различных терминалов, обеспечивает доступ к управлению практически любой хост-системы. Передача файлов и запуск приложений в полноэкранном режиме. 

В общем, в Билайне его активно переписали, наложили оболчку и системы скриптов, что дало невиданный комфорт по управлению АТС Nortel 

 Всем добра, продолжение в следующий раз!

 

22/04/2026

История Tux’а, талисмана Linux

 


   Все началось в 1996 году, когда в списке рассылки разработчиков ядра Linux появились первые разговоры о талисмане. Среди множества предложений можно было выделить либо пародии на логотипы других ОС, либо стандартных зверей типа орлов или акул. 
     Дискуссии несколько утихли после того, как Линус Торвальдс случайно омолвился о том, что ему нравятся пингвины. Было несколько попыток нарисовать пингвинов в разных позах, после чего поступило предложения логотипа в виде пингвина, держащего Землю

     Однако, не Tux был выбран Linux-сообществом в качестве логиотипа Linux?
а лаконичное написание Linux 
Линус отстоял свое детище вопреки свободе голосования. 
     Конечно, во имя справедливости, можно назвать Tux’а официальным талисманом, 
а изображение Мэтта Эриксона — логотипом Linux

     Популярна версия Tux — сокращение от «Tuxedo», или просто смокинга, если перевести на русский.
Было целое расследование и поиск переписок и правда была установлена

    На самом деле его зову Туксом потому что (T)orvolds (U)ni(X) –> TUX! 

See `linux' for more!


 
         _nnnn_        
        dGGGGMMb       
       @p~qp~~qMb      
       M|@||@) M|      
       @,----.JM|      
      JS^\__/  qKL     
     dZP        qKRb   
    dZP          qKKb  
   fZP            SMMb 
   HZM            MMMM 
   FqM            MMMM 
 __| ".        |\dS"qML
 |    `.       | `' \Zq
_)      \.___.,|     .'
\____   )MMMMMP|   .'  
     `-'       `--' hjm
 









 
             .888888:.
             88888.888.
            .8888888888
            8' `88' `888
            8 8 88 8 888
            8:.,::,.:888
           .8`::::::'888
           88  `::'  888
          .88        `888.
        .88'   .::.  .:8888.
        888.'   :'    `'88:88.
      .8888'    '        88:88.
     .8888'     .        88:888
     `88888     :        8:888'
      `.:.88    .       .::888'
     .:::::88   `      .:::::::.
    .::::::.8         .:::::::::
    :::::::::..     .:::::::::'
     `:::::::::88888:::::::'
        rs`:::'       `:'
    
Всем пингвина!

 

 

 

21/04/2026

Повнимаиельнее про сети на виртуальной машине

 

Повнимательнее про сети на виртуальной машине

В линукс можно настроить все, в частности и сетевые параметры
Обычно не важно, но в виртуальной среде, в вопросах оптимизации очень важно
У  меня устаканились такие параметры 
Критичных параметров как таковых нет, но полезные как всегда все

Размеры сетевых буферов устанавливаются в файле /etc/sysctl.conf

Добавляем:
vm.swappiness = 10
fs.file-max = 65535
net.core.netdev_max_backlog = 65535
net.core.somaxconn = 4096
net.core.rmem_max = 10485760
net.core.rmem_default = 10485760
net.core.wmem_max = 10485760
net.core.rmem_default=10485760
net.ipv4.udp_wmem_min = 8192
net.ipv4.udp_rmem_min = 8192
net.ipv4.udp_mem = 176496  235330 352992
net.ipv4.udp_early_demux = 1
net.ipv4.tcp_rmem = 8192 262144 12582912
net.ipv4.tcp_max_tw_buckets = 32768

20/04/2026

Шпаргалка по аббревиатурам встречающимся в VoIP

 


Аббревиатура    Английское Обозначение                        Перевод/Описание
ABR       Answer Bid Ratio                            Коэффициент занятости абонентов
ASD       Answer Signal Delay                            Задержка сигнала ответа
ASR       Answer Seizure Ratio                        Процентное отноешение ответченых вызовов к общему числу попыток вызова
CAPS     Call Attempts Per Second                    Попыток вызова в секунду
CDR       Call Detail Record                            Подробная запись о вызове
CPS        Calls Per Second                            Вызовов в секунду
CRD       Call Release Delay                            Задержка завершения вызова
CSD       Call Setup Delay                            Задержка установки вызова
IRA        Ineffective Registration Attemp                Неэффективная попытка регистрации
ISA        Ineffective Session Attempts                Неэффективные попытки сеанса
NER      Network Effectiveness Ratio                    Коэффициент эффективности сети
PDD      Post-Dialing Delay                            Задержка после набора номера
PSTN    Public Switched Telephone Network            Телефонная сеть общего пользования, ТСОП, ТфОП
RPS       Registers Per Second                        Регистраций в секунду
RRD      Registration Request Delay                    Задержка запроса на регистрацию
RTCP    Real-Time Transport Control Protocol    Протокол управления передачей в реальном времени
RTP       Real-time Transport Protocol                Транспортный протокол реального времени
SCR       Session Completion Ratio                    Коэффициент завершения сеансов
SDD       Session Disconnect Delay                    Задержка отключения сеанса
SEER     Session Establishment Effectiveness Ratio    Коэффициент эффективности установления сеанса
SER       Session Establishment Ratio                    Коэффициент установления сеансов
SIP         Session Initiation Protocol                    Протокол инициации сеанса
SRD       Session Request Delay                        Задержка запроса сеанса
VoIP       Voice over IP                                IP-телефония







17/04/2026

Псевдопеременные в Kamailio

 


 

 http://www.kamailio.org/wiki/cookbooks/5.0.x/pseudovariables#tu_-_to_uri

Псевдопеременные могут использоваться со многими модулями, среди них:
Предопределенные псевдопеременные перечислены в алфавитном порядке.

$$ - маркер псевдопеременной
$$ - представляет символ '$'

$_s(format) — Оценить динамический формат
$_s(format) - возвращает строку после оценки всех псевдопеременных в формате

    $var(x) = "sip:" + $rU + "@" + $fd;

    # эквивалентно:

    $var(x) = $_s(sip:$rU@$fd);
$ai — заголовок URI inP-Asserted-Identity
$ai — ссылка на URI в заголовке запроса P-Asserted-Identity (см. RFC 3325)

$adu — URI дайджеста аутентификации
$adu — URI из заголовка Authorization или Proxy-Authorization. Этот URI используется при расчете ответа HTTP Digest.

$aa - Алгоритм аутентификации
$aa - алгоритм из заголовка Authorization или Proxy-Authorization.

$ar - область аутентификации
$ar - область из заголовка Authorization или Proxy-Authorization

$au - Имя пользователя авторизации
$au - пользовательская часть имени пользователя из заголовка Authorization или Proxy-Authorization

$ad — домен авторизации пользователя
$ad - доменная часть имени пользователя из заголовка Authorization или Proxy-Authorization

$aU - Аутентификация всего имени пользователя
$aU - полное имя пользователя из заголовка Authorization или Proxy-Authorization

$Au - Имя пользователя Acc и область/домен
$Au - имя пользователя для учета. Это выборочная псевдопеременная (унаследованная от модуля acc). Он возвращает имя пользователя и область авторизации ($au@$ar), если они существуют, или From URI ($fu) в противном случае.

$branch(имя) - Атрибуты ветки
$branch(name) - ссылка на атрибут 'имя' ветки

Эта псевдопеременная дает вам доступ только к «дополнительным веткам», а не к «основной ветке». Например, если для одного и того же AoR зарегистрировано 3 клиента, после lookup() у вас будет один контакт в «основной ветке» и две «дополнительные ветки». С помощью $branch() вы можете получить доступ к дополнительным веткам, к основной ветке можно получить доступ с помощью $ru и $du. (Примечание: в branch_route нет различия между основной и дополнительной ветвями — branch_route будет вызываться один раз для каждой из них.)

«Имя» может быть:

uri - вернуть uri ветки
dst_uri — вернуть uri назначения (адрес следующего прыжка)
path - вернуть вектор пути для ветки
q - вернуть значение q ветки
send_socket - возвращает сокет, который будет использоваться для отправки ветки
count - вернуть количество ветвей
flags - возвращает значение флагов ветки
ruid - вернуть ruid ветки (Записать внутренний уникальный ID из usrloc)
PV может использовать индекс для доступа к указанной ветке: $(branch(name)[index])

Пример:

$вар ( я ) = 0 ; 
в то время как ( $var ( i ) < $branch ( count ) ) 

   xlog ( "$(branch(uri)[$var(i)]) \n " ) ; 
   $var ( i )  = $var ( i )  +  1 ; 
}
Начиная с версии 3.1.0, вы можете присваивать значение каждому атрибуту. Индекс можно использовать для обновления конкретной ветки:

$ ( филиал ( атрибут ) [ индекс ] )  = значение ;
Если индекс отсутствует, используется первая ветвь. Если индекс равен -1, используется последняя ветвь.

Присвоение $null атрибуту uri приведет к удалению ветки, для остальных атрибутов просто будет установлено значение null.

$ ( ветка ( uri ) [ 2 ] )  =  "sip:test@kamailio.org;transport=sctp" ;
$br - первая ветвь запроса
$br - ссылка на первую ветку запроса

Это переменная R/W, вы можете присвоить ей значения прямо в конфигурационном файле (добавит новую ветку).

$bR - все ветки запроса
$bR - ссылка на все ветки запроса

$bf - флаги ветки
$bf - ссылка на флаги ветки 0 ветки (RURI) - десятичный вывод

Это переменная R/W (вы можете присвоить ей значения прямо в конфигурационном файле)

$bF - Флаги ветвления
$bF - ссылка на флаги ветки 0 ветки (RURI) - вывод в шестнадцатеричном формате

Это переменная R/W (вы можете присвоить ей значения прямо в конфигурационном файле)

$bs - размер тела
$bs - размер тела

$ci - Идентификатор вызова
$ci - ссылка на тело заголовка call-id

$cl — длина содержимого
$cl — ссылка на тело заголовка content-length

$cnt(pv) - Подсчитать количество pvs
$cnt(avp) - вернуть количество avp

xlog ( "$$avp(x) fount $cnt($avp(x)) раз \n " ) ;
$conid — идентификатор TCP-соединения
$conid — идентификатор TCP-соединения, по которому поступило текущее сообщение, для TCP, TLS, WS и WSS. Установите значение $null для SCTP и UDP.

$cs-CSeq
$cs — ссылка на порядковый номер в заголовке cseq. Метод в заголовке CSeq идентичен методу запроса, поэтому используйте $rm для получения метода (работает также для ответов).

$ct - Заголовок контакта
$ct - ссылка на тело заголовка контакта

$cT — тип контента
$cT - ссылка на тело заголовка content-type

$dd - URI домена назначения
$dd - ссылка на домен назначения uri (без порта)

$di - URI заголовка перенаправления
$di — ссылка на URI заголовка Diversion

$dip - Параметр "конфиденциальность" перенаправления
$dip - ссылка на значение параметра «конфиденциальность» заголовка Diversion

$dir - Параметр "причина" отклонения
$dir — ссылка на значение параметра «причина» заголовка Diversion

$dic - параметр "счетчик" переадресации
$dic - ссылка на значение параметра «счетчик» заголовка Diversion

$dp - URI порта назначения
$dp - ссылка на порт назначения uri

$dP - Транспортный протокол URI назначения
$dP - ссылка на транспортный протокол получателя uri

$ds - Целевой набор
$ds - ссылка на целевой набор

$du — URI назначения
$du - ссылка на uri назначения

Если функцияlouse_route() возвращает TRUE, uri назначения устанавливается в соответствии с первым заголовком Route. $du также устанавливается, если функция lookup() модуля 'registrar' находит контакт(ы) за NAT. Вы можете установить $du на любой SIP URI .

sip: kamailio.org
 sip: pbx123.kamailio.org; транспорт = udp
 глоток: [2001: DB8:: 33: 2]: 5980; транспорт = TLS
Это переменная R/W (вы можете присвоить ей значения прямо в конфигурационном файле)

Чтобы сбросить $du:

$ду = $нуль;
$fd — из домена URI
$fd - ссылка на домен в URI заголовка From

$fn - От отображаемого имени
$fn - ссылка на отображаемое имя заголовка From

$fs - Принудительный сокет
$fs - ссылка на принудительный сокет для отправки сообщений (если есть) в виде proto:ip:port

Это переменная R/W (ей можно присвоить значения прямо в конфигурационном файле). Транспортный прототип можно не указывать при присвоении значения, и в этом случае он берется из URI назначения сообщения.

$ft - Из тега
$ft - ссылка на параметр тега заголовка From

$fti - Начальный тег From
$fti — ссылка на параметр тега заголовка «От», как это было в исходном запросе (например, первоначальном ПРИГЛАШЕНИИ).

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

Он экспортируется модулем rr и должен использоваться после `loose_route()`. Параметр append_fromtag должен быть установлен в 1, чтобы эта переменная возвращала правильное значение.

$fu — из URI
$fu - ссылка на URI заголовка From

Это переменная R/W (вы можете присвоить ей значения прямо в конфигурационном файле)

Обратите внимание, что изменение заголовка From: может нарушить обратную совместимость с устройствами SIP 1.0.

$fU - из имени пользователя URI
$fU - ссылка на имя пользователя в URI заголовка 'From'

Это переменная R/W (вы можете присвоить ей значения прямо в конфигурационном файле)

Обратите внимание, что изменение заголовка From: может нарушить обратную совместимость с устройствами SIP 1.0.

$mb - буфер сообщений SIP
$mb - ссылка на буфер сообщений SIP

$mf - Флаги
$mf - ссылка на флаги сообщения/транзакции, установленные для текущего SIP-запроса

Это переменная R/W (вы можете присвоить ей значения прямо в конфигурационном файле)

$mF - Флаги в шестнадцатеричном формате
$mF - ссылка на флаги сообщения/транзакции, установленные для текущего SIP-запроса в шестнадцатеричном формате.

Это переменная R/W (вы можете присвоить ей значения прямо в конфигурационном файле)

$mi - идентификатор SIP-сообщения
$mi - ссылка на идентификатор SIP-сообщения

$ml - длина SIP-сообщения
$ml - ссылка на длину SIP-сообщения

$mt - Тип сообщения SIP
$mt — возвращает 1, если sip-сообщение является запросом, возвращает 2, если sip-сообщение является ответом.

$od — исходный R-URI домена
$od — ссылка на домен в исходном R- URI запроса.

$op - Порт в оригинальном R-URI
$op - ссылка на порт оригинального R- URI

$oP - Протокол оригинального R-URI
$oP - ссылка на транспортный протокол оригинального R- URI

$ou — оригинальный R-URI
$ou - ссылка на исходный URI запроса

$oU — имя пользователя в оригинальном R-URI
$oU — ссылка на имя пользователя в исходном URI запроса.

$pd — Домен в URI заголовка P-Preferred-Identity
$pd — ссылка на домен в URI заголовка P-Preferred-Identity запроса ( см. RFC 3325)

$pn — отображаемое имя в заголовке P-Preferred-Identity
$pn — ссылка на Display Name в заголовке P-Preferred-Identity запроса (см. RFC 3325)

$pp - идентификатор процесса
$pp - ссылка на идентификатор процесса (pid)

$pr - Протокол полученного сообщения
$pr или $proto - протокол полученного сообщения (udp, tcp, tls, sctp, ws, wss)

$pU — пользователь в URI заголовка P-Preferred-Identity
$pU — ссылка на пользователя в URI заголовка P-Preferred-Identity запроса (см. RFC 3325)

$pu — URI в заголовке P-Preferred-Identity
$pu — ссылка на URI в заголовке P-Preferred-Identity запроса (см. RFC 3325)

$rb - Тело запроса/ответа
$rb - ссылка на тело сообщения

$rc - Возвращаемый код
$rc - ссылка на возвращаемый код последней вызванной функцией

$реткод - то же, что и $rc

$rd - Домен в R-URI
$rd — ссылка на домен в URI запроса (без порта) или на специальную строку пространства имен URN (см. RFC 2141)

Это переменная R/W (вы можете присвоить ей значения прямо в конфигурационном файле)

$rdir(key) - Запрос направления
$rdir(key) - получить направление запроса в диалоге.

Направление «вниз», если отправлено вызывающим абонентом, и «вверх», если отправлено вызываемым абонентом.

Ключ может быть:

id - возвращаемое значение является целым числом: 1 - для направления вниз по течению, 2 - для направления вверх по течению
имя — возвращаемое значение представляет собой строку: «вниз по течению» или «вверх по течению»
Пример:

if ( $rdir ( name ) == "upstream" )  { 
  xlog ( "запрос был отправлен вызываемым пользователем \n " ) ; 
}
Переменная экспортируется модулем rr , и параметр append_fromtag должен быть включен. Переменная должна использоваться после функции loss_route().

$re — URI заголовка Remote-Party-ID
$re — ссылка на URI заголовка Remote-Party-ID

$rm - метод SIP
$rm - ссылка на метод запроса. Работает также для ответов (используя заголовок CSeq)

$rmid - ID метода SIP
$rmid - возвращает внутреннее целочисленное представление типа метода SIP.

$route_uri — URI в заголовке первого маршрута
$route_uri — возвращает строку с полем URI в первом заголовке Route

$rp - Порт в R-URI
$rp - ссылка на порт R- URI

Это переменная R/W (вы можете присвоить ей значения прямо в конфигурационном файле)

$rP - Протокол R-URI
$rP - ссылка на транспортный протокол R- URI

$rr - фраза причины ответа SIP
$rr - ссылка на фразу-причину ответа (текст после кода ответа)

$rs - код ответа SIP
$rs - ссылка на статус ответа (код статуса, код ответа, код ответа)

$rt — URI ссылки
$rt - ссылка на URI заголовка refer-to

$ru - URI запроса
$ru - ссылка на URI запроса (адрес в первой строке SIP запроса)

Это переменная R/W (вы можете присвоить ей значения прямо в конфигурационном файле)

$rU - Имя пользователя в R-URI
$rU — ссылка на имя пользователя в URI запроса или на идентификатор пространства имен URN (см. RFC 2141)

Это переменная R/W (вы можете присвоить ей значения прямо в конфигурационном файле)

$ruid - Запись внутреннего уникального идентификатора
$ruid — внутренний уникальный идентификатор записи для записи о местоположении, выбранный вызовом registrar:lookup().

$rz - Схема URI R-URI
$rz - возвращает схему R- URI , возможные значения: sip, sips, tel, tels и urn, ошибка парсинга схемы R- URI должна быть отражена значением: none

$Ri - полученный IP-адрес
$Ri - ссылка на IP-адрес интерфейса, на который был получен запрос

$Rp - Полученный порт
$Rp - ссылка на порт, где было получено сообщение

$sbranch(attr) — Статическая ветка
$sbranch(attr) - класс переменных, позволяющий управлять значениями атрибутов для статической ветки. Статическая ветвь — это внутренняя структура, которая используется функциями sbranch_push_ruri() и sbranch_append() из модуля pv , обеспечивая большую гибкость при обновлении атрибутов ветви R- URI (первой), а также дополнительных ветвей (например, для параллельного разветвления).

Attr может быть любым из поддерживаемых значений для класса переменных $branch(attr) — подробности см. выше.

Пример использования:

sbranch_reset ( ) ; 
$sbranch ( uri )  =  "sip:127.0.0.1:5080" ; 
$sbranch ( dst_uri )  =   "sip:127.0.0.1:5090" ; 
$sbranch ( путь )  =   "sip:127.0.0.1:5090, sip:127.0.0.1:5094" ; 
$sbranch ( send_socket )  =   "udp:127.0.0.1:5060" ; 
sbranch_set_ruri ( ) ;
$sf - флаги скрипта
$sf - ссылка на флаги скрипта - десятичный вывод

$sF - флаги скрипта
$sF — ссылка на флаги скрипта — вывод в шестнадцатеричном формате

$si - исходный IP-адрес
$si - ссылка на IP-адрес источника сообщения

$sp - Исходный порт
$sp - ссылка на исходный порт сообщения

$stat(имя) - Статистика
$stat(name) - возвращает значение элемента статистики, указанного в 'name'

$su - Исходный адрес как URI
$su — возвращает представление исходного адреса (ip, порт, proto) в виде SIP URI . Если протокол UDP, то он не добавляется (будучи транспортным протоколом по умолчанию).

Его значение выглядит так:

"sip:ip:port" -- если протокол UDP
"sip:ip:port;transport=proto" -- если протокол не UDP
Обратите внимание, что WS и WSS представлены как transport=ws, что соответствует RFC IETF для SIP через WebSocket.

$sut — исходный адрес как полный URI
$sut — возвращает представление исходного адреса (ip, порт, proto) в виде полного SIP URI . Прото UDP также добавляется в качестве транспортного параметра.

Его значение выглядит так:

"sip:ip:port;transport=proto"
$td — в домен URI
$td — ссылка на домен в URI заголовка «Кому»

$tn - для отображения имени
$tn — ссылка на отображаемое имя заголовка «Кому»

$tt - пометить
$tt - ссылка на параметр тега заголовка 'To'

$tti - Начальный тег To
$tti — ссылка на параметр тега заголовка «Кому», как он был в ответе SIP на первоначальный запрос (например, 200ok на начальный INVITE).

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

Он экспортируется модулем rr и должен использоваться после `loose_route()`. Параметр append_fromtag должен быть установлен в 1, чтобы эта переменная возвращала правильное значение.

$tu — в URI
$tu — ссылка на URI заголовка «Кому»

$tU - на имя пользователя URI
$tU - ссылка на имя пользователя в URI заголовка 'To'

$Tb - метка времени запуска
$Tb - ссылка на временную метку unix времени запуска kamailio (время загрузки)

$Tf - время в формате строки - кэшировано
$Tf - форматированное время ссылочной строки

Примечание: системное время извлекается только один раз для каждого обработанного SIP-сообщения. Последующие вызовы $Tf для одного и того же SIP-сообщения вернут то же значение.

$TF - время в формате строки - текущее
$TF - форматированное время ссылочной строки

Примечание: системное время вычисляется для каждого вызова $TF. Последующие вызовы $TF для одного и того же SIP-сообщения могут возвращать разные значения.

$Ts — отметка времени Unix — кэшируется
$Ts - ссылка на отметку времени unix

Примечание: системное время извлекается только один раз для каждого обработанного SIP-сообщения. Последующие вызовы $Ts для одного и того же SIP-сообщения вернут то же значение.

$TS — метка времени Unix — текущая
$TS - ссылка на метку времени unix

Примечание: системное время вычисляется для каждого вызова $TS. Последующие вызовы $TS для одного и того же SIP-сообщения могут возвращать разные значения.

$ua - заголовок пользовательского агента
$ua - ссылка на поле заголовка пользовательского агента

$avp(id) - AVP
$avp(id) - значение AVP, идентифицированное 'id'.

$(avp(id)[N]) - представляет значение N-го AVP, идентифицированного 'id'.

 

 

 

16/04/2026

Памятка по RFC протокола Диаметра

 


Памятка по RFC проткола Диаметра

DIAMETER — сеансовый протокол, созданный, отчасти, для преодоления некоторых ограничений протокола RADIUS. 
Обеспечивает взаимодействие между клиентами в целях аутентификации, авторизации и учёта 
различных сервисов (AAA, англ. authentication, authorization, accounting). 
Является основным протоколом архитектуры IMS.

    Diameter Base Protocol
    RFC 3589 - Diameter Command Codes for Third Generation Partnership Project (3GPP) Release 5
    RFC 4004 - Diameter Mobile IPv4 Application
    RFC 4005 - Diameter Network Access Server Application
    RFC 4006 - Diameter Credit-control Application
    RFC 4072 - Diameter Extensible Authentication Protocol (EAP) Application
    
Архитектура. 
Diameter основан на peer-to-peer (P2P)-модели, 
где каждый узел может выступать как в роли клиента, так и в роли сервер

Транспортные протоколы. 
В отличие от RADIUS, который использует UDP, 
Diameter передаёт данные через TCP или SCTP, 
обеспечивая надёжную доставку и минимизируя потери данных

Структура сообщения. 
Пакет Diameter состоит из заголовка и переменного количества пар «атрибут — значение» 
(AVP — Attribute-Value-Pairs). AVP инкапсулируют протокольно-специфичные данные, 
а также информацию об аутентификации, авторизации или учёте.

Расширяемость. 
Базовый протокол позволяет добавлять новые команды, 
атрибуты или и то, и другое для поддержки новых технологий и сервисов

Безопасность. 
Хотя Diameter не включает шифрование в базовом виде, 
его можно защитить с помощью системы безопасности транспортного уровня (IPSec или TLS)

Diameter используется в различных сетевых функциях, например:

    Policy and Charging Rules Function (PCRF);
    Home Subscriber Server (HSS);
    Online Charging System (OCS).

15/04/2026

Asterisk AMI скрипт по мониторингу для ZABBIX

 




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

#!/usr/bin/php -q
<?php
set_time_limit(100);
ob_implicit_flush(false);           // Turn off output buffering
error_reporting(E_ALL ^ E_NOTICE);
date_default_timezone_set("Europe/Moscow");
include_once('phpagi-asmanager.php');

define('USER', 'zabbix');
define('PASSWD', 'Pass123');

/*
In file  /etc/asterisk/manager.conf

[zabbix]
secret=Pass123
deny=0.0.0.0/0.0.0.0
permit=127.0.0.0/255.255.255.0
allowmultiplelogin=yes
;displayconnects=yes
read = all,system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate,message
write = all,system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate,message
writetimeout=5000
*/



function dump_events($event_code, $data, $server, $port) {

    switch($event_code){
        case 'successfulauth':
          // Ignore
          break;
        case 'devicestatechange':
          // Ignore
          break;
        case 'challengesent':

          // Ignore
          break;

        default:
          on_display($event_code, $data);
    }
}

function on_display($event_code, $data) {
    $time_now = date('H:i:s');
    print($time_now." Received event:\n".$event_code."\nData:\n");
    print_r($data);
    print("\n");
    return 0;
}


//------------------------------------------------------------------------------

$asm=new AGI_AsteriskManager();
if($asm->connect('127.0.0.1:5038', USER, PASSWD)) {
    $Ar_Req=$asm->send_request('Events',
        array('Eventmask'=>'ON')                  // All Events on
        );
    var_dump($Ar_Req);

    $asm->add_event_handler('*', 'dump_events');  // Event handler
    $asm->wait_response();                        // Wait Events
    $asm->disconnect();
}
else{
    print("Manager not connected\n");
}
exit;

14/04/2026

magnet-ссылка: что это и зачем?

 


 Magnet-ссылка (magnet: URI) — это гиперссылка, которая идентифицирует файл не по его расположению или имени, 
а по содержанию — по хеш-коду содержимого файла

xt (eXact Topic) — URN, содержащий хеш файла. 
Например, в сетях BitTorrent xt=urn:btih:<info-hash>, 
где <info-hash> — хэш метаданных торрента

dn (Display Name) — имя файла

xl (eXact Length) — размер файла в байтах

tr (TRacker) — URL трекера для клиентов BitTorrent

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

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

Работает по принципу DHT
DHT (англ. distributed hash table — «распределённая хеш-таблица») — это класс децентрализованных распределённых систем поисковой службы, 
работающей подобно хеш-таблице. Как структура данных, хеш-таблица может представлять собой ассоциативный массив, 
содержащий пары (ключ-значение).

О ней расскажу в другой раз

Добавить в Firefox очень просто 
После нажатия на магнет ссылку появится окно с предложением выбрать программу для открытия данной ссылки. 
Выбираете просто свой торрент клиент

Это решение появилось на заре попыток блокировок торрентов в европе, да-да, не только РКН это любит
В Америке и Европе пытались и пытаются бороться с распространением контента

А по итогу очень интересный инструмент, который был популярен и в локальных сетях

Всем благ

 

 

 

 

 

 

 

 

 

 

 

 

13/04/2026

История связи: мня опредили и мотивировали одновременно

 




     За свою рабочую карьеру, а это пости 20 лет уже, я переучивался раза 3-4,
хотя специализацию не менял
    Первый раз, это прям со студенческой скамьи, все чему учили устароло и
пошел в цифровую и IP-связь, уже шел астериск, передача данных, все в скайпе и тд - это был 2007
В который никто и никогда не вернется :)
    А вот прям переучиваться и жестко пришлось в 15-ом, когда сократили и был кризис и в стране,
и в отрасли. Вот тогда ушел TDM и пришла передача данных, сетевые технологии CCNA и многое другое
Потом докатилось окончательно в 16ом - тогда наступила эта VoIP, полноценный SIP, софтсвич и вот это все
стильное модное. Голос уже перешел в медиа, проводная связь уходит в прошлое
    А сейчас все идет переход дальше, можно сказать WebRTC - теперь все вместе и голос по SIP и видео, и
данные, текст, контент - все это идет одним транспортом, и снова переучиваешься
    Смотря на свои записи, что все пытаюсь по немногу переносить в Интернет, начал писать книгу одним
развитии и истории, как менялся телеком на моих глазах. Думал надо оно нет, как вот сразу попалась книга на глаза про
историю связи, которую здесь и прикладываю на память
    Значит это кому-то надо, значит это не зря

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12/04/2026

EBITDA - вот эбитда, так эбитда полнейшая

 


 

 

    EBITDA (Earnings before interest, taxes, depreciation and amortization) — это прибыль компании до вычета амортизационных затрат, уплаты процентов по долгам и выплаты прямых налогов. Часто EBITDA называют показателем «грязной прибыли». Измеряют его в деньгах (рубли, доллары, евро).

     Думал такое от меня далеко, а сейчас все чаще и чаще слышу, обсуждается и косвено да, уже касается и меня

   По сути EBIDTA показывает, какую сумму компания может выплатить в качестве дивидендов — то, что как раз важно инвесторам — или пустить на погашение кредитов. 

 

Классические формулы:

  • EBITDA = чистая прибыль + налоги + процентные расходы + износ и амортизация
  • EBITDA = операционная прибыль + износ и амортизация

По сути это вот следующая формула расчёта: 

 

EBITDA = выручка – (прямые затраты + косвенные затраты) – (расходы на оплату труда + социальные налоги, взносы и сборы) – операционные налоги (за исключением НДС и налога на прибыль) + прочие доходы – прочие расходы

 

Повышайте компитенции, чтобы Ваша личная EBITDA только росла

 

 

 

 

 

 

 

11/04/2026

emupedia.net: ностальгия твоего детства во плоти

 

   Поделюсь сайтом с редро программами, ну конечно в основном играми. Даже пустил скупую мужскую слезу))

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

     Есть нюансы, каждый раз проигрывается все заново так что сидеть и неделями проходить Дьябло первый или Анрыл не выйдет, но удовлетворить ломку по легендарным играм в самый раз

    Для меня в старых играх спрятано нечто большее, чем просто память о том, когда я был вечно молодым, вечно пьяным) При мне была эпоха, когда игры рождались в жесткой ограниченности в ресурсах, а это, как я считаю, и есть залог шедевра. Тогда нельзя было запросить 100500 Гб памяти и терабайты места на хардах, поэтому шли на различные ухищрения, приходилось продумывать каждый ход, вывозить сюжетом. Мультиплеера не было поголовно, а созвониться с соседом - высший пилотаж, чаще с компами ходили или шли в клуб, но это не нынешние игры

    Поэтому если захотите сравнить два разных мира, современный киберпанк и ламповый ЭВМный, то прошу Вас сюда :-) 

  


 



10/04/2026

Linux headers: обновление ядра ручками

 


 

 Linux headers — так называют заголовочные файлы ядра Linux. Это файлы на языке программирования C, которые определяют интерфейс между ядром Linux и библиотеками и программами пользовательского пространства. 

Использование

Заголовочные файлы нужны для компиляции кода, который взаимодействует с ядром
  • Для сборки драйвера устройства или другого загружаемого модуля, который подключается к ядру.
  • Для компиляции программ, которые в некоторых случаях работают с ядром не через glibc, например, утилит, работающих с ядром не через Glibc.

 Это была история, а это памятка по обновлению в ручном режиме: 

   apt install linux-headers-5.10.0-22-amd64
   apt install linux-headers
   dpkg -l | grep -i linux
   apt-get update linux-image
   apt-get update
   apt-get upgrade
   apt-get upgrade linux-image-amd64
   apt-get install linux-image-amd64 

09/04/2026

Включение или выключение интерфейсов

 


 Команда «ip» используется для настройки параметров сетевого интерфейса в ОС Linux. 
Эта команда хоть была ранше всеми привычной «ifconfig», но популярность сыграла позже в современных дистрибутивах Linux.

$ ip link set dev интерфейс действие

чтобы отключить выполните:
ip link set dev enp0s3 down

чтобы включить его:
ip link set dev enp0s3 up

Вынес в отдельный пост тк систаксис все время запоминаю, можете брать себе в напоминание

Памятка по объектам, как видите понофункциональная
Объект        Сокращен                        Назначение
link         l                 Отображение и изменение сетевых интерфейсов.
address     addr             Адрес протокола (IP или IPv6) на устройстве.
addrlabel     addrl             Конфигурация метки для выбора адреса протокола.
neighbour     n                 Отображение и управление соседними объектами (таблица ARP).
route         r                 Запись таблицы маршрутизации.
rule         ru                 Правило в базе данных политик маршрутизации.
maddress     m                Многоадресный адрес.
mroute         mr                 Запись кэша многоадресной маршрутизации.
tunnel         t                 Туннель через IP. 

 

 

 

 

 

 

 

 

 

 

 

 

07/04/2026

Вспоминаем былое: кодировка CP866

 




Работая уже на экспертном уровне, не редко приходится сталкиваться с архаичными, мало популярными и просто редкими вещами

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

Вот и герой нашего сегодня обзора как раз такой "CP866"

Зумеры не знают, а так как в девяностые из всего класса только у меня был комп, о котором мне нельзя было рассказывать, то и большая часть миленеалов тоже))

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

А вот файл с кракозяблями и поиск кодировки для оного я нет нет, да досих пор встречаю

Обычно это связано с использованием Windows, где часто применяется кодировка CP866 или Windows-1251, тогда как в Linux обычно используется UTF-8, а в нынешних реалях даже UTF-32.

Прежде чем расскажу про нее, в двух словах как мы до нее докатились

ASCII – базовая кодировка
ASCII – это база-база, самая первая, что стала стандартом кодировки символов, что был массовым. Он предусматривает в своем составе английский алфавит ака латиницу. Состоит из 128 уникальных символов, которых и стало быстро не хватать. 

ISO – стандарт, представленный 8 битами. Младшая группа символов здесь представляет собой «базовый» ASCII, а старшая группа отводится под разнообразные языки. По сути использовалась Аски, которую удвоили, добавив в конце еще блок в 8 бит, нужный блок выбирался версией 

8859-0 – новый европейский вариант
8859-2 – Восточная Европа
8859-5 – поддержка кириллицы

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

KOI8-R
А вот тут расширенный вариант ASCII. Она предназначается для работы с символами русского алфавита. 

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

За счет такой продуманности и стала популярной, есть для разных языков восточной европы, но по сути всегда видел лишь один
KOI8-R – для русского языка;

CP866
Альтернативная кодировка от IBM. Это  вторая попытка использовать символы русского алфавита в компьютерной технике. CP866 – это одна из расширенных версий ASCII.

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

И вот здесь читатель ты наверное услышал для себя новое слово - псевдографика

По крайней мере я надеюсь на это))

Да-да, в 90-ые и ранние 2000-ые мы рисовали текстом, сам успел на Паскале порисовать

Посмотрите на символы ближе к концу кодировки

Видите?

Думаете их мало?

Как бы не так, до сих пор работает ПО с псевдо-3Д графикой, что сразу уважение берет за тех кто такое писал, такое пишется с нуля и никакой автоматизации

Так относительно недавно я и вспомнил про нее обслуживая терминал управления в ближайшем подмосковье)

Ну и под конец, пара слов о последней, наиболее популярной на всяких вордо документах и вообще в виндовс:

 Windows -1251 – это еще одна расширенная версия ASCII. Данный стандарт был разработан корпорацией Microsoft. Появление соответствующей кодировки связано с ростом развития популярности графических операционных систем.

В Windows-1251 была убрана псевдографика. За счет этой особенности образовалась целая новая группа стандартов кодирования, которая выступала расширенной интерпретацией ASCII. Текстовые символы здесь могут быть зашифрованы при помощи всего 1 байта информации.

Из описания сразу понятно, что отрезав и переиспользовав часть кодо-поля будет накладки при не состыковки, иными словами если текст из KOI8-R открыть через 8859 еще можно, то 1251, и уж тем более ее куда более позднее переосмысление 1252 ,невозможно в принцпе 

Собственно поэтому и вымерла по факту

Ух, сегодня ударился в ностальгию, но мне можно после такого перерыва))

Всем добра)))

 






 

 

 

 

 

 

 

 

 

 

 

 

 

 

Телефония Хааса

 


 

     Слышим эффект хааса - т.е. себя с задержкой и нам этот голос еще и не нравится, все же слышали свой голос в записи, вспомнили? 
У нас в голове свой голос приятный, мы к нему привыкли и нам нравится, а когда на записи он как будто не наш и  это эхо очень мешает говорить, люди запинаются заикаются перезванивают. 
Если меньше <50 мс то даже если в динамике будет звук громче вашей речи то он не мешает. 
сливается с тем что мы говорим и эха не ощущается.

       Суммарное время в VoIP-сетях меньше < 50 мс - это идеальные условия всетях связи и очень редко, как правило задержка выше или +- рядом, с таким пустяком DSP процессоры легко справляют и не дают нам  нервничать.

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

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

    Телефонные компании появились намного раньше интернета, мой любимый Nortel Networks, так и вообще в 19 веке. И практически сразу начали бороться разными способами с эхо, активно начали с 50-ых годов, были эхозаградители, частотные фильтры и т.п. а теперь DSP-процессоры.

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

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

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

Киберпанк и технократия постучались в наш дом 

Зачем нам FTP в XXI веке

        FTP (англ. File Transfer Protocol ) — протокол передачи файлов по сети, появившийся в 1971 году задолго до HTTP и даже до TCP/IP ,...