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

Материал из Oktell
Перейти к: навигация, поиск
 
(не показано 15 промежуточных версии этого же участника)
Строка 1: Строка 1:
Операторы Call-центра периодически сообщают о плохой слышимости собеседника во время разговора. В такой ситуации необходимо в первую очередь уяснить где происходит потеря голосовых rtp-пакетов. Для этого надо выгрузить файл записи из Oktell и прослушать его.
+
[[Возникающие_проблемы_и_способы_их_решения| Наверх]]
  
* Если в файле записи также наблюдаются "заикания" голоса, это обозначает что в Октелл rtp-пакеты уже приходят с потерям, а значит проблему нужно искать в интернет соединении.  
+
Операторы Call-центра периодически сообщают о том, что собеседник "пропадает" во время разговора. В такой ситуации необходимо в первую очередь выяснить где происходит потеря голосовых rtp-пакетов. Для этого надо выгрузить файл записи из Oktell и прослушать его.  
* Если в файле записи никаких "заиканий" не наблюдается, но оператор плохо слышит собеседника, значит проблему нужно искать в локальной сети между телефоном и сервером Октелл.  
+
  
В данной статье рассматривается проблема в интернет соединении от провайдера. Далее рассказывается методика определения количества потерь rtp пакетов с помощью программы wireshark. [http://www.wireshark.org Wireshark] - программный инструмент для анализа сетевого трафика. С его помощью можно проанализировать rtp-пакеты, просмотреть работу sip протокола, а также многое другое.  
+
* Если в файле записи также наблюдаются "пропадание" голоса, это обозначает что в Oktell RTP-пакеты уже приходят с потерями, а значит проблему нужно искать '''в интернет соединении'''.  
 +
* Если в файле записи никаких "пропаданий" не наблюдается, но оператор плохо слышит собеседника, значит проблему нужно искать в локальной сети '''между телефоном и сервером Oktell'''.  
  
Шаг 1. Включить wireshark, чтобы он сохранил все исходящие и входящие пакеты во время разговора. Для этого необходимо выбрать нужный интерфейс. Для этого в главном окне необходимо выбрать раздел Interface List и выделить необходимый интерфейс. Далее нажмите на Options.  
+
В данной статье рассматривается проблема в интернет соединении от провайдера. Далее рассказывается методика определения количества потерь rtp пакетов с помощью программы wireshark. [http://www.wireshark.org Wireshark] - программный инструмент для анализа сетевого трафика. С его помощью можно проанализировать RTP-пакеты, просмотреть работу SIP протокола, а также многое другое.  
  
[[Файл:Вайр01.PNG‎]]
 
[[Файл:Вайр02.PNG]]
 
  
Раздел Capture Filter - называется фильтром захвата. Wireshark будет захватывать только те пакеты, которые указаны в этом фильтре. Если нажать непосредственно на саму кнопку Capture Filter вам будут показаны различные предустановленные варианты захвата. Нам понадобиться udp-протокол, введите его в поле ввода.  
+
== Шаг. Запуск Wireshark. ==
  
В этом окне также вы можете нажать Capture Files и выбрать в какой файл будут сохраняться результаты. Если поставить галочку Use multiple files, то можно выбрать кольцевую схему сохранения, дробление файлов (например, по 200 мегабайт) и условие окончания захвата (например, после 1 гигабайта информации). После выбранных настроек нажмите кнопку Старт.  
+
Запустим '''wireshark''', чтобы он сохранил все исходящие и входящие пакеты во время разговора. В главном окне необходимо выбрать раздел '''Interface List''' и выделить необходимый интерфейс. Далее нажмите на '''Options'''.  
  
[[Файл:Вайр03.PNG]]
+
[[Файл:Вайр01.PNG‎ |center]]
  
  
Шаг 2. Получив сведения, о том, что во время звонка была плохая слышимость, подождите когда он завершится и отключить Wireshark. Теперь задача заключается в том, чтобы найти этот разговор в программе. Для этого нам нужен Call-id (идентификатор коммутации). Получить его мы сможем, зная время, номер линии или зная телефон собеседника. Для этого мы воспользуемся канальным логом /server/Log/Hardware/Sip/Ваша_дата/Номер_линии. Также нам понадобится лог сип-транзакций /server/Log/Hardware/Sip/trn_ваша_дата.
+
[[Файл:Вайр02.PNG|center]]
  
Зная время и номер мы можем найти в канальном логе следующую строчку, содержащую INVITE, копируем ее с помощью Ctrl+c. Также немного ниже мы можем увидеть на какой порт пришел запрос.  
+
Раздел '''Capture Filter''' - называется '''фильтром захвата'''. '''Wireshark''' будет захватывать только те пакеты, которые указаны в этом фильтре. Если нажать непосредственно на саму кнопку '''Capture Filter''' вам будут показаны различные предустановленные варианты захвата. Нам понадобиться UDP-протокол, введите его в поле ввода.  
  
[[Файл:Вайр1.PNG]]
+
udp
  
Откройте лог trn и с помощью поиска Ctrl+F (вставьте скопированное с помощью Ctrl+v) найдите данный запрос (убедитесь, что время совпадает). Скопируйте значение Call-id.  
+
В этом окне также вы можете нажать '''Capture Files''' и выбрать в какой файл будут сохраняться результаты. Если поставить галочку '''Use multiple files''', то можно выбрать кольцевую схему сохранения, дробление файлов (например, по 200 мегабайт) и условие окончания захвата (например, после 1 гигабайта информации). После выбранных настроек нажмите кнопку '''Start'''.  
  
[[Файл:Вайр2.PNG]]
+
[[Файл:Вайр03.PNG|center]]
  
Шаг 3. Найдите разговор в wireshark. Для этого воспользуемся еще одним типом фильтра - фильтром отображения. Находится он в верхней части программы, рядом находится подпись "Filter". Введите следующее:
+
 
 +
 
 +
== Шаг. Поиск Call-ID. ==
 +
 
 +
Получив сведения о том, что во время звонка были "пропадания" голоса, подождите когда он завершится и отключите Wireshark. Теперь задача заключается в том, чтобы найти этот разговор в программе. Для этого нам нужен '''Call-id''' (идентификатор коммутации). Получить его мы сможем, зная время, номер линии или зная телефон собеседника. Для этого мы воспользуемся канальным логом '''/server/Log/Hardware/Sip/текущая_дата/Номер_линии'''. Также нам понадобится лог SIP-транзакций '''/server/Log/Hardware/Sip/trn_текущая_дата'''.
 +
 
 +
Зная время и номер мы можем найти в канальном логе следующую строчку, содержащую '''INVITE''', копируем ее с помощью Ctrl+c. Также ниже мы можем увидеть на какой порт пришел запрос.
 +
 
 +
[[Файл:Вайр1.PNG|center]]
 +
 
 +
 
 +
Откройте лог trn и с помощью поиска Ctrl+F (вставьте скопированное с помощью Ctrl+v) найдите данный запрос (убедитесь, что время совпадает). Скопируйте значение '''Call-id'''.
 +
 
 +
[[Файл:Вайр2.PNG|center]]
 +
 
 +
 
 +
== Шаг. Поиск разговора в Wireshark. ==
 +
 
 +
Найдите разговор в '''wireshark'''. Для этого воспользуемся еще одним типом фильтра - фильтром отображения. Распологается он в верхней части программы, рядом находится подпись "'''Filter'''". Введите следующее (используйте ранее скопированный '''Call-ID''')
  
 
  sip.Call-ID=="7979c5a3-6431-4354-00a8-c65e9c459e77c71c@0011607E-056ACFA8"  
 
  sip.Call-ID=="7979c5a3-6431-4354-00a8-c65e9c459e77c71c@0011607E-056ACFA8"  
  
(используйте ранее скопированный Call-ID)
+
Далее нажмите Enter или кнопку '''Apply'''. Вам выведутся все SIP-транзакции, относящиеся к выбранной коммутации. Найдите пакет '''INVITE''', и запишите время получения\отправки пакета. Оно находится во втором столбце Time и обозначает время, которое прошло после начала захвата. Вы всегда можете поменять его во вкладке '''View->Time Display Format'''. По умолчанию, в программе используется значение '''Seconds since Beginning of Capture''' (время, которое прошло после начала захвата)  
  
Далее Enter или кнопку Apply. Вам выведутся все sip-транзакции, относящиеся к выбранной коммутации. Найдите пакет INVITE, и запишите его время. Оно находится во втором столбце Time и обозначает время которое прошло после начала захвата. Вы всегда можете поменять его во вкладке View->Time Display Format. По умолчанию, в программе используется значение Seconds since Beginning of Capture.  
+
Выберите в верхнем горизонтальном меню пункт '''Telephony -> VoIP Calls'''.  
  
Выберите в верхнем горизонтальном меню пункт Telephony -> VoIP Calls.  
+
[[Файл:Вайр8.png|center]]
  
[[Файл:Вайр8.png]]
 
  
 +
Найдите нужную коммутацию в выведенном списке, нажмите кнопку '''Prepare Filter'''. Это подготовит необходимый фильтр отображения и сразу вставит его в поле ввода в wireshark (желательно, предварительно очистить поле ввода от предыдущих запросов).
  
Найдите нужную коммутацию в выведенном списке, нажмите кнопку Prepare Filter. Это подготовит необходимый фильтр отображения и сразу вставит его в поле ввода в wireshark (желательно, предварительно очистить поле ввода от предыдущих запросов).  
+
[[Файл:Вайр4.PNG|center]]
  
[[Файл:Вайр4.PNG]]
 
  
После этого wireshark отфильтрует весь массив данных, согласно данному запросу.  
+
После этого '''wireshark''' отфильтрует весь массив данных, согласно данному запросу.  
  
[[Файл:Вайр5.png]]
+
[[Файл:Вайр5.PNG|center]]
  
Далее выберите RTP пакеты и найдите SSRC пакета. Скопируйте это значение, нажав правой кнопкой -> copy -> value. Вам понадобится найти еще один SSRC, участвующий в коммутации. Составьте на основе этих данных следующий запрос.
+
 
 +
Далее выберите '''RTP''' пакеты и найдите '''SSRC''' пакета. Скопируйте это значение, '''нажав правой кнопкой мыши -> copy -> value'''. Вам понадобится найти еще один '''SSRC''', участвующий в коммутации. Составьте на основе этих данных (Call-ID, и двух SSRC) следующий запрос.
  
 
  sip.Call-ID=="7979c5a3-6431-4354-00a8-c65e9c459e77c71c@0011607E-056ACFA8" or rtp.ssrc==0x017e74f7 or rtp.ssrc==0x0330003b
 
  sip.Call-ID=="7979c5a3-6431-4354-00a8-c65e9c459e77c71c@0011607E-056ACFA8" or rtp.ssrc==0x017e74f7 or rtp.ssrc==0x0330003b
  
[[Файл:Вайр6.PNG]]
+
[[Файл:Вайр6.PNG|center]]
 +
 
 +
 
 +
'''Сохраните''' выведенные ('''displayed''') данные в отдельный файл. А затем откройте его.
  
  
Сохраните выведенные (displayed) данные в отдельный файл. А затем откройте его.  
+
== Шаг. Анализ RTP-трафика ==
  
Шаг 4. Анализ rtp пакетов. Получив только выборку, связанную с коммутацией, нажмите в верхнем меню telephony-> rtp-> show all streams. Проверьте что у вас будут две строки, а один из портов будет совпадать с тем, что мы нашли в канальном логе на шаге 1. В столбце Lost будут определены потери rtp пакетов. Потери до 5% являются нормой. С помощью этой информации вы можете определить в какую сторону у вас идут потери - на входящий или исходящий трафик.  
+
Анализ '''rtp''' пакетов. Получив только выборку, связанную с коммутацией, нажмите в верхнем меню '''telephony-> rtp-> show all streams'''. Проверьте что у вас будут две строки, а один из портов будет совпадать с тем, что мы нашли в канальном логе на шаге 1. В столбце Lost будут определены потери RTP пакетов. Потери до 5% считаются допустимыми. С помощью этой информации вы можете определить в какую сторону у вас идут потери - на входящий или исходящий трафик.  
  
[[Файл:Вайр7.PNG]]
+
[[Файл:Вайр7.PNG|center]]

Текущая версия на 10:17, 17 июля 2013

Наверх

Операторы Call-центра периодически сообщают о том, что собеседник "пропадает" во время разговора. В такой ситуации необходимо в первую очередь выяснить где происходит потеря голосовых rtp-пакетов. Для этого надо выгрузить файл записи из Oktell и прослушать его.

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

В данной статье рассматривается проблема в интернет соединении от провайдера. Далее рассказывается методика определения количества потерь rtp пакетов с помощью программы wireshark. Wireshark - программный инструмент для анализа сетевого трафика. С его помощью можно проанализировать RTP-пакеты, просмотреть работу SIP протокола, а также многое другое.


Шаг. Запуск Wireshark.

Запустим wireshark, чтобы он сохранил все исходящие и входящие пакеты во время разговора. В главном окне необходимо выбрать раздел Interface List и выделить необходимый интерфейс. Далее нажмите на Options.

Вайр01.PNG


Вайр02.PNG

Раздел Capture Filter - называется фильтром захвата. Wireshark будет захватывать только те пакеты, которые указаны в этом фильтре. Если нажать непосредственно на саму кнопку Capture Filter вам будут показаны различные предустановленные варианты захвата. Нам понадобиться UDP-протокол, введите его в поле ввода.

udp

В этом окне также вы можете нажать Capture Files и выбрать в какой файл будут сохраняться результаты. Если поставить галочку Use multiple files, то можно выбрать кольцевую схему сохранения, дробление файлов (например, по 200 мегабайт) и условие окончания захвата (например, после 1 гигабайта информации). После выбранных настроек нажмите кнопку Start.

Вайр03.PNG


Шаг. Поиск Call-ID.

Получив сведения о том, что во время звонка были "пропадания" голоса, подождите когда он завершится и отключите Wireshark. Теперь задача заключается в том, чтобы найти этот разговор в программе. Для этого нам нужен Call-id (идентификатор коммутации). Получить его мы сможем, зная время, номер линии или зная телефон собеседника. Для этого мы воспользуемся канальным логом /server/Log/Hardware/Sip/текущая_дата/Номер_линии. Также нам понадобится лог SIP-транзакций /server/Log/Hardware/Sip/trn_текущая_дата.

Зная время и номер мы можем найти в канальном логе следующую строчку, содержащую INVITE, копируем ее с помощью Ctrl+c. Также ниже мы можем увидеть на какой порт пришел запрос.

Вайр1.PNG


Откройте лог trn и с помощью поиска Ctrl+F (вставьте скопированное с помощью Ctrl+v) найдите данный запрос (убедитесь, что время совпадает). Скопируйте значение Call-id.

Вайр2.PNG


Шаг. Поиск разговора в Wireshark.

Найдите разговор в wireshark. Для этого воспользуемся еще одним типом фильтра - фильтром отображения. Распологается он в верхней части программы, рядом находится подпись "Filter". Введите следующее (используйте ранее скопированный Call-ID)

sip.Call-ID=="7979c5a3-6431-4354-00a8-c65e9c459e77c71c@0011607E-056ACFA8" 

Далее нажмите Enter или кнопку Apply. Вам выведутся все SIP-транзакции, относящиеся к выбранной коммутации. Найдите пакет INVITE, и запишите время получения\отправки пакета. Оно находится во втором столбце Time и обозначает время, которое прошло после начала захвата. Вы всегда можете поменять его во вкладке View->Time Display Format. По умолчанию, в программе используется значение Seconds since Beginning of Capture (время, которое прошло после начала захвата)

Выберите в верхнем горизонтальном меню пункт Telephony -> VoIP Calls.

Вайр8.png


Найдите нужную коммутацию в выведенном списке, нажмите кнопку Prepare Filter. Это подготовит необходимый фильтр отображения и сразу вставит его в поле ввода в wireshark (желательно, предварительно очистить поле ввода от предыдущих запросов).

Вайр4.PNG


После этого wireshark отфильтрует весь массив данных, согласно данному запросу.

Вайр5.PNG


Далее выберите RTP пакеты и найдите SSRC пакета. Скопируйте это значение, нажав правой кнопкой мыши -> copy -> value. Вам понадобится найти еще один SSRC, участвующий в коммутации. Составьте на основе этих данных (Call-ID, и двух SSRC) следующий запрос.

sip.Call-ID=="7979c5a3-6431-4354-00a8-c65e9c459e77c71c@0011607E-056ACFA8" or rtp.ssrc==0x017e74f7 or rtp.ssrc==0x0330003b
Вайр6.PNG


Сохраните выведенные (displayed) данные в отдельный файл. А затем откройте его.


Шаг. Анализ RTP-трафика

Анализ rtp пакетов. Получив только выборку, связанную с коммутацией, нажмите в верхнем меню telephony-> rtp-> show all streams. Проверьте что у вас будут две строки, а один из портов будет совпадать с тем, что мы нашли в канальном логе на шаге 1. В столбце Lost будут определены потери RTP пакетов. Потери до 5% считаются допустимыми. С помощью этой информации вы можете определить в какую сторону у вас идут потери - на входящий или исходящий трафик.

Вайр7.PNG