Cuộc gọi bị ngắt: sau 30 giây, sau 15–30 phút
Ngắt “đúng sau từng ấy” không phải do kết nối kém, mà là do bộ đếm thời gian: một bên đã chờ điều gì đó, không thấy nên dứt khoát gác máy. Vì vậy, dựa vào thời điểm ngắt, gần như có thể xác định chắc chắn nguyên nhân: ~32 giây — xác nhận bắt đầu cuộc trò chuyện không đến được; ~15 hoặc ~30 phút — gia hạn cuộc trò chuyện không thành công; cuộc gọi đến chỉ hoạt động trong vài phút đầu — router đã đóng đường đến điện thoại. Dưới đây là cơ chế của từng trường hợp, diễn giải bằng lời, và cần làm gì.
Cấu hình chung cho điện thoại — trong bài tổng quan “Cấu hình điện thoại SIP”, các triệu chứng khác — trong chẩn đoán theo triệu chứng.
Trước tiên hãy kiểm tra trong bảng quản trị#
- Nhật ký cuộc gọi — mở cuộc gọi bị ngắt. “Cuộc trò chuyện” sẽ hiển thị thời lượng chính xác đến từng giây: 0:31–0:33 — dấu hiệu của trường hợp thứ nhất, khoảng 15:00 hoặc 29:30 — trường hợp thứ hai. Ở đó cũng có “Người gác máy” (người gọi, nhân viên hoặc tổng đài) và “Lý do kết thúc”.
- Bài kiểm tra âm thanh
*43, nhưng kéo dài: hãy bấm gọi và giữ máy 45 giây.*43cũng là một cuộc gọi, và xác nhận bắt đầu cuộc trò chuyện trong đó đi theo cùng một đường. Ngắt ở giây thứ 32 — lỗi giữa điện thoại và tổng đài; trụ được — điện thoại và mạng của cơ sở vẫn ổn, hãy tìm tiếp (cuộc gọi bên ngoài, nhà mạng). - Thẻ thiết bị → “Khả năng hoạt động”: các lần lỗi “không có kết nối” lặp lại — router đang đóng đường quay lại điện thoại (xem trường hợp thứ ba).
- “Gọi đến thiết bị” trong thẻ, sau 10 phút kể từ cuộc gọi cuối: đổ chuông — đường đến điện thoại còn sống; im lặng dù chấm xanh — đó là router.
- Bản ghi SIP trên tổng đài riêng:
200 OKlặp lại mà không cóACK, sau đó làBYE— trường hợp thứ nhất;BYEsauINVITEhoặcUPDATEgiữa cuộc trò chuyện — trường hợp thứ hai.
Ngắt sau 30–32 giây#
Vì sao lại như vậy#
Khởi đầu cuộc trò chuyện là một màn bắt tay gồm ba thông điệp: “tôi gọi” (INVITE) — “đã trả lời” (200 OK) — “đã hiểu, bắt đầu” (ACK). Bên đã trả lời sẽ lặp lại “đã trả lời” cho đến khi nhận được “đã hiểu”. Quy tắc của giao thức SIP: nếu “đã hiểu” không đến trong 64 × T1 = 64 × 0,5 giây = 32 giây, cuộc trò chuyện phải kết thúc. Tiếng nói lúc này đã truyền đi — vì vậy nửa phút đầu mọi thứ vẫn bình thường, rồi cuộc gọi tự rớt.
Vậy, ngắt ở giây thứ 32 nghĩa là: xác nhận ACK bị mất ở đâu đó. Vì sao — từ thường gặp đến hiếm gặp:
- SIP ALG trên router. Router viết lại địa chỉ bên trong các thông điệp dịch vụ, và xác nhận đi nhầm chỗ hoặc bị loại bỏ. Đây là điều đầu tiên luôn cần kiểm tra.
- Gói quá lớn. Nếu trong điện thoại bật hàng chục codec, phần mô tả cuộc gọi phình to hơn ~1300 byte, và qua UDP nó được gửi thành “khúc” (phân mảnh). Nhiều router và tường lửa âm thầm vứt bỏ các phân mảnh — thông điệp đó bị mất. Giao thức SIP yêu cầu rõ ràng rằng với những thông điệp như vậy phải chuyển sang TCP.
- Địa chỉ nội bộ trong thông điệp. Điện thoại ghi về mình một địa chỉ nội bộ (
192.168.x.x), và xác nhận được gửi đến đó. Tổng đài của chúng tôi tự sửa điều này — trả lời về nơi thực sự nhận được thông điệp — nhưng ở nhà mạng có thể không có lớp bảo vệ như vậy: khi đó chỉ các cuộc gọi bên ngoài bị ngắt. - NAT kép hoặc tường lửa nghiêm ngặt, cho qua các thông điệp đầu của cuộc gọi rồi cắt các thông điệp tiếp theo.
Dành cho quản trị viên mạng: bên nào gác máy
Theo RFC 3261 (§13.3.1.4), bên đã trả lời 200 OK sẽ lặp lại nó với khoảng từ T1 đến T2 và sau 64 × T1 mà không có ACK thì kết thúc phiên bằng yêu cầu BYE; T1 mặc định là 500 ms (§17.1.1.1), từ đó ra 32 giây.
- Cuộc gọi đến điện thoại:
200 OKdo điện thoại gửi,ACK— do tổng đài.ACKbị mất trên đường đến điện thoại — điện thoại gác máy. - Cuộc gọi đi từ điện thoại và
*43:200 OKdo tổng đài gửi,ACK— do điện thoại.ACKbị mất trên đường đến tổng đài — tổng đài gác máy. - Phân mảnh: RFC 3261 §18.1.1 — nếu yêu cầu dài hơn 1300 byte (hoặc trong khoảng 200 byte tính từ MTU của đường truyền), client phải gửi nó qua TCP có kiểm soát tắc nghẽn. Tổng đài của chúng tôi nhận TCP trên cùng cổng 5060.
Cần làm gì#
Sau mỗi bước, hãy lặp lại *43 kéo dài (45 giây) và một cuộc gọi thử; chỉ làm tiếp nếu chưa khắc phục được.
- Tắt SIP ALG trên router (“SIP Helper”, “SIP Passthrough”, “ALG cho SIP”) và khởi động lại router. Vị trí ở các hãng phổ biến — trong “Mạng, router và internet”.
- Chỉ để lại ba codec trong điện thoại — G.711 PCMA, G.711 PCMU và G.722, — tắt các codec còn lại: thông điệp sẽ ngắn hơn và không còn bị chia nhỏ.
- Chuyển transport sang TCP (cổng vẫn là 5060), nếu bước 2 không giúp: TCP tự cắt các thông điệp dài đúng cách, và phân mảnh biến mất. Tổng đài của chúng tôi nhận cả UDP và TCP.
- Chỉ các cuộc gọi bên ngoài bị ngắt, còn
*43và các cuộc gọi nội bộ vẫn giữ được — lỗi nằm giữa tổng đài và nhà mạng. Hãy gửi thời gian của một vài cuộc gọi bị ngắt đến bộ phận hỗ trợ. - Loại bỏ NAT kép — chuyển router của nhà cung cấp sang chế độ bridge hoặc kết nối điện thoại trực tiếp vào nó.
Mất kết nối sau 15 hoặc 30 phút#
Vì sao lại như vậy#
Trong một cuộc trò chuyện dài, các bên thỉnh thoảng xác nhận rằng cuộc trò chuyện vẫn đang tiếp diễn — đó là các bộ đếm thời gian phiên. Khoảng thời gian được thỏa thuận vào đầu cuộc gọi; một bên cam kết “gia hạn” cuộc trò chuyện ở giữa khoảng thời gian, bên kia chờ gia hạn. Trên tổng đài của chúng tôi, các bộ đếm thời gian phiên được bật với khoảng thời gian 1800 giây (30 phút); chúng cần thiết để một cuộc trò chuyện mà kết nối đã âm thầm mất không bị treo hàng giờ và không chiếm đường dây.
Từ đó có hai dấu hiệu:
- khoảng 15 phút — ở giữa khoảng thời gian, gia hạn đã được gửi đi nhưng không thành công: bên kia đã từ chối nó hoặc không nhận được phản hồi;
- khoảng 29,5 phút — hoàn toàn không có gia hạn, và bên chờ nó đã gác máy sớm hơn một chút trước khi khoảng thời gian hết hạn.
Vì sao gia hạn không thành công:
- Router đã đóng đường cho các thông báo dịch vụ. Giọng nói trong cuộc trò chuyện truyền liên tục, còn các thông báo dịch vụ thì im lặng. Nếu keep-alive trên điện thoại bị tắt, router sẽ đóng “cửa” cho các thông báo dịch vụ sau vài phút — và gia hạn từ tổng đài đến điện thoại không còn đến được nữa.
- Điện thoại không hiểu cách gia hạn hoặc từ chối nó — firmware cũ, “Session Timer” được bật với các tham số không chuẩn.
- SIP ALG làm hỏng thông báo gia hạn.
- Bộ đếm thời gian của nhà mạng — nếu chỉ các cuộc gọi bên ngoài bị ngắt và luôn vào cùng một phút.
Tổng đài chỉ bật các bộ đếm thời gian trong cuộc trò chuyện nếu điện thoại cũng hỗ trợ chúng ⚠️ verify. Ở hầu hết điện thoại để bàn, “Session Timer” bị tắt từ nhà máy (theo tài liệu của Yealink và Grandstream), và khi đó hoàn toàn không có bộ đếm thời gian trong cuộc trò chuyện.
Dành cho quản trị viên mạng: các giá trị phía tổng đài
timers=yes— các bộ đếm thời gian được hỗ trợ;timers_sess_expires=1800— khoảng thời gian 1800 giây;timers_min_se=90— tổng đài không chấp nhận nhỏ hơn 90 giây (shared/sip/advanced-options.json, nhómprotocol).- Theo RFC 4028, gia hạn được gửi ở giữa khoảng thời gian (900 giây), và bên không nhận được nó sẽ kết thúc phiên bằng
BYEtrước khi hết hạn min(32 giây, khoảng thời gian / 3) — khoảng 1768 giây. - Tổng đài không ngắt kết nối vì im lặng (
rtp_timeout=0), vì vậy “cuộc trò chuyện không có âm thanh” tự nó không bị ngắt. - Trên tổng đài riêng, các giá trị tương tự nằm trong “Cài đặt SIP nâng cao” (“Bộ đếm thời gian phiên”, “Gia hạn phiên, giây”). Không cần thay đổi chúng nếu nhà cung cấp không yêu cầu.
Cần làm gì#
- Bật keep-alive trên điện thoại — nó giữ đường cho các thông báo dịch vụ luôn mở ngay cả trong cuộc trò chuyện. Yealink: Account → Advanced → Keep Alive Type (Default hoặc Options) và Keep Alive Interval — 30 giây (giá trị nhà máy).
- Tắt SIP ALG trên router.
- Nếu trên điện thoại đã bật “Session Timer” — hãy khôi phục giá trị nhà máy (tắt) hoặc đặt khoảng thời gian 1800 giây: Yealink — Account → Advanced → Session Timer / Session Expires; Grandstream — Account → SIP Settings → Session Timer (Enable Session Timer, Session Expiration).
- Cập nhật firmware của điện thoại — các lỗi gia hạn cuộc trò chuyện thường đã được sửa trong các phiên bản mới.
- Chỉ các cuộc gọi bên ngoài bị ngắt, vào cùng một phút — hãy gửi thời gian các cuộc gọi đến bộ phận hỗ trợ: chúng tôi sẽ đối chiếu các bộ đếm thời gian với nhà mạng.
Cuộc gọi đến chỉ hoạt động trong những phút đầu sau khi bật#
Vì sao lại như vậy#
Điện thoại nằm sau router, và tổng đài chỉ có thể tiếp cận nó qua “cửa” mà điện thoại đã mở bằng thông báo cuối cùng của mình. Router giữ những cửa như vậy không lâu — ở router gia đình từ nửa phút đến vài phút im lặng — rồi sau đó đóng lại. Khi điện thoại thường xuyên gửi gì đó (đăng ký ngay sau khi bật, keep-alive), cửa vẫn mở. Im lặng đi — cửa đóng lại, và cuộc gọi đến từ tổng đài đâm vào router.
Trong khi đó, Chi nhánh trong bảng quản trị có thể vẫn xanh: điện thoại tự mình, từ bên trong làm mới đăng ký, và nó thành công, nhưng để đi vào điện thoại từ bên ngoài thì không còn được nữa. Khởi động lại “chữa” được, vì nó mở lại cửa — trong một thời gian.
Về phía mình, tổng đài của chúng tôi cứ mỗi 60 giây kiểm tra từng thiết bị bằng yêu cầu “bạn có đang kết nối không?”: gói đối ứng này cũng giữ cửa mở — nhưng chỉ khi router đóng cửa lâu hơn một phút. Thiết bị không trả lời — tổng đài coi nó là không khả dụng, Chi nhánh tắt, và trong “Khả năng hoạt động” xuất hiện một lỗ hổng.
Cần làm gì#
Sau mỗi bước, hãy kiểm tra cuộc gọi đến sau 10 phút không hoạt động (bằng nút “Gọi đến thiết bị” hoặc từ số nội bộ bên cạnh); sau đó — chỉ khi vẫn chưa khắc phục được.
- Bật keep-alive trên điện thoại với khoảng thời gian 20–30 giây. Yealink: Account → Advanced → Keep Alive Type / Keep Alive Interval (nhà máy là Default và 30 giây); ở Fanvil — Keep Alive Type trong cài đặt bổ sung của đường dây.
- Tắt SIP ALG trên router — nó cũng thích “quên” các cửa.
- Rút ngắn thời hạn đăng ký trên điện thoại (Expires / Register Expiration) xuống 60–120 giây — điện thoại sẽ tự mở cửa thường xuyên hơn. Tổng đài của chúng tôi không chấp nhận nhỏ hơn 60 (
423 Interval Too Brief). - Trên tổng đài riêng, có thể kiểm tra thiết bị thường xuyên hơn: “Cài đặt SIP nâng cao” → “Kiểm tra kết nối, giây” — 20–30 thay vì 60. Điều này giữ cửa từ phía tổng đài, nhưng tăng lưu lượng dịch vụ; keep-alive của điện thoại đáng tin cậy hơn.
- NAT kép (router của nhà cung cấp + router của mình) — có hai cửa, và chúng đóng theo cách khác nhau: hãy bỏ một cái — “Mạng, router và internet”.
Ngắt kết nối khi chuyển từ Wi-Fi sang mạng di động#
Vì sao lại như vậy#
Wi-Fi của cơ sở và mạng di động là hai địa chỉ khác nhau. Cuộc trò chuyện bắt đầu từ một địa chỉ, và tổng đài ghi nhớ nguồn phát giọng nói ngay từ đầu cuộc gọi: vì lý do bảo mật, nó chỉ nhận âm thanh từ địa chỉ đó. Khi điện thoại thông minh chuyển sang mạng di động, giọng nói bắt đầu đến từ địa chỉ mới — và với tổng đài đây đã là luồng lạ, trong khi các thông báo dịch vụ vẫn tiếp tục gửi đến địa chỉ cũ không còn tồn tại. Cuộc trò chuyện bắt đầu trong một mạng, khi chuyển sang mạng khác gần như luôn bị ngắt. Đây là hạn chế của chính công nghệ, không phải hỏng hóc.
Mặt thứ hai của cùng vấn đề: trong lúc điện thoại thông minh chuyển mạng, softphone mất đăng ký, và các cuộc gọi đến trong những giây đó không tới được. Android còn đưa các ứng dụng chạy nền vào trạng thái ngủ — xem chi tiết trong bài tổng quan, phần về điện thoại phần mềm.
Cần làm gì#
- Trong lúc đang trò chuyện, đừng đổi mạng: hãy kết thúc cuộc gọi trước khi ra khỏi vùng Wi-Fi.
- Tắt trên điện thoại thông minh tính năng tự động chuyển từ Wi-Fi yếu sang mạng di động (trên iPhone — “Hỗ trợ Wi-Fi”, trên Android — “chuyển sang mạng di động” trong cài đặt Wi-Fi): hiện tại nó ngắt cuộc trò chuyện ngay ở ngưỡng cửa quán cà phê.
- Cho phép softphone chạy nền và tắt chế độ tiết kiệm pin cho nó — khi đó nó đăng ký lại nhanh hơn sau khi đổi mạng.
- Ở nơi không thể để mất cuộc gọi (quầy, lễ tân), hãy đặt điện thoại để bàn hoặc ống nghe DECT, không dùng điện thoại thông minh.
Cần gửi gì cho bộ phận hỗ trợ#
- ngày và giờ của một vài cuộc gọi bị ngắt chính xác đến phút, số điện thoại và số máy nhánh;
- sau bao lâu thì bị ngắt (theo nhật ký — “Cuộc trò chuyện”) và có luôn giống nhau không;
- tất cả cuộc gọi đều bị ngắt hay chỉ cuộc gọi bên ngoài; cuộc gọi dài
*43(45 giây) có giữ được không; - model và firmware của điện thoại (dòng từ thẻ thiết bị), trong đó có bật keep-alive và Session Timer không;
- model router, SIP ALG đã tắt chưa, có router thứ hai của nhà cung cấp không;
- trên tổng đài riêng — nội dung SIP trace của lần ngắt lặp lại.
Cách viết cho chúng tôi — “Hỗ trợ”.
Câu hỏi thường gặp#
Vì sao ngắt đúng ở giây thứ 32, không phải giây thứ 30 và không phải giây thứ 40?#
Vì con số này được quy định trong chính giao thức SIP: xác nhận bắt đầu cuộc trò chuyện được chờ 64 khoảng nửa giây — 32 giây. Nếu của bạn “khoảng 30 giây” và lần nào cũng giống nhau — chính là nó, kể cả khi đồng hồ bấm giây hiển thị 31 hoặc 33: một phần thời gian đã dành cho chuông và trả lời.
SIP ALG đã tắt, nhưng ngắt ở giây thứ 30 vẫn còn — còn gì nữa?#
Hãy kiểm tra rằng ALG đã tắt trên tất cả router trên đường truyền (router của nhà cung cấp thường có cái riêng), để lại ba codec trong điện thoại và thử transport TCP. Nếu chỉ cuộc gọi bên ngoài bị ngắt, còn *43 giữ được 45 giây, — vấn đề nằm ở đoạn tới nhà mạng, hãy gửi thời gian các cuộc gọi.
Chi nhánh xanh, nhưng cuộc gọi đến không tới — đây cũng là “ngắt kết nối” sao?#
Đây là cùng cơ chế như trong phần về cuộc gọi đến những phút đầu tiên: đăng ký được cập nhật từ bên trong, nhưng cánh cửa tới điện thoại từ bên ngoài đã đóng. Cách kiểm tra — “Gọi đến thiết bị” sau 10 phút không hoạt động; cách khắc phục — keep-alive trong điện thoại.
Có thể chỉ cần tắt timer phiên trên tổng đài không?#
Có thể (trên tổng đài riêng, “Cài đặt SIP nâng cao”), nhưng cách này chữa triệu chứng chứ không chữa nguyên nhân: việc gia hạn không thành công vì đường đi của thông báo dịch vụ bị đóng hoặc hỏng, và chính đường đó sẽ cần cho chuyển cuộc gọi và giữ cuộc gọi. Hơn nữa, không có timer thì các cuộc trò chuyện bị ngắt im lặng sẽ treo hàng giờ và chiếm đường dây. Trước tiên là keep-alive và SIP ALG.
Các phần liên quan#
- Điện thoại không hoạt động: chẩn đoán theo triệu chứng — trong đó có “không có cuộc gọi đến khi cuộc gọi đi vẫn hoạt động”
- Không có âm thanh, chỉ nghe một chiều, vọng âm, “robot”
- Không đăng ký được: dòng chữ và mã lỗi — “đăng ký rồi biến mất”,
423 Interval Too Brief - Mạng, router và internet cho điện thoại — nơi tắt SIP ALG, NAT kép
- Cấu hình điện thoại SIP — mạng của cơ sở, kiểm tra chất lượng kết nối
- Nhật ký cuộc gọi và SIP trace
Nguồn#
- RFC 3261 — SIP: lặp
200 OKcho đến khi nhậnACKvà kết thúc phiên sau 64 × T1 (§13.3.1.4), T1 = 500 ms (§17.1.1.1), chuyển sang TCP cho thông báo dài hơn 1300 byte (§18.1.1) — https://www.rfc-editor.org/rfc/rfc3261 - RFC 4028 — Session Timers: gia hạn ở giữa khoảng,
BYEtrước khi hết hạn min(32 s, khoảng / 3) — https://www.rfc-editor.org/rfc/rfc4028 - Yealink SIP-T2/T3/T4/T5/CP920 Administrator Guide V86.60 — Keep Alive Type / Interval (mặc định nhà máy, 30 s), Session Timer (mặc định nhà máy — tắt; Session Expires 1800 s; cập nhật ở nửa khoảng)
- Grandstream GRP261x/262x/263x Administration Guide — Session Timer: Enable Session Timer (mặc định nhà máy “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 và giới hạn kích thước gói, NAT timeout của router — https://www.zoiper.com/pdf/User%20Guide%20Zoiper%205%20v.1.0.7.pdf
- Mã tổng đài:
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(kiểm tra echo*43, giới hạn kiểm tra 300 s)