Коды разъединения Q931

helpQ931 — протокол третьего уровня в цифровых сетях ISDN, управляющий соединениями. Коды разъединения q931 описывают причину завершения связи. Коды и их краткое описание приведены ниже в таблице.

кодзначение
1Не назначенный (не присвоенный) номер. Необходимое назначение достоверно, но не может быть достигнуто.
2Нет маршрута к заданной транзитной сети.От посылающего оборудования требуется проведение сигнала через незнакомую транзитную сеть.
3Нет маршрута к адресату.Вызываемый пользователь не может быть достигнут, т.к. сеть не обслуживает место назначения.
4Передача специального сигнала оповещения.Указывает на то, что вызываемая сторона недоступна, вызывающей стороне будет отдан специальный сигнал оповещения.
5Неверный префикс канала.Указывает на ошибочное добавление префикса канала в номер вызываемой стороны.
6Канал неприемлем.Последний выбранный канал недоступен для посылаемого объекта.
7Вызов назначен и доставлен в установленный канал.Входящий сигнал соединен с каналом, который уже настроен на принятие идентичных по типу сигналов (например, виртуальные вызовы в пакетном режиме Х.25).
8Прерывание.Указывает на то, что вызов был прерван.
0Прерывание – Канал сохранен для повторного использования.Указывает на то, что звонок был сброшен по требованию одной из сторон. При необходимости можно повторить вызов.
16Нормальное завершение вызова.Вызов корректно завершен одним из вовлеченных пользователей.
17Пользователь занят.Вызываемый пользователь не может принять еще один вызов, хотя совместимость достигнута.
18Пользователь не отвечает.Применяется, когда пользователь не отвечает на вызов, содержащий сообщения, предупреждающие о готовности к работе или о соединении в течение отведенного времени.
19От пользователя нет ответа (пользователь предупрежден).Пользователь обеспечил индикацию готовности к работе, но не обеспечил индикацию соединения в течение отведенного времени.
20Пользователь отсутствует.Вызываемая сторона недоступна, установление связи невозможно или вызываемый абонент временно недоступен в сети.
21Вызов отклонен.Оборудование, посылающее значение, не принимает данный вызов, хотя оно свободно и совместимо.
22Номер изменен.Это означает, что вызываемой партии не присвоен номер.
26Разъединение невыбранного пользователя.Пользователь не предупрежден о входящем сигнале.
27Адресат не в порядке.Интерфейс пункта назначения не функционирует нормально.
28Неправильный формат номера.Номер вызываемой партии недействителен или не полон.
29Функциональная возможность отклонена.Сеть не может обеспечить требуемый канал связи.
30Ответ на ЗАПРОС СОСТОЯНИЯ (STATUS ENQUIRY).Причиной сообщения STATUS было предшествующее ему принятие сообщения ЗАПРОС СОСТОЯНИЯ.
31Нормальный, не специфицированный.Используется для сообщения о нормальных событиях только тогда, когда в нормальном классе не возникает никакого другого значения.
34Нет доступного маршрута/канала.Подходящий маршрут/канал для принятия вызова в данный момент недоступен.
38Сеть неисправна.Сеть не функционирует. Немедленный повторный набор номера не будет удачным
39Фреймовый режим постоянного соединения недоступен.Код включен в сообщение СТАТУСА(STATUS), чтобы указать, что фреймовый режим постоянного соединения недоступен.
40Фреймовый режим постоянного соединения в рабочем состоянии.Код включен в сообщение СТАТУСА(STATUS), указывает, что фреймовый режим постоянного соединения доступен для передачи пользовательской информации.
41Временная неисправность.Сеть не функционирует. Вероятно, немедленный повторный набор номера не будет удачным.
42Перегрузка коммутационного оборудования.Коммутационное оборудование, отдающее это значение, в данный момент перегружено.
43Информация доступа отвергается.Сеть не может передать выбранную информацию удаленному пользователю так, как это необходимо. Этому могут препятствовать: информация, поступающая от пользователя к пользователю, низкий уровень совместимости, высокий уровень совместимости или под адрес, как указано в диагностике. Конкретный тип отторгаемой выбранной информации дополнительно указывается в диагностике.
44Требуемый маршрут/канал недоступен.Данное значение передается, когда маршрут (или канал), указанный необходимым объектом, не может быть обеспечен другой стороной.
47Ресурсы недоступны, не предусмотрены.В данном случае о недоступном ресурсе сообщается только тогда, когда нет другого значения в классе недоступных ресурсов.
49Качество услуг не обеспечено.Задержка передачи информации не поддерживается, и качество обслуживания (как определено в Рекомендациях Х.213) не может быть обеспечено.
50Требуемый канал связи не подключается.Требуемые дополнительные услуги не могут быть обеспечены сетью, т.к. пользователь не выполнил необходимые административные формальности по отношению к поддерживаемым сетям.
53Исходящие вызовы запрещены внутри закрытой группы пользователей(CUG).Означает, что вызывающая сторона является членом группы, исходящие звонки не разрешены этому члену закрытой группы пользователей.
55Запрет на входящие вызовы внутри закрытой группы пользователей (CUG).Несмотря на то, что вызываемая сторона является членом группы, входящие вызовы запрещены этому члену закрытой группы пользователей (CUG).
57Возможности переноса не санкционированы.
58Возможности переноса в настоящее время недоступны.
62Ошибка в информации об уровне и категории пользователя.Показывает, что существует несоответствие в исходящей информации об уровне доступа и категории пользователя.
63Услуга или факультатив не доступны, не специфицированы.
65BCAP не определена.Оборудование, посылающее данное значение, не имеет требуемой ВСАР.
66Тип канала не обеспечивается.Оборудование, посылающее данное значение, не обеспечивает необходимые дополнительные услуги.
69Требуемый канал связи не обеспечивается.Оборудование, возвращающее данное значение, не обеспечивает необходимые дополнительные услуги.
70Доступна только ограниченная возможность переноса цифровой информации.Одно оборудование требует от носителя неограниченных услуг, но оборудование, посылающее данное значение, обеспечивает только ограниченную версию.
79Услуга или опция не установлены, не предусмотрены.Сообщение о непредусмотренной услуге или опции появляется только в том случае, если в классе непредусмотренных услуг (или опций) не возникает других значений.
81Недействительное значение опорного сигнала.Сообщение, содержащее опорный сигнал, который в данный момент не используется на интерфейсе пользователь-сеть было получено оборудованием, отсылающим данное значение.
82Идентификатор канала не существует.Оборудование, возвращающее данное значение, получило запрос об использовании канала, не активизированного на интерфейсе для вызова.
83Приостановленный вызов существует, но его идентификатора нет.Возобновляемый вызов был опробован с тождественным, который отличается от рабочего для всех текущих приостановленных сигналов.
84Идентичность вызова в использовании.Сеть получила приостановленный сигнал запроса. Этот запрос содержит тождественный вызов (включая нулевой тождественный вызов), который уже находится в действии для приостановленного вызова в пределах интерфейсов, на которых этот сигнал может быть возобновлен.
85Приостановленного вызова нет.Сеть получила возобновленный запрос, содержащий элемент информации тождественного вызова, который в свою очередь не указывает на наличие каких-либо приостановленных вызовов в рамках интерфейсов, на которых этот сигнал может быть возобновлен.
86Соединение, имеющее запрошенный идентификатор вызова, разъединено.Сеть получила возобновленный запрос, содержащий элемент информации тождественного вызова, который указывал на наличие приостановленного вызова, но во время этой остановки прерванный вызов был разъединен (либо из-за возникшего в сети тайм-аута, либо отдаленным пользователем).
87Пользователь не входит в закрытую группу пользователей (CUG).Вызываемый пользователь для входящих звонков ЗГП не является членом упомянутой группы или, что звонящий пользователь является обычным абонентом, вызывающим абонента, состоящего в ЗГП.
88Несовместимость с пунктом назначения.Оборудование, создающее это значение, получило запрос о принятии вызова, имеющего более низкий уровень совместимости, более высокий уровень совместимости или другие характеристики совместимости (например, частоту поступления информации), которые делают принятие вызова невозможным.
90Несуществующая группа пользователей (CUG).Показывает, что указанная группа не существует.
91Неправильный выбор транзитной сети.
95Неправильное или непредусмотренное сообщение.Появляется только тогда, когда в классе недействительных сообщений не возникает других значений.
96Отсутствует обязательный информационный элемент.Оборудование, создающее это значение, получило сообщение, не содержащее информационного элемента, который должен присутствовать в сообщении до того, как оно может быть подвергнуто обработке.
97Тип сообщения не существует или не реализован.Оборудование, создающее это значение, получило сообщение, тип которого ему не знаком, потому что это сообщение либо не расшифровано, либо расшифровано, но не введено в эксплуатацию на данном оборудовании.
98Сообщение несовместимо с состоянием вызова или его тип не существует или не введен в эксплуатацию.Оборудование, создающее это значение, получило сообщение, которое оно рассматривает как не допустимое в состоянии вызова; или же было получено сообщение STATUS, указывающее на несовместимое состояние вызова.
99Информационный элемент не существует или не реализован.Оборудование, создающее это значение, получило сообщение, включающее неопознанные информационные элементы, так как идентификатор информационного элемента не определен, а если определен, то не введен в эксплуатацию на инструменте, создающем новое значение. Однако информационный элемент не обязательно должен присутствовать в сообщении для того, чтобы дать возможность оборудованию, создающему данное значение, провести его обработку.
100Сообщение содержит некорректный информационный элемент.Оборудование, создающее данное значение, получило информационный элемент, который оно ввело в эксплуатацию. Однако оборудование было не в состоянии ввести в эксплуатацию код, так как одно или несколько полей были неправильно закодированы.
101Сообщение несовместимо с состоянием вызова.Полученное сообщение несовместимо с состоянием вызова.
102Восстановление по истечении тайм-аута.Время истекло и начата связанная с исправлением ошибок процедура Q.931 .
103Несуществующий или неописанный параметр.Оборудование, вернувшее этот код, получило сообщение, в котором содержались нераспознанные параметры. Нераспознанные потому что, они не определены или определены, но не используются на этом оборудовании.
110Сообщение с неизвестным параметром сброшено.Оборудование, вернувшее этот код, сбросило принятое сообщение, потому что оно содержало неизвестный параметр.
111Не специфицированная ошибка в протоколе.Сообщение о наличии ошибки появляется, только если в классе протокольных ошибок нет других значений.
127Не специфицированная ошибка межсетевого взаимодействия. Имела место организация межсетевого взаимодействия с сетью, которая не обеспечивает причинные коды операций. Поэтому точное значение отсылаемого сообщения неизвестно.

Cisco SPA: Hotline

Hotline — это быстрый вызов определенной линии на определенном устройстве. Как это работает? Мы только снимаем трубку на своем телефоне, как тут же без дополнительных действий с нашей стороны вызывается нужный номер или линия.

Чтобы «включить» режим Hotline на cisco spa, нужно отредактировать Dial Plan (вкладка Voice -> Line n -> Dial Plan) до следующего вида:

S0<:userid@ip_address: port>

  • S0 — устанавливаем Interdigit Short Timer (интервал между набираемыми цифрами) равным нулю;
  • userid@ip_address: port — идентификатор линии, которая должна в итоге зазвонить. Ну здесь, думаю, понятно, что userid — это номер (или extention), ip_address:port — ip-адрес и sip-порт удаленного устройства.

Помимо Dial Plan’а нужно проверить/изменить еще некоторые параметры линии (вкладка Voice -> Linen ), описаны ниже.

Для вызывающей линии:

  • Proxy and Registration -> Make Call Without Reg:  yes
    — разрешить совершать вызовы без регистрации

Для принимающей линии:

  • SIP Settings -> Restrict Source IP: no
    — Restrict Source IP позволяет принимать вызовы только с ip-адреса, указаного в Proxy and Registration -> Proxy. Для Hotline’а нам этого не нужно, поэтому отключаем. В принципе, можно установить Restrict Source IP: yes и в разделе Proxy указать ip-адрес удаленного устройства, с которым строим Hotline.
  • Proxy and Registration -> Ans Call Without Reg:  yes
    — разрешить принимать вызовы без регистрации.

Если нам нужно, чтобы Hotline работал в обе стороны (поднял line1 — зазвонила line2; поднял line2 — зазвонила line1), соответственно, на каждой из линий включаем аж все три 🙂 параметра:

  • SIP Settings -> Restrict Source IP: no
  • Proxy and Registration -> Make Call Without Reg:  yes
  • Proxy and Registration -> Ans Call Without Reg:  yes

Хочу заметить, что параметр Call Feature Settings -> Enable IP Dialing никак не влияет на работу Hotline.

Ниже парочка примеров подключений…


 

Пример 1

Cisco-SPA-Hotline-Diagram1

Описание:

  • spa 112 включен в локальную сеть, его ip-адрес — 192.168.13.26;
  • к FXS-портам подключены два обычных телефона;
  • в сети нет сервера регистрации или sip-proxy-сервера.

Задача: Поднимаем трубку на первой линии (line1), сразу звонит вторая (line2)  и наоборот.

Решение:

Настройка Line1
SIP Port: 5060
Dial Plan: S0<:@192.168.13.26:5061>

Настройка Line2
SIP Port: 5061
Dial Plan: S0<:@192.168.13.26:5060>

Здесь нужно обратить внимание, что из начального шаблона был убран userid. Это потому что никакого userid на линиях в данный момент нет. Если установить, например, на Line1 User ID: 11, а на Line2 — User ID: 22, то диалпланы должны будут выглядеть вот так:

Настройка Line1
SIP Port: 5060
Dial Plan: S0<:22@192.168.13.26:5061>

Настройка Line2
SIP Port: 5061
Dial Plan: S0<:11@192.168.13.26:5060>

 


 

Пример 2

Cisco-SPA-Hotline-Diagram2

Описание:

  • spa 112 (ip 192.168.13.26) и spa 303 (ip 192.168.13.26) включены в локальную сеть;
  • к первому FXS-порту spa 112 подключен обычный телефон;
  • cisco spa 303 — это ip-телефон с тремя независимыми линиями; для Hotline здесь я использую line3 с внутренним номером 66;
  • в сети нет сервера регистрации или sip-proxy-сервера.

Задача: Поднимаем трубку на первой линии spa 112 (extension 11), сразу звонит третья линия (extension 66) на spa 303.

Настройка spa 112 Line1
SIP Port: 5060
Dial Plan: S0<:66@192.168.13.25:5062>

Настройка spa 303 Line3
SIP Port: 5062
Dial Plan: S0<:11@192.168.13.26:5060>

 


 

Пример 3

Cisco-SPA-Hotline-Diagram3

 

Описание:

  • linksys spa 3102 (ip 175.1.1.100) и cisco spa 303 (ip 98.1.1.100) подключены к интернету;
  • к FXO-порту linksys’а подключена абонентская линия, приходящая с городской АТС;

Задача: Продление абонентской линии с помощью АТА и IP-телефона через сеть с коммутацией пакетов (в данном случае Internet)

Думаю, наиболее востребован режим Hotline именно в данных схемах подключения.

Настройка linksys spa 3102 -> PSTN Line

Необходимый минимум для работы в направлении PSTN -> VOIP:

PSTN-To-VoIP Gateway Setup
PSTN-To-VoIP Gateway Enable: yes
PSTN Caller Default DP: 1

Dial Plans
Dial Plan 1: S0<:66@98.1.1.100:5062>

FXO Timer Values (sec)
PSTN Dialing Delay: 0

Необходимый минимум для работы в направлении VOIP -> PSTN:

VoIP-To-PSTN Gateway Setup
VoIP-To-PSTN Gateway Enable: yes
VoIP Caller Default DP: 2

Dial Plans
Dial Plan 2: (xx.)

Настройка linksys spa 303 -> Ext 3

Subscriber Information
User ID: 66

Dial Plan
Dial Plan: S0<:@175.1.1.100:5061>

Proxy and Registration
Make Call Without Reg: yes
Ans Call Without Reg: yes

 

SSMTP: Отправка отчетов, логов и уведомлений из FreeBSD

http://pro-voip.com.ua freebsdКогда нужно научить свой сервер отправлять почту…

Вообще-то, FreeBSD в своей базовой комплектации, если можно так выразится, имеет на борту полноценный почтовый сервер — sendmail. Предполагалось, что этим почтовиком будет пользоваться как сама операционная система, уведомляя своего администратора о результатах тестов и проверок, так и рядовые пользователи для повседневного общения. В этом случае настройка и запуск sendmail’а оправдана, если ваш сервер у вас именно «почтовый» (как минимум, обслуживает пользователей компании, например) и, что немаловажно, sendmail вы настраивать умеете.

Для «непочтового» сервера на FreeBSD, выполняющего другие задачи (например, запущен какой-нибудь web-сервер ) тратить время и разбираться в sendmail’е, когда нужны только отчеты системы, считаю нецелесообразно. (Для меня sendmail вообще темный лес и мне туда лезть страшно).

В таком случае на помощь приходит sSMTP. Это некий эмулятор sendmail’а, с помощью которого можно _только отправлять_ почту через удаленный «полноценный почтовый сервер».

Установка

Ставим с портов:

# whereis ssmtp
ssmtp: /usr/ports/mail/ssmtp
# cd /usr/ports/mail/ssmtp
# make install clean

После окончания установки видим следующее сообщение — руководство к дальнейшим действиям:

sSMTP has been installed successfully.

To replace sendmail with ssmtp type "make replace" or change
your /etc/mail/mailer.conf to:

sendmail    /usr/local/sbin/ssmtp
send-mail    /usr/local/sbin/ssmtp
mailq        /usr/local/sbin/ssmtp
newaliases    /usr/local/sbin/ssmtp
hoststat    /usr/bin/true
purgestat    /usr/bin/true


However, before you can use the program, you should copy the files
"revaliases.sample" and "ssmtp.conf.sample" in /usr/local/etc/ssmtp
to "revaliases" and "ssmtp.conf" respectively and edit them to suit
your needs.
Настройка

Следуем рекомендации…

1. Вместо дефолтного sendmail’а прописываем ssmtp в /etc/mail/mailer.conf:

sendmail    /usr/local/sbin/ssmtp
send-mail    /usr/local/sbin/ssmtp
mailq        /usr/local/sbin/ssmtp
newaliases    /usr/local/sbin/ssmtp
hoststat    /usr/bin/true
purgestat    /usr/bin/true

2. Редактируем конфигурационный файл /usr/local/etc/ssmtp/ssmtp.conf:

root=admin@provoip.in.ua
mailhub=mail.pro-voip.com.ua
rewriteDomain=provoip.in.ua
hostname=server.provoip.in.ua
FromLineOverride=YES

Кто получает почту для userids < 1000 (т.е. от всех системный пользователей):
root=admin@provoip.in.ua

Через какой MTA отправлять почту (МТА здесь полноценный сервер, который реально занимается доставкой почты пользователю — ищет MX запись домена, отправляет, следит за доставкой, возвращает письмо отправителю при невозможности доставки):
mailhub=mail.pro-voip.com.ua

Можно указать порт (по умолчанию 25), например:
mailhub=mail.your.domain:2525

С какого домена будет отправлена почта:
rewriteDomain=provoip.in.ua

Полное имя хоста:
hostname=server.provoip.in.ua

Не перезаписывать заголовок From при отправке, если он явно задан (если будет указано значение «NO», в заголовке From отобразится реальный пользователь, от имени которого отсылается письмо):
FromLineOverride=YES

Другие возможности:

Использовать SSL/TLS для отправки сообщений на сервер:
UseTLS=YES

Использовать SSL/TLS сертификат to authenticate against smtp host.
UseTLSCert=YES

Использрвать этот RSA сертификат:
TLSCert=/usr/local/etc/ssmtp/ssmtp.pem

Debug

Если возникли проблемы с отправкой письма и нужно посмотреть детально, как происходит общение между ssmtp и удаленным почтовым сервером, следующей опцией можно включить debug отправки письма:

Debug=YES

Здесь следует обратить внимание на расположение данной опции в файле конфига /usr/local/etc/ssmtp/ssmtp.conf:

  • если ее поставить в конце файла — получим в логах (/var/log/maillog) подробный вывод smtp-сесси:
  • если ее поставить в начале файла — кроме вывода smtp-сессии получим вывод парсинга по конфигу ssmtp.conf:
  • если поставить где-нибудь в середине, то процесс парсинга в логах увидим начиная с опции, которая идет за «Debug=YES».
Отправка от определенного пользователя в системе

Допустим, в системе есть пользователь user123, у которого есть почтовый ящик user123@example.com. Чтобы пользователь смог отправлять письма со своего ящика через сервер mail.pro-voip.com.ua,  отредактируем файл алиасов /usr/local/etc/ssmtp/revaliases:

# sSMTP aliases
#
# Format: local_account:outgoing_address:mailhub
#
# Example: root:your_login@your.domain:mailhub.your.domain[:port]
# where [:port] is an optional port number that defaults to 25.

user123:user123@example.com:mail.pro-voip.com.ua

— смотрим строку вконце.

Если файла revaliases, его можно создать самим 🙂 или переименовать revaliases.sample в revaliases.

Отправка сообщения от пользователя user123 с консоли будет выглядеть примерно следующим образом:

# mail -s «This is mail» -u user123 user777@gmail.com < /dev/null

HDD: Smartmontools

! Работает с жесткими дисками, которые поддерживают технологию SMART !

smartmontools состоит из двух утилит:

  • smartctl — (Control and Monitor Utility for SMART Disks) — так сказать, интерактивная часть;
  • smartd — (SMART Disk Monitoring Daemon) — демон.

 

smartctl

Справка smartctl:

smartctl -h

Сканировать и вывести список дисков и их тип:

smartctl --scan

Получить информацию о диске, такую как модель, серийный номер:

smartctl -i /dev/ada0

Краткая общая информация о здоровье диска:

smartctl -H /dev/ada0

Посмотреть всю информацию об устройстве:

smartctl -x /dev/ada0

Посмотреть всю SMART-информацию:

smartctl -a /dev/ada0

Посмотреть SMART-атрибуты диска:

smartctl -A /dev/ada0

 

SMART-тесты

Работа с тестами самодиагностики.

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

Запуск короткого теста (длится пару минут):

smartctl -t short /dev/ada0

Запуск длинного теста (десятки минут, до часа):

smartctl -t long /dev/ada0

Отменить тест:

smartctl -X

Просмотр результата теста:

smartctl -l selftest /dev/ada0

 

SMART-атрибуты
# smartctl -A /dev/ada0

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x002f   200   200   051    Pre-fail  Always       -       0
  3 Spin_Up_Time            0x0027   100   253   021    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       1
  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x002e   200   200   000    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       121
 10 Spin_Retry_Count        0x0032   100   253   000    Old_age   Always       -       0
 11 Calibration_Retry_Count 0x0032   100   253   000    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       1
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       0
193 Load_Cycle_Count        0x0032   200   200   000    Old_age   Always       -       2
194 Temperature_Celsius     0x0022   111   109   000    Old_age   Always       -       32
196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   200   200   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   100   253   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0008   200   200   000    Old_age   Offline      -       0

Поля атрибутов SMART

ID — идентификатор атрибута, однозначно определяет атрибут.
ATTRIBUTE_NAME — имя атрибута, расшифровка ID.
VALUE — текущее значение атрибута. Чем меньше — тем хуже. Измеряется в «попугаях». Сравнивается со значением TRESHOLD:

  • VALUE > TRESHOLD — диск считает, что он здоров;
  • VALUE < или = TRESHOLD  — бьем тревогу;
  • VALUE не достиг уровня TRESHOLD, но упорно уменьшается — атрибут деградирует — тоже пора задуматься о замене диска.

WORST — наихудшее значение VALUE атрибута за всю жизнь диска. Измеряется в «попугаях».
TRESHOLD — пороговое (критическое) значение VALUE для атрибута. Измеряется в «попугаях».
TYPE — тип атрибута:

  • Pre-fail — критичный
  • Old_age — некритичный

WHEN_FAILED — «когда выйдет из строя»:

  • «FAILED_NOW» — опасно;
  • » — » — с атрибутом все в порядке.

RAW_VALUE — реальное значение атрибута (не в «попугаях») — в зависимости от атрибута значение:

  • текущее (например, температура -Temperature_Celsius);
  • накапливающее (какой-либо счетчик, например, Power_Cycle_Count).

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

Атрибуты SMART

* жирным шрифтом выделены атрибуты, требующие особого внимания

  • (1) Raw_Read_Error_Rate — содержит частоту возникновения ошибок при чтении с диска по вине аппаратной части накопителя;
  • (3) Spin_Up_Time — содержит время разгона шпинделя диска из состояния покоя до номинальной скорости (например, от 0 до 7200 об/мин);
  • (4) Start_Stop_Count — полное число запусков/остановов диска;
  • (5) Reallocated_Sector_Ct — содержит кол-во секторов, переназначенных диском в резервную область — операция Remapping — считаются только удачные попытки. Ключевой параметр в оценке состояния диска;
  • (7) Seek_Error_Rate — частота появления ошибок позиционирования БМГ; указывает на проблемы в механике диска;
  • (9) Power_On_Hours — число часов проведенных во включенном состоянии (накапливающий);
  • (10) Spin_Retry_Count — число попыток старта шпинделя диска, если первая попытка была неудачной;
  • (11) Calibration_Retry_Count — число попыток рекалибровки накопителя — сброс состояния диска и установка головок на нулевую дорожку;
  • (12) Power_Cycle_Count — число полных циклов включения-отключения диска;
  • (192) Power-Off_Retract_Count — для разных винчестеров либо суммарное кол-во парковок БМГ в аварийных ситуациях, либо суммарное кол-во включения-выключения питания диска (в WD, Hitachi);
  • (193) Load_Cycle_Count — кол-во полных циклов парковки БМГ;
  • (194) Temperature_Celsius — температура диска;
  • (196) Reallocated_Event_Count — кол-во операций переназначения — Remapping — учитываются удачные и неудачные попытки;
  • (197) Current_Pending_Sector — текущее кол-во нестабильных секторов — кандидаты на Remapping;
  • (198) Offline_Uncorrectable — параметр изменяется только при offline-тестировании, которое диск запускает при простое; содержит секторы-кандидаты на Remapping;
  • (199) UDMA_CRC_Error_Count — кол-во ошибок при передаче по интерфейсному кабелю в режиме UltraDMA от материнской платы контроллеру диска; Причины — некачественный шлейф, плохой контакт  в SATA-разъеме;
  • (200) Multi_Zone_Error_Rate — частота появления ошибок при записи данных;

 

smartd

Конфигурационный файл:

/usr/local/etc/smartd.conf

Автоматическое сканирование системы в поисках ATA и SCSI:

DEVICESCAN

может запускаться с набором нужных директив, которые будут применены ко всем найденым дискам. Например:

DEVICESCAN -I 194 -I 231 -I 9

Описание директив конфигурационного файла smartd можно найти в smartd.conf.sample и в ‘man smartd.conf’.

Многие люди предпочитают вручную указывать диски, которые хочется мониторить. Для этого необходимо закоментировать DEVICESCAN и указать диски.

Пример:

/dev/ada0 -a -o on -S on -s (S/../.././02|L/../../6/03) -I 194 -W 4,45,55 -R 5 -m admin@provoip.in.ua
/dev/ada1 -a -o on -S on -s (S/../.././02|L/../../6/03) -I 194 -W 4,45,55 -R 5 -m admin@provoip.in.ua

В данном примере указаны два жестких диска — ada0 и ada1. Используемые директивы:

-a Default: то же, что и набор директив «-H -f -t -l error -l selftest -C 197 -U 198»:

-H — мониторинг SMART Health Status, сообщает если статус FAILED;
-f  — мониторинг на ошибки (FAILED) любого из используемых атрибутов (поле SMART-атрибута WHEN_FAILED);
-t — то же, что и набор директив «-p -u»:

-p рассказывать об изменениях в «Pre-fail»-атрибутах;
-u рассказывать об изменениях в «Old_age»-атрибутах;

-l error — мониторить SMART-логи error;
-l selftest — мониторить SMART-логи selftest;

-C 197 — «197» — это ID атрибута — RAW_VALUE Current_Pending_Sector — сообщать при ненулевом значении;
-U 198 — «198» — это ID атрибута — RAW_VALUE Offline_Uncorrectable — сообщать при ненулевом значении;

-o on — enable автоматические offline-тесты;
-S on — enable attribute autosave;

-s (S/../.././02|L/../../6/03) — стартовать selftest’ы, когда выполняется регулярное выражение. В данном примере заданы несколько выражений, разделенных условием «или», поэтому ставим круглые скобки.

Регулярное выражение представляет собой следующую конструкцию:
T/MM/DD/d/HH
T — тип теста — Short, Long, Conveyance или Offline, MM — месяц, DD — день, d — день недели, HH — час.
S/../.././02 — запускать короткий (S) тест каждый день после 2-х часов ночи;
L/../../6/03 — запускать длинный (L) тест каждую субботу (день недели — 6) после 3-х часов ночи.

-I 194 — игнорировать изменения атрибута 194 — Temperature_Celsius;
-W 4,45,55 — мониторинг изменения температуры на 4 градуса, 45 — informal лимит, 55 — критический лимит;
-R 5 — отследить изменения в атрибуте 5 — Reallocated_Sector_Ct;

-m admin@provoip.in.ua — отправить warning email на admin@provoip.in.ua для -H, -l error, -l selftest, и -f

Другие директивы для smartd.conf:

* взято из /usr/local/etc/smartd.conf.sample

 -d TYPE Set the device type: ata, scsi, marvell, removable, 3ware,N, hpt,L/M/N
 -T TYPE set the tolerance to one of: normal, permissive
 -o VAL Enable/disable automatic offline tests (on/off)
 -S VAL Enable/disable attribute autosave (on/off)
 -n MODE No check. MODE is one of: never, sleep, standby, idle
 -H Monitor SMART Health Status, report if failed
 -l TYPE Monitor SMART log. Type is one of: error, selftest
 -f Monitor for failure of any 'Usage' Attributes
 -m ADD Send warning email to ADD for -H, -l error, -l selftest, and -f
 -M TYPE Modify email warning behavior (see man page)
 -s REGE Start self-test when type/date matches regular expression (see man page)
 -p Report changes in 'Prefailure' Normalized Attributes
 -u Report changes in 'Usage' Normalized Attributes
 -t Equivalent to -p and -u Directives
 -r ID Also report Raw values of Attribute ID with -p, -u or -t
 -R ID Track changes in Attribute ID Raw value with -p, -u or -t
 -i ID Ignore Attribute ID for -f Directive
 -I ID Ignore Attribute ID for -p, -u or -t Directive
 -C ID Report if Current Pending Sector count non-zero
 -U ID Report if Offline Uncorrectable count non-zero
 -W D,I,C Monitor Temperature D)ifference, I)nformal limit, C)ritical limit
 -v N,ST Modifies labeling of Attribute N (see man page)
 -a Default: equivalent to -H -f -t -l error -l selftest -C 197 -U 198
 -F TYPE Use firmware bug workaround. Type is one of: none, samsung
 -P TYPE Drive-specific presets: use, ignore, show, showall
# Comment: text after a hash sign is ignored
# \ Line continuation character
# Attribute ID is a decimal integer 1 <= ID <= 255
# except for -C and -U, where ID = 0 turns them off.
# All but -d, -m and -M Directives are only implemented for ATA devices
#
# If the test string DEVICESCAN is the first uncommented text
# then smartd will scan for devices /dev/hd[a-l] and /dev/sd[a-z]
# DEVICESCAN may be followed by any desired Directives.

 

Sources:

man smartctl
man smartd.conf
http://www.ixbt.com/storage/hdd-smart-testing.shtml
http://rtfm.co.ua/s-m-a-r-t-proverka-hdd-opisanie-atributov-znachenie-atributov-utility-parametry/
http://www.wandmagic.ru/news/178.html
http://www.lexpr.ru/node/336

Стандартные тональные сигналы линии

 

ОТВЕТ СТАНЦИИ — информирует абонента о готовности станции к приему набора номера или дополнительных видов услуг:

tone_ответ_станции_mini

Частота, Гц: 425 , непрерывный сигнал


ТОНАЛЬНЫЙ ВЫЗОВ — информирует абонента о поступлении к нему вызова:

tone_тональный_вызов_mini

Частота, Гц: 515, 425, 625; сигнал = 3 частоты подряд в заданой последовательности (каждая по 330 мс) = 1 с, пауза 4 с


КОНТРОЛЬ ПОСЫЛКИ ВЫЗОВА — информирует вызывающего абонента о посылке вызывного сигнала вызываемому абоненту:

tone_контроль_посылки_вызова_mini

Частота, Гц: 425 , сигнал — 1 с, пауза — 4 с;


ЗАНЯТО — информирует абонента о занятости вызываемого абонента после набора номера или об отбое другого абонента после разговора:

tone_занято_mini

Частота, Гц: 425 , сигнал — 400 мс, пауза — 400 мс;


ЗАНЯТО ПРИ ПЕРЕГРУЗКЕ — информирует вызывающего абонента об отказе в обслуживании из-за отсутствия свободных соединительных линий или станционных приборов:

tone_занято_при_перегрузке_mini

Частота, Гц: 425 , сигнал — 200 мс, пауза — 200 мс;


УКАЗАТЕЛЬНЫЙ СИГНАЛ — информирует абонента о невозможности установления соединения из-за устойчивой причины:

tone_указательный_сигнал_mini

Частота, Гц: 950, 1400, 1800; сигнал = 3 частоты подряд в заданой последовательности (каждая по 330 мс) = 1 с, пауза 1 с


СИГНАЛ ВМЕШАТЕЛЬСТВА — информирует абонентов, участвующих в разговоре, о подключении оператора или третьего абонента:

tone_сигнал_вмешательства_mini

Частота, Гц: 425 , 2 посылки сигнала: сигнал — 250 мс, пауза — 250 мс;


СИГНАЛ УВЕДОМЛЕНИЯ — информирует абонента, занятого в разговоре, о поступлении ему нового вызова:

tone_сигнал_уведомления_mini

Частота, Гц: 425 , сигнал — 200 мс, пауза — 5 с;


КОНТРОЛЬ ПОСЫЛКИ СИГНАЛА УВЕДОМЛЕНИЯ (ОЖИДАНИЕ) — информирует вызывающего абонента о посылке вызываемому абоненту сигнала уведомления:

tone_контроль_посылки_сигнала_уведомления_mini

Частота, Гц: 425 , сигнал — 200 мс, пауза — 5 с;


ПРЕДУПРЕДИТЕЛЬНЫЙ СИГНАЛ — информирует абонента об окончании оплаченого периода при связи с местного таксофона:

tone_предупредительный_сигнал_mini

Частота, Гц: 1400 , 2 посылки сигнала: сигнал — 1 с, пауза — 1 с;


СИГНАЛ ПРЕДУПРЕЖДЕНИЯ О ЗАПИСИ — информирует абонента о том, что разговор записывается:

tone_сигнал_предупреждения_о_записи_mini

Частота, Гц: 1400 , сигнал — 400 мс, пауза — 15 с;


СИГНАЛ НЕПОЛНОГО СБОРА — информирует абонентов, участвующих в конференц-связи, о неполном сборе:

tone_сигнал_неполного_сбора_mini

Частота, Гц: 425 , сигнал — 300 мс, одиночная посылка;


СИГНАЛ ОТКЛЮЧЕНИЯ УЧАСНИКА КОНФЕРЕНЦ-СВЯЗИ — информирует абонентов, участвующих в конференц-связи, об отключении одного из участников разговора:

tone_сигнал_отключения_участника_конференции_mini

Частота, Гц: 425 , сигнал — 300 мс, одиночная посылка;


Характеристики сигналов были подобраны согласно действующему стандарту на територии Украины — ГОСТ 28384-89.

Скачать  ГОСТ 28384-89

FreeBSD: Custom kernel — Создаем «свое» ядро

root@provoip # uname -i
GENERIC

 

1. Наличие исходников

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

Проверяем директорию /usr/src — если она пустая, то исходников нет (если, конечно, вы их не переместили куда-нибудь).

В /usr/src/sys находятся поддиректории с названиями поддерживаемых системой архитектур — amd64, i386,powerpc и др. Все, что находится в определенной поддиректории, относится только к определенной архитектуре. В каждой такой поддиректории находится поддиректория conf, которая содержит GENERIC конфигурацию ядра для этой архитектуры.

cd /usr/src/sys/amd64/conf/
root@provoip:/usr/src/sys/amd64/conf # ls
DEFAULTS GENERIC GENERIC.hints Makefile NOTES

 

2. Файл конфигурации ядра

 

— Если нужно урезать конфигурацию ядра:

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

root@provoip:/usr/src/sys/amd64/conf # cp GENERIC PROVOIP

 

— Если нужно расширить конфигурацию ядра:

Можно также скопировать GENERIC в свой файл и дописать нужные опции, а можно поступить следующим образом:

создать  свой файл конфигурациии ядра — например, PROVOIP — там указать только дополнительные опции и подключить к нему  файл GENERIC с помощью директивы include.

/usr/src/sys/amd64/conf/PROVOIP

# add Generic kernel
include GENERIC

ident PROVOIP

# IPFW
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=5
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPDIVERT
options IPFIREWALL_NAT
options LIBALIAS

 

3. Сборка и установка Custom kernel
root@provoip # cd /usr/src

Собираем с указанием конфигурационного файла ядра:

root@provoip:/usr/src # make buildkernel KERNKONF=PROVOIP

Устанавливаем тоже с указанием конфигурационного файла ядра:

root@provoip:/usr/src # make installkernel KERNKONF=PROVOIP 

-эта команда скопирует новое ядро в /boot/kernel/kernel, а старое сохранит в /boot/kernel.old/kernel.

Перезагружаемся и загружаемся с новым ядром.

root@provoip # uname -i
PROVOIP

Freeswicth: vars.xml

Freeswitch FAQ:http://pro-voip.com.ua freeswitch
Q: Какая разница между ${var} и $${var} в конфигурационных файлах?

  • ${var} — эта переменная вычисляется, когда встречается в диалплане;
  • $${var} — эта переменная вычисляется при загрузке FS или при reloadxml.
Preprocessor variables

Переменные $${var} называют препроцессорными — preprocessor variables.Чаще всего используются для установки дефолтных значений.

Эти переменные устанавливаются вручную в файле vars.xml;

Например:

Кстати, строки с <X-PRE-PROCESS …> , где бы они не встречались, НИКОГДА не комментируются! Или оставляем, или удаляем.

Predefined variables

Отдельный тип переменных — predefined (предопределенные) переменные.

  • hostname
  • local_ip_v4
  • local_mask_v4
  • local_ip_v6
  • switch_serial
  • base_dir
  • recordings_dir
  • sound_prefix
  • sounds_dir
  • core_uuid
  • zrtp_enabled
  • nat_public_addr
  • nat_private_addr
  • nat_type

Эти переменные устанавливаются динамически — вычисляются, если возможно, FS’ом на основании своего окружения — и доступны в конфиге как $${variable}.

Вычисленные переменные можно увидеть в fs_cli командой:

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

Freeswitch: SIP-стек Sofia

Осноhttp://pro-voip.com.ua freeswitchвой любой VoIP-телефонии является какой-либо VoIP-протокол (SIP, H.323, IAX и др.), согласно правилам которого и работает эта самая VoIP-телефония. Нативным протоколом для FS является SIP — SIP-стек представлен в виде модуля mod_sofia.

SIP is a crazy protocol and it will make you crazy too if you aren’t careful.

Настройка SIP-стека FS по своему вкусу производится через, так называемые, sip_profile (SIP-профили). В этих профилях, помимо различных настроек sip’а, указываются «фундаментальные» (что-то другого слова не приходит на ум) — это пары ip-port, которые слушает FS на предмет входящих запросов.

Профилей может быть столько, сколько вы можете обеспечить уникальных пар ip-port.

В дефолтной конфигурации FS представлены 2 профиля: internal  и external:

  • internal  — для регистраций внутренних пользователей (users), слушает порт 5060
  • external — для подключения внешних линий (gateways), слушает порт 5080.

Sofia. Логическая структура

Схема:

Sofia-Logical-Structure

То же самое в XML:

 

Физически же эту структуру для удобства администрирования можно разбивать на несколько файлов, не забывая их связать друг с другом в нужной иерархической последовательности с помощью команды препроцессора —  include.

 

Sofia. Profiles

Подробнее про каждую секцию конфигурации профиля


<aliases>

alias — это просто еще одно имя для одного и того же профиля;


<gateways>

gateways — секция подключения к внешним шлюзам; если хотите зарегистрировать FS у оператора и иметь выход во внешний мир, то вам сюда (или в настройку домена — там тоже встречается секция gateway).

Минимальная конфигурация gateway:

 

Некоторые (не все) параметры для расширенной настройки смотрите ниже:

gateway name:
<gateway name=»provoip»>
— имя шлюза; можно указывать реальное доменное имя или ip-адрес; также можно указывать произвольное имя, но тогда реальное доменное имя или ip-адрес нужно будет указать в параметре realm;

username:
<param name=»username» value=»username1» />
— имя пользователя *required*;

realm:
<param name=»realm» value=»provoip.in.ua«/>
— auth realm: *optional* — если это поле не указано, используется имя gateway. realm — это поле sip-запроса аутентификации, которое определяет область отклика аутентификации (заумная фраза не моя — так написано в книге по sip); короче, это «домен», к которому будет относиться пользователь. Обязательно должен содержать реальное имя домена или ip-адрес;

from-user:
<param name=»from-user» value=»5555555«/>
— имя пользователя в поле From: *optional* — если не указано, используется значение поля username;

from-domain:
<param name=»from-domain» value=»provoip.in.ua«/>
— имя домена в поле From: *optional* — если не указано, используется значение поля realm;

password:
<param name=»password» value=»mystrongpassword«/>
— пароль пользователя *required*;

extension:
<param name=»extension» value=»8888888«/>
— номер (extension) для входящих звонков *optional* — если не указано, исп-ся значение поля username;

proxy:
<param name=»proxy» value=»provoip.in.ua«/>
— proxy host: *optional* — если не указан, исп-ся значение поля realm;

register-proxy:
<param name=»register-proxy» value=»pro-voip.com.ua«/>
— посылать register на этот хост (другими словами, регистрироваться на этом хосте) *optional* — если не указано, исп-ся значение поля proxy;

expire-seconds:
<param name=»expire-seconds» value=»60«/>
— register expire (in seconds) *optional* — по умолчанию 3600 сек;

register:
<param name=»register» value=»false«/>
— не регистрироваться; параметр пригодится, если, например, нужно будет построить sip-транк с оператором на множество номеров, а оператор вас авторизирует по ip-адресу и не дает вам логин-пароль 🙂 НО! даже если вы не используете регистрацию, то поля username и password все равно должны быть заполнены какими-либо значениями (пофигу какими);

register-transport:
<param name=»register-transport» value=»udp«/>
— какой транспорт (читай: протокол транспортного уровня) — tcp или udp — использовать при регистрации; default — udp;

retry-seconds:
<param name=»retry-seconds» value=»30«/>
— если регистрация потерпела неудачу или отвалилась по таймауту, то сколько секунд ждать перед повторной попыткой? — указываем здесь; default — 30;

caller-id-in-from:
<param name=»caller-id-in-from» value=»true«/>
— при исходящих вызовах через данный шлюз callerid берем из поля From (берем значение поля From A-ноги и суем это значение в поле From B-ноги); default —  false — callerid = username;

<!—extra sip params to send in the contact—>
<!—<param name=»contact-params» value=»tport=tcp»/>—>
<!—send an options ping every x seconds, failure will unregister and/or mark it down—>
<!—<param name=»ping» value=»25″/>—>

</gateway>

Настройки вне тега <gateway>, но внутри тега <gateways> (пока без описания):

<!—rfc5626 : Abilitazione rfc5626 ///—>
<!—<param name=»rfc-5626″ value=»true»/>—>
<!—rfc5626 : extra sip params to send in the contact—>
<!—<param name=»reg-id» value=»1″/>—>


<domains>

domain — индикатор, который дает установку профилю открыть XML-регистр FS’а и выполнить действия над доменом в зависимости от следующих настроек:

  • alias: [true/false] — автоматически создавать алиас для данного профиля; alias name = domain name в этом случае;
  • parse: [true/false] — сканировать домен на наличие gateway и включать их в этот профиль;
  • name: [<string>] — здесь указываем имя конкретного домена или all (для всех доменов), над которыми производим вышеперечисленные действия alias и parse.

Например:

дает указание создавать алиасы к этому профилю для всех доменов и не сканировать домены на наличие gateway.


<settings>

 

Basic settings

user-agent-string:
<param name=»user-agent-string» value=»FreeSWITCH Rocks!»/>
— выставляем свой User-Agent заголовок во всех SIP-сообщениях. Можно выставлять любое значение. но нужно быть внимательным к спец-символам — например,  другие SIP-сервера, с которыми общается наш FS, может отклонить сообщение из-за наличия в заголовке User-Agent символа «@». Без установки этого параметра, User-Agent будет выглядеть примерно следующим образом (зависит от вашей инсталяции FS):

User-Agent: FreeSWITCH-mod_sofia/1.2.22+git~20140311T001049Z~9495f2534d~32bit

shutdown-on-fail:
<param name=»shutdown-on-fail» value=»true»/>
— если нужно, чтобы FS потушился, если данный профиль не загрузится, ставим true; default: false;

context:
<param name=»context» value=»public»/>
указываем, в какой контекст помещать входящие вызовы, которые идут на ip-port этого профиля

sip-port:
<param name=»sip-port» value=»5060″/>
— порт, который слушает FS на предмет входящих соединений;

sip-ip:
<param name=»sip-ip» value=»10.10.10.10″/>
— ip-адрес, на который FS принимает входящие sip-запросы; Не используйте доменные имена — только IP-адрес!

rtp-ip:
<param name=»rtp-ip» value=»10.10.10.10″/>
— ip-адрес, на который FS принимает rtp-потоки; Не используйте доменные имена — только IP-адрес!

dialplan:
<param name=»dialplan» value=»XML»/>
— какой тип диалплана использовать для пользователей этого профиля.

 

Media relaited options

resume-media-on-hold и bypass-media-after-hold:

<param name=»media-option» value=»resume-media-on-hold»/>
<param name=»media-option» value=»bypass-media-after-hold»/>

— если FS настроен так, чтобы не проксировать через себя медиа-потоки (bypass_media = true), а у нас появилась необходимость перехватить медиапоток, нажав на кнопку hold, то используются эти две медиа-опции (работают в паре): resume-media-on-hold перехвачивает медиа, а bypass-media-after-hold после повторного нажатия hold, возвращает вызов в исходный bypass-media режим.

bypass-media-after-att-xfer:
<param name=»media-option» value=»bypass-media-after-att-xfer»/>
— после перевода вызова (при attended transfer) вернуться к режиму bypass media.

inbound-bypass-media и inbound-proxy-media:
— два взаимоисключающих параметра (если один параметр true, второй должен быть false)- установка режима работы с медиапотоками.
<param name=»inbound-bypass-media» value=»true»/> — не прокрисовать медиапоток через FS; FS контролирует только SIP-сессию, а rtp-потоки текут напрямую между конечными точками.
<param name=»inbound-proxy-media» value=»true»/> — проксировать медиапоток через FS; rtp-потоки проходят через FS, но модифицировть их мы не можем.
default: false/false — при такой конфигурации rtp-потоки проксируются через FS и можем с ними производить любые манипуляции.

t38-passthru:
<param name=»t38-passthru» value=»true»/>
— [true/false/once] — факс по протоколу t38

 

Codecs related options

inbound-codec-prefs:
<param name=»inbound-codec-prefs» value=»PCMA, PCMU»/>
— порядок предпочтения того или иного кодека в процессе согласования кодека с другой стороной диалога при входящих (inbound) вызовах. Здесь предпочтение кодеку PCMA.

outbound-codec-prefs:
<param name=»outbound-codec-prefs» value=»PCMA, PCMU»/>
— то же самое, но по отношению к исходящим (outbound) вызовам.

codec-prefs:
<param name=»outbound-codec-prefs» value=»PCMA, PCMU»/>
— то же самое, но для inbound и outbound направлений одновременно.

inbound-codec-negotiation:
<param name=»inbound-codec-negotiation» value=»generous»/>
— параметр, значение которого решает «кто главный» в процессе согласования кодека:

  • «generous» — «главный» список кодеков удаленной стороны;
  • «greedy» — «главный» список кодеков FS;
  • «scrooge» — идет дальше «greedy» — FS выигрывает даже тогда, когда противоположная сторона лжет о своих возможностях в ходе переговорного процесса.

inbound-late-negotiation:
<param name=»inbound-late-negotiation» value=»true»/>
— позволяет сначала пройтись по диалплану, а зачем уже выбирать кодек для a-leg.

disable-transcoding:
<param name=»disable-transcoding» value=»true»/>
— запретить транскодинг; FS будет предлагать вызываемой стороне только те кодеки, которые поддерживает вызывающая сторона.

 

DTMF

dtmf-type:
<param name=»dtmf-type» value=»info»/>

  • «info»
  • «rfc2833»
  • «none»

— тип DTMF. Этот же параметр можно представить в виде переменной в секции <gateway> или <user> (но это не канальная переменная!):

Заметьте, параметр dtmf-type пишется через дефис «-«, а переменная dtmf_type через нижнее подчеркивание «_».

Для распознавания inbound DTMF есть приложение в диалплане start_dtmf.

rfc2833-pt:
<param name=»rfc2833-pt» value=»101″/>
— rfc2833 payload type — идентификатор для отличия rfc2833 dtmf от остальных типов rtp-трафика.

dtmf-duration:
<param name=»dtmf-duration» value=»2000″/>
— длительность dtmf-тона.

liberal-dtmf:
<param name=»liberal-dtmf» value=»true»/>
— всегда предлагать rfc2833, а принимать и rfc2833, и info dtmf.

 

Информация почерпана с wiki.freeswitch.org. Продолжение следует…

TFTP: Запуск tftpd через inetd

tftp — (trivial file transfer protocol)- простой протокол передачи файлов; используется при загрузке бездисковых систем, для загрузки обновлений и конфигураций в сетевые устройства; для своей работы использует udp. tftp-сервер слушает порт 69.
tftpd — реализация tftp-сервера на Unix-хостах.
inetd — интернет «super-server» — используется для вызова других демонов. inetd слушает запросы на соединения по определенным портам (которые в свою очередь соответствуют определенным сервисам). Сервисы, которые обслуживает inetd, задаются в файле конфигурации /etc/inetd.conf.

Настройка

В файле /etc/inetd.conf раскомментируем следующую строку:

tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /tftpboot

Опции tftpd:

  • -l — включаем логирование с использованием syslog. Прим., логирование LOG_FTP сообщений должно быть включено в настройках syslog — файл syslog.conf: «ftp.info /var/log/xferlog»;
  • -s /tftpboot — задаем директорию для хранения файлов, доступных извне по tftp;
  • -w — по умолчанию, запись в директорию tftp запрещена, но мне нужно скидывать файлы конфигурации по tftp на сервер, поэтому запись разрешаем этой опцией:
tftp    dgram   udp     wait    root    /usr/libexec/tftpd      tftpd -l -w -s /tftpboot

Возможная невнимательность: не дописывайте опции после -s и перед /tftpboot, потому как «-s /tftpboot» неделима.   
… tftpd -l -s -w /tftpboot … работать не будет.

Создаем директорию tftp-сервера:

root@provoip# mkdir /tftpboot
Запуск

Добавляем inetd в автозапуск:

root@provoip# ee /etc/rc.conf

# INETD FOR TFTPD
inetd_enable="YES"

Стартуем и проверяем:

root@provoip# /etc/rc.d/inetd start
Starting inetd.
root@provoip# sockstat | grep 69
root     inetd      20366 6  udp4   10.10.10.10:69      *:*

 

Freeswitch: Регистрация пользователя

http://pro-voip.com.ua freeswitchSIP-аккаунты в FS построены по принципу электронной почты. Каждый аккаунт принадлежит определенному домену. Например, 1000@example.com — это абонент с номером 1000 в домене example.com. Доменом может выступать  ip-адрес FS’а или доменное имя, которое с помощью DNS преобразуется в тот же ip-адрес.

В общем виде структура домена выглядит следующим образом:

Вот такая иерархия:

  • есть домен;
  • домену принадлежат пользователи;
  • пользователи могут объединяться в группы;
  • пользователи могут находиться в нескольких группах одновременно.

Параметры (params) и переменные (variables) могут быть указаны в настройках:

  • домена — тогда они распостраняются на всех пользователей домена;
  • группы — распостраняются на пользователей группы;
  • отдельного пользователя — соответсвенно, распостраняются только на этого пользователя.

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

 

Расположение файлов пользователей

$FS_ROOT/conf/directory/

Дефолтная конфигурация FS предлагает вести конфигурационные файлы домена и пользователей следующим образом:

  • есть отдельно файл домена example.com.xml
  • и есть директория , в котором хранится множество xml-файлов пользователей — по одному файлу на каждого пользователя;
  • директория с пользователями example.com подключается к файлу домена example.com.xml с помощью   X-PRE-PROCESS. Вот как это выглядит в файле домена:

$FS_ROOT/conf/directory/example.com.xml

Минимальная конфигурация подключения пользователя предполагает задание значений ID (логин) и password (пароль):

$FS_ROOT/conf/directory/example.com/1000.xml

 

Группы пользователей

Группа (group) — это логическое объединение пользователей. Может использоваться для задания общих параметров, чтобы не прописывать их для каждого пользователя отдельно; также применяется для групповых вызовов, чем упрощает написание диалплана.

Следующий пример конфигурации домена говорит о том, что:

  • в домене example.com создаем группу из всех пользователей домена, называем группу example.com;
  • создаем группу managers, которая состоит из пользователей 1000, 1001 и 1002;
  • создаем группу support, которая состоит из пользователей 1000, 2000 и 2001;

$FS_ROOT/conf/directory/example.com.xml

В группы managers и support пользователи были добавлены с указанием типа «pointer» — указатель — именно благодаря этому можно одного и того же пользователя добавлять одновременно в несколько групп.