По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Вам, как сетевому инженеру, крайне важно разбираться в том, каким образом вызовы VoIP влияют на пропускную способность канала в вашей компании. И по мере того, как работа из дома становится новой нормой, важность этого понимания возрастает еще больше.
Расчет пропускной способности ваших IP-вызовов Cisco сводится к нескольким простым вычислениям. Такое уравнение поможет вам и вашей компании определить потребности сети.
Эта статья разделена на 2 части. В первой объясняется терминология для проведения вычислений. Во второй – дается практический пример расчетов пропускной способности канала. Кроме того, мы поговорим о том, как разные протоколы влияют на ширину полосы, и где почитать подробнее о вычислениях.
Что такое кодек?
«Кодек» расшифровывается как «кодер/декодер». В принципе, его полное название должно помочь в понимании функций, но давайте поговорим о них подробнее. Когда человек осуществляет вызов через VoIP и разговаривает, его голос должен переводиться в нечто понятное для компьютера. Кодек – это часть программного обеспечения, которая и выполняет цифровое преобразование голоса или любого другого звука. Давайте вкратце обсудим, как это происходит.
Основная функция кодека – преобразование голоса в цифровой сигнал. Голос – это звуковая волна, а компьютер может получить лишь часть, или выборку, этой волны с помощью математического процесса под названием интерполяция. Иначе говоря, кодек разрезает волную на несколько выборок, а затем приблизительно рассчитывает оставшуюся часть волны. Потом он берет этот примерный расчет и переводит его в бинарные данные, которые вновь преобразуются в голос. Теперь, когда мы поняли, как работает кодек, настало время поговорить о четырех примерах, которыми мы будем пользоваться в вычислениях.
4 кодека VoIP для Cisco
4 кодека VoIP для Cisco – это G.711, G.729, G.7622 и ILBC. Для каждого кодека существует своя величина выборки. Величина выборки кодека (Codec Sampling Size) – это количество байт, которое используется для оцифровки образца сигнала. Поговорим об этом подробнее, начиная с G.711.
Что такое G.711?
Кодек G.711 – это кодек, который специализируется на ясности и производительности. Именно поэтому у него высокая скорость передачи данных, или битрейт (64 000 КБ от пропускной способности сети), а величина выборки кодека – целых 80 байт. В основном, он используется для VoIP, но подходит также и для факсов.
Что такое G.729?
Кодек G.729 – это идеальное решение при ограниченной пропускной способности канала. Например, он хорошо подходит для малых бизнесов. Однако крупные компании, одновременно обслуживающие многих клиентов, быстро столкнутся с ограничениями G.729. Этот кодек занимает 8 000 КБ полосы и ограничивается только VoIP.
Что такое G.722?
G.722 похож на G.711. Величина выборки тоже 80 байт, а скорость передачи данных – 64 кбит/сек. Основное отличие заключается в том, что в G.722 доступна более широкая речевая полоса частот на 50-7000 Гц, тогда как речевая полоса в G.711 варьирует от 200 до 3000 Гц. G.722 хорошо подходит для случаев, когда звук должен быть особенно точным.
Что такое iLBC?
ILBC расшифровывается как Internet Low Bitrate Codec, или интернет-кодек с низкой скоростью передачи данных. Его битрейт составляет порядка 15 кбит/сек, а величина выборки кодека – 38 байт. Самое лучшее в iLBC – его способность снижать качество речи при потере большого количества блоков данных (фреймов).
Теперь, когда мы детально разобрались в 4 разных протоколах, давайте вернемся к разговору о том, как рассчитать пропускную способность канала для каждого из них.
Расчет пропускной способности канала
Рассчитать пропускную способность канала можно в несколько простых шагов. Первым делом обозначьте все необходимые переменные. Обязательные переменные перечислены ниже:
кодек и скорость передачи данных
величина выборки кодека
интервал выборки кодека
средняя оценка разборчивости речи (MOS)
размер полезной части голосового пакета
Обратите внимание на четвертую переменную – среднюю оценку разборчивости речи. Она оценивает качество звука (от 1 до 5) при использовании конкретного кодека.
Рассмотрим пример в таблице:
Кодек и битрейт
Величина выборки кодека
Интервал выборки кодека
Средняя оценка разборчивости речи
Размер полезной части голосового пакета
Пропускная способность для Ethernet
G.711 (64 кбит/сек)
80
10
4,1
160
87,2
G.729 (8 кбит/сек)
10
10
3,92
20
31,2
G.722 (64 кбит/сек)
80
10
4,13
160
87,2
ILBC (15,2 кбит/сек)
38
10
4,14
38
38,4
Помните, что наша цель – найти самое последнее число из таблица, то есть пропускную способность для Ethernet. Основное уравнение принимает вид:
Общая пропускная способность = Размер пакета х Пакетов в секунду
Но выполнить расчеты по этой формуле не так уж просто, поскольку в таблице данных отсутствуют значения «Размер пакета» и «Пакетов в секунду». Давайте рассчитаем пропускную способность для кодека G.711 со скоростью передачи данных в 87,2 кб/сек.
Вычисление размера пакета
Для начала определим размер пакета для отдельного вызова VoIP. Выражение для определения этого параметра принимает вид:
Размер выборки в байтах = (Размер пакета x пропускная способность кодека) / 8
Переменную «Размер выборки в байтах» можно взять из таблицы (см. «Размер полезной части голосового пакета), а пропускная способность кодека берется из первого столбца. Теперь наше выражение выглядит так:
160 байт = (размер пакета x 64 000) / 8
Обратите внимание, что мы делим правую часть на 8, потому как все вычисляется в битах, а итоговый ответ нужно получить в байтах. Далее умножим каждую часть на 8, чтобы убрать 8 из знаменателя. Получается следующее:
1280 = (размер пакета x 64 000)
И, наконец, найдем размер пакета, разделив каждую часть на 64 000. В результате мы нашли размер пакета в 0,02 или 20 мс. То есть голосовую выборку для пропускной способности в 20 мс. Например, это количество времени, которое требуется, чтобы произнести букву «П» в слове «Привет», – именно это мы и вычисляли.
Добавление потребления ресурсов в объем выборки
Вы же помните, что VoIP не происходит в вакууме. Множество других процессов приводят к дополнительному потреблению ресурсов. Вернемся к нашему размеру полезной части голосового пакета в 160 байт. Один только Ethernet добавит к этой цифре еще 18 байт. Затем, как мы знаем, IP, UDP и протоколы RTP не останутся в стороне и добавят лишние 40 байт. Получается, что настоящий размер выборки становится 160 + 40 + 218 – это общий размер выборки в 218 байт.
Расчет общей пропускной способности
Теперь мы дошли до финальной части. Ранее уже говорилось, что общая пропускная способность равна размеру пакета х количество пакетов в секунду. Мы нашли наш размер выборки – 20 мс. Чтобы найти количество пакетов, передаваемых по проводам за этой время, воспользуемся следующим уравнением:
1000 мс / размер пакета = 1000 мс / 20 мс = 50 пакетов в секунду.
Мы рассчитали, что размер пакета (он же размер выборки) равен 218 байт. И теперь можно получить ответ:
Общая пропускная способность = 218 байт x 50 пакетов
Общая пропускная способность = 10 900 байт/сек
Переведем это число в килобайты, разделив его на 8. В результате мы получаем 87,2 кб/сек.
Заключение
В статье было много специальной лексики и математических расчетов. Но, разобравшись в этом, вы станете бесценным членом команды сетевых инженеров и сможете работать с VoIP-технологиями Cisco.
Не все любят управлять MySQL через Linux. Management Studio – говорили они. CLI – говорим мы. Бро, эта статья про то, как дать права доступа (permissions) учетным записям в Linux – среде.
Логинимся
Подключаемся к своему серверу по SSH. В командной строке вводим:
mysql -u root -p
Хоп – и мы уже в режиме управления MySQL:
mysql>
Вообще, эта статья про права доступа. Но на всякий случай вот тебе синтаксис команды, которая позволит создать нового пользователя с паролем в MySQL:
CREATE USER 'логин'@'localhost' IDENTIFIED BY 'пароль';
А теперь права
Друже, синтаксис команды, которая даст нужные тебе права крайне простой. Вот он:
GRANT права ON база_данных.таблица TO 'логин'@'localhost';
Разберемся слева на право:
права - могут быть следующие:
ALL – дает полный доступ к базе данных. Кстати, если база данных не определена в команде, то даст полный доступ ко всему в MySQL (ох не надо так);
CREATE – позволяет пользователю создавать базы данных и таблицы;
DELETE – дает право пользователю удалять строки из таблиц;
DROP – дает право удалять базы данных и таблица целиком (ну, так тоже не надо);
EXECUTE – дает право пользователю выполнять хранимые процедуры;
GRANT OPTION – с этой опцией юзер сможет давать права (или удалять) другим пользователям;
INSERT – дает право хранить молчанию и все что он скажет будет.. Ладно, это просто право на добавление новых строк в таблицу;
SELECT – самое распространенное право – парсить (извлекать) данные из SQL для чтения;
SHOW DATABASES - этому пользователю можно будет смотреть на список баз данных;
UPDATE – дает право пользователю изменять текущие строки в таблице;
база_данных собственно, база данных, внутри которой живет ваша таблица;
таблица - сама таблица. Табличка, table, le tableau;
логин - имя пользователя вашего юзверя;
Все просто. Пробежимся по примерам.
Пример №1
Давайте дадим права юзеру example, с помощью которых он сможет создавать любые БД и таблицы:
GRANT CREATE ON *.* TO 'example'@'localhost';
Использование звездочки (*) – это как маска, под которое попадает все.
Пример №2
Дадим пользователю example права на удаление любых таблиц в заранее обозначенной базе данных, которая называется easybro
GRANT DROP ON easybro.* TO 'example'@'localhost';
Как видишь, мы юзаем команду DROP. Кстати, лучшая практика после внесения изменения сделать небольшую перезагрузку прав командой:
FLUSH PRIVILEGES;
Как посмотреть права определенного пользователя в MySQL
Посмотреть права очень просто. Опять же, на примере нашего юзера example:
SHOW GRANTS FOR 'example'@'localhost';
Для пользователей, которые обладают премиальной лицензии на Cisco Unified Contact Center Express (UCCX), одной из самых крутых фич является наличие возможной интеграции и отправки запросов в базу данных. Сами запросы могут строиться на базе введенной звонящим информации, его номера – чего угодно.
Безусловно важно сделать ¬¬изначальный дизайн скриптов правильным и учитывать нагрузку. Большие и тяжелые скрипты, которые имеют много «плеч» в БД (базу данных), значительно увеличивают нагрузку на ресурсы сервера. А если БД еще и удалена от сервера CCX и имеет место сетевая задержка, то может иметь место прямое воздействие на бизнес и лояльность звонящего вам клиента.
Обзор Cisco Unified CCX Script Editor
Для создания и управления IVR скриптами в UCCX используется специальный инструмент - Cisco Unified CCX Editor. Он позволяет визуально управлять некими блоками, которые отвечают за то, или иное действие. Выглядит эта палетта следующим образом:
Давайте рассмотрим раздел Database. Здесь мы видимо 4 пункта:
DB Get - сопоставление полученных данных из БД к переменным скрипта;
DB Read - подключение к серверу и запрос;
DB Release - закрываем подключение к БД;
DB Write - если нужно внести изменения в БД, используем Write метод;
На скриншоте выше видно, что каждый скрипт начинается с события Start и заканчивается событием End. Во время звонка, по ходу выполнения скрипта, мы можем запрашивать данные из БД сколько угодно раз. Каждый запрос имеет свой отдельный список шагов, которые указаны в списке из 4х пунктов выше.
Мы рекомендуем предварительно обкатать все SQL запросы, доступ системы и прочие рабочие факторы перед выгрузкой в продуктивную среду
Например, давайте посмотрим, что скрыто внутри блока DB Read:
Взглянем на поля, которые доступны для конфигурации:
DB Resource Name - метка запроса. Своего рода метка;
Data Source Name - источник данных (DSN), указанное в административной консоли UCCX (Cisco Unified CCX Administration Database);
Timeout (in sec) - пауза выполнения запроса. Этот интервал защитит вашу систему от, например, потери связи с БД. То есть, максимум 7 секунд ожидания. Кстати, если указано как 0, то запрос не будет ограничен по времени;
Теперь из вкладки General переходим во вкладку Field Selection:
Запрос - SQL – команда (запрос), который вы ходите выполнить. Например, SELECT fld1, fld2 from tbl where fld1 = $variable - выбираем два поля из таблицы, где одно из полей равно переменной, которую, мы ранее, присвоили в скрипте (DTMF от клиента, например);
Test (кнопка) - нажмите на эту кнопку, чтобы проверить синтаксис запроса и подключение к БД;
Number of rows returned - количество вернувшихся строк запроса, в случае, если была нажата кнопка Test;
Show all fields (select table/view) - показать все поля в таблице, к которой выполняется подключение;
Отлично, разобрались. Теперь давайте взглянем на блок DB Get:
DB Resource Name - лэйбл или имя для этого запроса;
Data Source Name - имя БД (настраивается на стороне Cisco Unified CCX Administration);
Refresh Database Schema (кнопка) - кнопка, которая отвечает за подтягивание данных БД и таблицы в CCX Editor;
Переходим во вкладку Field Selection:
Table/View - данное поле показывает имя таблицы из БД, которая выбрана во вкладке General, которую мы описывали выше;
Табличное поле:
Field Name - имя поля, в выбранной БД;
Data Type - типа данных (строка/число и так далее);
Local Variable - переменная скрипта, которая будет хранить соответствующее поле;
Add/Modify (кнопки) - кнопки, которые отвечают за модификацию полей (кроме типа данных, он read only);
Полученные данные можно использовать в скрипте, например, чтобы озвучивать клиенту (TTS) его данные по номеру телефона, или по введенным цифрам (номер заказа). Кстати, аналогичную фичу мы реализовали в связке Yandex.SpeechKit и Asterisk.