C cenaly.com
무료로 시작하기

통화 끊김 현상: 30초 후, 15–30분 후

32초 시점 끊김(ACK 없음), 15–30분 후 끊김(세션 타이머), 부팅 직후 몇 분 동안만 수신 가능 — 작동 메커니즘 및 해결 방법

10 min read 데모에서 이 화면 열기
On this page 21

통화가 끊깁니다: 30초 후, 15–30분 후

“정확히 얼마 후에” 끊기는 것은 연결 불량이 아니라 타이머입니다. 한쪽이 무언가를 기다렸다가 기다리지 못하고 정직하게 수화기를 내려놓은 것입니다. 따라서 끊긴 시간으로 원인을 거의 확실히 알 수 있습니다. ~32초 — 통화 시작 확인이 도달하지 않았습니다. ~15분 또는 ~30분 — 통화 연장이 이루어지지 않았습니다. 착신이 처음 몇 분만 작동 — 라우터가 전화기로 가는 길을 막았습니다. 아래에 각 경우의 메커니즘을 설명과 함께 정리했습니다.

전화기 공통 설정은 “SIP 전화기 설정” 개요에서, 나머지 증상은 증상별 진단에서 확인할 수 있습니다.

먼저 관리자 페이지에서 확인하세요#

  1. 통화 기록 — 끊긴 통화를 여세요. “통화”는 초 단위까지 정확한 길이를 보여줍니다. 0:31–0:33은 첫 번째 경우의 특징이고, 약 15:00 또는 29:30은 두 번째 경우입니다. 같은 곳에서 “수화기를 내려놓은 사람”(발신자, 직원 또는 PBX)과 **“종료 사유”**도 확인할 수 있습니다.
  2. 에코 테스트 *43, 단 길게: 전화를 걸고 45초 동안 수화기를 잡고 계세요. *43도 통화이므로 통화 시작 확인이 같은 경로를 거칩니다. 32초에 끊겼다면 전화기와 PBX 사이의 문제입니다. 버텼다면 전화기와 매장 네트워크는 정상이므로 계속 찾아보세요(외부 통화, 통신사).
  3. 기기 카드 → “작동 상태”: “연결 없음”이 규칙적으로 나타나면 라우터가 전화기로 가는 역방향 경로를 막고 있는 것입니다(세 번째 경우 참조).
  4. 카드에서 “기기로 전화 걸기”, 마지막 통화 후 10분 뒤에: 벨이 울리면 전화기로 가는 길이 살아 있는 것입니다. 지점이 녹색인데 조용하면 라우터 문제입니다.
  5. SIP 트레이스 — 전용 PBX에서: ACK 없는 200 OK가 반복되고 그 뒤에 BYE가 오면 첫 번째 경우입니다. 통화 도중 INVITE 또는 UPDATE 후에 BYE가 오면 두 번째 경우입니다.

30–32초 후 끊김#

왜 이렇게 되는가#

통화 시작은 세 개의 메시지로 이루어진 핸드셰이크입니다. “전화 걸고 있습니다”(INVITE) — “응답했습니다”(200 OK) — “알겠습니다, 시작합니다”(ACK). 응답한 쪽은 “알겠습니다”를 받을 때까지 “응답했습니다”를 반복합니다. SIP 프로토콜 규칙에 따르면 64 × T1 = 64 × 0.5초 = 32초 안에 “알겠습니다”가 오지 않으면 통화를 끝내야 합니다. 이때 음성은 이미 흐르고 있으므로 30초 동안은 정상이고 그 후 통화가 스스로 끊깁니다.

즉, 32초에 끊긴다는 것은 ACK 확인이 어딘가에서 손실된다는 뜻입니다. 왜 그런지, 흔한 것부터 드문 것 순으로:

  1. 라우터의 SIP ALG. 라우터가 제어 메시지 내부의 주소를 다시 쓰면서 확인이 엉뚱한 곳으로 가거나 버려집니다. 항상 가장 먼저 확인해야 할 사항입니다.
  2. 너무 큰 패킷. 전화기에 수십 개의 코덱이 켜져 있으면 통화 설명이 약 1300바이트를 넘어 커지고, UDP로는 “조각”(프래그먼트)으로 나뉘어 전송됩니다. 많은 라우터와 방화벽이 프래그먼트를 조용히 버리면서 바로 그 메시지가 손실됩니다. SIP 프로토콜은 이런 메시지에 대해 TCP로 전환할 것을 명시적으로 요구합니다.
  3. 메시지 내부 주소. 전화기가 자신에 대해 내부 주소(192.168.x.x)를 적으면 확인이 그 주소로 전송됩니다. 우리 PBX는 이를 스스로 수정합니다 — 메시지가 실제로 온 곳으로 응답합니다 — 하지만 통신사에는 이런 보호가 없을 수 있습니다. 그러면 외부 통화만 끊깁니다.
  4. 이중 NAT 또는 통화의 첫 메시지는 통과시키고 이후 메시지는 차단하는 엄격한 방화벽.
네트워크 관리자용: 어느 쪽이 수화기를 내려놓는가

RFC 3261(§13.3.1.4)에 따르면 200 OK로 응답한 쪽은 T1에서 T2 간격으로 이를 반복하고, ACK 없이 64 × T1이 지나면 BYE 요청으로 세션을 종료합니다. T1의 기본값은 500ms(§17.1.1.1)이므로 여기서 32초가 나옵니다.

  • 전화기로 오는 착신 통화: 200 OK는 전화기가 보내고 ACK는 PBX가 보냅니다. 전화기로 가는 길에 ACK가 손실되면 전화기가 수화기를 내려놓습니다.
  • 전화기에서 거는 발신 통화와 *43: 200 OK는 PBX가 보내고 ACK는 전화기가 보냅니다. PBX로 가는 길에 ACK가 손실되면 PBX가 수화기를 내려놓습니다.
  • 프래그먼트: RFC 3261 §18.1.1 — 요청이 1300바이트보다 길거나(또는 경로 MTU에서 200바이트 이내이면) 클라이언트는 혼잡 제어와 함께 TCP로 전송해야 합니다. 우리 PBX는 동일한 포트 5060에서 TCP를 수신합니다.

무엇을 해야 하는가#

각 단계 후에 긴 *43(45초)과 테스트 통화를 반복하세요. 다음 단계는 효과가 없을 때만 진행합니다.

  1. 라우터에서 SIP ALG를 끄고(“SIP Helper”, “SIP Passthrough”, “SIP용 ALG”) 라우터를 재부팅하세요. 인기 브랜드별 위치는 “네트워크, 라우터 및 인터넷”에서 확인할 수 있습니다.
  2. 전화기에 코덱 세 개만 남기세요 — G.711 PCMA, G.711 PCMU, G.722 — 나머지는 끄세요. 메시지가 짧아져 더 이상 조각나지 않습니다.
  3. 2단계가 효과가 없으면 전송을 TCP로 전환하세요(포트는 동일, 5060). TCP는 긴 메시지를 스스로 올바르게 나누므로 프래그먼트가 사라집니다. 우리 PBX는 UDP와 TCP를 모두 수신합니다.
  4. 외부 통화만 끊기고 *43과 내부 통화는 유지된다면 PBX와 통신사 사이의 문제입니다. 끊긴 통화 여러 건의 시간을 지원팀에 보내주세요.
  5. 이중 NAT를 제거하세요 — 통신사 라우터를 브리지 모드로 전환하거나 전화기를 라우터에 직접 연결하세요.

15분 또는 30분 후 통화 끊김#

왜 이렇게 되는가#

긴 통화 중에 양측은 때때로 통화가 아직 진행 중임을 확인합니다 — 이것이 세션 타이머입니다. 간격은 통화 시작 시 합의되며, 한쪽은 간격 중간에 통화를 “갱신”할 의무가 있고, 다른 쪽은 갱신을 기다립니다. 당사 PBX에서는 세션 타이머가 1800초(30분) 간격으로 활성화되어 있습니다. 이는 조용히 연결이 끊어진 통화가 몇 시간 동안 유지되어 회선을 점유하지 않도록 하기 위해 필요합니다.

여기서 두 가지 양상이 나타납니다:

  • 약 15분 — 간격 중간에 갱신이 전송되었으나 통과되지 못했습니다: 상대방이 거부했거나 응답을 받지 못했습니다;
  • 약 29.5분 — 갱신이 전혀 없었고, 갱신을 기다리던 쪽이 간격 만료보다 조금 일찍 수화기를 내려놓았습니다.

갱신이 통과되지 않는 이유:

  1. 라우터가 서비스 메시지 경로를 닫았습니다. 통화 중 음성은 지속적으로 흐르지만, 서비스 메시지는 침묵합니다. 전화기에서 keep-alive가 꺼져 있으면 라우터는 몇 분 후 서비스 메시지용 “문”을 닫고, PBX에서 전화기로의 갱신이 더 이상 도달하지 않습니다.
  2. 전화기가 갱신 방식을 이해하지 못하거나 거부합니다 — 오래된 펌웨어, 비표준 매개변수로 “Session Timer”가 켜져 있음.
  3. SIP ALG가 갱신 메시지를 손상시킵니다.
  4. 통신사 타이머 — 외부 통화만 끊기고 항상 같은 분에 끊기는 경우.

PBX는 전화기가 지원하는 경우에만 통화 중 타이머를 활성화합니다 ⚠️ verify. 대부분의 데스크톱 전화기는 “Session Timer”가 공장 출하 시 꺼져 있으며(Yealink 및 Grandstream — 문서 기준), 이 경우 통화 중 타이머가 전혀 없습니다.

네트워크 관리자용: PBX 측 값
  • timers=yes — 타이머 지원됨; timers_sess_expires=1800 — 간격 1800초; timers_min_se=90 — 90초 미만은 PBX가 허용하지 않음 (shared/sip/advanced-options.json, protocol 그룹).
  • RFC 4028에 따라 갱신은 간격 중간(900초)에 전송되며, 이를 받지 못한 쪽은 만료 전 min(32초, 간격 / 3)에 BYE로 세션을 종료합니다 — 약 1768초.
  • PBX는 무음으로 인한 끊김을 하지 않으므로(rtp_timeout=0), “소리 없는 통화” 자체로는 끊기지 않습니다.
  • 전용 PBX에서는 동일한 값이 “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. 외부 통화만 끊기고 항상 같은 분에 끊긴다면 — 통화 시간을 지원팀에 보내주세요: 통신사와 타이머를 대조하겠습니다.

착신이 켠 후 처음 몇 분 동안만 작동함#

왜 이렇게 되는가#

전화기는 라우터 뒤에 있으며, PBX는 전화기가 마지막 메시지로 연 “문”을 통해서만 전화기에 도달할 수 있습니다. 라우터는 이러한 문을 오래 유지하지 않습니다 — 가정용 라우터는 침묵이 30초에서 몇 분까지 지속되면 닫습니다. 전화기가 자주 무언가를 보내는 동안(켠 직후 등록, keep-alive) 문은 열려 있습니다. 조용해지면 — 닫히고, PBX의 착신 전화가 라우터에 막힙니다.

이때 관리자 페이지의 지점은 녹색으로 남을 수 있습니다: 전화기는 등록을 스스로, 내부에서 갱신하며 이는 통과되지만, 외부에서 전화기로 들어가는 것은 더 이상 불가능합니다. 재부팅이 “치료”하는 이유는 문을 다시 열기 때문입니다 — 일시적으로.

당사 PBX는 자체적으로 60초마다 각 기기에 “연결되어 있나요?” 요청을 보내 확인합니다: 이 응답 패킷도 문을 열어 두지만 — 라우터가 문을 1분보다 오래 닫는 경우에만 해당합니다. 기기가 응답하지 않으면 PBX는 이를 사용 불가로 간주하고, 지점이 꺼지며 “작동 상태”에 실패가 나타납니다.

무엇을 해야 하는가#

각 단계 후 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초 미만은 당사 PBX가 허용하지 않습니다 (423 Interval Too Brief).
  4. 전용 PBX에서는 기기를 더 자주 확인할 수 있습니다: “SIP 고급 설정” → “연결 확인, 초” — 60 대신 20–30. 이는 PBX 측에서 문을 유지하지만 서비스 트래픽이 추가됩니다; 전화기의 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 트레이스 텍스트.

문의 방법 — «지원».

자주 묻는 질문#

왜 끊김이 30초도 40초도 아닌 정확히 32초인가?#

그 숫자가 SIP 프로토콜 자체에 내장되어 있기 때문입니다. 통화 시작 확인은 0.5초 간격 64회, 즉 32초를 기다립니다. «약 30초»이고 매번 동일하다면, 초시계가 31초나 33초를 가리켰더라도 그것이 해당됩니다. 일부 시간은 벨소리와 응답에 소요되었기 때문입니다.

SIP ALG를 껐는데도 30초 끊김이 남아 있습니다 — 또 무엇이 있나요?#

경로상의 모든 라우터에서 ALG가 꺼져 있는지 확인하십시오(통신사 라우터에는 종종 자체 ALG가 있습니다). 전화기에 코덱을 세 개만 남기고 TCP 전송을 시도해 보십시오. 외부 통화만 끊기고 *43이 45초 동안 유지된다면 문제는 통신사 구간에 있으니 통화 시간을 보내주십시오.

지점이 녹색인데 걸려오는 전화가 오지 않습니다 — 이것도 «끊김»인가요?#

켠 후 첫 몇 분간 걸려오는 전화 섹션과 같은 메커니즘입니다. 등록은 내부에서 갱신되지만, 외부에서 전화기로 향하는 문은 이미 닫혀 있습니다. 확인 방법은 10분 유휴 후 «기기로 전화 걸기»이고, 해결책은 전화기의 keep-alive입니다.

교환기에서 세션 타이머를 그냥 끄면 되나요?#

가능합니다(전용 교환기의 «SIP 세부 설정»). 하지만 이는 원인이 아니라 증상을 치료하는 것입니다. 갱신이 통과하지 못하는 이유는 서비스 메시지 경로가 닫혀 있거나 손상되었기 때문이며, 같은 경로가 통화 전환과 보류에도 필요합니다. 게다가 타이머 없이 소리 없이 끊긴 통화가 몇 시간씩 남아 회선을 차지하게 됩니다. 먼저 keep-alive와 SIP ALG입니다.

관련 섹션#

출처#

  • RFC 3261 — SIP: ACK를 받을 때까지 200 OK 재전송 및 64 × T1 후 세션 종료(§13.3.1.4), T1 = 500ms(§17.1.1.1), 1300바이트보다 긴 메시지에 TCP로 전환(§18.1.1) — https://www.rfc-editor.org/rfc/rfc3261
  • RFC 4028 — Session Timers: 간격 중간에 갱신, 만료 전 min(32초, 간격 / 3)에 BYE — https://www.rfc-editor.org/rfc/rfc4028
  • Yealink SIP-T2/T3/T4/T5/CP920 Administrator Guide V86.60 — Keep Alive Type / Interval(공장 기본값, 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?