C cenaly.com
Започни бесплатно

Повикот се прекинува: по 30 секунди, по 15–30 минути

Прекин во 32-та секунда (нема ACK), по 15–30 минути (тајмери на сесијата), дојдовните повици работат само првите минути по вклучувањето — механизам и решение

On this page 21

Разговорот се прекинува: по 30 секунди, по 15–30 минути

Прекин „токму по толку и толку“ не е лоша врска, туку тајмер: едната страна чекала нешто, не дочекала и чесно ја спуштила слушалката. Затоа според времето на прекинот причината може да се каже речиси сигурно: ~32 секунди — не стигнала потврдата за почеток на разговорот; ~15 или ~30 минути — не поминало продолжувањето на разговорот; влезните работат само првите минути — рутерот го затворил патот до телефонот. Подолу — механизмот на секој случај со зборови и што да се направи.

Општото поставување на телефоните — во прегледот „Поставување SIP-телефони“, останатите симптоми — во дијагностиката по симптоми.

Прво проверете во админ-панелот#

  1. Дневник на разговори — отворете го прекинатиот разговор. „Разговор“ ќе ја покаже должината со точност до секунда: 0:31–0:33 — почерк на првиот случај, околу 15:00 или 29:30 — на вториот. Таму е и „Ја спушти слушалката“ (звонувачот, вработениот или АТС) и „Причина за отфрлање“.
  2. Ехо-тест *43, но долг: изберете и држете ја слушалката 45 секунди. *43 е исто така разговор, и потврдата за почеток на разговорот во него поминува по истиот пат. Се прекина на 32-та секунда — дефект помеѓу телефонот и АТС; се задржа — телефонот и мрежата на објектот се во ред, барајте понатаму (надворешни разговори, оператор).
  3. Картичка на апаратот → „Работна способност“: редовни падови „нема врска“ — рутерот го затвора повратниот пат до телефонот (види трет случај).
  4. „Јави се на апаратот“ во картичката, 10 минути по последниот разговор: заѕвони — патот до телефонот е жив; молчи при зелена локација — тоа е рутерот.
  5. SIP-трага на посветената АТС: повторлив 200 OK без ACK, потоа BYE — прв случај; BYE по INVITE или UPDATE среде разговор — втор.

Прекин по 30–32 секунди#

Зошто се случува така#

Почетокот на разговорот е ракување од три пораки: „ѕвонам“ (INVITE) — „одговорија“ (200 OK) — „разбрав, почнуваме“ (ACK). Страната што одговорила го повторува своето „одговорија“, додека не го добие „разбрав“. Правилото на протоколот SIP: ако „разбрав“ не стигне за 64 × T1 = 64 × 0,5 с = 32 секунди, разговорот мора да се заврши. Гласот притоа веќе оди — затоа половина минута сѐ е нормално, а потоа разговорот паѓа сам.

Значи, прекин на 32-та секунда значи: потврдата ACK некаде се губи. Зошто — од често кон ретко:

  1. SIP ALG на рутерот. Рутерот ги препишува адресите внатре во службените пораки, и потврдата оди на погрешно место или се отфрла. Првото што треба да се провери секогаш.
  2. Премногу голем пакет. Ако во телефонот се вклучени десетици кодекси, описот на разговорот се надувува над ~1300 бајти, и по UDP оди „на парчиња“ (фрагменти). Многу рутери и меѓумрежни екрани фрагментите молкум ги исфрлаат — се губи токму таа порака. Протоколот SIP директно бара за таквите пораки да се премине на TCP.
  3. Внатрешна адреса во пораките. Телефонот пишува за себе внатрешна адреса (192.168.x.x), и потврдата се испраќа по неа. Нашата АТС ова сама го поправа — одговара таму од каде што пораката навистина стигнала — но кај операторот таква заштита може да нема: тогаш се прекинуваат само надворешните разговори.
  4. Двоен NAT или строг меѓумрежен екран што ги пропушта првите пораки на разговорот и ги сече следните.
За администраторот на мрежата: која страна ја спушта слушалката

Според RFC 3261 (§13.3.1.4) страната што одговорила 200 OK го повторува со интервал од T1 до T2 и по 64 × T1 без ACK ја завршува сесијата со барање BYE; T1 по стандард — 500 мс (§17.1.1.1), оттука 32 секунди.

  • Влезен разговор на телефон: 200 OK го праќа телефонот, ACK — АТС. Се загубил ACK на патот до телефонот — слушалката ја спушта телефонот.
  • Излезен од телефон и *43: 200 OK ја праќа АТС, ACK — телефонот. Се загубил ACK на патот до АТС — слушалката ја спушта АТС.
  • Фрагментација: RFC 3261 §18.1.1 — ако барањето е подолго од 1300 бајти (или во границите од 200 бајти од MTU на патот), клиентот мора да го праќа по TCP со контрола на преоптоварување. Нашата АТС прима TCP на истиот порт 5060.

Што да се направи#

По секој чекор повторете го долгиот *43 (45 секунди) и тест-разговор; понатаму — само ако не помогнало.

  1. Исклучете SIP ALG на рутерот („SIP Helper“, „SIP Passthrough“, „ALG за SIP“) и рестартирајте го рутерот. Каде е кај популарните марки — „Мрежа, рутер и интернет“.
  2. Оставете во телефонот три кодекси — G.711 PCMA, G.711 PCMU и G.722, — останатите исклучете ги: пораките ќе станат пократки и ќе престанат да се делат.
  3. Префрлете го транспортот на TCP (портот е истиот, 5060), ако чекорот 2 не помогнал: TCP сам ги сече долгите пораки правилно, и фрагментацијата исчезнува. Нашата АТС прима и UDP, и TCP.
  4. Се прекинуваат само надворешните разговори, а *43 и внатрешните се држат — дефект помеѓу АТС и операторот. Пратете време на неколку прекинати разговори до поддршката.
  5. Отстранете го двојниот NAT — префрлете го рутерот на провајдерот во режим на мост или поврзете го телефонот директно во него.

Прекин по 15 или 30 минути#

Зошто се случува тоа#

За време на долг разговор страните одвреме-навреме потврдуваат дека разговорот уште трае — тоа се тајмери на сесијата. Интервалот се договара на почетокот на повикот; едната страна се обврзува да го „продолжи“ разговорот на средината од интервалот, другата — чека продолжување. На нашата централа тајмерите на сесијата се вклучени со интервал од 1800 секунди (30 минути); потребни се за разговор во кој врската молкум исчезнала да не виси со часови и да не ја зафаќа линијата.

Оттука два начина на однесување:

  • околу 15 минути — на средината од интервалот продолжувањето е испратено, но не поминало: страната го отфрлила или не добила одговор;
  • околу 29,5 минути — продолжување воопшто немало, и страната што го чекала ја спуштила слушалката малку пред истекот на интервалот.

Зошто продолжувањето не поминува:

  1. Рутерот го затворил патот за службените пораки. Гласот за време на разговорот оди непрекинато, а службените пораки — молчат. Ако на телефонот е исклучен keep-alive, рутерот по неколку минути ја затвора „вратата“ за службените пораки — и продолжувањето од централата до телефонот веќе не стигнува.
  2. Телефонот не го разбира начинот на продолжување или го отфрла — стара фирмвер, вклучен „Session Timer“ со нестандардни параметри.
  3. SIP ALG ја расипува пораката за продолжување.
  4. Тајмер на операторот на врската — ако се прекинуваат само надворешните повици и секогаш во истата минута.

Централата вклучува тајмери во разговорот само ако ги поддржува и телефонот ⚠️ verify. Кај повеќето работни телефони „Session Timer“ е исклучен од фабрика (кај Yealink и Grandstream — според документацијата), и тогаш тајмери во разговорот воопшто нема.

За администратор на мрежа: вредности на страната на централата
  • timers=yes — тајмерите се поддржани; timers_sess_expires=1800 — интервал од 1800 с; timers_min_se=90 — помалку од 90 с централата нема да прифати (shared/sip/advanced-options.json, група protocol).
  • Според RFC 4028 продолжувањето се испраќа на средината од интервалот (900 с), а страната што не го добила ја завршува сесијата со BYE за min(32 с, интервал / 3) пред истекот — околу 1768 с.
  • Прекин по тишина централата не прави (rtp_timeout=0), затоа „разговор без звук“ сам по себе не се прекинува.
  • На изолирана централа истите вредности се во „Тонки поставки на SIP“ („Тајмери на сесија“, „Обновување на сесија, секунди“). Не треба да се менуваат без барање од провајдерот.

Што да се направи#

  1. Вклучете keep-alive на телефонот — тој го држи патот за службените пораки отворен и за време на разговорот. Yealink: Account → Advanced → Keep Alive Type (Default или Options) и Keep Alive Interval — 30 с (фабричка вредност).
  2. Исклучете SIP ALG на рутерот.
  3. Ако на телефонот сте вклучиле „Session Timer“ — вратете ја фабричката вредност (исклучено) или поставете интервал од 1800 с: Yealink — Account → Advanced → Session Timer / Session Expires; Grandstream — Account → SIP Settings → Session Timer (Enable Session Timer, Session Expiration).
  4. Ажурирајте го фирмверот на телефонот — грешките при продолжување на разговорот често се исправени во новите верзии.
  5. Се прекинуваат само надворешни повици, во истата минута — испратете ги времињата на повиците до поддршката: ќе ги споредиме тајмерите со операторот на врската.

Дојдовните работат само првите минути по вклучувањето#

Зошто се случува тоа#

Телефонот стои зад рутер, и централата може да стигне до него само преку „вратата“ што телефонот ја отворил со својата последна порака. Рутерот таквите врати ги држи кратко — кај домашните рутери од половина минута до неколку минути тишина — и потоа ја затвора. Додека телефонот често испраќа нешто (регистрација веднаш по вклучувањето, keep-alive), вратата е отворена. Замолкнал — се затворила, и дојдовниот повик од централата удри во рутерот.

Локацијата во админ-панелот притоа може да остане зелена: регистрацијата телефонот ја обновува сам, однатре, и таа поминува, но да се влезе во телефонот однадвор веќе не може. Рестартирањето „лекува“, затоа што ја отвора вратата одново — за извесно време.

Нашата централа од своја страна на секои 60 секунди го проверува секој апарат со прашањето „дали си на врска?“: тој повратен пакет исто така ја држи вратата отворена — но само ако рутерот ја затвора подолго од една минута. Ако апаратот не одговори — централата го смета за недостапен, локацијата згаснува, и во „Работна состојба“ се појавува пропуст.

Што да се направи#

По секој чекор проверете дојдовен повик по 10 минути мирување (со копчето „Повикај го апаратот“ или од соседен внатрешен број); понатаму — само ако не помогнало.

  1. Вклучете keep-alive на телефонот со интервал од 20–30 секунди. Yealink: Account → Advanced → Keep Alive Type / Keep Alive Interval (фабрички Default и 30 с); кај Fanvil — Keep Alive Type во дополнителните поставки на линијата.
  2. Исклучете SIP ALG на рутерот — и тој сака да ги „заборава“ вратите.
  3. Скратете го рокот на регистрација на телефонот (Expires / Register Expiration) на 60–120 секунди — телефонот почесто сам ќе ја отвора вратата. Помалку од 60 нашата централа нема да прифати (423 Interval Too Brief).
  4. На изолирана централа може почесто да се проверуваат апаратите: „Тонки поставки на SIP“ → „Проверка на врска, секунди“ — 20–30 наместо 60. Тоа ја држи вратата од страната на централата, но додава службен сообраќај; keep-alive на телефонот е посигурен.
  5. Двоен NAT (рутер на провајдерот + свој) — врати има две, и тие се затвораат различно: отстранете една — „Мрежа, рутер и интернет“.

Прекин при премин од Wi-Fi на мобилен интернет#

Зошто се случува тоа#

Wi-Fi на локацијата и мобилниот интернет се два различни адреси. Разговорот започнал од едниот, и телефонската централа на почетокот на разговорот запомнила од каде доаѓа гласот: од безбедносни причини прима звук само од таа адреса. Кога смартфонот преминува на мобилната мрежа, гласот почнува да доаѓа од нова адреса — и за централата тоа е веќе туѓ поток, а службените пораки продолжуваат да одат на старата адреса, која повеќе не постои. Разговорот започнат во една мрежа, при премин во друга, речиси секогаш се прекинува. Тоа е ограничување на самата технологија, а не дефект.

Втората страна на истото: додека смартфонот преминува, софтфонот ја губи регистрацијата, и дојдовните во тие секунди не пристигнуваат. Android дополнително ги заспива апликациите во позадина — повеќе во прегледот, делот за софтверски телефони.

Што да направите#

  1. За време на разговорот не менувајте мрежа: завршете го повикот пред да излезете од зоната на Wi-Fi.
  2. Исклучете на смартфонот автоматското префрлање од слаб Wi-Fi на мобилна мрежа (на iPhone — „Помош Wi-Fi“, на Android — „префрли на мобилна мрежа“ во поставките за Wi-Fi): сега тоа го прекинува разговорот на прагот на кафулето.
  3. Дозволете му на софтфонот да работи во позадина и отстранете ја за него економијата на батерија — тогаш тој побрзо се регистрира повторно по промена на мрежата.
  4. Таму каде што повикот не смее да се изгуби (рецепција, шалтер), ставете десктоп телефон или DECT-слушалка, а не смартфон.

Што да испратите до поддршката#

  • датум и време на неколку прекинати повици до минута, броеви и внатрешен број;
  • по колку време се прекинува (по дневникот — „Разговор“) и дали секогаш исто;
  • дали се прекинуваат сите повици или само надворешните; дали се задржува долгиот *43 (45 секунди);
  • модел и фирмвер на телефонот (редот од ознаката на апаратот), дали во него се вклучени keep-alive и Session Timer;
  • модел на рутерот, дали е исклучен SIP ALG, дали има втор рутер од провајдерот;
  • на посветена централа — текстот на SIP-трагата од повторениот прекин.

Како да ни пишете — „Поддршка“.

Често поставувани прашања#

Зошто прекинот е токму на 32-та секунда, а не на 30-та и не на 40-та?#

Затоа што тој број е вграден во самиот протокол SIP: потврдата за почеток на разговорот се чека 64 интервали по половина секунда — 32 секунди. Ако кај вас е „околу 30 секунди“ и секој пат исто — тоа е тоа, дури и ако хронометарот покажувал 31 или 33: дел од времето отишло на бипкања и одговор.

SIP ALG е исклучен, а прекинот на 30-та секунда остана — што уште?#

Проверете дали ALG е исклучен на сите рутери по патот (кај рутерот на провајдерот често е свој), оставете во телефонот три кодека и пробајте транспорт TCP. Ако се прекинуваат само надворешните повици, а *43 се задржува 45 секунди — работата е на делот кон операторот за врски, испратете го времето на повиците.

Локацијата е зелена, но дојдовните не пристигнуваат — и тоа е „прекин“?#

Тоа е истиот механизам како во делот за дојдовните први минути: регистрацијата се обновува одвнатре, а вратата кон телефонот однадвор е веќе затворена. Проверка — „Повикај на апаратот“ по 10 минути мирување; лек — keep-alive во телефонот.

Може едноставно да се исклучат тајмерите на сесијата на централата?#

Може (на посветена централа, „Тонки поставки SIP“), но тоа го лечи симптомот, а не причината: продолжувањето не поминува затоа што патот на службените пораки е затворен или расипан, а истиот пат ќе биде потребен за пренос на повик и задржување. Покрај тоа, без тајмери прекинатите тивки разговори ќе висат со часови и ќе ги зафаќаат линиите. Прво keep-alive и SIP ALG.

Поврзани делови#

Извори#

  • RFC 3261 — SIP: повторување на 200 OK до добивање на ACK и завршување на сесијата по 64 × T1 (§13.3.1.4), T1 = 500 мс (§17.1.1.1), премин на TCP за пораки подолги од 1300 бајти (§18.1.1) — https://www.rfc-editor.org/rfc/rfc3261
  • RFC 4028 — Session Timers: продолжување на средината на интервалот, BYE за min(32 с, интервал / 3) пред истекот — https://www.rfc-editor.org/rfc/rfc4028
  • Yealink SIP-T2/T3/T4/T5/CP920 Administrator Guide V86.60 — Keep Alive Type / Interval (фабрички Default, 30 с), Session Timer (фабрички — исклучен; Session Expires 1800 с; обновување на половина од интервалот)
  • Grandstream GRP261x/262x/263x Administration Guide — Session Timer: Enable Session Timer (фабрички „No“), Session Expiration, Min-SE — https://documentation.grandstream.com/knowledge-base/grp261x-grp262x-grp263x-series-administration-guide/
  • Zoiper 5 User Guide v1.0.7 — UDP и ограничување на големината на пакетот, NAT-тајмаути на рутерот — https://www.zoiper.com/pdf/User%20Guide%20Zoiper%205%20v.1.0.7.pdf
  • Код на централата: shared/sip/advanced-options.json (timers=yes, timers_sess_expires=1800, timers_min_se=90, qualify_frequency=60, minimum_expiration=60, rtp_timeout=0, force_rport, rewrite_contact), sip-edge/asterisk/rtp.conf (strictrtp=yes), sip-edge/sipsync/linecheck.go (ехо-тест *43, горна граница на проверката 300 с)
Was this article helpful?