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?