Виклик обривається: через 30 секунд, через 15–30 хвилин
Обрив «рівно через стільки-то» — це не поганий зв'язок, а таймер: одна зі сторін чогось чекала, не дочекалася й чесно поклала слухавку. Тому за часом обриву причину можна назвати майже напевно: ~32 секунди — не дійшло підтвердження початку розмови; ~15 або ~30 хвилин — не пройшло продовження розмови; вхідні працюють лише перші хвилини — роутер закрив дорогу до телефону. Нижче — механізм кожного випадку словами й що зробити.
Загальне налаштування телефонів — в огляді «Налаштування SIP-телефонів», решта симптомів — у діагностиці за симптомами.
Спершу перевірте в адмінці#
- Журнал викликів — відкрийте обірваний виклик. «Розмова» покаже тривалість з точністю до секунди: 0:31–0:33 — почерк першого випадку, близько 15:00 або 29:30 — другого. Там же «Поклав слухавку» (той, хто телефонує, співробітник або АТС) і «Причина відбою».
- Ехо-тест
*43, але довгий: наберіть і тримайте слухавку 45 секунд.*43— теж виклик, і підтвердження початку розмови в ньому проходить той самий шлях. Обірвався на 32-й секунді — поломка між телефоном і АТС; протримався — телефон і мережа закладу в порядку, шукайте далі (зовнішні виклики, оператор зв'язку). - Картка апарата → «Працездатність»: регулярні провали «зв'язку немає» — роутер закриває зворотний шлях до телефону (див. третій випадок).
- «Зателефонувати на апарат» у картці, через 10 хвилин після останнього виклику: задзвонив — дорога до телефону жива; мовчить при зеленій точці — це роутер.
- SIP-трейс на виділеній АТС: повторюваний
200 OKбезACK, потімBYE— перший випадок;BYEпісляINVITEабоUPDATEпосеред розмови — другий.
Обрив через 30–32 секунди#
Чому так буває#
Початок розмови — це рукостискання з трьох повідомлень: «телефоную» (INVITE) — «відповіли» (200 OK) — «зрозумів, починаємо» (ACK). Сторона, яка відповіла, повторює своє «відповіли», доки не отримає «зрозумів». Правило протоколу SIP: якщо «зрозумів» не надійшло за 64 × T1 = 64 × 0,5 с = 32 секунди, розмову треба закінчити. Голос при цьому вже йде — тому півхвилини все нормально, а потім виклик падає сам.
Отже, обрив на 32-й секунді означає: підтвердження ACK десь губиться. Чому — від частого до рідкісного:
- SIP ALG на роутері. Роутер переписує адреси всередині службових повідомлень, і підтвердження йде не туди або відкидається. Перше, що потрібно перевірити завжди.
- Занадто великий пакет. Якщо в телефоні ввімкнено десятки кодеків, опис виклику роздувається більше ніж ~1300 байт, і по UDP він іде «шматками» (фрагментами). Багато роутерів і міжмережевих екранів фрагменти мовчки викидають — губиться те саме повідомлення. Протокол SIP прямо вимагає для таких повідомлень перейти на TCP.
- Внутрішня адреса в повідомленнях. Телефон пише про себе внутрішню адресу (
192.168.x.x), і підтвердження надсилають за нею. Наша АТС це виправляє сама — відповідає туди, звідки реально надійшло повідомлення, — але в оператора зв'язку такого захисту може не бути: тоді обриваються лише зовнішні виклики. - Подвійний 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 секунд) і тестовий виклик; далі — лише якщо не допомогло.
- Вимкніть SIP ALG на роутері («SIP Helper», «SIP Passthrough», «ALG для SIP») і перезавантажте роутер. Де він у популярних марок — «Мережа, роутер та інтернет».
- Залиште в телефоні три кодеки — G.711 PCMA, G.711 PCMU і G.722, — решту вимкніть: повідомлення стануть коротшими й перестануть дробитися.
- Перемкніть транспорт на TCP (порт той самий, 5060), якщо крок 2 не допоміг: TCP сам ріже довгі повідомлення правильно, і фрагментація зникає. Наша АТС приймає і UDP, і TCP.
- Обриваються лише зовнішні виклики, а
*43і внутрішні тримаються — поломка між АТС і оператором зв'язку. Надішліть час кількох обірваних викликів у підтримку. - Приберіть подвійний NAT — переведіть роутер провайдера в режим моста або підключіть телефон прямо в нього.
Обрив через 15 або 30 хвилин#
Чому так буває#
Під час довгої розмови сторони час від часу підтверджують, що розмова ще триває — це таймери сесії. Інтервал узгоджується на початку дзвінка; одна сторона зобов'язується «продовжувати» розмову на середині інтервалу, інша — чекає на продовження. На нашій АТС таймери сесії увімкнені з інтервалом 1800 секунд (30 хвилин); потрібні вони, щоб розмова, зв'язок у якій зник мовчки, не висіла годинами й не займала лінію.
Звідси два почерки:
- близько 15 хвилин — на середині інтервалу продовження надіслали, але воно не пройшло: сторона його відкинула або не отримала відповіді;
- близько 29,5 хвилин — продовження не було взагалі, і сторона, яка його чекала, поклала слухавку трохи раніше закінчення інтервалу.
Чому продовження не проходить:
- Роутер закрив шлях службових повідомлень. Голос під час розмови йде безперервно, а службові повідомлення — мовчать. Якщо в телефона вимкнено keep-alive, роутер через кілька хвилин закриває «двері» для службових повідомлень — і продовження від АТС до телефона вже не доходить.
- Телефон не розуміє спосіб продовження або відкидає його — стара прошивка, увімкнено «Session Timer» з нестандартними параметрами.
- SIP ALG псує повідомлення продовження.
- Таймер оператора зв'язку — якщо обриваються тільки зовнішні дзвінки і завжди на одній хвилині.
АТС вмикає таймери в розмові, тільки якщо їх підтримує і телефон ⚠️ 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» («Таймери сесії», «Оновлення сесії, секунд»). Змінювати їх без вимоги провайдера не потрібно.
Що зробити#
- Увімкніть keep-alive у телефоні — він тримає шлях службових повідомлень відкритим і під час розмови. Yealink: Account → Advanced → Keep Alive Type (Default або Options) і Keep Alive Interval — 30 с (заводське значення).
- Вимкніть SIP ALG на роутері.
- Якщо в телефоні вмикали «Session Timer» — поверніть заводське значення (викл.) або поставте інтервал 1800 с: Yealink — Account → Advanced → Session Timer / Session Expires; Grandstream — Account → SIP Settings → Session Timer (Enable Session Timer, Session Expiration).
- Оновіть прошивку телефона — помилки продовження розмови часто виправлені в нових версіях.
- Рвуться тільки зовнішні дзвінки, в одну й ту саму хвилину — надішліть час дзвінків у підтримку: ми звіримо таймери з оператором зв'язку.
Вхідні працюють тільки перші хвилини після ввімкнення#
Чому так буває#
Телефон стоїть за роутером, і АТС може достукатися до нього тільки через «двері», які телефон відкрив своїм останнім повідомленням. Роутер тримає такі двері недовго — у побутових роутерів від пів хвилини до кількох хвилин тиші — і потім закриває. Поки телефон часто щось надсилає (реєстрація одразу після ввімкнення, keep-alive), двері відкриті. Затих — зачинилися, і вхідний дзвінок від АТС упирається в роутер.
Точка в адмінці при цьому може залишатися зеленою: реєстрацію телефон оновлює сам, зсередини, і вона проходить, а от увійти до телефона ззовні вже не можна. Перезавантаження «лікує», бо заново відкриває двері, — на час.
Наша АТС зі свого боку кожні 60 секунд перевіряє кожен апарат запитом «ти на зв'язку?»: цей зустрічний пакет теж тримає двері відкритими — але тільки якщо роутер закриває їх довше, ніж за хвилину. Не відповів апарат — АТС вважає його недоступним, точка гасне, і в «Працездатності» з'являється провал.
Що зробити#
Після кожного кроку перевірте вхідний через 10 хвилин простою (кнопкою «Позвонити на апарат» або з сусіднього додаткового); далі — тільки якщо не допомогло.
- Увімкніть keep-alive у телефоні з інтервалом 20–30 секунд. Yealink: Account → Advanced → Keep Alive Type / Keep Alive Interval (заводські Default і 30 с); у Fanvil — Keep Alive Type у додаткових налаштуваннях лінії.
- Вимкніть SIP ALG на роутері — він теж любить «забувати» двері.
- Скоротіть термін реєстрації в телефоні (Expires / Register Expiration) до 60–120 секунд — телефон буде частіше сам відкривати двері. Менше 60 наша АТС не прийме (
423 Interval Too Brief). - На виділеній АТС можна перевіряти апарати частіше: «Тонкі налаштування SIP» → «Перевірка зв'язку, секунд» — 20–30 замість 60. Це тримає двері з боку АТС, але додає службового трафіку; keep-alive телефона надійніший.
- Подвійний NAT (роутер провайдера + свій) — дверей двоє, і закриваються вони по-різному: приберіть одну — «Мережа, роутер та інтернет».
Обрив під час переходу з Wi-Fi на мобільний інтернет#
Чому так буває#
Wi-Fi закладу та мобільний інтернет — це дві різні адреси. Розмова починалася з однієї, і АТС на початку розмови запам'ятала, звідки йде голос: з міркувань безпеки вона приймає звук лише з цієї адреси. Коли смартфон перемикається на мобільну мережу, голос починає надходити з нової адреси — і для АТС це вже чужий потік, а службові повідомлення продовжують іти на стару адресу, якої більше немає. Розмова, розпочата в одній мережі, під час переходу в іншу майже завжди обривається. Це обмеження самої технології, а не поломка.
Другий бік того самого: поки смартфон перемикається, софтфон втрачає реєстрацію, і вхідні в ці секунди не надходять. Android до того ж присипляє фонові додатки — докладніше в огляді, розділ про програмні телефони.
Що зробити#
- Під час розмови не змінюйте мережу: завершуйте виклик до виходу із зони Wi-Fi.
- Вимкніть на смартфоні автоматичне перемикання з поганого Wi-Fi на мобільну мережу (на iPhone — «Поміч Wi-Fi», на Android — «перемикатися на мобільну мережу» в налаштуваннях Wi-Fi): зараз воно обриває розмову на порозі кафе.
- Дозвольте софтфону роботу у фоні та зніміть для нього економію батареї — тоді він швидше реєструється заново після зміни мережі.
- Там, де виклик втрачати не можна (стійка, ресепшн), ставте настільний телефон або 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.
Пов'язані розділи#
- Телефон не працює: діагностика за симптомами — зокрема «немає вхідних при працюючих вихідних»
- Немає звуку, чути в один бік, луна, «робот»
- Не реєструється: написи та коди помилок — «реєструється і зникає»,
423 Interval Too Brief - Мережа, роутер та інтернет для телефонії — де вимкнути SIP ALG, подвійний NAT
- Налаштування SIP-телефонів — мережа закладу, перевірка якості зв'язку
- Журнал викликів та SIP-трейс
Джерела#
- 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 с)