По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Вам, как сетевому инженеру, крайне важно разбираться в том, каким образом вызовы 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.
img
Представьте ситуацию, пользователи пытаются получить доступ к вашему сайту, но он не открывается. Знаете в чём дело? Возможно, есть ошибки, которые не были выявлены и решены раньше. Разочарованные пользователи покидают ваш сайт, а вы теряете лояльных пользователей. Как решить эту проблему? Как узнать о состоянии сайта раньше пользователей? Существует два возможных способа - eсли вы не против потратить немного денег, то можно обратиться к таким мониторинговым решениям, как StartCake и т.п. Однако если вы разработчик или не готовы тратиться ежемесячно, можете воспользоваться преимуществами API Geekflare - Site Up? Данный API проверяет доступность сайта из разных точек. В данном материале рассмотрим Python код, который немедленно уведомит вас через Gmail, как только сайт станет недоступен. Начнем с изучения API «Is Site Up?» API Is Site Up? Перед началом работы с API необходимо установить пакет requests, который в Python используется для работы с API. Но не обязательно использовать Python. Можно использовать любой другой язык. В любом случае, убедитесь, что настроили все необходимое, чтобы сделать API запрос. Итак, для тех, кто использует Python, установите пакет запросов с помощью команды: pip install requests Выполните настройку для других языков (если выбран другой язык, кроме Python) и переходите к следующим шагам. Теперь перейдите на страницу API Geekflare. Вы можете найти различные типы API, включая «Is Site Up?». Для использования API Geekflare нам нужен ключ API, который мы можем получить через RapidAPI. Нажмите на кнопку GET API KEY, чтобы перейти к RapidAPI. RapidAPI откроется в новой вкладке и выглядит следующим образом: Чтобы получить ключ API нужно создать учетную запись. Создайте учетную запись в RapidAPI, если у вас ее нет. Затем в верхней части всех доступных API Geekflare вы увидите API «Is Site Up?», который мы ищем. Если он не активен, найдите его с помощью поиска и нажмите на него. После этого в правой стороне должно отобразиться руководство по данному API. Из раздела Code Snippets в правой части выберите Python -> Requests. Или же если вы не используете Python, выберите другой язык с соответствующим пакетом. Вы получите код для вызова API «Is Site Up?». Давайте изменим его немного, чтобы потом легче было добавлять код. Посмотрите на измененный код в Python. import requests API_URL = "https://geekflare.p.rapidapi.com/up" def make_api_request(): headers = { 'content-type': "application/json", 'x-rapidapi-host': "geekflare.p.rapidapi.com", 'x-rapidapi-key': "YOUR_API_KEY" } payload = r'{"url": "https://www.geekflare.com"}' response = requests.request("POST", API_URL, data=payload, headers=headers) return response.json() if __name__ == '__main__': data = make_api_request() print(data) Замените API_KEY своим собственным ключом API из RapidAPI в приведенном выше коде. Он будет разным для каждого пользователя. Вы найдете его в RapidAPI в разделе Параметры заголовка: Тот же ключ API вы сможете найти в примере кода, как показано ниже. Несколько расположений В приведенном выше коде сайт проверяется из одного датацентра (Нью-Йорк, США). Но мы можем посылать запросы на сайт из разных мест с указав буквенные коды стран в теле запроса. Другие доступные места - Англия (Лондон) и Сингапур. Мы можем передать данные местоположения вместе с URL-адресом сайта следующим образом: { "locations": [ "uk", "us", "sg" ], "url": "geekflare.com" } Вы можете передать предпочитаемые расположения из списка. Мы написали код, чтобы сделать запрос API, который получает данные независимо от того, работает сайт или нет. Пришло время написать еще код, который отправляет почту, когда сайт не работает. Получение уведомления на почту В сети можно найти немало руководств о том, как отправлять электронные письма через Gmail в Python или же использовать следующий код, который использует пакет под названием yagmail специально разработан для отправки почты из Gmail. Перед отправкой сообщения через учетную запись Gmail необходимо включить параметр Разрешить небезопасные приложения. Вы можете включить его здесь. Посмотрим код: def send_mail(): gmail = yagmail.SMTP("gmail", "password") receiver = "receiver@domain.com" subject = "Testing Subject" body = "This is a testing mail" gmail.send( to=receiver, subject=subject, contents=body, ) Полное руководство по yagmail можно найти здесь. Теперь у нас есть код для запросов API и отправки почты. Следующим шагом является вызов send_mail всякий раз, когда в ответе на запрос сайт указывается как недостпный. Итак, откуда мы знаем, что наш сайт не работает или работает? Когда мы посылаем запрос к API «Is Site Up?», он возвращает нам Python словарь с некоторыми данными как следующем скриншоте: В данном словаре есть ключ message. Значение этого ключа и показывает нам состояние сайта. Данный ключ может иметь два значения: Site is up Site is down Итак, мы отправим почту, когда получим сообщение «Site is down». Окончательный код будет выглядеть так: import requests import yagmail API_URL = "https://geekflare.p.rapidapi.com/up" def make_api_request(): headers = { 'content-type': "application/json", 'x-rapidapi-host': "geekflare.p.rapidapi.com", 'x-rapidapi-key': "API_KEY" } payload = r'{"url": "https://www.abcd.com"}' response = requests.request("POST", API_URL, data=payload, headers=headers) return response.json() def send_mail(content): gmail = yagmail.SMTP("gmail", "password") receiver = "email@domain.com" subject = "Your Site is Down" gmail.send( to=receiver, subject=subject, contents=content, ) if __name__ == '__main__': data = make_api_request() message = data['message'] ## seding the mail if message == 'Site is down.': ## extracting the errors from different locations locations_data = data['data'] mail_content = "Your site is down due to unexpected error. See the useful data to resolve errors below. " for location in locations_data: mail_content += f"{location['city']}, {location['country']} - {location['error']} " mail_content += " Check the error and resolve them as soon as possible." send_mail(mail_content) Тело сообщения можете редактировать по своему усмотрению. Мы завершили код отправки почты всякий раз, когда наш сайт не работает. Смотри образец сообщения, полученного с помощью вышеуказанного кода. Но, есть еще проблема. Мы должны выполнить наш код, чтобы проверить, работает ли наш сайт или нет. Частота запуска данного скрипта зависит от ваших предпочтений. Допустим, мы должны проверять сайт каждые час. Правда, мы можем каждый час открыть терминал и запустить скрипт. Но это скучно и неэффективно. Плюс к этому, никто так не делает. Решение напрашивается само: использовать cron для автоматического выполнения нашего кода каждый час. Посмотрим, как его настроить. Настройка Cron Рассмотрим шаги по настройке cron в операционной системе на базе UNIX. Открыть терминал. Выполните команду crontab -e, которая открывает файл crontab на терминале. Нажмите клавишу i для перехода в режим ВВОДА. Теперь добавьте шаблон cron, пути к исполняемому файлу Python и нашему файлу, как указано ниже: 0 * * * * /usr/bin/python3 /home/sample.py Подробно про cron можно прочесть в этой статье. Итак, мы настроили планировщик для ежечасного запуска кода. Если нужно будет указать другое расписание, можно воспользоваться разными утилитами для генерации шаблона расписания для cron. Пожалуй, теперь все. Мы настроили проверку сайта каждый час и получение уведомления на почту, если сайт станет недоступен. Заключение Автоматизация экономит много времени и работает на нас. Можно настроить cron на каком-нибудь облаке, чтобы он постоянно работал, проверял состояние сайта и уведомлял нас при сбое.
img
Начиная с Windows Server 2012 R2 в Hyper-v появились машины второго поколения. Они добавляют некоторые преимущества по сравнению с виртуальными машинами первого поколения, поэтому следует подумать о переходе. Хотя автоматического преобразования не существует, есть способ избежать новой установки и настройки виртуальной машины. Есть несколько причин, по которым рабочие системы до сих пор работают на виртуальных машинах первого поколения. Часто они существуют уже несколько лет и были созданы в версии Hyper-V, которая поддерживает только виртуальные машины 1-го поколения. Их по-прежнему можно использовать в более новой версии гипервизора, и они полностью поддерживаются. И наоборот, также возможно, что версия Windows была изначально установлена на виртуальной машине, которая поддерживает только виртуальные машины 1-го поколения. Гостевая ОС, возможно, за это время была обновлена, но функции 2-го поколения в старой виртуальной машине заблокированы. Может случиться и так, что Gen 1 будет случайно выбран при создании виртуальной машины, поскольку это по-прежнему выбирается по умолчанию в диспетчере Hyper-V. Преимущества 2 поколения Одним из наиболее важных преимуществ новых виртуальных машин является более высокая производительность, поскольку гостевая ОС «знает», что она работает на гипервизоре, и, следовательно, не требует эмуляции оборудования. Виртуальные машины второго поколения обладают поддержкой UEFI, работают под управлением только 64-разрядной гостевой ОС, могут загружаться с виртуального контроллера SCSI. Подключенные к контроллеру виртуальные жесткие диски можно добавлять, удалять и изменять их размер во время работы. Сетевые адаптеры также могут быть добавлены во время работы системы. Если вы хотите настроить виртуальную машину с UEFI, вы можете сделать это только с виртуальной машиной поколения 2, т.е. безопасная загрузка доступна только в ней. Виртуальные машины поколения 1 поддерживают только BIOS и, следовательно, ограничены структурой MBR дисков и это основное препятствие при миграции. Поиск старых виртуальных машин Первым шагом будет обзор того, какие виртуальные машины относятся к Gen 1 (Поколение 1). С помощью PowerShell это относительно легко узнать: Get-VM | select vmname, generation Эта команда выведет вам список всех виртуальных машин на локальном хосте, их имена и поколение. По сути, теперь вы можете приступить к преобразованию старых виртуальных машин. Однако это невозможно, если гостевая ОС старше Windows Server 2012 R2 или имеет 32-разрядную версию. Следовательно, вам необходимо выяснить, какая ОС установлена на виртуальной машине. Это можно относительно легко определить через PowerShell: Get-ComputerInfo -Property WindowsProductName, OsArchitecture Изменение таблицы разделов на GPT После того как вы определили, какие виртуальные машины подходят для преобразования, вам следует сначала обновить гостевую ОС до версии Windows, которую вы запланировали для новой среды. Затем преобразовать системный диск в GPT. Начиная с Windows 10 1703, Microsoft предоставляет для этой цели MBR2GPT.exe. Программа запускается на рабочей системе со следующими параметрами: mbr2gpt.exe /convert /allowFullOS Утилита находится в %SystemRoot%system32 и может быть легко скопирована на другие компьютеры, если ее там нет. Это относится, например, и к серверам Windows. Однако в случае более старых версий ОС Microsoft рекомендует выключить виртуальную машину, загрузиться в среду предустановки Windows и начать преобразование в GPT оттуда. Тогда команда выглядит немного иначе: mbr2gpt.exe /convert /disk:<disknumber> Номера дисков можно посмотреть программой diskpart с помощью: list disk Перенос виртуального диска на новую виртуальную машину Поскольку преобразовать виртуальную машину поколения 1 в поколение 2 невозможно, теперь необходимо создать новую виртуальную машину Gen 2 и подключить к ней виртуальный жесткий диск. Одним из побочных эффектов этого действия является то, что оно также поднимает версию виртуальной машины до текущего уровня. Это необходимо, чтобы воспользоваться преимуществами новых функций Hyper-V, доступных в Server 2016 или 2019. Новая виртуальная машина больше не будет работать на более старом гипервизоре.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59